示例#1
0
 /// <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);
 }
示例#2
0
 public void AddUniqueConnectedEdge(Edge e)
 {
     foreach (Edge edge in ConnectedEdges)
     {
         Edge inverseEdge = e.getInverse();
         if (edge.Vertex1.Location.Equals(e.Vertex1.Location) && edge.Vertex2.Location.Equals(e.Vertex2.Location))
         {
             return;
         }
         else if (edge.Vertex1.Location.Equals(inverseEdge.Vertex1.Location) && edge.Vertex2.Location.Equals(inverseEdge.Vertex2.Location))
         {
             return;
         }
     }
     ConnectedEdges.Add(e);
 }
示例#3
0
    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);
    }