feat: Improved Entering & Exiting of Hierarchy Objects

This commit is contained in:
2024-11-03 20:13:25 +03:00
parent cc44e1ea69
commit 4856800f5f
5 changed files with 23 additions and 19 deletions

View File

@@ -33,7 +33,7 @@ public abstract class Behaviour : BehaviourBase
OnInitialize();
if (GameObject.IsInHierarchy)
EnteredHierarchy(GameObject);
EnteredHierarchy(GameObject, GameObject.GameManager ?? throw new System.Exception("Unexpected Error"));
}
protected virtual void OnFinalize() { }
@@ -44,7 +44,11 @@ public abstract class Behaviour : BehaviourBase
BehaviourController.OnUpdate -= Update;
BehaviourController.GameObject.OnEnteredHierarchy -= EnteredHierarchy;
BehaviourController.GameObject.OnExitedHierarchy -= ExitedHierarchy;
OnFinalize();
if (GameObject.IsInHierarchy)
ExitedHierarchy(GameObject, GameObject.GameManager ?? throw new System.Exception("Unexpected Error"));
}
protected virtual void OnPreUpdatePreActiveCheck() { }
@@ -93,9 +97,9 @@ public abstract class Behaviour : BehaviourBase
OnPreDraw();
}
protected virtual void OnEnteredHierarchy() { }
private void EnteredHierarchy(IHierarchyObject sender) => OnEnteredHierarchy();
protected virtual void OnEnteredHierarchy(IGameManager gameManager) { }
private void EnteredHierarchy(IHierarchyObject sender, IGameManager gameManager) => OnEnteredHierarchy(gameManager);
protected virtual void OnExitedHierarchy() { }
private void ExitedHierarchy(IHierarchyObject sender) => OnExitedHierarchy();
protected virtual void OnExitedHierarchy(IGameManager gameManager) { }
private void ExitedHierarchy(IHierarchyObject sender, IGameManager gameManager) => OnExitedHierarchy(gameManager);
}