/// <summary> /// the requester must have an target for this to work as intended /// </summary> protected Vector2 ApplyAvoidance(AIAgent requester, Vector2 requesterPosition, Vector2 currentDesiredPostion, bool linearWeight, int anglesRangeToIgnore) { Vector2 des = requester.Destination; Vector2?avoidanceTemp; AIAgent avoidanceObj; if (perpendicular) { avoidanceTemp = SteeringBehaviour.ObstacleAvoidance(requester, requesterPosition, (currentDesiredPostion - requesterPosition).normalized, out avoidanceObj); } else { avoidanceTemp = SteeringBehaviour.ObstacleAvoidance(requester, requesterPosition, out avoidanceObj); } if (UseObstacleAvoidance(requester, avoidanceTemp, avoidanceObj, des, anglesRangeToIgnore)) { float avoidanceWeight = GetAvoidanceWeight(requester, requesterPosition, avoidanceObj.transform.position, linearWeight); currentDesiredPostion = Vector2.Lerp(currentDesiredPostion, avoidanceTemp.Value, avoidanceWeight * requester.data.aviodanceWieghtMultiplier); } return(currentDesiredPostion); }