diff options
author | megamage <none@none> | 2009-02-22 17:03:01 -0600 |
---|---|---|
committer | megamage <none@none> | 2009-02-22 17:03:01 -0600 |
commit | 9bb780793556fc82e45fd56a6f59c27d4050eb94 (patch) | |
tree | 93f5d41903ddbb936754c695f7f8e0c302d218b0 /src/game/DynamicObject.cpp | |
parent | c9707d3c7f769b85a2e190c4ad395f34b76747cf (diff) |
*Check IsInWorld() when calling GetMap() in RemoveFromWorld(). This may fix some crash bugs.
--HG--
branch : trunk
Diffstat (limited to 'src/game/DynamicObject.cpp')
-rw-r--r-- | src/game/DynamicObject.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/game/DynamicObject.cpp b/src/game/DynamicObject.cpp index 677a31b34de..12a9cd67500 100644 --- a/src/game/DynamicObject.cpp +++ b/src/game/DynamicObject.cpp @@ -52,15 +52,18 @@ void DynamicObject::AddToWorld() void DynamicObject::RemoveFromWorld() { - // Make sure the object is back to grid container for removal as farsight targets - // are switched to world container on creation and they are also set to active - if (isActive()) + ///- Remove the dynamicObject from the accessor + if(IsInWorld()) { - GetMap()->SwitchGridContainers(this, false); - setActive(false); + // Make sure the object is back to grid container for removal as farsight targets + // are switched to world container on creation and they are also set to active + if (isActive()) + { + GetMap()->SwitchGridContainers(this, false); + setActive(false); + } + ObjectAccessor::Instance().RemoveObject(this); } - ///- Remove the dynamicObject from the accessor - if(IsInWorld()) ObjectAccessor::Instance().RemoveObject(this); WorldObject::RemoveFromWorld(); } |