mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-11-03 23:56:43 +00:00 
			
		
		
		
	Cleaned up update in Actors.cpp
Removed unnecessary for loops
This commit is contained in:
		
							parent
							
								
									4a4c08946c
								
							
						
					
					
						commit
						afe624bd07
					
				
					 1 changed files with 10 additions and 25 deletions
				
			
		| 
						 | 
				
			
			@ -852,39 +852,29 @@ namespace MWMechanics
 | 
			
		|||
                // Note, the new hit object for this frame may be set by CharacterController::update -> Animation::runAnimation
 | 
			
		||||
                // (below)
 | 
			
		||||
                iter->first.getClass().getCreatureStats(iter->first).setLastHitObject(std::string());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // AI and magic effects update
 | 
			
		||||
            for(PtrControllerMap::iterator iter(mActors.begin());iter != mActors.end();++iter)
 | 
			
		||||
            {
 | 
			
		||||
                // AI and magic effects update
 | 
			
		||||
                if (!iter->first.getClass().getCreatureStats(iter->first).isDead())
 | 
			
		||||
                {
 | 
			
		||||
                    updateActor(iter->first, duration);
 | 
			
		||||
                    if(iter->first.getTypeName() == typeid(ESM::NPC).name())
 | 
			
		||||
                        updateNpc(iter->first, duration, paused);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Looping magic VFX update
 | 
			
		||||
            // 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),
 | 
			
		||||
            // so updating VFX immediately after that would just remove the particle effects instantly.
 | 
			
		||||
            // There needs to be a magic effect update in between.
 | 
			
		||||
            for(PtrControllerMap::iterator iter(mActors.begin());iter != mActors.end();++iter)
 | 
			
		||||
                // Looping magic VFX update
 | 
			
		||||
                // 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),
 | 
			
		||||
                // so updating VFX immediately after that would just remove the particle effects instantly.
 | 
			
		||||
                // There needs to be a magic effect update in between.
 | 
			
		||||
                iter->second->updateContinuousVfx();
 | 
			
		||||
 | 
			
		||||
            // Animation/movement update
 | 
			
		||||
            for(PtrControllerMap::iterator iter(mActors.begin());iter != mActors.end();++iter)
 | 
			
		||||
            {
 | 
			
		||||
                // Animation/movement update
 | 
			
		||||
                if (iter->first.getClass().getCreatureStats(iter->first).getMagicEffects().get(
 | 
			
		||||
                            ESM::MagicEffect::Paralyze).mMagnitude > 0)
 | 
			
		||||
                    iter->second->skipAnim();
 | 
			
		||||
                iter->second->update(duration);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Kill dead actors
 | 
			
		||||
            for(PtrControllerMap::iterator iter(mActors.begin());iter != mActors.end();iter++)
 | 
			
		||||
            {
 | 
			
		||||
                // Kill dead actors
 | 
			
		||||
                const MWWorld::Class &cls = MWWorld::Class::get(iter->first);
 | 
			
		||||
                CreatureStats &stats = cls.getCreatureStats(iter->first);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -912,13 +902,8 @@ namespace MWMechanics
 | 
			
		|||
                    continue;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // Make sure spell effects with CasterLinked flag are removed
 | 
			
		||||
                // TODO: would be nice not to do this all the time...
 | 
			
		||||
                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());
 | 
			
		||||
                }
 | 
			
		||||
                MWMechanics::ActiveSpells& spells = iter2->first.getClass().getCreatureStats(iter2->first).getActiveSpells();
 | 
			
		||||
                spells.purge(iter->first.getRefData().getHandle());
 | 
			
		||||
 | 
			
		||||
                // FIXME: see http://bugs.openmw.org/issues/869
 | 
			
		||||
                MWBase::Environment::get().getWorld()->enableActorCollision(iter->first, false);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue