diff --git a/Box2DColliderTrigger.cs b/Box2DColliderTrigger.cs new file mode 100644 index 0000000..849ae66 --- /dev/null +++ b/Box2DColliderTrigger.cs @@ -0,0 +1,25 @@ +using UnityEngine; + +namespace Syntriax.Modules.Trigger +{ + + public class Box2DColliderTrigger : Trigger, IColliderTrigger + { + private Collider2D[] results = new Collider2D[8]; + + public LayerMask ColliderMask { get => colliderMask; set => colliderMask = value; } + [SerializeField] private LayerMask colliderMask = 0; + + protected void FixedUpdate() + => IsTrigerred = Physics2D.OverlapBoxNonAlloc(transform.position, transform.localScale, 0, results, ColliderMask) > 0; + + +#if UNITY_EDITOR + private void OnDrawGizmosSelected() + { + Gizmos.color = IsTrigerred ? Color.green : Color.red; + Gizmos.DrawWireCube(transform.position, transform.lossyScale); + } +#endif + } +} diff --git a/Box2DColliderTrigger.cs.meta b/Box2DColliderTrigger.cs.meta new file mode 100644 index 0000000..676047d --- /dev/null +++ b/Box2DColliderTrigger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 20a6baf9a256917448a4d7ad09d0c51a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Ground.meta b/Ground.meta new file mode 100644 index 0000000..ba6628e --- /dev/null +++ b/Ground.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8747cc51a59e7a14fae4687c7136d15b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Ground/Box2DGroundTrigger.cs b/Ground/Box2DGroundTrigger.cs new file mode 100644 index 0000000..8deb2c8 --- /dev/null +++ b/Ground/Box2DGroundTrigger.cs @@ -0,0 +1,4 @@ +namespace Syntriax.Modules.Trigger +{ + public class Box2DGroundTrigger : Box2DColliderTrigger, IGroundTrigger { } +} diff --git a/Ground/Box2DGroundTrigger.cs.meta b/Ground/Box2DGroundTrigger.cs.meta new file mode 100644 index 0000000..1a4cee5 --- /dev/null +++ b/Ground/Box2DGroundTrigger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7804f3e8384c7a54482f585b4f43264a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Ground/IGroundTrigger.cs b/Ground/IGroundTrigger.cs new file mode 100644 index 0000000..687ae4b --- /dev/null +++ b/Ground/IGroundTrigger.cs @@ -0,0 +1,4 @@ +namespace Syntriax.Modules.Trigger +{ + public interface IGroundTrigger : IColliderTrigger { } +} diff --git a/Ground/IGroundTrigger.cs.meta b/Ground/IGroundTrigger.cs.meta new file mode 100644 index 0000000..348f8cc --- /dev/null +++ b/Ground/IGroundTrigger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8dc876763de82b74cb9a05685d57e841 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/IColliderCheckExtensions.cs b/IColliderCheckExtensions.cs new file mode 100644 index 0000000..e9b065f --- /dev/null +++ b/IColliderCheckExtensions.cs @@ -0,0 +1,8 @@ +namespace Syntriax.Modules.Trigger +{ + public static class IColliderTriggerExtensions + { + public static bool IsTriggeredNullChecked(this IColliderTrigger colliderCheck) + => colliderCheck == null ? true : colliderCheck.IsTrigerred; + } +} diff --git a/IColliderCheckExtensions.cs.meta b/IColliderCheckExtensions.cs.meta new file mode 100644 index 0000000..42d0c67 --- /dev/null +++ b/IColliderCheckExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d1b41d4e3ee5ce24eaef42d5c8fc8c3a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/IColliderTrigger.cs b/IColliderTrigger.cs new file mode 100644 index 0000000..269c6f7 --- /dev/null +++ b/IColliderTrigger.cs @@ -0,0 +1,9 @@ +using UnityEngine; + +namespace Syntriax.Modules.Trigger +{ + public interface IColliderTrigger : ITrigger + { + LayerMask ColliderMask { get; set; } + } +} diff --git a/IColliderTrigger.cs.meta b/IColliderTrigger.cs.meta new file mode 100644 index 0000000..494474c --- /dev/null +++ b/IColliderTrigger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e199ccade2250b646abfd859e4aa1e7a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ITrigger.cs b/ITrigger.cs new file mode 100644 index 0000000..0fbde29 --- /dev/null +++ b/ITrigger.cs @@ -0,0 +1,10 @@ +using System; + +namespace Syntriax.Modules.Trigger +{ + public interface ITrigger + { + bool IsTrigerred { get; } + Action OnTriggered { get; set; } + } +} diff --git a/ITrigger.cs.meta b/ITrigger.cs.meta new file mode 100644 index 0000000..5d1f353 --- /dev/null +++ b/ITrigger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7c3dcc511ff3a4b4ca6777800f34d17c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/README.md.meta b/README.md.meta new file mode 100644 index 0000000..8760fe2 --- /dev/null +++ b/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 44cae1d5afff6464cb93313a45605b8f +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Trigger.cs b/Trigger.cs new file mode 100644 index 0000000..0132b38 --- /dev/null +++ b/Trigger.cs @@ -0,0 +1,25 @@ +using System; +using UnityEngine; + +namespace Syntriax.Modules.Trigger +{ + public class Trigger : MonoBehaviour, ITrigger + { + private bool _isTrigerred = false; + + public Action OnTriggered { get; set; } = null; + public bool IsTrigerred + { + get => _isTrigerred; + protected set + { + bool oldValue = _isTrigerred; + + _isTrigerred = value; + + if (oldValue != value) + OnTriggered?.Invoke(value); + } + } + } +} diff --git a/Trigger.cs.meta b/Trigger.cs.meta new file mode 100644 index 0000000..7acab2a --- /dev/null +++ b/Trigger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1e3718079b1e1024a997ca7eaa425903 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: