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,12 +10,12 @@ public interface IBehaviourController : IEntity, IHasUniverseObject
|
||||
/// <summary>
|
||||
/// Event triggered when a <see cref="IBehaviour"/> is added to the <see cref="IBehaviourController"/>.
|
||||
/// </summary>
|
||||
event BehaviourAddedEventHandler? OnBehaviourAdded;
|
||||
Event<IBehaviourController, BehaviourAddedArguments> OnBehaviourAdded { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Event triggered when a <see cref="IBehaviour"/> is removed from the <see cref="IBehaviourController"/>.
|
||||
/// </summary>
|
||||
event BehaviourRemovedEventHandler? OnBehaviourRemoved;
|
||||
Event<IBehaviourController, BehaviourRemovedArguments> OnBehaviourRemoved { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Amount of <see cref="IBehaviour"/> collected.
|
||||
@@ -78,6 +78,6 @@ public interface IBehaviourController : IEntity, IHasUniverseObject
|
||||
/// <param name="behaviour">The <see cref="IBehaviour"/> to remove.</param>
|
||||
void RemoveBehaviour<T>(T behaviour) where T : class, IBehaviour;
|
||||
|
||||
delegate void BehaviourAddedEventHandler(IBehaviourController sender, IBehaviour behaviourAdded);
|
||||
delegate void BehaviourRemovedEventHandler(IBehaviourController sender, IBehaviour behaviourRemoved);
|
||||
readonly record struct BehaviourAddedArguments(IBehaviour BehaviourAdded);
|
||||
readonly record struct BehaviourRemovedArguments(IBehaviour BehaviourRemoved);
|
||||
}
|
||||
|
Reference in New Issue
Block a user