From b73c9ed0aef204c76a90ddf68f027f6fdaca3cb7 Mon Sep 17 00:00:00 2001 From: Syntriax Date: Sun, 30 Mar 2025 20:19:03 +0300 Subject: [PATCH] refactor: got rid of the static Time class and implemented EngineTime on IGameManager --- Engine.Core/Abstract/IGameManager.cs | 15 ++++++++++----- Engine.Core/EngineTime.cs | 8 ++++---- Engine.Core/GameManager.cs | 12 ++++++------ Engine.Core/Time.cs | 15 --------------- Engine.Physics2D/PhysicsCoroutineManager.cs | 2 +- 5 files changed, 21 insertions(+), 31 deletions(-) delete mode 100644 Engine.Core/Time.cs diff --git a/Engine.Core/Abstract/IGameManager.cs b/Engine.Core/Abstract/IGameManager.cs index 85df155..8805249 100644 --- a/Engine.Core/Abstract/IGameManager.cs +++ b/Engine.Core/Abstract/IGameManager.cs @@ -8,7 +8,7 @@ namespace Syntriax.Engine.Core.Abstract; public interface IGameManager : IEntity { /// - /// Event triggered when is called on the . + /// Event triggered when is called on the . /// event UpdateEventHandler? OnUpdate; @@ -27,6 +27,11 @@ public interface IGameManager : IEntity /// event HierarchyObjectUnRegisteredEventHandler? OnHierarchyObjectUnRegistered; + /// + /// Contains time data related to this . + /// + EngineTime Time { get; } + /// /// Gets a read-only list of s managed by the . /// @@ -53,17 +58,17 @@ public interface IGameManager : IEntity void Remove(IHierarchyObject hierarchyObject); /// - /// Updates the with the given engine time data. + /// Updates the with the given delta time. /// - /// The engine time. - void Update(EngineTime time); + /// Delta time. + void Update(EngineTime engineTime); /// /// Performs operations that should be done before the draw calls. /// void PreDraw(); - delegate void UpdateEventHandler(IGameManager sender, EngineTime time); + delegate void UpdateEventHandler(IGameManager sender, EngineTime engineTime); delegate void PreDawEventHandler(IGameManager sender); delegate void HierarchyObjectRegisteredEventHandler(IGameManager sender, IHierarchyObject hierarchyObjectRegistered); diff --git a/Engine.Core/EngineTime.cs b/Engine.Core/EngineTime.cs index f038134..d54964c 100644 --- a/Engine.Core/EngineTime.cs +++ b/Engine.Core/EngineTime.cs @@ -2,10 +2,10 @@ using System; namespace Syntriax.Engine.Core; -public readonly struct EngineTime(TimeSpan Total, TimeSpan Elapsed) +public readonly struct EngineTime(TimeSpan TimeSinceStart, TimeSpan TimeDelta) { - public readonly TimeSpan Total = Total; - public readonly TimeSpan Elapsed = Elapsed; + public readonly TimeSpan TimeSinceStart = TimeSinceStart; + public readonly TimeSpan DeltaSpan = TimeDelta; - public readonly float DeltaTimeFrame = (float)Elapsed.TotalMilliseconds * .001f; + public readonly float DeltaTime = (float)TimeDelta.TotalSeconds; } diff --git a/Engine.Core/GameManager.cs b/Engine.Core/GameManager.cs index a4f00f4..8d1b597 100644 --- a/Engine.Core/GameManager.cs +++ b/Engine.Core/GameManager.cs @@ -19,7 +19,6 @@ public class GameManager : BaseEntity, IGameManager private readonly List _hierarchyObjects = new(Constants.GAME_OBJECTS_SIZE_INITIAL); private HierarchyObjectFactory _hierarchyObjectFactory = null!; - private HierarchyObjectFactory HierarchyObjectFactory { get @@ -46,6 +45,8 @@ public class GameManager : BaseEntity, IGameManager } } + public EngineTime Time { get; private set; } = new(); + public void Register(IHierarchyObject hierarchyObject) { if (_hierarchyObjects.Contains(hierarchyObject)) @@ -113,13 +114,14 @@ public class GameManager : BaseEntity, IGameManager HierarchyObjects[i].Finalize(); } - public void Update(EngineTime time) + public void Update(EngineTime engineTime) { - Time.SetTime(time); + Time = engineTime; + for (int i = 0; i < HierarchyObjects.Count; i++) HierarchyObjects[i].BehaviourController.Update(); - OnUpdate?.Invoke(this, time); + OnUpdate?.Invoke(this, engineTime); } public void PreDraw() @@ -130,8 +132,6 @@ public class GameManager : BaseEntity, IGameManager OnPreDraw?.Invoke(this); } - ///////////////////////////////////////////////////////////////// - private void OnHierarchyObjectFinalize(IInitializable initializable) { if (initializable is IHierarchyObject hierarchyObject) diff --git a/Engine.Core/Time.cs b/Engine.Core/Time.cs deleted file mode 100644 index 34a362d..0000000 --- a/Engine.Core/Time.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; - -namespace Syntriax.Engine.Core; - -public static class Time -{ - private static EngineTime _engineTime = new(TimeSpan.Zero, TimeSpan.Zero); - - public static TimeSpan Total => _engineTime.Total; - public static TimeSpan Elapsed => _engineTime.Elapsed; - - public static float DeltaTimeFrame => _engineTime.DeltaTimeFrame; - - public static void SetTime(EngineTime engineTime) => _engineTime = engineTime; -} diff --git a/Engine.Physics2D/PhysicsCoroutineManager.cs b/Engine.Physics2D/PhysicsCoroutineManager.cs index e2ed13d..8daadd0 100644 --- a/Engine.Physics2D/PhysicsCoroutineManager.cs +++ b/Engine.Physics2D/PhysicsCoroutineManager.cs @@ -51,7 +51,7 @@ public class PhysicsCoroutineManager : HierarchyObject gameManager.OnUpdate -= OnUpdate; } - private void OnUpdate(IGameManager sender, EngineTime time) + private void OnUpdate(IGameManager sender, EngineTime engineTime) { if (GameManager is not IGameManager gameManager) return;