//---------------------------------------------------------------------------------- // //---------------------------------------------------------------------------------- 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; }
//---------------------------------------------------------------------------------- // //---------------------------------------------------------------------------------- bool SoundPlayer::CheckPlaying( ::Effekseer::SoundHandle handle, ::Effekseer::SoundTag tag ) { SoundVoice* voice = (SoundVoice*)handle; if (tag == voice->GetTag()) { return voice->CheckPlaying(); } return false; }
//---------------------------------------------------------------------------------- // //---------------------------------------------------------------------------------- bool SoundVoiceContainer::CheckPlayingTag( ::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->CheckPlaying()) { return true; } } return false; }