Core/Objects: implement internal heartbeat timer for WorldObjects
Port From (https://github.com/TrinityCore/TrinityCore/commit/bf9cd88cebf752ce8614fbac8a7c6d1f0de7fee8)
This commit is contained in:
@@ -245,6 +245,7 @@ namespace Framework.Constants
|
||||
public const float DefaultVisibilityInstance = 170.0f; // default visible distance in instances, 170 yards
|
||||
public const float DefaultVisibilityBGAreans = 533.0f; // default visible distance in BG/Arenas, roughly 533 yards
|
||||
public const int DefaultVisibilityNotifyPeriod = 1000;
|
||||
public static TimeSpan HeartbeatInterval = TimeSpan.FromSeconds(5.2);
|
||||
|
||||
public const int WorldTrigger = 12999;
|
||||
|
||||
|
||||
@@ -41,6 +41,8 @@ namespace Game.Entities
|
||||
m_objectData = new ObjectFieldData();
|
||||
|
||||
m_staticFloorZ = MapConst.VMAPInvalidHeightValue;
|
||||
|
||||
_heartbeatTimer = SharedConst.HeartbeatInterval;
|
||||
}
|
||||
|
||||
public virtual void Dispose()
|
||||
@@ -992,7 +994,16 @@ 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)
|
||||
{
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user