void SimpleAudioEngine::unloadEffect(const char* pszFilePath) { std::string key = std::string(pszFilePath); if(!s_effects.count(key)) { return; } struct soundData *sound = s_effects[key]; Mix_FreeChunk(sound->chunk); delete sound; s_effects.erase(key); }
void SimpleAudioEngine::unloadEffect(const char* pszFilePath) { EffectsMap::iterator iter = s_effects.find(pszFilePath); if (iter != s_effects.end()) { alSourceStop(iter->second->source); alDeleteSources(1, &iter->second->source); alDeleteBuffers(1, &iter->second->buffer); delete iter->second; int err = alGetError(); if (err != AL_NO_ERROR) printALError(err); s_effects.erase(iter); } }
void SimpleAudioEngine::unloadEffect(const char* pszFilePath) { EffectsMap::iterator iter = s_effects.find(pszFilePath); if (iter != s_effects.end()) { checkALError("unloadEffect"); alSourceStop(iter->second->source); checkALError("unloadEffect"); alDeleteSources(1, &iter->second->source); checkALError("unloadEffect"); alDeleteBuffers(1, &iter->second->buffer); checkALError("unloadEffect"); delete iter->second; s_effects.erase(iter); } }
void SimpleAudioEngine::unloadEffect(const char* pszFilePath) { // Changing file path to full path std::string fullPath = FileUtils::getInstance()->fullPathForFilename(pszFilePath); EffectsMap::iterator iter = s_effects.find(fullPath); if (iter != s_effects.end()) { checkALError("unloadEffect:init"); alSourceStop(iter->second->source); checkALError("unloadEffect:alSourceStop"); alDeleteSources(1, &iter->second->source); checkALError("unloadEffect:DeletSources"); alDeleteBuffers(1, &iter->second->buffer); checkALError("unloadEffect:alDeleteBuffers"); delete iter->second; s_effects.erase(iter); } }
void System<EffectsComp>::update(double elapsed) { std::map<ObjectId,EffectsComp>::iterator iCom = components_.begin(); while(iCom!=components_.end()) { EffectsComp* effectsComp = &iCom->second; EffectsMap* effectsMap = effectsComp->getEffects(); // std::cout << "Address of effectsMap: "<< effectsMap << std::endl; // std::cout << "copy of effects map size : "<< effectsMap->size() << std::endl; // std::cout << "orig effects map size : " << effectsComp->getEffects()->size() << std::endl; //update each effect in component as necessary EffectsMap::iterator iEffect = effectsMap->begin(); while(iEffect!=effectsMap->end()) { //update timer if necessary if(iEffect->second->hasDuration()) { iEffect->second->updateDuration(elapsed); //check if timer has expired if (iEffect->second->hasExpired()) { //do on end messages std::vector<Parameters> endParams = iEffect->second->getOnEnd(); std::vector<Parameters>::iterator iParams = endParams.begin(); while(iParams!= endParams.end()) { if(iParams->size()>0) { Message msg(effectsComp->getId(), effectsComp->getId(), *iParams); Telegram tel(effectsComp->getId(), effectsComp->getId(), 0.0, msg); core_->getMessageCentre()->addTelegram(tel); } ++iParams; } //delete params effectsMap->erase(iEffect++); continue; } } //carry out onUpdate messages std::vector<Parameters> updateParams = iEffect->second->getOnUpdate(); std::vector<Parameters>::iterator iParams = updateParams.begin(); while(iParams!= updateParams.end()) { if(iParams->size()>0) { Message msg(effectsComp->getId(), effectsComp->getId(), *iParams); Telegram tel(effectsComp->getId(), effectsComp->getId(), 0.0, msg); core_->getMessageCentre()->addTelegram(tel); } ++iParams; } ++iEffect; } ++iCom; } }