From: <fu...@us...> - 2009-08-20 16:33:42
|
Revision: 6972 http://gemrb.svn.sourceforge.net/gemrb/?rev=6972&view=rev Author: fuzzie Date: 2009-08-20 16:33:35 +0000 (Thu, 20 Aug 2009) Log Message: ----------- ChangeAnimationCore: destroy old actor and remove it from the search map before moving the new actor into place Modified Paths: -------------- gemrb/trunk/gemrb/plugins/Core/Actor.cpp gemrb/trunk/gemrb/plugins/Core/GSUtils.cpp Modified: gemrb/trunk/gemrb/plugins/Core/Actor.cpp =================================================================== --- gemrb/trunk/gemrb/plugins/Core/Actor.cpp 2009-08-20 16:16:59 UTC (rev 6971) +++ gemrb/trunk/gemrb/plugins/Core/Actor.cpp 2009-08-20 16:33:35 UTC (rev 6972) @@ -2807,6 +2807,9 @@ void Actor::DestroySelf() { InternalFlags|=IF_CLEANUP; + // clear search map so that a new actor can immediately go there + // (via ChangeAnimationCore) + area->ClearSearchMapFor(this); } bool Actor::CheckOnDeath() Modified: gemrb/trunk/gemrb/plugins/Core/GSUtils.cpp =================================================================== --- gemrb/trunk/gemrb/plugins/Core/GSUtils.cpp 2009-08-20 16:16:59 UTC (rev 6971) +++ gemrb/trunk/gemrb/plugins/Core/GSUtils.cpp 2009-08-20 16:33:35 UTC (rev 6972) @@ -893,9 +893,11 @@ if (tar) { Map *map = src->GetCurrentArea(); map->AddActor( tar ); - tar->SetPosition(src->Pos, 1); + Point pos = src->Pos; tar->SetOrientation(src->GetOrientation(), false ); src->DestroySelf(); + // can't SetPosition while the old actor is taking the spot + tar->SetPosition(pos, 1); if (effect) { CreateVisualEffectCore(tar, tar->Pos,"smokepuffeffect",1); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |