Update README.md to include project description, developer documentation links, and license information.
CI / build-test (push) Successful in 1m6s
CI / build-test (push) Successful in 1m6s
This commit is contained in:
@@ -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++;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user