*Fix a crash caused by active object.

--HG--
branch : trunk
This commit is contained in:
megamage
2009-03-25 18:14:18 -06:00
parent 581ae2719d
commit 9f27e0be86

View File

@@ -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();
Map* map;
if(world)
{
map = GetMap();
if(GetTypeId() == TYPEID_UNIT)
map->RemoveFromActive((Creature*)this);
else if(GetTypeId() == TYPEID_DYNAMICOBJECT)
map->RemoveFromActive((DynamicObject*)this);
}
m_isActive = on;
if(world)
if(!IsInWorld())
return;
Map *map = FindMap();
if(!map)
return;
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 )