*Move object update from objectaccessor to map

*Move activeobject list from objectaccessor to map
*Open grid for all active creatures (previously only for possessed ones)

--HG--
branch : trunk
This commit is contained in:
megamage
2008-11-21 15:41:18 -06:00
parent 71707df1de
commit e9d6f1b23a
8 changed files with 111 additions and 103 deletions

View File

@@ -990,36 +990,37 @@ WorldObject::WorldObject()
WorldObject::~WorldObject()
{
if(m_isActive && IsInWorld())
ObjectAccessor::Instance().RemoveActiveObject(this);
if(m_isActive && !isType(TYPEMASK_PLAYER) && IsInWorld())
GetMap()->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)
if(isActive == m_isActive || isType(TYPEMASK_PLAYER))
return;
m_isActive = isActive;
if(IsInWorld())
{
if(isActive)
ObjectAccessor::Instance().AddActiveObject(this);
GetMap()->AddActiveObject(this);
else
ObjectAccessor::Instance().RemoveActiveObject(this);
GetMap()->RemoveActiveObject(this);
}
}
void WorldObject::AddToWorld()
{
Object::AddToWorld();
if(m_isActive)
ObjectAccessor::Instance().AddActiveObject(this);
if(m_isActive && !isType(TYPEMASK_PLAYER))
GetMap()->AddActiveObject(this);
}
void WorldObject::RemoveFromWorld()
{
if(m_isActive)
ObjectAccessor::Instance().RemoveActiveObject(this);
if(m_isActive && !isType(TYPEMASK_PLAYER))
GetMap()->RemoveActiveObject(this);
Object::RemoveFromWorld();
}