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