perf: regular events to custom events

This commit is contained in:
2025-05-30 12:58:08 +03:00
parent b1b5af94d3
commit 846aa75dd5
42 changed files with 342 additions and 198 deletions

View File

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