From 9f27e0be867bd7e5d78defa28b25928decf71df3 Mon Sep 17 00:00:00 2001 From: megamage Date: Wed, 25 Mar 2009 18:14:18 -0600 Subject: *Fix a crash caused by active object. --HG-- branch : trunk --- src/game/Object.cpp | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'src/game') 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 ) -- cgit v1.2.3