diff options
| author | megamage <none@none> | 2009-03-25 18:14:18 -0600 |
|---|---|---|
| committer | megamage <none@none> | 2009-03-25 18:14:18 -0600 |
| commit | 9f27e0be867bd7e5d78defa28b25928decf71df3 (patch) | |
| tree | 0c364b612c884c5ca86ff9db51a06d2158066b8c /src/game/Object.cpp | |
| parent | 581ae2719d1639d063a812901ff4b0983169cde7 (diff) | |
*Fix a crash caused by active object.
--HG--
branch : trunk
Diffstat (limited to 'src/game/Object.cpp')
| -rw-r--r-- | src/game/Object.cpp | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/src/game/Object.cpp b/src/game/Object.cpp index 23db2319cf9..7966a79a84e 100644 --- a/src/game/Object.cpp +++ b/src/game/Object.cpp @@ -1080,33 +1080,35 @@ void WorldObject::SetWorldObject(bool on) void WorldObject::setActive( bool on ) { - if(m_isActive==on) + if(m_isActive == on) return; if(GetTypeId() == TYPEID_PLAYER) return; - bool world = IsInWorld(); + m_isActive = on; - Map* map; - if(world) - { - map = GetMap(); - if(GetTypeId() == TYPEID_UNIT) - map->RemoveFromActive((Creature*)this); - else if(GetTypeId() == TYPEID_DYNAMICOBJECT) - map->RemoveFromActive((DynamicObject*)this); - } + if(!IsInWorld()) + return; - m_isActive = on; + Map *map = FindMap(); + if(!map) + return; - if(world) + if(on) { if(GetTypeId() == TYPEID_UNIT) map->AddToActive((Creature*)this); else if(GetTypeId() == TYPEID_DYNAMICOBJECT) map->AddToActive((DynamicObject*)this); } + else + { + if(GetTypeId() == TYPEID_UNIT) + map->RemoveFromActive((Creature*)this); + else if(GetTypeId() == TYPEID_DYNAMICOBJECT) + map->RemoveFromActive((DynamicObject*)this); + } } void WorldObject::_Create( uint32 guidlow, HighGuid guidhigh, uint32 mapid ) |
