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