From f2faa86f6505c63dd4b4f0822231bb8dbb56ea79 Mon Sep 17 00:00:00 2001 From: Syntriax Date: Mon, 20 Mar 2023 22:22:42 +0300 Subject: [PATCH 1/2] BREAKING CHANGE: State 0.2.0 --- README.md | 2 +- Runtime/Collider/ColliderTrigger.cs | 4 ++-- Runtime/ITrigger.cs | 6 +++--- Runtime/TriggerBase.cs | 29 +++++++++++++++++++++++++---- 4 files changed, 31 insertions(+), 10 deletions(-) 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; From c8105122fbfb3b855b4a4e9214711cd0cfb83a1b Mon Sep 17 00:00:00 2001 From: Syntriax Date: Mon, 20 Mar 2023 22:24:18 +0300 Subject: [PATCH 2/2] feat: Added State Enabled Integration to Editor Visualization Of Collider Triggers --- Runtime/Collider/Box2DColliderTriggerArea.cs | 2 +- .../Collider/Box2DColliderTriggerAreaWithRotation.cs | 2 +- Runtime/Collider/BoxColliderTriggerArea.cs | 2 +- Runtime/Collider/ColliderTriggerAreaBase.cs | 12 ++++++++++++ 4 files changed, 15 insertions(+), 3 deletions(-) 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/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 } }