Development Merge 2025.10.18 #4
@@ -44,6 +44,7 @@ public abstract class BehaviourBase : BaseEntity, IBehaviour
 | 
				
			|||||||
        _behaviourController = behaviourController;
 | 
					        _behaviourController = behaviourController;
 | 
				
			||||||
        OnAssign(behaviourController);
 | 
					        OnAssign(behaviourController);
 | 
				
			||||||
        behaviourController.OnUniverseObjectAssigned.AddListener(delegateOnUniverseObjectAssigned);
 | 
					        behaviourController.OnUniverseObjectAssigned.AddListener(delegateOnUniverseObjectAssigned);
 | 
				
			||||||
 | 
					        behaviourController.StateEnable.OnEnabledChanged.AddListener(delegateOnStateEnabledChanged);
 | 
				
			||||||
        if (behaviourController.UniverseObject is not null)
 | 
					        if (behaviourController.UniverseObject is not null)
 | 
				
			||||||
            OnUniverseObjectAssigned(behaviourController);
 | 
					            OnUniverseObjectAssigned(behaviourController);
 | 
				
			||||||
        OnBehaviourControllerAssigned?.Invoke(this);
 | 
					        OnBehaviourControllerAssigned?.Invoke(this);
 | 
				
			||||||
@@ -68,6 +69,7 @@ public abstract class BehaviourBase : BaseEntity, IBehaviour
 | 
				
			|||||||
        BehaviourController.UniverseObject.OnActiveChanged.RemoveListener(delegateOnUniverseObjectActiveChanged);
 | 
					        BehaviourController.UniverseObject.OnActiveChanged.RemoveListener(delegateOnUniverseObjectActiveChanged);
 | 
				
			||||||
        StateEnable.OnEnabledChanged.RemoveListener(delegateOnStateEnabledChanged);
 | 
					        StateEnable.OnEnabledChanged.RemoveListener(delegateOnStateEnabledChanged);
 | 
				
			||||||
        BehaviourController.OnUniverseObjectAssigned.RemoveListener(delegateOnUniverseObjectAssigned);
 | 
					        BehaviourController.OnUniverseObjectAssigned.RemoveListener(delegateOnUniverseObjectAssigned);
 | 
				
			||||||
 | 
					        BehaviourController.StateEnable.OnEnabledChanged.RemoveListener(delegateOnStateEnabledChanged);
 | 
				
			||||||
        base.UnassignInternal();
 | 
					        base.UnassignInternal();
 | 
				
			||||||
        _behaviourController = null!;
 | 
					        _behaviourController = null!;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -76,6 +78,8 @@ public abstract class BehaviourBase : BaseEntity, IBehaviour
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        Debug.Assert.AssertBehaviourControllerAssigned(this);
 | 
					        Debug.Assert.AssertBehaviourControllerAssigned(this);
 | 
				
			||||||
        Debug.Assert.AssertStateEnableAssigned(this);
 | 
					        Debug.Assert.AssertStateEnableAssigned(this);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        UpdateActive();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void OnStateEnabledChanged(IStateEnable sender, IStateEnable.EnabledChangedArguments args) => UpdateActive();
 | 
					    private void OnStateEnabledChanged(IStateEnable sender, IStateEnable.EnabledChangedArguments args) => UpdateActive();
 | 
				
			||||||
@@ -84,7 +88,7 @@ public abstract class BehaviourBase : BaseEntity, IBehaviour
 | 
				
			|||||||
    private void UpdateActive()
 | 
					    private void UpdateActive()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        bool previousActive = IsActive;
 | 
					        bool previousActive = IsActive;
 | 
				
			||||||
        _isActive = StateEnable.Enabled && _behaviourController.UniverseObject.IsActive;
 | 
					        _isActive = StateEnable.Enabled && _behaviourController.StateEnable.Enabled && _behaviourController.UniverseObject.IsActive;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (previousActive != IsActive)
 | 
					        if (previousActive != IsActive)
 | 
				
			||||||
            OnActiveChanged?.Invoke(this, new(previousActive));
 | 
					            OnActiveChanged?.Invoke(this, new(previousActive));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -133,6 +133,7 @@ public class UniverseObject : BaseEntity, IUniverseObject
 | 
				
			|||||||
        base.OnAssign(stateEnable);
 | 
					        base.OnAssign(stateEnable);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        stateEnable.OnEnabledChanged.AddListener(OnStateEnabledChanged);
 | 
					        stateEnable.OnEnabledChanged.AddListener(OnStateEnabledChanged);
 | 
				
			||||||
 | 
					        UpdateActive();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void OnParentActiveChanged(IActive sender, IActive.ActiveChangedArguments args) => UpdateActive();
 | 
					    private void OnParentActiveChanged(IActive sender, IActive.ActiveChangedArguments args) => UpdateActive();
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user