mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-13 17:19:07 +00:00
feat(Core/WorldObjects): implement Heartbeat timers (#20872)
This commit is contained in:
@@ -1050,7 +1050,7 @@ void MovementInfo::OutDebug()
|
||||
WorldObject::WorldObject(bool isWorldObject) : WorldLocation(),
|
||||
LastUsedScriptID(0), m_name(""), m_isActive(false), m_visibilityDistanceOverride(), m_isWorldObject(isWorldObject), m_zoneScript(nullptr),
|
||||
_zoneId(0), _areaId(0), _floorZ(INVALID_HEIGHT), _outdoors(false), _liquidData(), _updatePositionData(false), m_transport(nullptr),
|
||||
m_currMap(nullptr), m_InstanceId(0), m_phaseMask(PHASEMASK_NORMAL), m_useCombinedPhases(true), m_notifyflags(0), m_executed_notifies(0)
|
||||
m_currMap(nullptr), _heartbeatTimer(HEARTBEAT_INTERVAL), m_InstanceId(0), m_phaseMask(PHASEMASK_NORMAL), m_useCombinedPhases(true), m_notifyflags(0), m_executed_notifies(0)
|
||||
{
|
||||
m_serverSideVisibility.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_ALIVE | GHOST_VISIBILITY_GHOST);
|
||||
m_serverSideVisibilityDetect.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_ALIVE);
|
||||
@@ -1058,9 +1058,18 @@ WorldObject::WorldObject(bool isWorldObject) : WorldLocation(),
|
||||
sScriptMgr->OnWorldObjectCreate(this);
|
||||
}
|
||||
|
||||
void WorldObject::Update(uint32 time_diff)
|
||||
void WorldObject::Update(uint32 diff)
|
||||
{
|
||||
sScriptMgr->OnWorldObjectUpdate(this, time_diff);
|
||||
m_Events.Update(diff);
|
||||
|
||||
_heartbeatTimer -= Milliseconds(diff);
|
||||
while (_heartbeatTimer <= 0ms)
|
||||
{
|
||||
_heartbeatTimer += HEARTBEAT_INTERVAL;
|
||||
Heartbeat();
|
||||
}
|
||||
|
||||
sScriptMgr->OnWorldObjectUpdate(this, diff);
|
||||
}
|
||||
|
||||
void WorldObject::SetWorldObject(bool on)
|
||||
@@ -1134,6 +1143,8 @@ void WorldObject::CleanupsBeforeDelete(bool /*finalCleanup*/)
|
||||
{
|
||||
if (IsInWorld())
|
||||
RemoveFromWorld();
|
||||
|
||||
m_Events.KillAllEvents(false); // non-delatable (currently cast spells) will not deleted now but it will deleted at call in Map::RemoveAllObjectsInRemoveList
|
||||
}
|
||||
|
||||
void WorldObject::_Create(ObjectGuid::LowType guidlow, HighGuid guidhigh, uint32 phaseMask)
|
||||
|
||||
Reference in New Issue
Block a user