feat: IUniverse.OnTimeChanged event added
This commit is contained in:
		@@ -32,6 +32,11 @@ public interface IUniverse : IEntity, IEnumerable<IUniverseObject>
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    event UniverseObjectUnRegisteredEventHandler? OnUniverseObjectUnRegistered;
 | 
			
		||||
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// Event triggered when <see cref="TimeScale"/> is changed on the <see cref="IUniverse"/>.
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    event TimeScaleChangedEventHandler? OnTimeScaleChanged;
 | 
			
		||||
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// Current time scale the <see cref="IUniverse"/> operates on.
 | 
			
		||||
    /// </summary>
 | 
			
		||||
@@ -83,6 +88,8 @@ public interface IUniverse : IEntity, IEnumerable<IUniverseObject>
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    void PreDraw();
 | 
			
		||||
 | 
			
		||||
    delegate void TimeScaleChangedEventHandler(IUniverse sender, float previousTimeScale);
 | 
			
		||||
 | 
			
		||||
    delegate void UpdateEventHandler(IUniverse sender, UniverseTime engineTime);
 | 
			
		||||
    delegate void PreDrawEventHandler(IUniverse sender);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -16,6 +16,8 @@ public class Universe : BaseEntity, IUniverse
 | 
			
		||||
    public event IUniverse.UniverseObjectRegisteredEventHandler? OnUniverseObjectRegistered = 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 float _timeScale = 1f;
 | 
			
		||||
 | 
			
		||||
@@ -26,7 +28,16 @@ public class Universe : BaseEntity, IUniverse
 | 
			
		||||
    public float 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)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user