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);
        }