diff --git a/apps/openmw/mwsound/soundmanagerimp.cpp b/apps/openmw/mwsound/soundmanagerimp.cpp index a1eb59bac5..42c8d9065a 100644 --- a/apps/openmw/mwsound/soundmanagerimp.cpp +++ b/apps/openmw/mwsound/soundmanagerimp.cpp @@ -32,6 +32,8 @@ namespace MWSound { namespace { + constexpr float sMinUpdateInterval = 1.0f / 30.0f; + WaterSoundUpdaterSettings makeWaterSoundUpdaterSettings() { WaterSoundUpdaterSettings settings; @@ -946,13 +948,11 @@ namespace MWSound mSaySoundsQueue.erase(queuesayiter++); } - static float timePassed = 0.0; - - timePassed += duration; - if(timePassed < (1.0f/30.0f)) + mTimePassed += duration; + if (mTimePassed < sMinUpdateInterval) return; - duration = timePassed; - timePassed = 0.0f; + duration = mTimePassed; + mTimePassed = 0.0f; // Make sure music is still playing if(!isMusicPlaying() && !mCurrentPlaylist.empty()) diff --git a/apps/openmw/mwsound/soundmanagerimp.hpp b/apps/openmw/mwsound/soundmanagerimp.hpp index c79f9abe57..b3d43dc88c 100644 --- a/apps/openmw/mwsound/soundmanagerimp.hpp +++ b/apps/openmw/mwsound/soundmanagerimp.hpp @@ -114,6 +114,8 @@ namespace MWSound RegionSoundSelector mRegionSoundSelector; + float mTimePassed = 0; + Sound_Buffer *insertSound(const std::string &soundId, const ESM::Sound *sound); Sound_Buffer *lookupSound(const std::string &soundId) const;