X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_skate.c;h=1ad7231609e2f0dcc2b5abd1a2a94d9e03ce63b8;hb=5f5d02725031cad23f1cab3290b8a9d661c89728;hp=e591d171db98f6a3c46ee2e3d91855fa97e88914;hpb=71b7175073e0c764c3c5cb0c7ceee0f8cca09e58;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_skate.c b/player_skate.c index e591d17..1ad7231 100644 --- a/player_skate.c +++ b/player_skate.c @@ -225,7 +225,7 @@ too_many_samples: v3_copy( sj->normal3, n1 ); v3_cross( n0, n1, dir ); - if( v3_length2( dir ) <= 0.001f ) + if( v3_length2( dir ) <= 0.000001f ) continue; v3_normalize( dir ); @@ -1540,7 +1540,6 @@ static void skate_grind_decay( struct grind_info *inf, float strength ){ static void skate_grind_truck_apply( float sign, struct grind_info *inf, float strength ){ struct player_skate_state *state = &player_skate.state; - /* REFACTOR */ v3f ra = { 0.0f, -k_board_radius, sign * k_board_length }; v3f raw, wsp; @@ -2390,7 +2389,7 @@ begin_collision:; } /* yes, we are currently rebuilding mass matrices every frame. too bad! */ - v3f extent = { k_board_width, 0.1f, k_board_length }; + v3f extent = { k_board_width*10.0f, 0.1f, k_board_length }; float ex2 = k_board_interia*extent[0]*extent[0], ey2 = k_board_interia*extent[1]*extent[1], ez2 = k_board_interia*extent[2]*extent[2]; @@ -2570,6 +2569,27 @@ begin_collision:; } else if( stick_frames == 0 ){ /* TODO: EXIT SOUNDS */ } + + if( (state->activity_prev < k_skate_activity_grind_any) && + (state->activity >= k_skate_activity_grind_any) ){ + state->velocity_limit = v3_length( localplayer.rb.v )*1.0f; + state->grind_y_start = localplayer.rb.co[1]; + } + + if( state->activity >= k_skate_activity_grind_any ){ + f32 dy = localplayer.rb.co[1] - state->grind_y_start; + if( dy < 0.0f ){ + state->velocity_limit += -dy*0.2f; + } + state->grind_y_start = localplayer.rb.co[1]; + + + f32 speed_end = v3_length( localplayer.rb.v ); + if( speed_end > state->velocity_limit ){ + v3_muls( localplayer.rb.v, state->velocity_limit/speed_end, + localplayer.rb.v ); + } + } } static void player__skate_im_gui(void){