Compare commits
	
		
			24 Commits
		
	
	
		
			4f2217bb63
			...
			developmen
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 8963df6f46 | |||
| fc49961ef3 | |||
| c8105122fb | |||
| f2faa86f65 | |||
| e97119befc | |||
| ea44c11e56 | |||
| cee04f5da3 | |||
| 8356f72d6d | |||
| 8b3721eba3 | |||
| a4fd3343b1 | |||
| 723e4a54e0 | |||
| 1b0d568a05 | |||
| bbbf2b5609 | |||
| f137f1202b | |||
| 56575cd107 | |||
| efcc339e45 | |||
| 0107f4d98f | |||
| 63020a0b9e | |||
| eb0d7fc7a7 | |||
| 685460123f | |||
| dabe16b529 | |||
| b7fafaa09f | |||
| 330a41a87f | |||
| 63ec8bdf99 | 
@@ -1,25 +0,0 @@
 | 
			
		||||
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
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,4 +0,0 @@
 | 
			
		||||
namespace Syntriax.Modules.Trigger
 | 
			
		||||
{
 | 
			
		||||
    public class Box2DGroundTrigger : Box2DColliderTrigger, IGroundTrigger { }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,4 +0,0 @@
 | 
			
		||||
namespace Syntriax.Modules.Trigger
 | 
			
		||||
{
 | 
			
		||||
    public interface IGroundTrigger : IColliderTrigger { }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,8 +0,0 @@
 | 
			
		||||
namespace Syntriax.Modules.Trigger
 | 
			
		||||
{
 | 
			
		||||
    public static class IColliderTriggerExtensions
 | 
			
		||||
    {
 | 
			
		||||
        public static bool IsTriggeredNullChecked(this IColliderTrigger colliderCheck)
 | 
			
		||||
            => colliderCheck == null ? true : colliderCheck.IsTrigerred;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,9 +0,0 @@
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
namespace Syntriax.Modules.Trigger
 | 
			
		||||
{
 | 
			
		||||
    public interface IColliderTrigger : ITrigger
 | 
			
		||||
    {
 | 
			
		||||
        LayerMask ColliderMask { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										10
									
								
								ITrigger.cs
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								ITrigger.cs
									
									
									
									
									
								
							@@ -1,10 +0,0 @@
 | 
			
		||||
using System;
 | 
			
		||||
 | 
			
		||||
namespace Syntriax.Modules.Trigger
 | 
			
		||||
{
 | 
			
		||||
    public interface ITrigger
 | 
			
		||||
    {
 | 
			
		||||
        bool IsTrigerred { get; }
 | 
			
		||||
        Action<bool> OnTriggered { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,2 +1,4 @@
 | 
			
		||||
# Trigger
 | 
			
		||||
 | 
			
		||||
## Dependencies
 | 
			
		||||
1. [State Module](https://git.syntriax.com/Syntriax/State)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								Runtime.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								Runtime.meta
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 683853ebcef1bb84b90211ef5f0a6e5f
 | 
			
		||||
folderAsset: yes
 | 
			
		||||
DefaultImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										8
									
								
								Runtime/Collider.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								Runtime/Collider.meta
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 09a25591637cbdf45ad71415d94bf641
 | 
			
		||||
folderAsset: yes
 | 
			
		||||
DefaultImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										21
									
								
								Runtime/Collider/Box2DColliderTriggerArea.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								Runtime/Collider/Box2DColliderTriggerArea.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
namespace Syntriax.Modules.Trigger
 | 
			
		||||
{
 | 
			
		||||
    public class Box2DColliderTriggerArea : ColliderTriggerAreaBase<Collider2D>
 | 
			
		||||
    {
 | 
			
		||||
        protected override int TriggerCount
 | 
			
		||||
            => Physics2D.OverlapBoxNonAlloc(transform.position, transform.localScale, 0, nonAllocResults, ColliderMask);
 | 
			
		||||
 | 
			
		||||
#if UNITY_EDITOR
 | 
			
		||||
        private void OnDrawGizmosSelected()
 | 
			
		||||
        {
 | 
			
		||||
            if (UnityEditor.EditorApplication.isPlaying)
 | 
			
		||||
                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);
 | 
			
		||||
        }
 | 
			
		||||
#endif
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: d1b41d4e3ee5ce24eaef42d5c8fc8c3a
 | 
			
		||||
guid: 13b8a72003d46b24fa2e67093c42c49d
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
							
								
								
									
										22
									
								
								Runtime/Collider/Box2DColliderTriggerAreaWithRotation.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								Runtime/Collider/Box2DColliderTriggerAreaWithRotation.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
namespace Syntriax.Modules.Trigger
 | 
			
		||||
{
 | 
			
		||||
    public class Box2DColliderTriggerAreaWithRotation : ColliderTriggerAreaBase<Collider2D>
 | 
			
		||||
    {
 | 
			
		||||
        protected override int TriggerCount
 | 
			
		||||
            => Physics2D.OverlapBoxNonAlloc(transform.position, transform.localScale, transform.rotation.eulerAngles.z, nonAllocResults, ColliderMask);
 | 
			
		||||
 | 
			
		||||
#if UNITY_EDITOR
 | 
			
		||||
        private void OnDrawGizmosSelected()
 | 
			
		||||
        {
 | 
			
		||||
            if (UnityEditor.EditorApplication.isPlaying)
 | 
			
		||||
                Gizmos.color = previousTriggerCount > 0 && StateEnable.IsEnabled ? Color.green : Color.red;
 | 
			
		||||
            else
 | 
			
		||||
                Gizmos.color = TriggerCount > 0 ? Color.green : Color.red;
 | 
			
		||||
            Gizmos.matrix = transform.localToWorldMatrix;
 | 
			
		||||
            Gizmos.DrawWireCube(Vector3.zero, Vector3.one);
 | 
			
		||||
        }
 | 
			
		||||
#endif
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 20a6baf9a256917448a4d7ad09d0c51a
 | 
			
		||||
guid: b2d9ae6bcc3b69a4093f8c740f040229
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
							
								
								
									
										23
									
								
								Runtime/Collider/BoxColliderTriggerArea.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								Runtime/Collider/BoxColliderTriggerArea.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
namespace Syntriax.Modules.Trigger
 | 
			
		||||
{
 | 
			
		||||
    public class BoxColliderTriggerArea : ColliderTriggerAreaBase<Collider>
 | 
			
		||||
    {
 | 
			
		||||
        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 && StateEnable.IsEnabled ? Color.green : Color.red;
 | 
			
		||||
            else
 | 
			
		||||
                Gizmos.color = TriggerCount > 0 ? Color.green : Color.red;
 | 
			
		||||
 | 
			
		||||
            Gizmos.matrix = transform.localToWorldMatrix;
 | 
			
		||||
            Gizmos.DrawWireCube(Vector3.zero, Vector3.one);
 | 
			
		||||
        }
 | 
			
		||||
#endif
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: e199ccade2250b646abfd859e4aa1e7a
 | 
			
		||||
guid: 850a555be97ed9b4a86942b21a6a25e4
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
							
								
								
									
										22
									
								
								Runtime/Collider/ColliderTrigger.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								Runtime/Collider/ColliderTrigger.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
using Syntriax.Modules.State;
 | 
			
		||||
 | 
			
		||||
namespace Syntriax.Modules.Trigger
 | 
			
		||||
{
 | 
			
		||||
    public class ColliderTrigger : TriggerBase
 | 
			
		||||
    {
 | 
			
		||||
        protected IColliderTriggerArea colliderTrigger = null;
 | 
			
		||||
 | 
			
		||||
        private void Awake()
 | 
			
		||||
        {
 | 
			
		||||
            colliderTrigger = GetComponent<IColliderTriggerArea>();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void FixedUpdate()
 | 
			
		||||
        {
 | 
			
		||||
            if (!StateEnable.IsEnabledNullChecked())
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            IsTrigerred = colliderTrigger.Check();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 7804f3e8384c7a54482f585b4f43264a
 | 
			
		||||
guid: 7302d5358a0cd4a4c9a2c8dd9a4a7697
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
							
								
								
									
										61
									
								
								Runtime/Collider/ColliderTriggerAreaBase.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								Runtime/Collider/ColliderTriggerAreaBase.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,61 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
namespace Syntriax.Modules.Trigger
 | 
			
		||||
{
 | 
			
		||||
    public abstract class ColliderTriggerAreaBase<T> : MonoBehaviour, IColliderTriggerArea where T : Component
 | 
			
		||||
    {
 | 
			
		||||
        [SerializeField] private LayerMask colliderMask = ~0;
 | 
			
		||||
 | 
			
		||||
        protected T[] nonAllocResults = new T[32];
 | 
			
		||||
        protected int previousTriggerCount = 0;
 | 
			
		||||
 | 
			
		||||
        public LayerMask ColliderMask { get => colliderMask; set => colliderMask = value; }
 | 
			
		||||
        public Action<List<Transform>> OnTriggeredTransformsUpdated { get; set; } = null;
 | 
			
		||||
        public List<Transform> TriggeredTransforms { get; protected set; } = new List<Transform>(32);
 | 
			
		||||
 | 
			
		||||
        protected abstract int TriggerCount { get; }
 | 
			
		||||
 | 
			
		||||
        public virtual bool Check()
 | 
			
		||||
        {
 | 
			
		||||
            int triggerCount = TriggerCount;
 | 
			
		||||
 | 
			
		||||
            if (!IsArrayAndListIdentical(triggerCount))
 | 
			
		||||
            {
 | 
			
		||||
                TriggeredTransforms.Clear();
 | 
			
		||||
                for (int i = 0; i < triggerCount; i++)
 | 
			
		||||
                    TriggeredTransforms.Add(nonAllocResults[i].transform);
 | 
			
		||||
 | 
			
		||||
                OnTriggeredTransformsUpdated?.Invoke(TriggeredTransforms);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            previousTriggerCount = triggerCount;
 | 
			
		||||
            return triggerCount > 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private bool IsArrayAndListIdentical(int triggerCount)
 | 
			
		||||
        {
 | 
			
		||||
            if (previousTriggerCount != triggerCount)
 | 
			
		||||
                return false;
 | 
			
		||||
 | 
			
		||||
            for (int i = 0; i < triggerCount; i++)
 | 
			
		||||
                if (!TriggeredTransforms.Contains(nonAllocResults[i].transform))
 | 
			
		||||
                    return false;
 | 
			
		||||
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
#if UNITY_EDITOR
 | 
			
		||||
        private State.IStateEnable _stateEnable = null;
 | 
			
		||||
        public State.IStateEnable StateEnable
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                _stateEnable = _stateEnable ?? GetComponent<State.IStateEnable>() ?? gameObject.AddComponent<State.StateEnableMonoBehaviour>();
 | 
			
		||||
                return _stateEnable;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
#endif
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Runtime/Collider/ColliderTriggerAreaBase.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								Runtime/Collider/ColliderTriggerAreaBase.cs.meta
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: d9e5082ab403a7240a6bf0554a93518f
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										4
									
								
								Runtime/Collider/Ground/Box2DGroundTriggerArea.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								Runtime/Collider/Ground/Box2DGroundTriggerArea.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
namespace Syntriax.Modules.Trigger
 | 
			
		||||
{
 | 
			
		||||
    public class Box2DGroundTriggerArea : Box2DColliderTriggerArea, IGroundTriggerArea { }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Runtime/Collider/Ground/Box2DGroundTriggerArea.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								Runtime/Collider/Ground/Box2DGroundTriggerArea.cs.meta
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 4b3db9faa3a5e9f4db37172c452dbf2a
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
@@ -0,0 +1,4 @@
 | 
			
		||||
namespace Syntriax.Modules.Trigger
 | 
			
		||||
{
 | 
			
		||||
    public class Box2DGroundTriggerAreaWithRotation : Box2DColliderTriggerAreaWithRotation, IGroundTriggerArea { }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: dbb4ef661e6f9fc4fb8584059bc8e5cc
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										4
									
								
								Runtime/Collider/Ground/BoxGroundTriggerArea.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								Runtime/Collider/Ground/BoxGroundTriggerArea.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
namespace Syntriax.Modules.Trigger
 | 
			
		||||
{
 | 
			
		||||
    public class BoxGroundTriggerArea : BoxColliderTriggerArea, IGroundTriggerArea { }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Runtime/Collider/Ground/BoxGroundTriggerArea.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								Runtime/Collider/Ground/BoxGroundTriggerArea.cs.meta
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 44c565f53b853aa4a99a307b70f8288f
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										4
									
								
								Runtime/Collider/Ground/GroundTrigger.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								Runtime/Collider/Ground/GroundTrigger.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
namespace Syntriax.Modules.Trigger
 | 
			
		||||
{
 | 
			
		||||
    public class GroundTrigger : ColliderTrigger, IGroundTrigger { }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Runtime/Collider/Ground/GroundTrigger.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								Runtime/Collider/Ground/GroundTrigger.cs.meta
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 91a5b9cf888de6f4da572ac875fc826c
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										4
									
								
								Runtime/Collider/Ground/IGroundTrigger.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								Runtime/Collider/Ground/IGroundTrigger.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
namespace Syntriax.Modules.Trigger
 | 
			
		||||
{
 | 
			
		||||
    public interface IGroundTrigger : ITrigger { }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										4
									
								
								Runtime/Collider/Ground/IGroundTriggerArea.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								Runtime/Collider/Ground/IGroundTriggerArea.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
namespace Syntriax.Modules.Trigger
 | 
			
		||||
{
 | 
			
		||||
    public interface IGroundTriggerArea : ITriggerArea { }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Runtime/Collider/Ground/IGroundTriggerArea.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								Runtime/Collider/Ground/IGroundTriggerArea.cs.meta
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 7a6e6150c32aa1f4d87db161c5fb65db
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										23
									
								
								Runtime/Collider/IColliderTriggerArea.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								Runtime/Collider/IColliderTriggerArea.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
namespace Syntriax.Modules.Trigger
 | 
			
		||||
{
 | 
			
		||||
    public interface IColliderTriggerArea : ITriggerArea
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// <see cref="LayerMask"/> value for checking triggers
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        LayerMask ColliderMask { get; set; }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Called whenever the list of <see cref="Transform"/> changes
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <value>List of <see cref="Transform"/> that their colliders triggered the <see cref="IColliderTriggerArea"/></value>
 | 
			
		||||
        Action<List<Transform>> OnTriggeredTransformsUpdated { get; set; }
 | 
			
		||||
 | 
			
		||||
        /// <value>List of <see cref="Transform"/> that their colliders triggered the <see cref="IColliderTriggerArea"/></value>
 | 
			
		||||
        List<Transform> TriggeredTransforms { get; }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Runtime/Collider/IColliderTriggerArea.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								Runtime/Collider/IColliderTriggerArea.cs.meta
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: efbbfd3aba8fb5843a26ed5446050b32
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										11
									
								
								Runtime/Collider/ITriggerArea.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								Runtime/Collider/ITriggerArea.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
namespace Syntriax.Modules.Trigger
 | 
			
		||||
{
 | 
			
		||||
    public interface ITriggerArea
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Check if the <see cref="ITriggerArea"/> is Triggered
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <returns>true if <see cref="ITriggerArea"/> is triggered, false if not</returns>
 | 
			
		||||
        bool Check();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Runtime/Collider/ITriggerArea.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								Runtime/Collider/ITriggerArea.cs.meta
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: d8fff127b37aecc4495535a383f8f4bf
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										21
									
								
								Runtime/ITrigger.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								Runtime/ITrigger.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
using System;
 | 
			
		||||
using Syntriax.Modules.State;
 | 
			
		||||
 | 
			
		||||
namespace Syntriax.Modules.Trigger
 | 
			
		||||
{
 | 
			
		||||
    public interface ITrigger
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// <see cref="IStateEnable"/> to control the state of the <see cref="ITrigger"/> is on or off
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        IStateEnable StateEnable { get; }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Called everytime the IsTrigerred field is changed
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <value>The new value of IsTrigerred</value>
 | 
			
		||||
        Action<bool> OnTriggerStateChanged { get; set; }
 | 
			
		||||
 | 
			
		||||
        bool IsTrigerred { get; }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								Runtime/ITriggerExtensions.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								Runtime/ITriggerExtensions.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
namespace Syntriax.Modules.Trigger
 | 
			
		||||
{
 | 
			
		||||
    public static class ITriggerExtensions
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Checks if the provided parameter <see cref="ITrigger"/> is toggled, if the parameter is null returns the nullValue parameter
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="trigger"><see cref="ITrigger"/> to be checked if toggled or not</param>
 | 
			
		||||
        /// <param name="nullValue">The value that will be returned if trigger is null. Default value: true</param>
 | 
			
		||||
        /// <returns><see cref="ITrigger"/>'s toggle value, or if null return nullValue parameter</returns>
 | 
			
		||||
        public static bool IsTriggeredNullChecked(this ITrigger trigger, bool nullValue = true)
 | 
			
		||||
            => trigger == null ? nullValue : trigger.IsTrigerred;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Runtime/ITriggerExtensions.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								Runtime/ITriggerExtensions.cs.meta
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 4664637bbd2ba574c85953b5c5d67598
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										16
									
								
								Runtime/Syntriax.Modules.Trigger.asmdef
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								Runtime/Syntriax.Modules.Trigger.asmdef
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "Syntriax.Modules.Trigger",
 | 
			
		||||
    "rootNamespace": "",
 | 
			
		||||
    "references": [
 | 
			
		||||
        "GUID:efa9a9bc94c60c74684aafb7428fbf61"
 | 
			
		||||
    ],
 | 
			
		||||
    "includePlatforms": [],
 | 
			
		||||
    "excludePlatforms": [],
 | 
			
		||||
    "allowUnsafeCode": false,
 | 
			
		||||
    "overrideReferences": false,
 | 
			
		||||
    "precompiledReferences": [],
 | 
			
		||||
    "autoReferenced": true,
 | 
			
		||||
    "defineConstraints": [],
 | 
			
		||||
    "versionDefines": [],
 | 
			
		||||
    "noEngineReferences": false
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										7
									
								
								Runtime/Syntriax.Modules.Trigger.asmdef.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								Runtime/Syntriax.Modules.Trigger.asmdef.meta
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 1f5f15fe7e49bdb48a76c5ce9b1c9f2f
 | 
			
		||||
AssemblyDefinitionImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										48
									
								
								Runtime/TriggerBase.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								Runtime/TriggerBase.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
			
		||||
using System;
 | 
			
		||||
using Syntriax.Modules.State;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
namespace Syntriax.Modules.Trigger
 | 
			
		||||
{
 | 
			
		||||
    public class TriggerBase : MonoBehaviour, ITrigger
 | 
			
		||||
    {
 | 
			
		||||
        public Action<bool> OnTriggerStateChanged { get; set; } = null;
 | 
			
		||||
 | 
			
		||||
        private IStateEnable _stateEnable = null;
 | 
			
		||||
        public IStateEnable StateEnable
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                if (_stateEnable == null)
 | 
			
		||||
                {
 | 
			
		||||
                    _stateEnable = GetComponent<IStateEnable>() ?? gameObject.AddComponent<StateEnableMonoBehaviour>();
 | 
			
		||||
                    _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 || !StateEnable.IsEnabledNullChecked())
 | 
			
		||||
                    return;
 | 
			
		||||
 | 
			
		||||
                _isTrigerred = value;
 | 
			
		||||
                OnTriggerStateChanged?.Invoke(value);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Runtime/TriggerBase.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								Runtime/TriggerBase.cs.meta
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: f28f409248975dc4fb1d9e01e88ea65e
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										25
									
								
								Trigger.cs
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								Trigger.cs
									
									
									
									
									
								
							@@ -1,25 +0,0 @@
 | 
			
		||||
using System;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
namespace Syntriax.Modules.Trigger
 | 
			
		||||
{
 | 
			
		||||
    public class Trigger : MonoBehaviour, ITrigger
 | 
			
		||||
    {
 | 
			
		||||
        private bool _isTrigerred = false;
 | 
			
		||||
 | 
			
		||||
        public Action<bool> OnTriggered { get; set; } = null;
 | 
			
		||||
        public bool IsTrigerred
 | 
			
		||||
        {
 | 
			
		||||
            get => _isTrigerred;
 | 
			
		||||
            protected set
 | 
			
		||||
            {
 | 
			
		||||
                bool oldValue = _isTrigerred;
 | 
			
		||||
 | 
			
		||||
                _isTrigerred = value;
 | 
			
		||||
 | 
			
		||||
                if (oldValue != value)
 | 
			
		||||
                    OnTriggered?.Invoke(value);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,11 +0,0 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 1e3718079b1e1024a997ca7eaa425903
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										14
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "com.syntriax.trigger",
 | 
			
		||||
  "version": "0.3.0",
 | 
			
		||||
  "displayName": "Trigger Module",
 | 
			
		||||
  "unity": "2019.1",
 | 
			
		||||
  "documentationUrl": "https://git.syntriax.com/Syntriax/Trigger.git",
 | 
			
		||||
  "dependencies": {},
 | 
			
		||||
  "keywords": ["Trigger"],
 | 
			
		||||
  "author": {
 | 
			
		||||
    "name": "Syntriax",
 | 
			
		||||
    "email": "Syntriax@gmail.com",
 | 
			
		||||
    "url": "https://syntriax.com"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										7
									
								
								package.json.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								package.json.meta
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: e2ae9625f2d620848ac1dc03ad1d513f
 | 
			
		||||
TextScriptImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
		Reference in New Issue
	
	Block a user