/// <summary> /// Adds a edge where the node is connected to /// </summary> /// <param name="e"></param> public void AddEdge(Edge e) { if (ConnectedEdges.Contains(e)) { return; } ConnectedEdges.Add(e); }
public static List <List <Vector3> > ConnectEdges(List <Edge> edges) { var result = new List <List <Vector3> >(); var connected = new ConnectedEdges(edges, 0); var shouldConnectThings = true; while (shouldConnectThings) { var couldConnectAnything = true; var randomUnconnectedIndex = -1; while (couldConnectAnything) { couldConnectAnything = false; randomUnconnectedIndex = -1; for (int edgeIndex = 1; edgeIndex < edges.Count; ++edgeIndex) { if (!connected.Contains(edgeIndex)) { if (connected.TryConnect(edgeIndex)) { couldConnectAnything = true; } else { randomUnconnectedIndex = edgeIndex; } } } } result.Add(connected.GetVerts()); shouldConnectThings = false; if (randomUnconnectedIndex != -1) { connected.Start(randomUnconnectedIndex); shouldConnectThings = true; } } return(result); }