/* using System.Linq; using D2D.Utilities; using UnityEngine; namespace D2D.AI.Ghost { public class GhostAI : AIBase { [SerializeField] private GhostAISettings _settings; [SerializeField] private Transform _raycastPoint; private Transform _nearestHunter; private bool _isHunterFar; private CharacterController _cc; protected override float TickDelay => _settings.observeDelay; private void Start() { _hasher = this.FindLazy(); _fsm = new StateMachine(); _cc = GetComponent(); var map = FindObjectOfType(); var wander = new WanderState(_settings.movement, transform, _cc, map); var runAway = new GhostRunAway(_settings, transform, _cc, _raycastPoint); At(wander, runAway, IsHunterNear); At(runAway, wander, IsHunterFarVariable); _fsm.SetState(wander); } private bool IsHunterNear() => _nearestHunter != null; private Transform GetNearestHunter() => GetNearest(_hasher.Hunters, _settings.nearHunter.Distance, h => true); private bool IsHunterFarVariable() => _isHunterFar; private bool IsHunterFar() => _hasher.Hunters.All(h => _settings.farHunter.IsOutOfVision(h.transform, transform)); protected override void Tick() { _nearestHunter = GetNearestHunter(); _isHunterFar = IsHunterFar(); } } } */