X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_walk.h;h=3e450bcc26f541182bdb613987f0d242e109caf7;hb=ca35eceae3abfcfb9ba266d6ea8e664bc06b0a3e;hp=3d6f3adf515d80698c0b3514e21310f617f8bea5;hpb=76042e561d89b232f04cac8a431b5cd7b30a6b9d;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_walk.h b/player_walk.h index 3d6f3ad..3e450bc 100644 --- a/player_walk.h +++ b/player_walk.h @@ -2,18 +2,14 @@ #define PLAYER_WALK_H #include "player_api.h" +#include "rigidbody.h" -struct player_walk -{ - rb_capsule collider; +#define PLAYER_JUMP_EPSILON 0.1 /* 100ms jump allowance */ - struct - { -#if 0 - v3f angles; - float heading_angle; -#endif +struct player_walk{ + rb_capsule collider; + struct player_walk_state{ v3f prev_pos; v3f drop_in_target, drop_in_foot_anchor, @@ -23,32 +19,34 @@ struct player_walk float drop_in_start_angle, drop_in_angle; - enum walk_activity - { + enum walk_activity{ k_walk_activity_air, k_walk_activity_ground, k_walk_activity_sleep, - k_walk_activity_immobile + k_walk_activity_lockedmove } activity; - enum walk_outro - { + enum walk_outro{ k_walk_outro_none, k_walk_outro_jump_to_air, - k_walk_outro_drop_in + k_walk_outro_drop_in, + k_walk_outro_regular } outro_type; struct skeleton_anim *outro_anim; double outro_start_time; + + int jump_queued; + f64 jump_input_time; } state, state_gate_storage; enum mdl_surface_prop surface; struct skeleton_anim *anim_walk, *anim_run, *anim_idle, *anim_jump, - *anim_jump_to_air, *anim_drop_in; + *anim_jump_to_air, *anim_drop_in, *anim_intro; float blend_fly, blend_run, @@ -56,8 +54,29 @@ struct player_walk move_speed, walk_timer; + + int step_phase; }; +VG_STATIC float + k_walkspeed = 10.0f, + k_airspeed = 1.2f, + k_stopspeed = 4.0f, + k_walk_accel = 10.0f, + k_walk_air_accel = 7.0f, + k_walk_friction = 10.0f, + k_walk_step_height = 0.2f; + +VG_STATIC void player__walk_register(void) +{ + VG_VAR_F32( k_walkspeed, flags=VG_VAR_CHEAT ); + VG_VAR_F32( k_stopspeed, flags=VG_VAR_CHEAT ); + VG_VAR_F32( k_airspeed, flags=VG_VAR_CHEAT ); + VG_VAR_F32( k_walk_friction, flags=VG_VAR_CHEAT ); + VG_VAR_F32( k_walk_air_accel, flags=VG_VAR_CHEAT ); + VG_VAR_F32( k_walk_accel, flags=VG_VAR_CHEAT ); +} + VG_STATIC void player__walk_pre_update ( player_instance *player ); VG_STATIC void player__walk_update ( player_instance *player ); VG_STATIC void player__walk_post_update ( player_instance *player ); @@ -67,5 +86,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 */