X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_skate.c;h=2dedefd47a3e99497e3b7390f6f1f327651be809;hb=bececcbb7b2e886e72425e7c070e1fdc3aa126dc;hp=b193173b888960bc497c9d2cfecf520a7fdf7171;hpb=a109f126d8adab622e38fbcc2d4281e75255246a;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_skate.c b/player_skate.c index b193173..2dedefd 100644 --- a/player_skate.c +++ b/player_skate.c @@ -1,6 +1,4 @@ -#ifndef PLAYER_SKATE_C -#define PLAYER_SKATE_C - +#include "player_skate.h" #include "player.h" #include "audio.h" #include "vg/vg_perlin.h" @@ -8,13 +6,40 @@ #include "menu.h" #include "ent_skateshop.h" #include "addon.h" +#include "input.h" +#include "ent_tornado.h" -#include "ent_tornado.c" #include "vg/vg_rigidbody.h" #include "scene_rigidbody.h" #include "player_glide.h" +#include "player_dead.h" +#include "player_walk.h" +#include -static void player__skate_bind(void){ +struct player_skate player_skate; +struct player_subsystem_interface 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, + .sfx_comp = player__skate_comp_audio, + .sfx_kill = player__skate_kill_audio, + + .animator_data = &player_skate.animator, + .animator_size = sizeof(player_skate.animator), + .name = "Skate" +}; + +void player__skate_bind(void){ struct skeleton *sk = &localplayer.skeleton; rb_update_matrices( &localplayer.rb ); @@ -38,7 +63,7 @@ static void player__skate_bind(void){ *bindings[i].anim = skeleton_get_anim( sk, bindings[i].name ); } -static void player__skate_kill_audio(void){ +void player__skate_kill_audio(void){ audio_lock(); if( player_skate.aud_main ){ player_skate.aud_main = @@ -342,7 +367,8 @@ static int create_jumps_to_hit_target( jump_info *jumps, return valid_count; } -static void player__approximate_best_trajectory(void){ +void player__approximate_best_trajectory(void) +{ world_instance *world0 = world_current_instance(); float k_trace_delta = vg.time_fixed_delta * 10.0f; @@ -1161,7 +1187,7 @@ static enum trick_type player_skate_trick_input(void){ (button_press( k_srbind_trick2 ) ); } -static void player__skate_pre_update(void){ +void player__skate_pre_update(void){ struct player_skate_state *state = &player_skate.state; if( state->activity == k_skate_activity_handplant ){ @@ -1286,7 +1312,7 @@ static void player__skate_pre_update(void){ state->trick_type = k_trick_type_none; } -static void player__skate_comp_audio( void *_animator ){ +void player__skate_comp_audio( void *_animator ){ struct player_skate_animator *animator = _animator; audio_lock(); @@ -1302,7 +1328,7 @@ static void player__skate_comp_audio( void *_animator ){ f32 gate = skaterift.time_rate; if( skaterift.activity == k_skaterift_replay ){ - gate = vg_minf( 1.0f, fabsf(skaterift.track_velocity) ); + gate = vg_minf( 1.0f, fabsf(player_replay.track_velocity) ); } f32 @@ -1430,7 +1456,7 @@ static void player__skate_comp_audio( void *_animator ){ audio_unlock(); } -static void player__skate_post_update(void){ +void player__skate_post_update(void){ struct player_skate_state *state = &player_skate.state; for( int i=0; itrick_euler[2] ); } -static void player__skate_animate(void){ +void player__skate_animate(void){ struct player_skate_state *state = &player_skate.state; struct player_skate_animator *animator = &player_skate.animator; @@ -3113,7 +3139,7 @@ static void player__skate_animate(void){ animator->handplant_t = state->handplant_t; } -static void player__skate_pose( void *_animator, player_pose *pose ){ +void player__skate_pose( void *_animator, player_pose *pose ){ struct skeleton *sk = &localplayer.skeleton; struct player_skate_animator *animator = _animator; @@ -3436,7 +3462,7 @@ static void player__skate_pose( void *_animator, player_pose *pose ){ #endif } -static void player__skate_effects( void *_animator, m4x3f *final_mtx, +void player__skate_effects( void *_animator, m4x3f *final_mtx, struct player_board *board, struct player_effects_data *effect_data ){ struct skeleton *sk = &localplayer.skeleton; @@ -3503,7 +3529,7 @@ static void player__skate_effects( void *_animator, m4x3f *final_mtx, } } -static void player__skate_post_animate(void){ +void player__skate_post_animate(void){ struct player_skate_state *state = &player_skate.state; localplayer.cam_velocity_influence = 1.0f; localplayer.cam_dist = 1.8f; @@ -3515,7 +3541,7 @@ static void player__skate_post_animate(void){ state->head_position, state->head_position ); } -static void player__skate_reset_animator(void){ +void player__skate_reset_animator(void){ struct player_skate_state *state = &player_skate.state; memset( &player_skate.animator, 0, sizeof(player_skate.animator) ); @@ -3526,7 +3552,8 @@ static void player__skate_reset_animator(void){ player_skate.animator.fly = 0.0f; } -static void player__skate_clear_mechanics(void){ +void player__skate_clear_mechanics(void) +{ struct player_skate_state *state = &player_skate.state; state->jump_charge = 0.0f; state->charging_jump = 0; @@ -3561,11 +3588,14 @@ static void player__skate_clear_mechanics(void){ v3_copy( localplayer.rb.to_world[1], player_skate.surface_picture ); v3_copy( localplayer.rb.co, state->prev_pos ); v3_zero( player_skate.weight_distribution ); + + v3f head = { 0.0f, 1.8f, 0.0f }; + m4x3_mulv( localplayer.rb.to_world, head, state->head_position ); } #include "network_compression.h" -static void player__skate_animator_exchange( bitpack_ctx *ctx, void *data ){ +void player__skate_animator_exchange( bitpack_ctx *ctx, void *data ){ struct player_skate_animator *animator = data; bitpack_qv3f( ctx, 24, -1024.0f, 1024.0f, animator->root_co ); @@ -3617,7 +3647,7 @@ static void player__skate_animator_exchange( bitpack_ctx *ctx, void *data ){ bitpack_bytes( ctx, 1, &animator->activity ); } -static void player__skate_sfx_oneshot( u8 id, v3f pos, f32 volume ){ +void player__skate_sfx_oneshot( u8 id, v3f pos, f32 volume ){ audio_lock(); if( id == k_player_skate_soundeffect_jump ){ @@ -3645,5 +3675,3 @@ static void player__skate_sfx_oneshot( u8 id, v3f pos, f32 volume ){ audio_unlock(); } - -#endif /* PLAYER_SKATE_C */