From 1ee07b41f872f5c18a500d9a7b4730d30f7c1464 Mon Sep 17 00:00:00 2001 From: Syntriax Date: Sun, 6 Apr 2025 18:06:33 +0300 Subject: [PATCH] fix: IHierarchyObject.SetParent not entering the object into the IGameManager hierarchy fixed --- Engine.Core/GameManager.cs | 1 + Engine.Core/HierarchyObject.cs | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Engine.Core/GameManager.cs b/Engine.Core/GameManager.cs index 8d12255..db797d3 100644 --- a/Engine.Core/GameManager.cs +++ b/Engine.Core/GameManager.cs @@ -78,6 +78,7 @@ public class GameManager : BaseEntity, IGameManager Remove(child); _hierarchyObjects.Remove(hierarchyObject); + hierarchyObject.SetParent(null); if (!hierarchyObject.ExitHierarchy()) throw new Exception($"{hierarchyObject.Name} can't exit the hierarchy"); diff --git a/Engine.Core/HierarchyObject.cs b/Engine.Core/HierarchyObject.cs index f6f9380..c9fb225 100644 --- a/Engine.Core/HierarchyObject.cs +++ b/Engine.Core/HierarchyObject.cs @@ -62,8 +62,9 @@ public class HierarchyObject : BaseEntity, IHierarchyObject if (!IsInHierarchy || _gameManager is not IGameManager gameManager) return false; - _gameManager = null!; OnExitingHierarchy(gameManager); + _gameManager = null!; + SetParent(null); OnExitedHierarchy?.Invoke(this, gameManager); return true; } @@ -87,6 +88,9 @@ public class HierarchyObject : BaseEntity, IHierarchyObject if (parent is not null) { + if (parent.IsInHierarchy && !IsInHierarchy) + parent.GameManager.Register(this); + parent.AddChild(this); parent.OnActiveChanged += OnParentActiveChanged; }