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;