From 8b3721eba33e558b485e4fc68b21ef1c130dfd66 Mon Sep 17 00:00:00 2001 From: Syntriax Date: Thu, 16 Feb 2023 13:03:30 +0300 Subject: [PATCH 1/3] BREAKING CHANGE: IColiderTriggerArea Now Returns Transforms Instead Of Collider2Ds --- Runtime/Collider/Box2DColliderTriggerArea.cs | 2 +- .../Box2DColliderTriggerAreaWithRotation.cs | 2 +- Runtime/Collider/ColliderTriggerAreaBase.cs | 16 ++++++++-------- Runtime/Collider/IColliderTriggerArea.cs | 10 +++++----- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Runtime/Collider/Box2DColliderTriggerArea.cs b/Runtime/Collider/Box2DColliderTriggerArea.cs index d520039..4be724c 100644 --- a/Runtime/Collider/Box2DColliderTriggerArea.cs +++ b/Runtime/Collider/Box2DColliderTriggerArea.cs @@ -2,7 +2,7 @@ using UnityEngine; namespace Syntriax.Modules.Trigger { - public class Box2DColliderTriggerArea : ColliderTriggerAreaBase + public class Box2DColliderTriggerArea : ColliderTriggerAreaBase { protected override int TriggerCount => Physics2D.OverlapBoxNonAlloc(transform.position, transform.localScale, 0, nonAllocResults, ColliderMask); diff --git a/Runtime/Collider/Box2DColliderTriggerAreaWithRotation.cs b/Runtime/Collider/Box2DColliderTriggerAreaWithRotation.cs index 36584bc..b96ef8a 100644 --- a/Runtime/Collider/Box2DColliderTriggerAreaWithRotation.cs +++ b/Runtime/Collider/Box2DColliderTriggerAreaWithRotation.cs @@ -2,7 +2,7 @@ using UnityEngine; namespace Syntriax.Modules.Trigger { - public class Box2DColliderTriggerAreaWithRotation : ColliderTriggerAreaBase + public class Box2DColliderTriggerAreaWithRotation : ColliderTriggerAreaBase { protected override int TriggerCount => Physics2D.OverlapBoxNonAlloc(transform.position, transform.localScale, transform.rotation.eulerAngles.z, nonAllocResults, ColliderMask); diff --git a/Runtime/Collider/ColliderTriggerAreaBase.cs b/Runtime/Collider/ColliderTriggerAreaBase.cs index ab0a85f..0db5a87 100644 --- a/Runtime/Collider/ColliderTriggerAreaBase.cs +++ b/Runtime/Collider/ColliderTriggerAreaBase.cs @@ -4,16 +4,16 @@ using UnityEngine; namespace Syntriax.Modules.Trigger { - public abstract class ColliderTriggerAreaBase : MonoBehaviour, IColliderTriggerArea + public abstract class ColliderTriggerAreaBase : MonoBehaviour, IColliderTriggerArea where T : Component { [SerializeField] private LayerMask colliderMask = ~0; - protected Collider2D[] nonAllocResults = new Collider2D[32]; + protected T[] nonAllocResults = new T[32]; protected int previousTriggerCount = 0; public LayerMask ColliderMask { get => colliderMask; set => colliderMask = value; } - public Action> OnTriggeredCollidersUpdated { get; set; } = null; - public List ColliderList { get; protected set; } = new List(32); + public Action> OnTriggeredTransformsUpdated { get; set; } = null; + public List TriggeredTransforms { get; protected set; } = new List(32); protected abstract int TriggerCount { get; } @@ -23,11 +23,11 @@ namespace Syntriax.Modules.Trigger if (!IsArrayAndListIdentical(triggerCount)) { - ColliderList.Clear(); + TriggeredTransforms.Clear(); for (int i = 0; i < triggerCount; i++) - ColliderList.Add(nonAllocResults[i]); + TriggeredTransforms.Add(nonAllocResults[i].transform); - OnTriggeredCollidersUpdated?.Invoke(ColliderList); + OnTriggeredTransformsUpdated?.Invoke(TriggeredTransforms); } previousTriggerCount = triggerCount; @@ -40,7 +40,7 @@ namespace Syntriax.Modules.Trigger return false; for (int i = 0; i < triggerCount; i++) - if (!ColliderList.Contains(nonAllocResults[i])) + if (!TriggeredTransforms.Contains(nonAllocResults[i].transform)) return false; return true; diff --git a/Runtime/Collider/IColliderTriggerArea.cs b/Runtime/Collider/IColliderTriggerArea.cs index 9219e9e..60e1667 100644 --- a/Runtime/Collider/IColliderTriggerArea.cs +++ b/Runtime/Collider/IColliderTriggerArea.cs @@ -12,12 +12,12 @@ namespace Syntriax.Modules.Trigger LayerMask ColliderMask { get; set; } /// - /// Called whenever the list of changes + /// Called whenever the list of changes /// - /// List of that triggered the - Action> OnTriggeredCollidersUpdated { get; set; } + /// List of that their colliders triggered the + Action> OnTriggeredTransformsUpdated { get; set; } - /// List of that triggered the - List ColliderList { get; } + /// List of that their colliders triggered the + List TriggeredTransforms { get; } } } From 8356f72d6d90b945adebc7ffd4c559c67253ccb2 Mon Sep 17 00:00:00 2001 From: Syntriax Date: Thu, 16 Feb 2023 13:06:35 +0300 Subject: [PATCH 2/3] feat: In Editor TriggerArea Visual Checking Added --- Runtime/Collider/Box2DColliderTriggerArea.cs | 5 ++++- Runtime/Collider/Box2DColliderTriggerAreaWithRotation.cs | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Runtime/Collider/Box2DColliderTriggerArea.cs b/Runtime/Collider/Box2DColliderTriggerArea.cs index 4be724c..7c346df 100644 --- a/Runtime/Collider/Box2DColliderTriggerArea.cs +++ b/Runtime/Collider/Box2DColliderTriggerArea.cs @@ -10,7 +10,10 @@ namespace Syntriax.Modules.Trigger #if UNITY_EDITOR private void OnDrawGizmosSelected() { - Gizmos.color = previousTriggerCount > 0 ? Color.green : Color.red; + if (UnityEditor.EditorApplication.isPlaying) + Gizmos.color = previousTriggerCount > 0 ? Color.green : Color.red; + else + Gizmos.color = TriggerCount > 0 ? Color.green : Color.red; Gizmos.DrawWireCube(transform.position, transform.lossyScale); } #endif diff --git a/Runtime/Collider/Box2DColliderTriggerAreaWithRotation.cs b/Runtime/Collider/Box2DColliderTriggerAreaWithRotation.cs index b96ef8a..10eaf24 100644 --- a/Runtime/Collider/Box2DColliderTriggerAreaWithRotation.cs +++ b/Runtime/Collider/Box2DColliderTriggerAreaWithRotation.cs @@ -10,7 +10,10 @@ namespace Syntriax.Modules.Trigger #if UNITY_EDITOR private void OnDrawGizmosSelected() { - Gizmos.color = previousTriggerCount > 0 ? Color.green : Color.red; + if (UnityEditor.EditorApplication.isPlaying) + Gizmos.color = previousTriggerCount > 0 ? Color.green : Color.red; + else + Gizmos.color = TriggerCount > 0 ? Color.green : Color.red; Gizmos.matrix = transform.localToWorldMatrix; Gizmos.DrawWireCube(Vector3.zero, Vector3.one); } From cee04f5da38b71eee894bd1ed45c8a7b42b955f1 Mon Sep 17 00:00:00 2001 From: Syntriax Date: Thu, 16 Feb 2023 13:07:14 +0300 Subject: [PATCH 3/3] feat: 3D Box Area ColliderTriggerArea & GroundTriggerArea Added --- Runtime/Collider/BoxColliderTriggerArea.cs | 22 +++++++++++++++++++ .../Collider/BoxColliderTriggerArea.cs.meta | 11 ++++++++++ .../Collider/Ground/BoxGroundTriggerArea.cs | 4 ++++ 3 files changed, 37 insertions(+) create mode 100644 Runtime/Collider/BoxColliderTriggerArea.cs create mode 100644 Runtime/Collider/BoxColliderTriggerArea.cs.meta create mode 100644 Runtime/Collider/Ground/BoxGroundTriggerArea.cs diff --git a/Runtime/Collider/BoxColliderTriggerArea.cs b/Runtime/Collider/BoxColliderTriggerArea.cs new file mode 100644 index 0000000..8f467dc --- /dev/null +++ b/Runtime/Collider/BoxColliderTriggerArea.cs @@ -0,0 +1,22 @@ +using UnityEngine; + +namespace Syntriax.Modules.Trigger +{ + public class BoxColliderTriggerArea : ColliderTriggerAreaBase + { + protected override int TriggerCount + => Physics.OverlapBoxNonAlloc(transform.position, transform.localScale * .5f, nonAllocResults, transform.rotation, ColliderMask); + +#if UNITY_EDITOR + private void OnDrawGizmosSelected() + { + if (UnityEditor.EditorApplication.isPlaying) + Gizmos.color = previousTriggerCount > 0 ? Color.green : Color.red; + else + Gizmos.color = TriggerCount > 0 ? Color.green : Color.red; + + Gizmos.DrawWireCube(transform.position, transform.lossyScale); + } +#endif + } +} diff --git a/Runtime/Collider/BoxColliderTriggerArea.cs.meta b/Runtime/Collider/BoxColliderTriggerArea.cs.meta new file mode 100644 index 0000000..a734919 --- /dev/null +++ b/Runtime/Collider/BoxColliderTriggerArea.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 850a555be97ed9b4a86942b21a6a25e4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Collider/Ground/BoxGroundTriggerArea.cs b/Runtime/Collider/Ground/BoxGroundTriggerArea.cs new file mode 100644 index 0000000..0eb3608 --- /dev/null +++ b/Runtime/Collider/Ground/BoxGroundTriggerArea.cs @@ -0,0 +1,4 @@ +namespace Syntriax.Modules.Trigger +{ + public class BoxGroundTriggerArea : BoxColliderTriggerArea, IGroundTriggerArea { } +}