|
|
@ -1355,6 +1355,14 @@ namespace MWMechanics
|
|
|
|
bool cellChanged = world->hasCellChanged();
|
|
|
|
bool cellChanged = world->hasCellChanged();
|
|
|
|
MWWorld::Ptr actor = iter->first; // make a copy of the map key to avoid it being invalidated when the player teleports
|
|
|
|
MWWorld::Ptr actor = iter->first; // make a copy of the map key to avoid it being invalidated when the player teleports
|
|
|
|
updateActor(actor, duration);
|
|
|
|
updateActor(actor, duration);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 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.
|
|
|
|
|
|
|
|
ctrl->updateContinuousVfx();
|
|
|
|
|
|
|
|
|
|
|
|
if (!cellChanged && world->hasCellChanged())
|
|
|
|
if (!cellChanged && world->hasCellChanged())
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return; // for now abort update of the old cell when cell changes by teleportation magic effect
|
|
|
|
return; // for now abort update of the old cell when cell changes by teleportation magic effect
|
|
|
@ -1428,14 +1436,6 @@ namespace MWMechanics
|
|
|
|
timerUpdateEquippedLight += duration;
|
|
|
|
timerUpdateEquippedLight += duration;
|
|
|
|
mTimerDisposeSummonsCorpses += duration;
|
|
|
|
mTimerDisposeSummonsCorpses += duration;
|
|
|
|
|
|
|
|
|
|
|
|
// 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(PtrActorMap::iterator iter(mActors.begin()); iter != mActors.end(); ++iter)
|
|
|
|
|
|
|
|
iter->second->getCharacterController()->updateContinuousVfx();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Animation/movement update
|
|
|
|
// Animation/movement update
|
|
|
|
CharacterController* playerCharacter = nullptr;
|
|
|
|
CharacterController* playerCharacter = nullptr;
|
|
|
|
for(PtrActorMap::iterator iter(mActors.begin()); iter != mActors.end(); ++iter)
|
|
|
|
for(PtrActorMap::iterator iter(mActors.begin()); iter != mActors.end(); ++iter)
|
|
|
|