X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_skate.c;h=75b65fc7df76ec46b12a46a4f553ee628b771904;hb=494c85703c76c4123c49937a32584840b6be1470;hp=11ff6ae8348e88bfda5862532b2905de5bf84344;hpb=5f6a4f9df6c8accc89f1920bfe9ace3cbac4c4b6;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_skate.c b/player_skate.c index 11ff6ae..75b65fc 100644 --- a/player_skate.c +++ b/player_skate.c @@ -14,6 +14,7 @@ #include "player_glide.h" #include "player_dead.h" #include "player_walk.h" +#include struct player_skate player_skate; struct player_subsystem_interface player_subsystem_skate = @@ -1094,10 +1095,11 @@ static void skate_apply_pump_model(void){ } else{ /* Collect */ - float doty = v3_dot( localplayer.rb.to_world[1], state->throw_v ); + f32 doty = v3_dot( localplayer.rb.to_world[1], state->throw_v ); v3f Fl, Fv; v3_muladds( state->throw_v, localplayer.rb.to_world[1], -doty, Fl); + player_skate.collect_feedback = v3_length(Fl) * 4.0f; if( state->activity == k_skate_activity_ground ){ if( v3_length2(localplayer.rb.v)<(20.0f*20.0f) ){ @@ -1108,7 +1110,7 @@ static void skate_apply_pump_model(void){ } v3_muls( localplayer.rb.to_world[1], -doty, Fv ); - v3_muladds( localplayer.rb.v, Fv, k_mmcollect_vert, localplayer.rb.v ); + v3_muladds( localplayer.rb.v, Fv, k_mmcollect_vert, localplayer.rb.v ); v3_muladds( state->throw_v, Fv, k_mmcollect_vert, state->throw_v ); } @@ -2229,20 +2231,10 @@ void player__skate_update(void){ struct player_skate_state *state = &player_skate.state; world_instance *world = world_current_instance(); - if( state->activity == k_skate_activity_handplant ){ + if( state->activity == k_skate_activity_handplant ) return; - } - if( world->water.enabled ){ - if( localplayer.rb.co[1]+0.25f < world->water.height ){ - vg_info( "player fell off due to being in water\n" ); - player__networked_sfx( k_player_subsystem_walk, 32, - k_player_walk_soundeffect_splash, - localplayer.rb.co, 1.0f ); - player__dead_transition( k_player_die_type_generic ); - return; - } - } + if( !world_water_player_safe( world, 0.25f ) ) return; v3_copy( localplayer.rb.co, state->prev_pos ); state->activity_prev = state->activity; @@ -3551,7 +3543,8 @@ void player__skate_reset_animator(void){ player_skate.animator.fly = 0.0f; } -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; @@ -3586,6 +3579,9 @@ 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"