X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_skate.h;h=735ffa613e8b59651fa73f4b6c544aae07c2c020;hb=5f5d02725031cad23f1cab3290b8a9d661c89728;hp=68f2dcb9980c06f7c0c2a3ba78c84051a5a73225;hpb=46f4e9ee87dc67402166e4c6b05efbe922cd7574;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_skate.h b/player_skate.h index 68f2dcb..735ffa6 100644 --- a/player_skate.h +++ b/player_skate.h @@ -76,12 +76,15 @@ struct player_skate{ float land_dist; v3f land_normal; v4f smoothed_rotation; + + f32 velocity_limit, grind_y_start; } state; struct player_skate_animator { v3f root_co; v4f root_q; + v3f root_v; v3f offset, local_cog; @@ -120,6 +123,7 @@ struct player_skate{ f32 push_time, jump_time; u8 jump_dir; u8 trick_type; + u8 activity; } animator; @@ -196,6 +200,15 @@ struct player_skate{ } static player_skate; +enum player_skate_soundeffect { + k_player_skate_soundeffect_jump, + k_player_skate_soundeffect_tap, + k_player_skate_soundeffect_land_good, + k_player_skate_soundeffect_land_bad, + k_player_skate_soundeffect_grind_metal, + k_player_skate_soundeffect_grind_wood, +}; + static float k_friction_lat = 12.0f, k_friction_resistance = 0.01f, @@ -248,8 +261,7 @@ static float k_grind_balance = -40.0f; -static void player__skate_register(void) -{ +static void player__skate_register(void){ VG_VAR_F32( k_grind_dampener, flags=VG_VAR_CHEAT ); VG_VAR_F32( k_grind_spring, flags=VG_VAR_CHEAT ); VG_VAR_F32( k_grind_aligment, flags=VG_VAR_CHEAT ); @@ -285,8 +297,12 @@ static void player__skate_post_update (void); static void player__skate_im_gui (void); static void player__skate_animate (void); static void player__skate_pose (void *animator, player_pose *pose); +static void player__skate_effects( void *_animator, m4x3f *final_mtx, + struct player_board *board, + struct player_effects_data *effect_data ); static void player__skate_post_animate (void); -static void player__skate_reset (ent_spawn *rp); +static void player__skate_animator_exchange( bitpack_ctx *ctx, void *data ); +static void player__skate_sfx_oneshot ( u8 id, v3f pos, f32 volume ); static void player__skate_clear_mechanics(void); static void player__skate_reset_animator(void); @@ -295,14 +311,16 @@ static void player__approximate_best_trajectory(void); struct player_subsystem_interface static player_subsystem_skate = { .system_register = player__skate_register, .bind = player__skate_bind, - .reset = player__skate_reset, .pre_update = player__skate_pre_update, .update = player__skate_update, .post_update = player__skate_post_update, .im_gui = player__skate_im_gui, .animate = player__skate_animate, .pose = player__skate_pose, + .effects = player__skate_effects, .post_animate = player__skate_post_animate, + .network_animator_exchange = player__skate_animator_exchange, + .sfx_oneshot = player__skate_sfx_oneshot, .animator_data = &player_skate.animator, .animator_size = sizeof(player_skate.animator),