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/Box2DColliderTriggerArea.cs b/Runtime/Collider/Box2DColliderTriggerArea.cs index 7c346df..14239c7 100644 --- a/Runtime/Collider/Box2DColliderTriggerArea.cs +++ b/Runtime/Collider/Box2DColliderTriggerArea.cs @@ -11,7 +11,7 @@ namespace Syntriax.Modules.Trigger private void OnDrawGizmosSelected() { if (UnityEditor.EditorApplication.isPlaying) - Gizmos.color = previousTriggerCount > 0 ? Color.green : Color.red; + Gizmos.color = previousTriggerCount > 0 && StateEnable.IsEnabled ? Color.green : Color.red; else Gizmos.color = TriggerCount > 0 ? Color.green : Color.red; Gizmos.DrawWireCube(transform.position, transform.lossyScale); diff --git a/Runtime/Collider/Box2DColliderTriggerAreaWithRotation.cs b/Runtime/Collider/Box2DColliderTriggerAreaWithRotation.cs index 10eaf24..41293aa 100644 --- a/Runtime/Collider/Box2DColliderTriggerAreaWithRotation.cs +++ b/Runtime/Collider/Box2DColliderTriggerAreaWithRotation.cs @@ -11,7 +11,7 @@ namespace Syntriax.Modules.Trigger private void OnDrawGizmosSelected() { if (UnityEditor.EditorApplication.isPlaying) - Gizmos.color = previousTriggerCount > 0 ? Color.green : Color.red; + Gizmos.color = previousTriggerCount > 0 && StateEnable.IsEnabled ? Color.green : Color.red; else Gizmos.color = TriggerCount > 0 ? Color.green : Color.red; Gizmos.matrix = transform.localToWorldMatrix; diff --git a/Runtime/Collider/BoxColliderTriggerArea.cs b/Runtime/Collider/BoxColliderTriggerArea.cs index 03766f5..545ec15 100644 --- a/Runtime/Collider/BoxColliderTriggerArea.cs +++ b/Runtime/Collider/BoxColliderTriggerArea.cs @@ -11,7 +11,7 @@ namespace Syntriax.Modules.Trigger private void OnDrawGizmosSelected() { if (UnityEditor.EditorApplication.isPlaying) - Gizmos.color = previousTriggerCount > 0 ? Color.green : Color.red; + Gizmos.color = previousTriggerCount > 0 && StateEnable.IsEnabled ? Color.green : Color.red; else Gizmos.color = TriggerCount > 0 ? Color.green : Color.red; 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/Collider/ColliderTriggerAreaBase.cs b/Runtime/Collider/ColliderTriggerAreaBase.cs index 0db5a87..0df34b1 100644 --- a/Runtime/Collider/ColliderTriggerAreaBase.cs +++ b/Runtime/Collider/ColliderTriggerAreaBase.cs @@ -45,5 +45,17 @@ namespace Syntriax.Modules.Trigger return true; } + +#if UNITY_EDITOR + private State.IStateEnable stateEnable = null; + public State.IStateEnable StateEnable + { + get + { + stateEnable = stateEnable ?? GetComponent() ?? gameObject.AddComponent(); + return stateEnable; + } + } +#endif } } 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; diff --git a/package.json b/package.json index f9cbfd9..4e22b9f 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { "name": "com.syntriax.trigger", - "version": "0.6.4", + "version": "0.7.0", "displayName": "Trigger Module", "unity": "2019.1", "documentationUrl": "https://git.syntriax.com/Syntriax/Trigger.git", "dependencies": { - "com.syntriax.toggle-state": "0.1.0" + "com.syntriax.state": "0.1.0" }, "keywords": ["Trigger"], "author": {