TurboFisto
[carveJwlIkooP6JGAAIwe30JlM.git] / player_walk.h
index 7a597c3b6d17b70f594d0a0d6f4eb51b53235135..29c210dd599d682495cdff3e83f63f5ded7be7df 100644 (file)
@@ -9,22 +9,43 @@ struct player_walk
 
    struct
    {
-      v3f angles;
       v3f prev_pos;
+      v3f drop_in_target,
+          drop_in_foot_anchor,
+          drop_in_start,
+          drop_in_normal;
+
+      float drop_in_start_angle,
+            drop_in_angle;
 
       enum walk_activity
       {
          k_walk_activity_air,
          k_walk_activity_ground,
-         k_walk_activity_sleep
+         k_walk_activity_sleep,
+         k_walk_activity_immobile,
+         k_walk_activity_lockedmove
       }
       activity;
+
+      enum walk_outro
+      {
+         k_walk_outro_none,
+         k_walk_outro_jump_to_air,
+         k_walk_outro_drop_in,
+         k_walk_outro_regular
+      }
+      outro_type;
+
+      struct skeleton_anim *outro_anim;
+      double outro_start_time;
    }
    state,
    state_gate_storage;
 
    enum mdl_surface_prop surface;
-   struct skeleton_anim *anim_walk, *anim_run, *anim_idle, *anim_jump;
+   struct skeleton_anim *anim_walk, *anim_run, *anim_idle, *anim_jump,
+                        *anim_jump_to_air, *anim_drop_in, *anim_intro;
 
    float blend_fly,
          blend_run,
@@ -32,6 +53,8 @@ struct player_walk
 
          move_speed,
          walk_timer;
+
+   int step_phase;
 };
 
 VG_STATIC void player__walk_pre_update  ( player_instance *player );
@@ -43,5 +66,8 @@ VG_STATIC void player__walk_post_animate( player_instance *player );
 VG_STATIC void player__walk_im_gui      ( player_instance *player );
 VG_STATIC void player__walk_bind        ( player_instance *player );
 VG_STATIC void player__walk_transition  ( player_instance *player, v3f angles );
+VG_STATIC void player__walk_reset       ( player_instance *player, 
+                                          ent_spawn *rp );
+VG_STATIC void player__walk_restore( player_instance *player );
 
 #endif /* PLAYER_WALK_H */