diff --git a/Engine.Core/BehaviourBase.cs b/Engine.Core/BehaviourBase.cs index a89f88f..c385ef6 100644 --- a/Engine.Core/BehaviourBase.cs +++ b/Engine.Core/BehaviourBase.cs @@ -11,7 +11,6 @@ public abstract class BehaviourBase : BaseEntity, IBehaviour public event IActive.ActiveChangedEventHandler? OnActiveChanged = null; private IBehaviourController _behaviourController = null!; - public IBehaviourController BehaviourController => _behaviourController; private int _priority = 0; @@ -29,7 +28,8 @@ public abstract class BehaviourBase : BaseEntity, IBehaviour } } - public bool IsActive { get; private set; } = false; + private bool _isActive = false; + public bool IsActive => _isActive; protected virtual void OnAssign(IBehaviourController behaviourController) { } public bool Assign(IBehaviourController behaviourController) @@ -80,7 +80,7 @@ public abstract class BehaviourBase : BaseEntity, IBehaviour private void UpdateActive() { bool previousActive = IsActive; - IsActive = StateEnable.Enabled && _behaviourController.HierarchyObject.IsActive; + _isActive = StateEnable.Enabled && _behaviourController.HierarchyObject.IsActive; if (previousActive != IsActive) OnActiveChanged?.Invoke(this, previousActive); diff --git a/Engine.Core/HierarchyObject.cs b/Engine.Core/HierarchyObject.cs index b25bb26..2eecd4c 100644 --- a/Engine.Core/HierarchyObject.cs +++ b/Engine.Core/HierarchyObject.cs @@ -20,12 +20,15 @@ public class HierarchyObject : BaseEntity, IHierarchyObject private string _name = nameof(HierarchyObject); private IGameManager _gameManager = null!; private IBehaviourController _behaviourController = null!; + private bool _isActive = false; private readonly List _children = []; public IHierarchyObject? Parent { get; private set; } = null; public IReadOnlyList Children => _children; + public IBehaviourController BehaviourController => _behaviourController; public IGameManager GameManager => _gameManager; public bool IsInHierarchy => _gameManager is not null; + public bool IsActive => _isActive; public string Name { @@ -40,10 +43,6 @@ public class HierarchyObject : BaseEntity, IHierarchyObject } } - public IBehaviourController BehaviourController => _behaviourController; - - public bool IsActive { get; private set; } = false; - protected virtual void OnEnteringHierarchy(IGameManager gameManager) { } bool IHierarchyObject.EnterHierarchy(IGameManager gameManager) { @@ -142,12 +141,12 @@ public class HierarchyObject : BaseEntity, IHierarchyObject } private void OnParentActiveChanged(IActive sender, bool previousState) => UpdateActive(); - private void OnStateEnabledChanged(IStateEnable senfder, bool previousState) => UpdateActive(); + private void OnStateEnabledChanged(IStateEnable sender, bool previousState) => UpdateActive(); private void UpdateActive() { bool previousActive = IsActive; - IsActive = StateEnable.Enabled && (Parent?.IsActive ?? true); + _isActive = StateEnable.Enabled && (Parent?.IsActive ?? true); if (previousActive != IsActive) OnActiveChanged?.Invoke(this, previousActive);