private void createLink(int agent, int area, Edge edge) { var pos = (edge.Start + edge.End) * 0.5f; var normal = Vector3.Cross(edge.End - edge.Start, Vector3.up); Vector3 startPos = pos; Vector3 endPos = startPos + normal.normalized * maxLinkWidth; float wid = Vector3.Distance(edge.End, edge.Start); lock (ExecutionQueue) { var param = new paramData(agent, area, startPos, endPos, pos, wid); ExecutionQueue.Enqueue(param); } }
/// <summary> /// find higher or lower target position, can be optimized to one ray,but I've no time.. /// </summary> /// <param name="data"></param> public void Try2Hits(paramData data) { int agent = data.Agent; int area = data.Area; Vector3 startPos = data.StartPos; Vector3 endPos = data.EndPos - Vector3.up * maxLinkHeightD * 1.1f; Vector3 pos = data.Pos; float wid = data.Wid; if (!tryHitNav(agent, area, startPos, endPos, pos, wid)) { //try upper endPos = data.EndPos + Vector3.up * maxLinkHeightU * 1.1f; tryHitNav(agent, area, startPos, endPos, pos, wid); } }