diff --git a/Bases/MovementBase.cs b/Bases/MovementBase.cs index 8a82ebc..63425dc 100644 --- a/Bases/MovementBase.cs +++ b/Bases/MovementBase.cs @@ -24,7 +24,7 @@ namespace Syntriax.Modules.Movement _canTakeOver = value; if (isNewValue) - OnTakeOverStateChanged.Invoke(value); + OnTakeOverStateChanged?.Invoke(value); } } diff --git a/MovementController.cs b/MovementController.cs index 6e1ee5f..4c29219 100644 --- a/MovementController.cs +++ b/MovementController.cs @@ -24,8 +24,8 @@ namespace Syntriax.Modules.Movement _activeMovement = value; if (oldMovement != null) - OnMovementDeactivated.Invoke(oldMovement); - OnMovementActivated.Invoke(value); + OnMovementDeactivated?.Invoke(oldMovement); + OnMovementActivated?.Invoke(value); } } @@ -34,38 +34,38 @@ namespace Syntriax.Modules.Movement protected IToggleState toggleState = null; protected virtual void Awake() - { - Movements = new List(32); - } + => Movements = new List(32); protected virtual void Start() { - toggleState = GetComponent(); RecacheMovements(); + toggleState = GetComponent(); + if (toggleState == null) + Debug.LogError("Movement Controller component needs one Monobehaviour attached that implements IToggleState interface", this); } protected virtual void FixedUpdate() { - if (!toggleState.Toggled) + if (!toggleState.IsToggledNullChecked()) return; - ActiveMovement.ApplyMovement(); + ActiveMovement?.ApplyMovement(); } public virtual void RecacheMovements() { foreach (IMovement movement in Movements) - movement.OnTakeOverStateChanged -= OnTakeOverListener; + movement.OnTakeOverStateChanged -= OnTakeOver; Movements.Clear(); GetComponents(Movements); UpdateActiveMovement(); foreach (IMovement movement in Movements) - movement.OnTakeOverStateChanged += OnTakeOverListener; + movement.OnTakeOverStateChanged += OnTakeOver; } - private void OnTakeOverListener(bool arg0) => UpdateActiveMovement(); + private void OnTakeOver(bool arg0) => UpdateActiveMovement(); protected virtual void UpdateActiveMovement() { @@ -76,7 +76,8 @@ namespace Syntriax.Modules.Movement return; } - ActiveMovement = Movements[Movements.Count - 1]; + try { ActiveMovement = Movements[Movements.Count - 1]; } + catch (System.Exception) { Debug.LogError("Movement Controller component needs at least one Monobehaviour attached that implements IMovement interface", this); } } } } diff --git a/ToggleState b/ToggleState index 7574769..463182a 160000 --- a/ToggleState +++ b/ToggleState @@ -1 +1 @@ -Subproject commit 7574769637791a9bd8c8f7559b579e5968a308ae +Subproject commit 463182ab43595e92fcdb5d51be815d13e473c6a3 diff --git a/Trigger b/Trigger index 4f2217b..330a41a 160000 --- a/Trigger +++ b/Trigger @@ -1 +1 @@ -Subproject commit 4f2217bb63ee3584a841e2f8c7d9e484d816ec33 +Subproject commit 330a41a87ffacfda51465a2937ee5ce170bf6b72