// TBD: make some stages optional void Refresh() { var targets = trackColliders.Refresh(); if (applyAngleFilter) { targets = filterByAngle.Input(targets); } if (applyLineOfSightFilter) { targets = lineOfSight.Input(targets); } targets = targetFilter.Input(targets); var target = VectorMath.GetClosest(targets, transform.position); ClosestTarget.Invoke(target); //Debug.Log($"Nearby: {nearby.Count}, in view: {inView.Count}, in sight: {inSight.Count}, " + // $"targets: {visibleTargets.Count}, closest: {closestTarget}"); }