Development Merge 2025.04.01 #1
@ -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);
|
||||
|
@ -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<IHierarchyObject> _children = [];
|
||||
|
||||
public IHierarchyObject? Parent { get; private set; } = null;
|
||||
public IReadOnlyList<IHierarchyObject> 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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user