void MapMode::_ResetMusicState() { MusicDescriptor* music = AudioManager->RetrieveMusic(_music_filename); MusicDescriptor* active_music = AudioManager->GetActiveMusic(); // Stop the current music if it's not the right one. if (active_music != nullptr && music != active_music) active_music->FadeOut(500); // If there is no map music or the music is already in the correct state, don't do anything. if (!music || music->GetState() == _music_audio_state) return; switch(_music_audio_state) { case AUDIO_STATE_FADE_IN: case AUDIO_STATE_PLAYING: default: // Seek the music point to not restart it from the beginning. music->SeekSample(_music_audio_sample); // In case the music volume was modified, we fade it back in smoothly if(music->GetVolume() < 1.0f) music->FadeIn(1000); else music->Play(); break; case AUDIO_STATE_UNLOADED: case AUDIO_STATE_FADE_OUT: case AUDIO_STATE_PAUSED: case AUDIO_STATE_STOPPED: if (music->GetState() == AUDIO_STATE_PLAYING || music->GetState() == AUDIO_STATE_FADE_IN) music->FadeOut(1000); break; } }
void AudioEngine::FadeInActiveMusic(float time) { MusicDescriptor* music = GetActiveMusic(); if (music) music->FadeIn(time); }
void AudioEngine::StopActiveMusic() { MusicDescriptor* music = GetActiveMusic(); if (music) music->Stop(); }
void AudioEngine::RewindActiveMusic() { MusicDescriptor* music = GetActiveMusic(); if (music) music->Rewind(); }
void AudioEngine::PauseActiveMusic() { MusicDescriptor* music = GetActiveMusic(); if (music) music->Pause(); }