dont remember
[carveJwlIkooP6JGAAIwe30JlM.git] / player_audio.h
index 50616048156b1e71978ca657c25a62c0a328b178..bfd93c4af0446f0174f53f3e9882d6542c960317 100644 (file)
  */
 VG_STATIC void player_audio(void)
 {
+#if 0
    struct player_phys *phys = &player.phys;
 
    static int _air = 0;
 
    int l2 = _air;
-   _air = phys->in_air;
+   _air = player_skate.activity == k_skate_activity_air;
 
    static double last_revert = -2000.0;
 
@@ -27,7 +28,8 @@ VG_STATIC void player_audio(void)
    audio_lock();
 
    double revert_delta = vg.time - last_revert;
-   if( phys->on_board && (!_air && l2) && (revert_delta > 0.7) &&
+   if( (phys->controller == k_player_controller_skate) && 
+         (!_air && l2) && (revert_delta > 0.7) &&
        (player.air_time > 0.5f) )
    {
       audio_player_set_position( &audio_player_extra, phys->rb.co );
@@ -47,31 +49,33 @@ VG_STATIC void player_audio(void)
    }
 
    static float air = 0.0f;
-   air = vg_lerpf( air, phys->in_air? 1.0f: 0.0f, 5.0f*vg.time_delta );
+   air = vg_lerpf( air, player_skate.activity == k_skate_activity_air, 
+                        5.0f*vg.time_delta );
 
    /* Spacial info */
    v3f ears = { 1.0f,0.0f,0.0f };
    v3f delta;
 
-   float *cam = camera_pos,
+   float *cam = main_camera.transform[3],
          *pos = phys->rb.co;
    
    audio_player_set_position( &audio_player0, phys->rb.co );
    audio_player_set_position( &audio_player1, phys->rb.co );
    audio_player_set_position( &audio_player2, phys->rb.co );
+   audio_player_set_position( &audio_player4, phys->rb.co );
    audio_player_set_position( &audio_player_gate, world.render_gate_pos );
    audio_player_set_vol( &audio_player_gate, 5.0f );
 
-   v3_sub( phys->rb.co, camera_pos, delta );
+   v3_sub( phys->rb.co, main_camera.transform[3], delta );
    v3_normalize( delta );
-   m3x3_mulv( camera_mtx, ears, ears );
+   m3x3_mulv( main_camera.transform, ears, ears );
 
    /* TODO, Make function */
    v3_copy( ears, vg_audio.listener_ears );
-   v3_copy( camera_pos, vg_audio.listener_pos );
+   v3_copy( main_camera.transform[3], vg_audio.listener_pos );
 
    /* Tunnel / occlusion */
-   audio_sample_occlusion( camera_pos );
+   audio_sample_occlusion( main_camera.transform[3] );
 
    int sprite_avail = -1;
    for( int i=0; i<vg_list_size(ambient_sprites); i++ )
@@ -109,12 +113,14 @@ VG_STATIC void player_audio(void)
       }
    }
    
-   if( freecam || player.is_dead || !phys->on_board )
+   if( freecam || player.is_dead || 
+         !(phys->controller != k_player_controller_skate))
    {
       audio_player_set_vol( &audio_player0, 0.0f );
       audio_player_set_vol( &audio_player1, 0.0f );
       audio_player_set_vol( &audio_player2, 0.0f );
       audio_player_set_vol( &audio_player3, 0.0f );
+      audio_player_set_vol( &audio_player4, 0.0f );
 
       int walk_phase = 0;
       if( vg_fractf(player.walk_timer) > 0.5f )
@@ -122,13 +128,34 @@ VG_STATIC void player_audio(void)
       else
          walk_phase = 0;
 
-      if( (player.step_phase != walk_phase) && !phys->in_air )
+      if( (player.step_phase != walk_phase) && 
+            !(player_walk.activity == k_walk_activity_air) )
       {
          audio_player_set_flags( &audio_player_extra, AUDIO_FLAG_SPACIAL_3D );
          audio_player_set_position( &audio_player_extra, phys->rb.co );
          audio_player_set_vol( &audio_player_extra, 6.0f );
-         audio_player_playclip( &audio_player_extra, 
-                                          &audio_footsteps[rand()%4] );
+
+         if( player.surface_prop == k_surface_prop_concrete )
+         {
+            audio_player_playclip( 
+              &audio_player_extra, 
+              &audio_footsteps[rand()%vg_list_size(audio_footsteps)] 
+            );
+         }
+         else if( player.surface_prop == k_surface_prop_grass )
+         {
+            audio_player_playclip( 
+              &audio_player_extra, 
+              &audio_footsteps_grass[rand()%vg_list_size(audio_footsteps_grass)]
+            );
+         }
+         else if( player.surface_prop == k_surface_prop_wood )
+         {
+            audio_player_playclip( 
+              &audio_player_extra, 
+              &audio_footsteps_wood[rand()%vg_list_size(audio_footsteps_wood)]
+            );
+         }
       }
 
       player.step_phase = walk_phase;
@@ -139,15 +166,19 @@ VG_STATIC void player_audio(void)
       float speed = vg_minf(v3_length( phys->rb.v )*0.1f,1.0f),
             attn  = speed,
             slide = vg_clampf( fabsf(phys->slip), 0.0f, 1.0f ),
-            vol0  = (1.0f-air)*attn*(1.0f-slide),
-            vol1  =       air *attn,
-            vol2  = (1.0f-air)*attn*slide;
+            grind = player_skate.activity == k_skate_activity_grind,
+            vol0  = (1.0f-air)*attn*(1.0f-slide)*(1.0f-grind),
+            vol1  =       air *attn*(1.0f-grind),
+            vol2  = (1.0f-air)*attn*slide*(1.0f-grind),
+            vol4  = grind*2.0f;
       
       audio_player_set_vol( &audio_player0, vol0*vg.time_rate );
       audio_player_set_vol( &audio_player1, vol1*vg.time_rate );
       audio_player_set_vol( &audio_player2, vol2*vg.time_rate );
+      audio_player_set_vol( &audio_player4, vol4*vg.time_rate );
 
       float reverb_amt = vol0 * audio_occlusion_current * 0.5f;
+
       audio_player_set_pan( &audio_player3, 0.0f );
       audio_player_set_vol( &audio_player3, reverb_amt*vg.time_rate );
    }
@@ -157,11 +188,11 @@ VG_STATIC void player_audio(void)
 #endif
    audio_unlock();
 
-   if( player.phys.in_air )
+   if( player_skate.activity == k_skate_activity_air )
       player.air_time += vg.time_delta;
    else
       player.air_time = 0.0f;
-   
+#endif
 }
 
 #endif /* PLAYER_AUDIO_H */