diff --git a/Engine.Core/Abstract/IUniverse.cs b/Engine.Core/Abstract/IUniverse.cs index d35ffe2..8577aae 100644 --- a/Engine.Core/Abstract/IUniverse.cs +++ b/Engine.Core/Abstract/IUniverse.cs @@ -18,9 +18,24 @@ public interface IUniverse : IEntity, IEnumerable event UpdateEventHandler? OnUpdate; /// - /// Event triggered when is called on the . + /// Event triggered after is called on the . /// - event PreDrawEventHandler? OnPreDraw; + event UpdateEventHandler? OnPostUpdate; + + /// + /// Event triggered when is about to be called called on the . + /// + event DrawEventHandler? OnPreDraw; + + /// + /// Event triggered when is called on the . + /// + event DrawEventHandler? OnDraw; + + /// + /// Event triggered after is called on the . + /// + event DrawEventHandler? OnPostDraw; /// /// Event triggered when a is registered to the . @@ -84,14 +99,14 @@ public interface IUniverse : IEntity, IEnumerable void Update(UniverseTime universeTime); /// - /// Performs operations that should be done before the draw calls. + /// Performs operations that should be done to the draw. /// - void PreDraw(); + void Draw(); delegate void TimeScaleChangedEventHandler(IUniverse sender, float previousTimeScale); delegate void UpdateEventHandler(IUniverse sender, UniverseTime engineTime); - delegate void PreDrawEventHandler(IUniverse sender); + delegate void DrawEventHandler(IUniverse sender); delegate void UniverseObjectRegisteredEventHandler(IUniverse sender, IUniverseObject universeObjectRegistered); delegate void UniverseObjectUnRegisteredEventHandler(IUniverse sender, IUniverseObject universeObjectUnregistered); diff --git a/Engine.Core/Universe.cs b/Engine.Core/Universe.cs index 19e8d7b..c94237a 100644 --- a/Engine.Core/Universe.cs +++ b/Engine.Core/Universe.cs @@ -9,7 +9,10 @@ public class Universe : BaseEntity, IUniverse { public event IUniverse.UpdateEventHandler? OnPreUpdate = null; public event IUniverse.UpdateEventHandler? OnUpdate = null; - public event IUniverse.PreDrawEventHandler? OnPreDraw = null; + public event IUniverse.UpdateEventHandler? OnPostUpdate = null; + public event IUniverse.DrawEventHandler? OnPreDraw = null; + public event IUniverse.DrawEventHandler? OnDraw = null; + public event IUniverse.DrawEventHandler? OnPostDraw = null; public event IUniverse.UniverseObjectRegisteredEventHandler? OnUniverseObjectRegistered = null; public event IUniverse.UniverseObjectUnRegisteredEventHandler? OnUniverseObjectUnRegistered = null; @@ -121,9 +124,10 @@ public class Universe : BaseEntity, IUniverse UniverseObjects[i].BehaviourController.Update(); OnUpdate?.InvokeSafe(this, Time); + OnPostUpdate?.InvokeSafe(this, Time); } - public void PreDraw() + public void Draw() { Debug.Assert.AssertInitialized(this); @@ -131,6 +135,8 @@ public class Universe : BaseEntity, IUniverse UniverseObjects[i].BehaviourController.UpdatePreDraw(); OnPreDraw?.InvokeSafe(this); + OnDraw?.InvokeSafe(this); + OnPostDraw?.InvokeSafe(this); } private void OnUniverseObjectFinalize(IInitializable initializable)