using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; namespace BITKit.Sensors { public class TriggerSensor : MonoBehaviour { [Header(Constant.Header.Events)] public UnityEvent onDetected = new(); public UnityEvent onLost = new(); [Header(Constant.Header.InternalVariables)] List _detected = new(); void OnTriggerEnter(Collider collider) { if (IsValid(collider)) { _detected.Add(collider); onDetected.Invoke(collider); } } void OnTriggerExit(Collider collider) { if (_detected.TryRemove(collider)) { onLost.Invoke(collider); }; } void OnCollisionEnter(Collision collision) { var collider = collision.collider; if (IsValid(collider)) { _detected.Add(collider); onDetected.Invoke(collider); } } void OnCollisionStay(Collision collision) { var collider = collision.collider; if (_detected.TryRemove(collider)) { onLost.Invoke(collider); }; } bool IsValid(Component self)=>true; } }