Core/Objects: implement internal heartbeat timer for WorldObjects

Port From (https://github.com/TrinityCore/TrinityCore/commit/bf9cd88cebf752ce8614fbac8a7c6d1f0de7fee8)
This commit is contained in:
Hondacrx
2024-08-19 11:41:31 -04:00
parent 5508d53db2
commit 676a6cf84a
2 changed files with 14 additions and 0 deletions
@@ -41,6 +41,8 @@ namespace Game.Entities
m_objectData = new ObjectFieldData();
m_staticFloorZ = MapConst.VMAPInvalidHeightValue;
_heartbeatTimer = SharedConst.HeartbeatInterval;
}
public virtual void Dispose()
@@ -992,8 +994,17 @@ namespace Game.Entities
public virtual void Update(uint diff)
{
m_Events.Update(diff);
_heartbeatTimer -= TimeSpan.FromMilliseconds(diff);
while (_heartbeatTimer <= TimeSpan.Zero)
{
_heartbeatTimer += SharedConst.HeartbeatInterval;
Heartbeat();
}
}
public virtual void Heartbeat() { }
public void SetIsStoredInWorldObjectGridContainer(bool on)
{
if (!IsInWorld)
@@ -3859,6 +3870,8 @@ namespace Game.Entities
SmoothPhasing _smoothPhasing;
TimeSpan _heartbeatTimer;
public FlaggedArray32<StealthType> m_stealth = new(2);
public FlaggedArray32<StealthType> m_stealthDetect = new(2);