X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_skate.c;h=a802a1cd496a2e1e78570ab424e94ce017f36d09;hb=d6171f1c56789b2ca79efa3313fbbf74a13bda7a;hp=c18df219f4f8f9475d91ae6ac5e3e569fa58c95b;hpb=8f83be5a31728cd6bf95020e729367cc44308763;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_skate.c b/player_skate.c index c18df21..a802a1c 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; @@ -3156,4 +3154,10 @@ VG_STATIC void player__skate_reset( player_instance *player, s->state.head_position[1] = 1.8f; } +VG_STATIC void player__skate_restore( player_instance *player ) +{ + struct player_skate *s = &player->_skate; + s->state = s->state_gate_storage; +} + #endif /* PLAYER_SKATE_C */