diff --git a/Runtime/IMovementController.cs b/Runtime/IMovementController.cs
index a4d05f4..c01a1d6 100644
--- a/Runtime/IMovementController.cs
+++ b/Runtime/IMovementController.cs
@@ -7,9 +7,9 @@ namespace Syntriax.Modules.Movement
public interface IMovementController
{
///
- /// Member to switch on or off
+ /// to control the state of the is on or off
///
- IStateEnable StateEnableMember { get; }
+ IStateEnable StateEnable { get; }
///
/// Currently active
diff --git a/Runtime/MovementController.cs b/Runtime/MovementController.cs
index 3c44f3a..cc9dfe2 100644
--- a/Runtime/MovementController.cs
+++ b/Runtime/MovementController.cs
@@ -31,13 +31,17 @@ namespace Syntriax.Modules.Movement
}
}
- private bool areBothStateEnablesToggled => StateEnableMember.IsEnabledNullChecked() && stateEnableOnGameObject.IsEnabledNullChecked();
-
public List Movements { get; protected set; } = new List(32);
- public IStateEnable StateEnableMember { get; protected set; } = new StateEnableMember(true);
-
- protected IStateEnable stateEnableOnGameObject = null;
+ private IStateEnable _stateEnable = null;
+ public IStateEnable StateEnable
+ {
+ get
+ {
+ _stateEnable = _stateEnable ?? GetComponent() ?? gameObject.AddComponent();
+ return _stateEnable;
+ }
+ }
protected virtual void Start()
{
@@ -45,16 +49,14 @@ namespace Syntriax.Modules.Movement
gameObject.AddComponent();
RecacheMovements();
- stateEnableOnGameObject = GetComponent();
- stateEnableOnGameObject.OnEnabledChanged += (_) => InvokeOnMoveAction();
- StateEnableMember.OnEnabledChanged += (_) => InvokeOnMoveAction();
+ StateEnable.OnEnabledChanged += (_) => InvokeOnMoveAction();
OnMovementActivated += (newMovement) => newMovement.Move(lastMove);
}
protected virtual void FixedUpdate()
{
- if (!areBothStateEnablesToggled)
+ if (!StateEnable.IsEnabledNullChecked())
return;
ActiveMovement?.ApplyMovement();
@@ -86,6 +88,7 @@ namespace Syntriax.Modules.Movement
}
private Vector3 lastMove = Vector3.zero;
+
public void Move(float x = 0, float y = 0, float z = 0)
{
ActiveMovement?.Move(x, y, z);
@@ -96,7 +99,7 @@ namespace Syntriax.Modules.Movement
private void InvokeOnMoveAction()
{
- if (!areBothStateEnablesToggled)
+ if (!StateEnable.IsEnabledNullChecked())
return;
OnMoveCalled?.Invoke(lastMove.x, lastMove.y, lastMove.z);