diff --git a/Engine.Core/GameManager.cs b/Engine.Core/GameManager.cs index 5aa3bd0..d86e993 100644 --- a/Engine.Core/GameManager.cs +++ b/Engine.Core/GameManager.cs @@ -68,6 +68,12 @@ public class GameManager : BaseEntity, IGameManager } public void Remove(IHierarchyObject hierarchyObject) + { + hierarchyObject.SetParent(null); + RemoveIncursive(hierarchyObject); + } + + private void RemoveIncursive(IHierarchyObject hierarchyObject) { if (!_hierarchyObjects.Contains(hierarchyObject)) throw new Exception($"{nameof(IHierarchyObject)} named {hierarchyObject.Name} is not registered to the {nameof(GameManager)}."); @@ -79,7 +85,6 @@ public class GameManager : BaseEntity, IGameManager Remove(hierarchyObject.Children[i]); _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 c9fb225..87316f8 100644 --- a/Engine.Core/HierarchyObject.cs +++ b/Engine.Core/HierarchyObject.cs @@ -64,7 +64,6 @@ public class HierarchyObject : BaseEntity, IHierarchyObject OnExitingHierarchy(gameManager); _gameManager = null!; - SetParent(null); OnExitedHierarchy?.Invoke(this, gameManager); return true; } diff --git a/Engine.Core/Transform2D.cs b/Engine.Core/Transform2D.cs index 176efd3..b2a1eb1 100644 --- a/Engine.Core/Transform2D.cs +++ b/Engine.Core/Transform2D.cs @@ -220,7 +220,6 @@ public class Transform2D : Behaviour, ITransform2D ITransform2D? previousParent = parentTransform; if (previousParent is not null) { - previousParent.BehaviourController.HierarchyObject.RemoveChild(HierarchyObject); previousParent.OnPositionChanged -= RecalculatePosition; previousParent.OnScaleChanged -= RecalculateScale; previousParent.OnRotationChanged -= RecalculateRotation; @@ -232,7 +231,6 @@ public class Transform2D : Behaviour, ITransform2D if (parentTransform is not null) { - parentTransform.BehaviourController.HierarchyObject.AddChild(HierarchyObject); parentTransform.OnPositionChanged += RecalculatePosition; parentTransform.OnScaleChanged += RecalculateScale; parentTransform.OnRotationChanged += RecalculateRotation;