feat: added post, regular & post events for Update and Draw

This commit is contained in:
Syntriax 2025-05-22 23:10:47 +03:00
parent 3b6a93d37a
commit 37b87f0f85
2 changed files with 28 additions and 7 deletions

View File

@ -18,9 +18,24 @@ public interface IUniverse : IEntity, IEnumerable<IUniverseObject>
event UpdateEventHandler? OnUpdate;
/// <summary>
/// Event triggered when <see cref="PreDraw"/> is called on the <see cref="IUniverse"/>.
/// Event triggered after <see cref="Update(UniverseTime)"/> is called on the <see cref="IUniverse"/>.
/// </summary>
event PreDrawEventHandler? OnPreDraw;
event UpdateEventHandler? OnPostUpdate;
/// <summary>
/// Event triggered when <see cref="Draw"/> is about to be called called on the <see cref="IUniverse"/>.
/// </summary>
event DrawEventHandler? OnPreDraw;
/// <summary>
/// Event triggered when <see cref="Draw"/> is called on the <see cref="IUniverse"/>.
/// </summary>
event DrawEventHandler? OnDraw;
/// <summary>
/// Event triggered after <see cref="Draw"/> is called on the <see cref="IUniverse"/>.
/// </summary>
event DrawEventHandler? OnPostDraw;
/// <summary>
/// Event triggered when a <see cref="IUniverseObject"/> is registered to the <see cref="IUniverse"/>.
@ -84,14 +99,14 @@ public interface IUniverse : IEntity, IEnumerable<IUniverseObject>
void Update(UniverseTime universeTime);
/// <summary>
/// Performs operations that should be done before the draw calls.
/// Performs operations that should be done to the draw.
/// </summary>
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);

View File

@ -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)