skate audio fadeout
authorhgn <hgodden00@gmail.com>
Sun, 26 Mar 2023 23:47:27 +0000 (00:47 +0100)
committerhgn <hgodden00@gmail.com>
Sun, 26 Mar 2023 23:47:27 +0000 (00:47 +0100)
player_skate.c

index c6e5db6ab6c188cd3cc901301b751fa530829ecb..df54c58e02fbe411734b7e38ce8dddd70f4899e1 100644 (file)
@@ -22,6 +22,20 @@ VG_STATIC void player__skate_bind( player_instance *player )
    s->anim_grabs           = skeleton_get_anim( sk, "grabs" );
 }
 
+VG_STATIC void player__skate_kill_audio( player_instance *player )
+{
+   struct player_skate *s = &player->_skate;
+
+   audio_lock();
+   if( s->aud_main )
+      s->aud_main = audio_channel_fadeout( s->aud_main, 0.1f );
+   if( s->aud_air )
+      s->aud_air = audio_channel_fadeout( s->aud_air, 0.1f );
+   if( s->aud_slide )
+      s->aud_slide = audio_channel_fadeout( s->aud_slide, 0.1f );
+   audio_unlock();
+}
+
 /* 
  * Collision detection routines
  *
@@ -636,6 +650,7 @@ VG_STATIC void skate_apply_trick_model( player_instance *player )
       if( (v3_length2(s->state.trick_vel) >= 0.0001f ) &&
           s->state.trick_time > 0.2f)
       {
+         player__skate_kill_audio( player );
          player__dead_transition( player );
       }
 
@@ -967,6 +982,7 @@ VG_STATIC void player__skate_pre_update( player_instance *player )
       angles[2] = 0.0f;
 
       player->holdout_time = 0.25f;
+      player__skate_kill_audio( player );
       player__walk_transition( player, angles );
       return;
    }
@@ -2065,6 +2081,7 @@ begin_collision:;
       v3_lerp( start_co, player->rb.co, t, player->rb.co );
       rb_update_transform( &player->rb );
 
+      player__skate_kill_audio( player );
       player__dead_transition( player );
       return;
    }