perf!: events refactored throughout all the project to use Event<> class
All delegate events are refactored to use the Event<TSender> and Event<TSender, TArgument> for performance issues regarding delegate events creating garbage, also this gives us better control on event invocation since C# Delegates did also create unnecessary garbage during Delegate.DynamicInvoke
This commit is contained in:
@@ -10,47 +10,47 @@ public interface IUniverse : IEntity, IEnumerable<IUniverseObject>
|
||||
/// <summary>
|
||||
/// Event triggered when <see cref="Update(UniverseTime)"/> is about to be called called on the <see cref="IUniverse"/>.
|
||||
/// </summary>
|
||||
event UpdateEventHandler? OnPreUpdate;
|
||||
Event<IUniverse, UpdateArguments> OnPreUpdate { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Event triggered when <see cref="Update(UniverseTime)"/> is called on the <see cref="IUniverse"/>.
|
||||
/// </summary>
|
||||
event UpdateEventHandler? OnUpdate;
|
||||
Event<IUniverse, UpdateArguments> OnUpdate { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Event triggered after <see cref="Update(UniverseTime)"/> is called on the <see cref="IUniverse"/>.
|
||||
/// </summary>
|
||||
event UpdateEventHandler? OnPostUpdate;
|
||||
Event<IUniverse, UpdateArguments> OnPostUpdate { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Event triggered when <see cref="Draw"/> is about to be called called on the <see cref="IUniverse"/>.
|
||||
/// </summary>
|
||||
event DrawEventHandler? OnPreDraw;
|
||||
Event<IUniverse> OnPreDraw { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Event triggered when <see cref="Draw"/> is called on the <see cref="IUniverse"/>.
|
||||
/// </summary>
|
||||
event DrawEventHandler? OnDraw;
|
||||
Event<IUniverse> OnDraw { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Event triggered after <see cref="Draw"/> is called on the <see cref="IUniverse"/>.
|
||||
/// </summary>
|
||||
event DrawEventHandler? OnPostDraw;
|
||||
Event<IUniverse> OnPostDraw { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Event triggered when a <see cref="IUniverseObject"/> is registered to the <see cref="IUniverse"/>.
|
||||
/// </summary>
|
||||
event UniverseObjectRegisteredEventHandler? OnUniverseObjectRegistered;
|
||||
Event<IUniverse, UniverseObjectRegisteredArguments> OnUniverseObjectRegistered { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Event triggered when a <see cref="IUniverseObject"/> is unregistered from the <see cref="IUniverse"/>.
|
||||
/// </summary>
|
||||
event UniverseObjectUnRegisteredEventHandler? OnUniverseObjectUnRegistered;
|
||||
Event<IUniverse, UniverseObjectUnRegisteredArguments> OnUniverseObjectUnRegistered { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Event triggered when <see cref="TimeScale"/> is changed on the <see cref="IUniverse"/>.
|
||||
/// </summary>
|
||||
event TimeScaleChangedEventHandler? OnTimeScaleChanged;
|
||||
Event<IUniverse, TimeScaleChangedArguments> OnTimeScaleChanged { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Current time scale the <see cref="IUniverse"/> operates on.
|
||||
@@ -103,11 +103,8 @@ public interface IUniverse : IEntity, IEnumerable<IUniverseObject>
|
||||
/// </summary>
|
||||
void Draw();
|
||||
|
||||
delegate void TimeScaleChangedEventHandler(IUniverse sender, float previousTimeScale);
|
||||
|
||||
delegate void UpdateEventHandler(IUniverse sender, UniverseTime engineTime);
|
||||
delegate void DrawEventHandler(IUniverse sender);
|
||||
|
||||
delegate void UniverseObjectRegisteredEventHandler(IUniverse sender, IUniverseObject universeObjectRegistered);
|
||||
delegate void UniverseObjectUnRegisteredEventHandler(IUniverse sender, IUniverseObject universeObjectUnregistered);
|
||||
readonly record struct TimeScaleChangedArguments(float PreviousTimeScale);
|
||||
readonly record struct UpdateArguments(UniverseTime EngineTime);
|
||||
readonly record struct UniverseObjectRegisteredArguments(IUniverseObject UniverseObjectRegistered);
|
||||
readonly record struct UniverseObjectUnRegisteredArguments(IUniverseObject UniverseObjectUnregistered);
|
||||
}
|
||||
|
Reference in New Issue
Block a user