X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_skate.h;h=abbc7c51c82a2e81b06aac344c23b3cd5120453f;hb=HEAD;hp=735ffa613e8b59651fa73f4b6c544aae07c2c020;hpb=cbf074c021e1de4ee88505ee758b85ccaf2e8a55;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_skate.h b/player_skate.h index 735ffa6..abbc7c5 100644 --- a/player_skate.h +++ b/player_skate.h @@ -1,6 +1,5 @@ -#ifndef PLAYER_SKATE_H -#define PLAYER_SKATE_H - +#pragma once +#include "vg/vg_audio.h" #include "player.h" #include "player_api.h" @@ -12,6 +11,7 @@ struct player_skate{ k_skate_activity_air, k_skate_activity_air_to_grind, k_skate_activity_ground, + k_skate_activity_handplant, k_skate_activity_undefined, k_skate_activity_grind_any, k_skate_activity_grind_boardslide, @@ -44,11 +44,13 @@ struct player_skate{ k_trick_type_none, k_trick_type_kickflip, k_trick_type_shuvit, - k_trick_type_treflip + k_trick_type_treflip, } trick_type; float gravity_bias; + f32 trick_input_collect; + v3f up_dir; v3f head_position; @@ -77,7 +79,11 @@ struct player_skate{ v3f land_normal; v4f smoothed_rotation; - f32 velocity_limit, grind_y_start; + f32 velocity_limit, grind_y_start, skid; + f32 handplant_t; + + v3f store_cog_v, store_cog, store_co; + v4f store_smoothed, store_q; } state; @@ -90,6 +96,7 @@ struct player_skate{ local_cog; f32 slide, + skid, z, x, fly, @@ -119,21 +126,25 @@ struct player_skate{ f32 jump_charge; - /* linear anims */ - f32 push_time, jump_time; + /* linear anims. TODO: we can union a bunch of variables here depending + * on activity. */ + f32 push_time, jump_time, handplant_t; u8 jump_dir; - u8 trick_type; - u8 activity; + u8 trick_type; /* todo: should encode grind type */ + u8 activity, surface; } animator; + f32 collect_feedback; + /* animation /audio * --------------------------------------------------------------*/ struct skeleton_anim *anim_stand, *anim_highg, *anim_slide, *anim_air, *anim_grind, *anim_grind_jump, *anim_push, *anim_push_reverse, *anim_ollie, *anim_ollie_reverse, - *anim_grabs, *anim_stop; + *anim_grabs, *anim_stop, + *anim_handplant; /* vectors representing the direction of the axels in localspace */ v3f truckv0[2]; @@ -198,7 +209,8 @@ struct player_skate{ limits[3]; u32 limit_count; } -static player_skate; +extern player_skate; +extern struct player_subsystem_interface player_subsystem_skate; enum player_skate_soundeffect { k_player_skate_soundeffect_jump, @@ -259,7 +271,8 @@ static float k_board_end_radius = 0.1f, k_board_radius = 0.14f, /* 0.07 */ - k_grind_balance = -40.0f; + k_grind_balance = -40.0f, + k_anim_transition = 0.12f; static void player__skate_register(void){ VG_VAR_F32( k_grind_dampener, flags=VG_VAR_CHEAT ); @@ -288,43 +301,25 @@ static void player__skate_register(void){ VG_VAR_F32( k_mmcollect_vert, flags=VG_VAR_CHEAT ); VG_VAR_F32( k_mmdecay, flags=VG_VAR_CHEAT ); VG_VAR_F32( k_mmthrow_steer, flags=VG_VAR_CHEAT ); + VG_VAR_F32( k_anim_transition, flags=VG_VAR_CHEAT ); } -static void player__skate_bind (void); -static void player__skate_pre_update (void); -static void player__skate_update (void); -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_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); -static void player__approximate_best_trajectory(void); - -struct player_subsystem_interface static player_subsystem_skate = { - .system_register = player__skate_register, - .bind = player__skate_bind, - .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), - .name = "Skate" -}; - -#endif /* PLAYER_SKATE_H */ +void player__skate_bind (void); +void player__skate_pre_update (void); +void player__skate_update (void); +void player__skate_post_update (void); +void player__skate_im_gui (void); +void player__skate_animate (void); +void player__skate_pose (void *animator, player_pose *pose); +void player__skate_effects( void *_animator, m4x3f *final_mtx, + struct player_board *board, + struct player_effects_data *effect_data ); +void player__skate_post_animate (void); +void player__skate_animator_exchange( bitpack_ctx *ctx, void *data ); +void player__skate_sfx_oneshot ( u8 id, v3f pos, f32 volume ); + +void player__skate_clear_mechanics(void); +void player__skate_reset_animator(void); +void player__approximate_best_trajectory(void); +void player__skate_comp_audio( void *animator ); +void player__skate_kill_audio(void);