feat: IUniverse.OnTimeChanged event added
This commit is contained in:
parent
5c1c025fe3
commit
94d01521d4
@ -32,6 +32,11 @@ public interface IUniverse : IEntity, IEnumerable<IUniverseObject>
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
event UniverseObjectUnRegisteredEventHandler? OnUniverseObjectUnRegistered;
|
event UniverseObjectUnRegisteredEventHandler? OnUniverseObjectUnRegistered;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Event triggered when <see cref="TimeScale"/> is changed on the <see cref="IUniverse"/>.
|
||||||
|
/// </summary>
|
||||||
|
event TimeScaleChangedEventHandler? OnTimeScaleChanged;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Current time scale the <see cref="IUniverse"/> operates on.
|
/// Current time scale the <see cref="IUniverse"/> operates on.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -83,6 +88,8 @@ public interface IUniverse : IEntity, IEnumerable<IUniverseObject>
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
void PreDraw();
|
void PreDraw();
|
||||||
|
|
||||||
|
delegate void TimeScaleChangedEventHandler(IUniverse sender, float previousTimeScale);
|
||||||
|
|
||||||
delegate void UpdateEventHandler(IUniverse sender, UniverseTime engineTime);
|
delegate void UpdateEventHandler(IUniverse sender, UniverseTime engineTime);
|
||||||
delegate void PreDrawEventHandler(IUniverse sender);
|
delegate void PreDrawEventHandler(IUniverse sender);
|
||||||
|
|
||||||
|
@ -16,6 +16,8 @@ public class Universe : BaseEntity, IUniverse
|
|||||||
public event IUniverse.UniverseObjectRegisteredEventHandler? OnUniverseObjectRegistered = null;
|
public event IUniverse.UniverseObjectRegisteredEventHandler? OnUniverseObjectRegistered = null;
|
||||||
public event IUniverse.UniverseObjectUnRegisteredEventHandler? OnUniverseObjectUnRegistered = null;
|
public event IUniverse.UniverseObjectUnRegisteredEventHandler? OnUniverseObjectUnRegistered = null;
|
||||||
|
|
||||||
|
public event IUniverse.TimeScaleChangedEventHandler? OnTimeScaleChanged = null;
|
||||||
|
|
||||||
private readonly List<IUniverseObject> _universeObjects = new(Constants.UNIVERSE_OBJECTS_SIZE_INITIAL);
|
private readonly List<IUniverseObject> _universeObjects = new(Constants.UNIVERSE_OBJECTS_SIZE_INITIAL);
|
||||||
private float _timeScale = 1f;
|
private float _timeScale = 1f;
|
||||||
|
|
||||||
@ -26,7 +28,16 @@ public class Universe : BaseEntity, IUniverse
|
|||||||
public float TimeScale
|
public float TimeScale
|
||||||
{
|
{
|
||||||
get => _timeScale;
|
get => _timeScale;
|
||||||
set => _timeScale = value.Max(0f);
|
set
|
||||||
|
{
|
||||||
|
value = value.Max(0f);
|
||||||
|
if (value == _timeScale)
|
||||||
|
return;
|
||||||
|
|
||||||
|
float previousTimeScale = _timeScale;
|
||||||
|
_timeScale = value;
|
||||||
|
OnTimeScaleChanged?.InvokeSafe(this, previousTimeScale);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Register(IUniverseObject universeObject)
|
public void Register(IUniverseObject universeObject)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user