X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;ds=sidebyside;f=player_skate.c;h=f1670c827e3b77245d7abe521aff152094a976a7;hb=be8ea6efdbfd9c0fdad97401ed7d92041d8c8778;hp=bec54539ecd625135513fd136df79ad731a8f117;hpb=eb203257efcfe324217de9e733cc6c1371b99de6;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_skate.c b/player_skate.c index bec5453..f1670c8 100644 --- a/player_skate.c +++ b/player_skate.c @@ -4,6 +4,7 @@ #include "player.h" #include "audio.h" #include "vg/vg_perlin.h" +#include "menu.h" VG_STATIC void player__skate_bind( player_instance *player ) { @@ -127,10 +128,8 @@ VG_STATIC int skate_grind_scansq( player_instance *player, v3f tri[3]; struct world_surface *surf = world_tri_index_surface(world,ptri[0]); -#if 0 if( !(surf->info.flags & k_material_flag_skate_surface) ) continue; -#endif for( int j=0; j<3; j++ ) v3_copy( world->scene_geo->arrvertices[ptri[j]].co, tri[j] ); @@ -430,7 +429,7 @@ void player__approximate_best_trajectory( player_instance *player ) /* REFACTOR */ - v3f closest; + v3f closest={0.0f,0.0f,0.0f}; if( search_for_grind ){ if( bh_closest_point( world->geo_bh, co1, closest, 1.0f ) != -1 ){ @@ -579,8 +578,6 @@ void player__approximate_best_trajectory( player_instance *player ) v3_add( launch_co, co0, co0 ); /* rough scan to make sure we dont collide with anything */ - /* NOTE this was rarely needed and ends up with false negatives. */ -#if 0 for( int j=1; j<=16; j++ ){ t = (float)j*(1.0f/16.0f); t *= 0.9f; @@ -595,14 +592,13 @@ void player__approximate_best_trajectory( player_instance *player ) v3f n; int idx = spherecast_world( world, co0,co1, - k_board_radius*0.5f, &t1, n); + k_board_radius*0.1f, &t1, n); if( idx != -1 ){ goto invalidated_grind; } v3_copy( co1, co0 ); } -#endif v3_copy( grind.n, jump->n ); @@ -614,10 +610,8 @@ void player__approximate_best_trajectory( player_instance *player ) s->possible_jumps[ s->possible_jump_count ++ ] = *jump; -#if 0 continue; invalidated_grind:; -#endif } } @@ -1010,7 +1004,8 @@ VG_STATIC void skate_apply_pump_model( player_instance *player ) v3_muladds( s->state.throw_v, player->rb.to_world[1], -doty, Fl); if( s->state.activity == k_skate_activity_ground ){ - v3_muladds( player->rb.v, Fl, k_mmcollect_lat, player->rb.v ); + if( v3_length2(player->rb.v)<(20.0f*20.0f) ) + v3_muladds( player->rb.v, Fl, k_mmcollect_lat, player->rb.v ); v3_muladds( s->state.throw_v, Fl, -k_mmcollect_lat, s->state.throw_v ); } @@ -1191,10 +1186,13 @@ VG_STATIC void player__skate_post_update( player_instance *player ) slide = 0.0f; } + static float menu_gate = 1.0f; + menu_gate = vg_lerpf( menu_gate, 1-cl_menu, vg.frame_delta*4.0f ); + float - vol_main = sqrtf( (1.0f-air)*attn*(1.0f-slide) * 0.4f ), - vol_air = sqrtf( air *attn * 0.5f ), - vol_slide = sqrtf( (1.0f-air)*attn*slide * 0.25f ); + vol_main = sqrtf( (1.0f-air)*attn*(1.0f-slide) * 0.4f ) * menu_gate, + vol_air = sqrtf( air *attn * 0.5f ) * menu_gate, + vol_slide = sqrtf( (1.0f-air)*attn*slide * 0.25f ) * menu_gate; const u32 flags = AUDIO_FLAG_SPACIAL_3D|AUDIO_FLAG_LOOP; @@ -2390,7 +2388,8 @@ begin_collision:; manifold_len += l; - debug_capsule( mtx, capsule.radius, capsule.height, VG__WHITE ); + if( vg_lines.draw ) + debug_capsule( mtx, capsule.radius, capsule.height, VG__WHITE ); /* add limits */ if( s->state.activity >= k_skate_activity_grind_any ){ @@ -3033,7 +3032,7 @@ VG_STATIC void player__skate_animate( player_instance *player, if( (s->state.activity <= k_skate_activity_air_to_grind) && (fabsf(s->state.flip_rate) > 0.01f) ) { - float t = s->state.flip_time; + float t = s->state.flip_time+s->state.flip_rate*substep*k_rb_delta; sign = vg_signf( t ); t = 1.0f - vg_minf( 1.0f, fabsf( t * 1.1f ) );