Wait for the previous sound to stop

pull/3024/head
unknown 4 years ago
parent 1ce296aa7f
commit eebb320916

@ -60,6 +60,7 @@
Bug #5639: Tooltips cover Messageboxes
Bug #5644: Summon effects running on the player during game initialization cause crashes
Bug #5656: Sneaking characters block hits while standing
Bug #5661: Region sounds don't play at the right interval
Feature #390: 3rd person look "over the shoulder"
Feature #2386: Distant Statics in the form of Object Paging
Feature #2404: Levelled List can not be placed into a container

@ -20,10 +20,9 @@ namespace MWSound
}
RegionSoundSelector::RegionSoundSelector()
{
mMinTimeBetweenSounds = Fallback::Map::getFloat("Weather_Minimum_Time_Between_Environmental_Sounds");
mMaxTimeBetweenSounds = Fallback::Map::getFloat("Weather_Maximum_Time_Between_Environmental_Sounds");
}
: mMinTimeBetweenSounds(Fallback::Map::getFloat("Weather_Minimum_Time_Between_Environmental_Sounds"))
, mMaxTimeBetweenSounds(Fallback::Map::getFloat("Weather_Maximum_Time_Between_Environmental_Sounds"))
{}
boost::optional<std::string> RegionSoundSelector::getNextRandom(float duration, const std::string& regionName,
const MWBase::World& world)
@ -71,9 +70,6 @@ namespace MWSound
if (it == region->mSoundList.end())
return {};
// TODO
// mTimeToNextEnvSound += soundDuration
return it->mSound;
}
}

@ -895,9 +895,11 @@ namespace MWSound
if (!cell->isExterior())
return;
if (mCurrentRegionSound && mOutput->isSoundPlaying(mCurrentRegionSound))
return;
if (const auto next = mRegionSoundSelector.getNextRandom(duration, cell->mRegion, *world))
playSound(*next, 1.0f, 1.0f);
mCurrentRegionSound = playSound(*next, 1.0f, 1.0f);
}
void SoundManager::updateWaterSound()

@ -120,6 +120,8 @@ namespace MWSound
const ESM::Cell *mLastCell = nullptr;
Sound* mCurrentRegionSound;
Sound_Buffer *insertSound(const std::string &soundId, const ESM::Sound *sound);
Sound_Buffer *lookupSound(const std::string &soundId) const;

Loading…
Cancel
Save