scraped a small amount of crap
[carveJwlIkooP6JGAAIwe30JlM.git] / player_skate.c
index bec54539ecd625135513fd136df79ad731a8f117..a802a1cd496a2e1e78570ab424e94ce017f36d09 100644 (file)
@@ -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;