Cleaned up update in Actors.cpp

Removed unnecessary for loops
actorid
Jeffrey Haines 11 years ago
parent 4a4c08946c
commit afe624bd07

@ -852,39 +852,29 @@ namespace MWMechanics
// Note, the new hit object for this frame may be set by CharacterController::update -> Animation::runAnimation // Note, the new hit object for this frame may be set by CharacterController::update -> Animation::runAnimation
// (below) // (below)
iter->first.getClass().getCreatureStats(iter->first).setLastHitObject(std::string()); iter->first.getClass().getCreatureStats(iter->first).setLastHitObject(std::string());
}
// AI and magic effects update // AI and magic effects update
for(PtrControllerMap::iterator iter(mActors.begin());iter != mActors.end();++iter)
{
if (!iter->first.getClass().getCreatureStats(iter->first).isDead()) if (!iter->first.getClass().getCreatureStats(iter->first).isDead())
{ {
updateActor(iter->first, duration); updateActor(iter->first, duration);
if(iter->first.getTypeName() == typeid(ESM::NPC).name()) if(iter->first.getTypeName() == typeid(ESM::NPC).name())
updateNpc(iter->first, duration, paused); updateNpc(iter->first, duration, paused);
} }
}
// Looping magic VFX update // Looping magic VFX update
// Note: we need to do this before any of the animations are updated. // Note: we need to do this before any of the animations are updated.
// Reaching the text keys may trigger Hit / Spellcast (and as such, particles), // Reaching the text keys may trigger Hit / Spellcast (and as such, particles),
// so updating VFX immediately after that would just remove the particle effects instantly. // so updating VFX immediately after that would just remove the particle effects instantly.
// There needs to be a magic effect update in between. // There needs to be a magic effect update in between.
for(PtrControllerMap::iterator iter(mActors.begin());iter != mActors.end();++iter)
iter->second->updateContinuousVfx(); iter->second->updateContinuousVfx();
// Animation/movement update // Animation/movement update
for(PtrControllerMap::iterator iter(mActors.begin());iter != mActors.end();++iter)
{
if (iter->first.getClass().getCreatureStats(iter->first).getMagicEffects().get( if (iter->first.getClass().getCreatureStats(iter->first).getMagicEffects().get(
ESM::MagicEffect::Paralyze).mMagnitude > 0) ESM::MagicEffect::Paralyze).mMagnitude > 0)
iter->second->skipAnim(); iter->second->skipAnim();
iter->second->update(duration); iter->second->update(duration);
}
// Kill dead actors // Kill dead actors
for(PtrControllerMap::iterator iter(mActors.begin());iter != mActors.end();iter++)
{
const MWWorld::Class &cls = MWWorld::Class::get(iter->first); const MWWorld::Class &cls = MWWorld::Class::get(iter->first);
CreatureStats &stats = cls.getCreatureStats(iter->first); CreatureStats &stats = cls.getCreatureStats(iter->first);
@ -912,13 +902,8 @@ namespace MWMechanics
continue; continue;
} }
// Make sure spell effects with CasterLinked flag are removed MWMechanics::ActiveSpells& spells = iter2->first.getClass().getCreatureStats(iter2->first).getActiveSpells();
// TODO: would be nice not to do this all the time... spells.purge(iter->first.getRefData().getHandle());
for(PtrControllerMap::iterator iter2(mActors.begin());iter2 != mActors.end();++iter2)
{
MWMechanics::ActiveSpells& spells = iter2->first.getClass().getCreatureStats(iter2->first).getActiveSpells();
spells.purge(iter->first.getRefData().getHandle());
}
// FIXME: see http://bugs.openmw.org/issues/869 // FIXME: see http://bugs.openmw.org/issues/869
MWBase::Environment::get().getWorld()->enableActorCollision(iter->first, false); MWBase::Environment::get().getWorld()->enableActorCollision(iter->first, false);

Loading…
Cancel
Save