5 #include "player_api.h"
8 #define PLAYER_JUMP_EPSILON 0.1 /* 100ms jump allowance */
13 struct player_walk_state
{
20 float drop_in_start_angle
,
25 k_walk_activity_ground
,
26 k_walk_activity_sleep
,
27 k_walk_activity_lockedmove
33 k_walk_outro_jump_to_air
,
38 double outro_start_time
;
50 enum mdl_surface_prop surface
;
51 struct skeleton_anim
*anim_walk
, *anim_run
, *anim_idle
, *anim_jump
,
52 *anim_jump_to_air
, *anim_drop_in
, *anim_intro
;
54 struct player_walk_animator
{
64 enum walk_outro outro_type
;
77 k_walk_air_accel
= 7.0f
,
78 k_walk_friction
= 10.0f
,
79 k_walk_step_height
= 0.2f
;
81 static void player__walk_register(void){
82 VG_VAR_F32( k_walkspeed
, flags
=VG_VAR_CHEAT
);
83 VG_VAR_F32( k_stopspeed
, flags
=VG_VAR_CHEAT
);
84 VG_VAR_F32( k_airspeed
, flags
=VG_VAR_CHEAT
);
85 VG_VAR_F32( k_walk_friction
, flags
=VG_VAR_CHEAT
);
86 VG_VAR_F32( k_walk_air_accel
, flags
=VG_VAR_CHEAT
);
87 VG_VAR_F32( k_walk_accel
, flags
=VG_VAR_CHEAT
);
90 static void player__walk_pre_update (void);
91 static void player__walk_update (void);
92 static void player__walk_post_update (void);
93 static void player__walk_animate (void);
94 static void player__walk_pose (void *animator
, player_pose
*pose
);
95 static void player__walk_post_animate(void);
96 static void player__walk_im_gui (void);
97 static void player__walk_bind (void);
98 static void player__walk_transition (void);
99 static void player__walk_reset (ent_spawn
*rp
);
100 static void player__walk_restore (void);
101 static void player__walk_animator_exchange( bitpack_ctx
*ctx
, void *data
);
103 struct player_subsystem_interface
static player_subsystem_walk
= {
104 .system_register
= player__walk_register
,
105 .bind
= player__walk_bind
,
106 .reset
= player__walk_reset
,
107 .pre_update
= player__walk_pre_update
,
108 .update
= player__walk_update
,
109 .post_update
= player__walk_post_update
,
110 .im_gui
= player__walk_im_gui
,
111 .animate
= player__walk_animate
,
112 .post_animate
= player__walk_post_animate
,
113 .pose
= player__walk_pose
,
114 .network_animator_exchange
= player__walk_animator_exchange
,
116 .animator_data
= &player_walk
.animator
,
117 .animator_size
= sizeof(player_walk
.animator
),
121 #endif /* PLAYER_WALK_H */