using System.Linq; using Object = UnityEngine.Object; namespace OmiLAXR.Listeners { public abstract class Listener : ActorPipelineComponent { public event System.Action OnFoundObjects; public abstract void StartListening(); protected void OnEnable() { } /// /// Finds a group of objects and provide them to pipeline. /// /// /// protected void Detect(bool includeInactive = false) where T : Object { var objects = FindObjects(includeInactive); Found(objects); } protected void Found(params T[] objects) where T : Object { if (!enabled || objects == null || objects.Length == 0) return; OnFoundObjects?.Invoke(objects.Select(o => o as Object).ToArray()); } } }