public static bool PositionWithinConeOfVision(this AIBrain brain, Vector3 pos, float radius, float angle)
        {
            float azimuthToObject = VectorHelper.GetAzimuth(pos, brain.transform.position, Vector3.up, brain.transform.forward);

            if (Mathf.Abs(azimuthToObject) <= angle / 2f)
            {
                return(brain.PositionWithinRange(pos, radius));
            }
            return(false);
        }
        public override bool Evaluate(AIBrain brain, params ConditionParam[] condParams)
        {
            try {
                if (condParams.Length > 1)
                {
                    range = condParams[0].AsFloat();
                }
            }
            catch (System.Exception e) {
                Debug.LogWarningFormat("Improper condParams. {0}", e.Message);
            }

            return(brain.extrapolatedPlayerPosition.HasValue ? brain.PositionWithinRange(brain.extrapolatedPlayerPosition.Value, range) : false);
        }