mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-13 11:43:18 -04:00
Core/Objects: implement internal heartbeat timer for WorldObjects (#29941)
This is the first step of porting the functionality of #25822 by cutting each change into a nicely self-contained commit --------- Co-authored-by: Mykhailo Redko <ovitnez@gmail.com>
This commit is contained in:
@@ -880,7 +880,7 @@ void MovementInfo::OutDebug()
|
||||
WorldObject::WorldObject(bool isWorldObject) : Object(), WorldLocation(), LastUsedScriptID(0),
|
||||
m_movementInfo(), m_name(), m_isActive(false), m_isFarVisible(false), m_isStoredInWorldObjectGridContainer(isWorldObject), m_zoneScript(nullptr),
|
||||
m_transport(nullptr), m_zoneId(0), m_areaId(0), m_staticFloorZ(VMAP_INVALID_HEIGHT), m_outdoors(false), m_liquidStatus(LIQUID_MAP_NO_WATER),
|
||||
m_currMap(nullptr), m_InstanceId(0), _dbPhase(0), m_notifyflags(0)
|
||||
m_currMap(nullptr), m_InstanceId(0), _dbPhase(0), m_notifyflags(0), _heartbeatTimer(HEARTBEAT_INTERVAL)
|
||||
{
|
||||
m_serverSideVisibility.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_ALIVE | GHOST_VISIBILITY_GHOST);
|
||||
m_serverSideVisibilityDetect.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_ALIVE);
|
||||
@@ -904,6 +904,13 @@ WorldObject::~WorldObject()
|
||||
void WorldObject::Update(uint32 diff)
|
||||
{
|
||||
m_Events.Update(diff);
|
||||
|
||||
_heartbeatTimer -= Milliseconds(diff);
|
||||
while (_heartbeatTimer <= 0ms)
|
||||
{
|
||||
_heartbeatTimer += HEARTBEAT_INTERVAL;
|
||||
Heartbeat();
|
||||
}
|
||||
}
|
||||
|
||||
void WorldObject::SetIsStoredInWorldObjectGridContainer(bool on)
|
||||
|
||||
Reference in New Issue
Block a user