perf: regular events to custom events
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
using System;
|
||||
|
||||
namespace Syntriax.Engine.Core;
|
||||
|
||||
public abstract class Behaviour : BehaviourBase, IFirstFrameUpdate,
|
||||
@@ -7,11 +9,17 @@ public abstract class Behaviour : BehaviourBase, IFirstFrameUpdate,
|
||||
protected IUniverse Universe => BehaviourController.UniverseObject.Universe;
|
||||
protected IUniverseObject UniverseObject => BehaviourController.UniverseObject;
|
||||
|
||||
private readonly Action<IUniverseObject, IUniverse> cachedEnteredUniverse = null!;
|
||||
private readonly Action<IUniverseObject, IUniverse> cachedExitedUniverse = null!;
|
||||
|
||||
public Behaviour()
|
||||
{
|
||||
OnInitialized += OnInitialize;
|
||||
OnFinalized += OnFinalize;
|
||||
OnUnassigned += OnUnassign;
|
||||
OnInitialized.AddListener(OnInitialize);
|
||||
OnFinalized.AddListener(OnFinalize);
|
||||
OnUnassigned.AddListener(OnUnassign);
|
||||
|
||||
cachedEnteredUniverse = EnteredUniverse;
|
||||
cachedExitedUniverse = ExitedUniverse;
|
||||
}
|
||||
|
||||
protected virtual void OnUnassign() { }
|
||||
@@ -20,8 +28,8 @@ public abstract class Behaviour : BehaviourBase, IFirstFrameUpdate,
|
||||
protected virtual void OnInitialize() { }
|
||||
protected virtual void OnInitialize(IInitializable _)
|
||||
{
|
||||
BehaviourController.UniverseObject.OnEnteredUniverse += EnteredUniverse;
|
||||
BehaviourController.UniverseObject.OnExitedUniverse += ExitedUniverse;
|
||||
BehaviourController.UniverseObject.OnEnteredUniverse.AddListener(cachedEnteredUniverse);
|
||||
BehaviourController.UniverseObject.OnExitedUniverse.AddListener(cachedExitedUniverse);
|
||||
|
||||
OnInitialize();
|
||||
|
||||
@@ -32,8 +40,8 @@ public abstract class Behaviour : BehaviourBase, IFirstFrameUpdate,
|
||||
protected virtual void OnFinalize() { }
|
||||
protected virtual void OnFinalize(IInitializable _)
|
||||
{
|
||||
BehaviourController.UniverseObject.OnEnteredUniverse -= EnteredUniverse;
|
||||
BehaviourController.UniverseObject.OnExitedUniverse -= ExitedUniverse;
|
||||
BehaviourController.UniverseObject.OnEnteredUniverse.RemoveListener(cachedEnteredUniverse);
|
||||
BehaviourController.UniverseObject.OnExitedUniverse.RemoveListener(cachedExitedUniverse);
|
||||
|
||||
OnFinalize();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user