diff options
Diffstat (limited to 'src/game/Object.cpp')
-rw-r--r-- | src/game/Object.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/game/Object.cpp b/src/game/Object.cpp index 304320f8acf..4486b03d80f 100644 --- a/src/game/Object.cpp +++ b/src/game/Object.cpp @@ -974,6 +974,43 @@ WorldObject::WorldObject() m_name = ""; mSemaphoreTeleport = false; + + m_isActive = false; +} + +WorldObject::~WorldObject() +{ + if(m_isActive && IsInWorld()) + ObjectAccessor::Instance().RemoveActiveObject(this); +} + +void WorldObject::setActive(bool isActive) +{ + // if already in the same activity state as we try to set, do nothing + if(isActive == m_isActive) + return; + m_isActive = isActive; + if(IsInWorld()) + { + if(isActive) + ObjectAccessor::Instance().AddActiveObject(this); + else + ObjectAccessor::Instance().RemoveActiveObject(this); + } +} + +void WorldObject::AddToWorld() +{ + Object::AddToWorld(); + if(m_isActive) + ObjectAccessor::Instance().AddActiveObject(this); +} + +void WorldObject::RemoveFromWorld() +{ + if(m_isActive) + ObjectAccessor::Instance().RemoveActiveObject(this); + Object::RemoveFromWorld(); } void WorldObject::_Create( uint32 guidlow, HighGuid guidhigh, uint32 mapid ) |