Development Merge 2025.04.01 #1

Merged
Syntriax merged 32 commits from development into main 2025-04-01 19:20:18 +03:00
2 changed files with 8 additions and 9 deletions
Showing only changes of commit c71bf71fb3 - Show all commits

View File

@ -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);

View File

@ -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);