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 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 float DefaultVisibilityBGAreans = 533.0f; // default visible distance in BG/Arenas, roughly 533 yards
|
||||||
public const int DefaultVisibilityNotifyPeriod = 1000;
|
public const int DefaultVisibilityNotifyPeriod = 1000;
|
||||||
|
public static TimeSpan HeartbeatInterval = TimeSpan.FromSeconds(5.2);
|
||||||
|
|
||||||
public const int WorldTrigger = 12999;
|
public const int WorldTrigger = 12999;
|
||||||
|
|
||||||
|
|||||||
@@ -41,6 +41,8 @@ namespace Game.Entities
|
|||||||
m_objectData = new ObjectFieldData();
|
m_objectData = new ObjectFieldData();
|
||||||
|
|
||||||
m_staticFloorZ = MapConst.VMAPInvalidHeightValue;
|
m_staticFloorZ = MapConst.VMAPInvalidHeightValue;
|
||||||
|
|
||||||
|
_heartbeatTimer = SharedConst.HeartbeatInterval;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void Dispose()
|
public virtual void Dispose()
|
||||||
@@ -992,8 +994,17 @@ namespace Game.Entities
|
|||||||
public virtual void Update(uint diff)
|
public virtual void Update(uint diff)
|
||||||
{
|
{
|
||||||
m_Events.Update(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)
|
public void SetIsStoredInWorldObjectGridContainer(bool on)
|
||||||
{
|
{
|
||||||
if (!IsInWorld)
|
if (!IsInWorld)
|
||||||
@@ -3859,6 +3870,8 @@ namespace Game.Entities
|
|||||||
|
|
||||||
SmoothPhasing _smoothPhasing;
|
SmoothPhasing _smoothPhasing;
|
||||||
|
|
||||||
|
TimeSpan _heartbeatTimer;
|
||||||
|
|
||||||
public FlaggedArray32<StealthType> m_stealth = new(2);
|
public FlaggedArray32<StealthType> m_stealth = new(2);
|
||||||
public FlaggedArray32<StealthType> m_stealthDetect = new(2);
|
public FlaggedArray32<StealthType> m_stealthDetect = new(2);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user