//---------------------------------------------------------------------------------- // //---------------------------------------------------------------------------------- SoundVoice* SoundVoiceContainer::GetVoice() { if (m_voiceList.empty()) { return NULL; } // 停止ボイスを探す std::list<SoundVoice*>::iterator it; for (it = m_voiceList.begin(); it != m_voiceList.end(); it++) { SoundVoice* voice = *it; if (!voice->CheckPlaying()) { m_voiceList.erase(it); m_voiceList.push_back(voice); return voice; } } // 停止ボイスがないときは最前ボイスを使用 SoundVoice* voice = m_voiceList.front(); m_voiceList.pop_front(); m_voiceList.push_back(voice); voice->Stop(); return voice; }
//---------------------------------------------------------------------------------- // //---------------------------------------------------------------------------------- void SoundPlayer::Stop( ::Effekseer::SoundHandle handle, ::Effekseer::SoundTag tag ) { SoundVoice* voice = (SoundVoice*)handle; if (tag == voice->GetTag()) { voice->Stop(); } }
//---------------------------------------------------------------------------------- // //---------------------------------------------------------------------------------- void SoundVoiceContainer::StopAll() { std::list<SoundVoice*>::iterator it; for (it = m_voiceList.begin(); it != m_voiceList.end(); it++) { SoundVoice* voice = *it; voice->Stop(); } }
//---------------------------------------------------------------------------------- // //---------------------------------------------------------------------------------- void SoundVoiceContainer::StopTag( ::Effekseer::SoundTag tag ) { std::list<SoundVoice*>::iterator it; for (it = m_voiceList.begin(); it != m_voiceList.end(); it++) { SoundVoice* voice = *it; if (tag == voice->GetTag()) { voice->Stop(); } } }
//---------------------------------------------------------------------------------- // //---------------------------------------------------------------------------------- void SoundVoiceContainer::StopData( SoundData* soundData ) { std::list<SoundVoice*>::iterator it; for (it = m_voiceList.begin(); it != m_voiceList.end(); it++) { SoundVoice* voice = *it; if (soundData == voice->GetData()) { voice->Stop(); } } }