Merge remote-tracking branch 'miroslavr/master'

loadfix
Marc Zinnschlag 10 years ago
commit 533bb3b0d5

@ -17,18 +17,35 @@ namespace MWMechanics
MWWorld::TimeStamp now = MWBase::Environment::get().getWorld()->getTimeStamp(); MWWorld::TimeStamp now = MWBase::Environment::get().getWorld()->getTimeStamp();
// Erase no longer active spells // Erase no longer active spells and effects
if (mLastUpdate!=now) if (mLastUpdate!=now)
{ {
TContainer::iterator iter (mSpells.begin()); TContainer::iterator iter (mSpells.begin());
while (iter!=mSpells.end()) while (iter!=mSpells.end())
{
if (!timeToExpire (iter)) if (!timeToExpire (iter))
{ {
mSpells.erase (iter++); mSpells.erase (iter++);
rebuild = true; rebuild = true;
} }
else else
{
std::vector<ActiveEffect>& effects = iter->second.mEffects;
for (std::vector<ActiveEffect>::iterator effectIt = effects.begin(); effectIt != effects.end();)
{
MWWorld::TimeStamp start = iter->second.mTimeStamp;
MWWorld::TimeStamp end = start + static_cast<double>(effectIt->mDuration)*MWBase::Environment::get().getWorld()->getTimeScaleFactor()/(60*60);
if (end <= now)
{
effectIt = effects.erase(effectIt);
rebuild = true;
}
else
++effectIt;
}
++iter; ++iter;
}
}
mLastUpdate = now; mLastUpdate = now;
} }

Loading…
Cancel
Save