void _cutscene_unload(void)
{
vg_info( "Unloading cutscene\n" );
+ vg_audio_lock();
vg_audio_fadeout_flagged_audio( AUDIO_FLAG_CUTSCENE, 1.0f );
+ vg_audio_set_flagged_pause( AUDIO_FLAG_CUTSCENE, 0 );
+ vg_audio_unlock();
for( u32 i=0; i<_cutscene.unique_refs; i ++ )
mdl_sync_std_unload( &_cutscene.refs[i].mdl );
if( _cutscene.state == k_cutscene_state_unloading )
{
if( !vg_audio_flagged_stopped( AUDIO_FLAG_CUTSCENE ) )
+ {
+ static u32 ticker = 0;
+ ticker ++;
+ if( ticker > 50 )
+ {
+ vg_low( "waiting for audio to stop...\n" );
+ ticker = 0;
+ }
return;
+ }
vg_allocator_free( _cutscene.arena );
_cutscene.arena = NULL;
_cutscene.marker_this_frame = NULL;
_cutscene.subtitle = NULL;
_cutscene.raiser_entity = 0;
+ vg_info( "Finished unloading cutscene\n" );
return;
}
if( (_cutscene.state != k_cutscene_state_none) && (_cutscene.state != k_cutscene_state_unloading) )
_cutscene_unload();
+ vg_audio_lock();
vg_audio_fadeout_flagged_audio( AUDIO_FLAG_WORLD, 1.0f );
+ vg_audio_set_flagged_pause( AUDIO_FLAG_WORLD, 0 );
+ vg_audio_unlock();
}
_world.loader_instance = world;