diff --git a/README.md b/README.md index b3bc691..c566614 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ # Trigger ## Dependencies -1. [ToggleState Module](https://git.syntriax.com/Syntriax/ToggleState) +1. [State Module](https://git.syntriax.com/Syntriax/State) diff --git a/Runtime/Collider/ColliderTrigger.cs b/Runtime/Collider/ColliderTrigger.cs index 74af49a..6047e30 100644 --- a/Runtime/Collider/ColliderTrigger.cs +++ b/Runtime/Collider/ColliderTrigger.cs @@ -1,4 +1,4 @@ -using Syntriax.Modules.ToggleState; +using Syntriax.Modules.State; namespace Syntriax.Modules.Trigger { @@ -13,7 +13,7 @@ namespace Syntriax.Modules.Trigger private void FixedUpdate() { - if (!ToggleStateMember.IsToggledNullChecked()) + if (!StateEnable.IsEnabledNullChecked()) return; IsTrigerred = colliderTrigger.Check(); diff --git a/Runtime/ITrigger.cs b/Runtime/ITrigger.cs index 2288e84..068226c 100644 --- a/Runtime/ITrigger.cs +++ b/Runtime/ITrigger.cs @@ -1,14 +1,14 @@ using System; -using Syntriax.Modules.ToggleState; +using Syntriax.Modules.State; namespace Syntriax.Modules.Trigger { public interface ITrigger { /// - /// Member to switch on or off + /// to switch on or off /// - IToggleState ToggleStateMember { get; } + IStateEnable StateEnable { get; } /// /// Called everytime the IsTrigerred field is changed diff --git a/Runtime/TriggerBase.cs b/Runtime/TriggerBase.cs index 0d30249..ba33aa9 100644 --- a/Runtime/TriggerBase.cs +++ b/Runtime/TriggerBase.cs @@ -1,22 +1,43 @@ using System; -using Syntriax.Modules.ToggleState; +using Syntriax.Modules.State; using UnityEngine; namespace Syntriax.Modules.Trigger { public class TriggerBase : MonoBehaviour, ITrigger { - public IToggleState ToggleStateMember { get; protected set; } = new ToggleStateMember(true); - public Action OnTriggerStateChanged { get; set; } = null; + private IStateEnable stateEnable = null; + public IStateEnable StateEnable + { + get + { + if (stateEnable == null) + { + stateEnable = GetComponent() ?? gameObject.AddComponent(); + stateEnable.OnEnabledChanged += OnEnabledChanged; + } + return stateEnable; + } + } + + private void OnEnabledChanged(bool enabled) + { + if (enabled) + return; + + _isTrigerred = false; + OnTriggerStateChanged?.Invoke(false); + } + private bool _isTrigerred = false; public bool IsTrigerred { get => _isTrigerred; protected set { - if (value == _isTrigerred || !ToggleStateMember.IsToggledNullChecked()) + if (value == _isTrigerred || !StateEnable.IsEnabledNullChecked()) return; _isTrigerred = value;