public static FixIntersectingEdges ( List |
||
nodes | List |
|
edges | List |
|
return | bool |
void StartBuild(Action <List <Node>, List <Edge> > onFinished) { // Create first edge from root to first target float toClosest; Target initTarget = GetClosestNonVisitedTarget(m_rootNode, out toClosest, false); m_visitedTargets.Add(initTarget); m_currentNode = new Node(initTarget.position); nodes.Add(m_currentNode); m_nodeStack.Push(m_currentNode); m_currentNode.adjacents.Add(m_rootNode.ID); m_rootNode.adjacents.Add(m_currentNode.ID); edges.Add(new Edge(m_rootNode.ID, m_currentNode.ID, m_edgeWidth)); // Get next target and advance to it Target currentTarget = GetClosestNonVisitedTarget(m_currentNode, out toClosest, false); AdvanceUntilClosest(ref m_currentNode, currentTarget, toClosest); // Build other edges BuildEdgesRecursive(); EdgeGraphUtility.FixIntersectingEdges(ref nodes, ref edges); if (onFinished != null) { onFinished(nodes, edges); } }