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