Update README.md to include project description, developer documentation links, and license information.
CI / build-test (push) Successful in 1m6s

This commit is contained in:
Leonid Pershin
2026-06-11 04:03:07 +03:00
parent 31aba3aeee
commit ff2231a8ab
72 changed files with 4113 additions and 0 deletions
+42
View File
@@ -0,0 +1,42 @@
namespace MrGameEng.Core;
/// <summary>
/// Engine time service: per-frame delta, total elapsed time, time scaling and frame counter.
/// Advanced once per frame by <see cref="GameHost"/>.
/// </summary>
public sealed class GameClock
{
/// <summary>Seconds elapsed since the previous frame, multiplied by <see cref="TimeScale"/>.</summary>
public float DeltaTime { get; private set; }
/// <summary>Seconds elapsed since the previous frame, unaffected by <see cref="TimeScale"/>.</summary>
public float UnscaledDeltaTime { get; private set; }
/// <summary>Total scaled time in seconds since the game started.</summary>
public double TotalTime { get; private set; }
/// <summary>Total unscaled time in seconds since the game started.</summary>
public double UnscaledTotalTime { get; private set; }
/// <summary>Multiplier applied to <see cref="DeltaTime"/>. 0 pauses gameplay, 1 is real time. Never negative.</summary>
public float TimeScale
{
get => _timeScale;
set => _timeScale = value < 0f ? 0f : value;
}
/// <summary>Number of completed frames since the game started.</summary>
public long FrameCount { get; private set; }
private float _timeScale = 1f;
/// <summary>Advances the clock by one frame. Called by the host; games should not call this.</summary>
public void Advance(float unscaledDeltaSeconds)
{
UnscaledDeltaTime = unscaledDeltaSeconds;
DeltaTime = unscaledDeltaSeconds * _timeScale;
UnscaledTotalTime += unscaledDeltaSeconds;
TotalTime += DeltaTime;
FrameCount++;
}
}