public static bool Evaluate(IAIAgent self, Vector3 optionPosition, out Vector3 dir, out float dot) { dir = optionPosition - self.Entity.ServerPosition; NPCPlayerApex nPCPlayerApex = self as NPCPlayerApex; if (nPCPlayerApex == null) { dir.Normalize(); dot = Vector3.Dot(dir, self.Entity.transform.forward); if (dot < self.GetStats.VisionCone) { dot = -1f; return(false); } } else { if (nPCPlayerApex.ToEnemyRangeEnum(dir.sqrMagnitude) == NPCPlayerApex.EnemyRangeEnum.CloseAttackRange) { dot = 1f; dir.Normalize(); return(true); } dir.Normalize(); dot = Vector3.Dot(dir, nPCPlayerApex.eyes.BodyForward()); if (dot < self.GetStats.VisionCone) { dot = -1f; return(false); } } return(true); }