diff --git a/Engine.Core/GameManager.cs b/Engine.Core/GameManager.cs index cbd8b3b..8410bce 100644 --- a/Engine.Core/GameManager.cs +++ b/Engine.Core/GameManager.cs @@ -11,6 +11,9 @@ namespace Syntriax.Engine.Core; public class GameManager : IEntity, IEnumerable { public Action? OnCameraChanged { get; set; } = null; + public Action? OnGameObjectRegistered { get; set; } = null; + public Action? OnGameObjectUnRegistered { get; set; } = null; + public Action? OnInitialized { get; set; } = null; public Action? OnFinalized { get; set; } = null; public Action? OnUnassigned { get; set; } = null; @@ -149,18 +152,20 @@ public class GameManager : IEntity, IEnumerable ///////////////////////////////////////////////////////////////// - private void Unregister(IGameObject gameObject) - { - gameObject.OnFinalized -= OnGameObjectFinalize; - - _gameObjects.Remove(gameObject); - } - private void Register(IGameObject gameObject) { gameObject.OnFinalized += OnGameObjectFinalize; _gameObjects.Add(gameObject); + OnGameObjectRegistered?.Invoke(this, gameObject); + } + + private void Unregister(IGameObject gameObject) + { + gameObject.OnFinalized -= OnGameObjectFinalize; + + _gameObjects.Remove(gameObject); + OnGameObjectUnRegistered?.Invoke(this, gameObject); } private void OnGameObjectFinalize(IInitialize initialize)