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
23 lines
903 B
C#
23 lines
903 B
C#
namespace Syntriax.Engine.Core;
|
|
|
|
public abstract class Behaviour2D : Behaviour, IBehaviour2D
|
|
{
|
|
public ITransform2D Transform { get; private set; } = null!;
|
|
|
|
protected sealed override void OnInitialize(IInitializable _)
|
|
{
|
|
Transform = BehaviourController.GetRequiredBehaviour<ITransform2D>();
|
|
base.OnInitialize(_);
|
|
}
|
|
|
|
protected sealed override void OnFinalize(IInitializable _)
|
|
{
|
|
Transform = null!;
|
|
base.OnFinalize(_);
|
|
}
|
|
|
|
protected sealed override void OnUnassign(IAssignable assignable) => base.OnUnassign(assignable);
|
|
protected sealed override void EnteredUniverse(IUniverseObject sender, IUniverseObject.EnteredUniverseArguments args) => base.EnteredUniverse(sender, args);
|
|
protected sealed override void ExitedUniverse(IUniverseObject sender, IUniverseObject.ExitedUniverseArguments args) => base.ExitedUniverse(sender, args);
|
|
}
|