diff options
Diffstat (limited to 'src')
-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 ) |