diff --git a/Engine.Core/Abstract/IBehaviour.cs b/Engine.Core/Abstract/IBehaviour.cs
index 47c30bc..95d12d8 100644
--- a/Engine.Core/Abstract/IBehaviour.cs
+++ b/Engine.Core/Abstract/IBehaviour.cs
@@ -16,4 +16,9 @@ public interface IBehaviour : IEntity, IAssignableBehaviourController, IAssignab
/// Call priority of the .
///
int Priority { get; set; }
+
+ ///
+ /// If the is active.
+ ///
+ bool IsActive { get; }
}
diff --git a/Engine.Core/Behaviour.cs b/Engine.Core/Behaviour.cs
index fb7ae2c..4b9241b 100644
--- a/Engine.Core/Behaviour.cs
+++ b/Engine.Core/Behaviour.cs
@@ -26,6 +26,8 @@ public abstract class Behaviour : IBehaviour
public IStateEnable StateEnable => _stateEnable;
public IBehaviourController BehaviourController => _behaviourController;
+ public bool IsActive => StateEnable.Enabled && BehaviourController.GameObject.StateEnable.Enabled;
+
public bool Initialized
{
get => _initialized;
diff --git a/Engine.Core/BehaviourOverride.cs b/Engine.Core/BehaviourOverride.cs
index 81a8d4c..6e8dcc9 100644
--- a/Engine.Core/BehaviourOverride.cs
+++ b/Engine.Core/BehaviourOverride.cs
@@ -39,13 +39,13 @@ public abstract class BehaviourOverride : Behaviour
OnFinalize();
}
- protected virtual void OnPreUpdatePreEnabledCheck() { }
+ protected virtual void OnPreUpdatePreActiveCheck() { }
protected virtual void OnPreUpdate() { }
private void PreUpdate(IBehaviourController _)
{
- OnPreUpdatePreEnabledCheck();
+ OnPreUpdatePreActiveCheck();
- if (!StateEnable.Enabled)
+ if (!IsActive)
return;
if (isInitializedThisFrame)
@@ -61,23 +61,23 @@ public abstract class BehaviourOverride : Behaviour
isInitializedThisFrame = false;
}
- protected virtual void OnUpdatePreEnabledCheck() { }
+ protected virtual void OnUpdatePreActiveCheck() { }
protected virtual void OnUpdate() { }
private void Update(IBehaviourController _)
{
- OnUpdatePreEnabledCheck();
+ OnUpdatePreActiveCheck();
- if (!StateEnable.Enabled)
+ if (!IsActive)
return;
OnUpdate();
}
- protected virtual void OnPreDrawPreEnabledCheck() { }
+ protected virtual void OnPreDrawPreActiveCheck() { }
protected virtual void OnPreDraw() { }
private void PreDraw(IBehaviourController _)
{
- OnPreDrawPreEnabledCheck();
+ OnPreDrawPreActiveCheck();
if (!StateEnable.Enabled)
return;
diff --git a/Engine.Physics2D/PhysicsEngine2D.cs b/Engine.Physics2D/PhysicsEngine2D.cs
index 8b22240..c61af05 100644
--- a/Engine.Physics2D/PhysicsEngine2D.cs
+++ b/Engine.Physics2D/PhysicsEngine2D.cs
@@ -54,10 +54,16 @@ public class PhysicsEngine2D : IPhysicsEngine2D
for (int x = 0; x < colliders.Count; x++)
{
ICollider2D? colliderX = colliders[x];
+ if (!colliderX.IsActive)
+ return;
+
for (int y = x + 1; y < colliders.Count; y++)
{
ICollider2D? colliderY = colliders[y];
+ if (!colliderY.IsActive)
+ return;
+
if (colliderX.RigidBody2D == colliderY.RigidBody2D)
continue;