void SoundSystem::Play3D(Sound3D* media){ if(Instance().CheckSoundPlaying(media)){//if playing ISound* temp = Instance().currPlayingLoopedSounds[media]; if(!temp->getIsPaused()){ temp->setPlayPosition(0.0f);//set back to beginning } temp->setIsLooped(false); temp->setSoundStopEventReceiver (Instance().sndEndReceiver,media); temp->setVolume(media->volume); temp->setMinDistance(media->minSoundDist); temp->setMaxDistance(FLT_MAX); // max attenuation distance temp->setIsPaused(false); }else{ //creates a new sound instance ISound* temp = Instance().soundEngine->play3D(media->mySoundSource,vec3df(media->GetSoundPosition()[x],media->GetSoundPosition()[y],media->GetSoundPosition()[z]),false,false,true); //ISound* temp = Instance().soundEngine->play3D(media->mySoundSource,media->GetPosition(),false,true); Instance().currPlayingLoopedSounds.insert(std::pair<Sound*,ISound*>(media,temp)); temp->setSoundStopEventReceiver(Instance().sndEndReceiver,media); temp->setVolume(media->volume); temp->setMinDistance(media->minSoundDist); temp->setMaxDistance(FLT_MAX); // max attenuation distance temp->setIsPaused(false); } }
void SoundSystem::Play2DLooped(Sound2D* media){ if(Instance().CheckSoundPlaying(media)){//if currently playing ISound* temp =Instance().currPlayingLoopedSounds[media]; if(!temp->getIsPaused()){//if not paused... start from beginning temp->setPlayPosition(0.0f);//set back to beginning } temp->setIsLooped(true); temp->setSoundStopEventReceiver (Instance().sndEndedUsrReceiver,media); temp->setVolume(media->volume); temp->setIsPaused(false); }else{ //creates a new sound instance ISound* temp = Instance().soundEngine->play2D(media->mySoundSource,true,false,true); Instance().currPlayingLoopedSounds.insert(std::pair<Sound*,ISound*>(media,temp)); temp->setSoundStopEventReceiver(Instance().sndEndedUsrReceiver,media); temp->setVolume(media->volume); temp->setIsPaused(false); } }