// Modified MONASH code, rearranged for adjacency lists
    void generateGraphTubes(Dictionary <Node, VisualNode> visual_nodes, float radius)
    {
        foreach (VisualNode n in visual_nodes.Values)
        {
            Node node = n.getNode();
            for (int k = 0; k < node.getAdjacencies().Count; ++k)
            {
                Node     adjNode     = (Node)node.getAdjacencies()[k];
                EdgeLink currentEdge = new EdgeLink(node, adjNode);
                if (HashEdges.Contains(currentEdge) == false)
                {
                    HashEdges.Add(currentEdge);

                    //print("created");
                    GameObject cyl = generateOrientatedCylinder(node.position, adjNode.position, radius);
                    //DynamicEdge d = cyl.AddComponent<DynamicEdge>();
                    //d.setTransforms(n.transform,n.transform);
                    cyl.name = node.NodeID1 + " to " + adjNode.NodeID1;
                }
                else
                {
                    doubleUps++;
                }
            }
        }
    }
 void generateRigEdges(Dictionary <Node, VisualNode> visual_nodes, float radius)
 {
     foreach (GameObject g in colombs_nodes)
     {
         VisualNode n    = g.GetComponent <VisualNode>();
         Node       node = n.getNode();
         for (int k = 0; k < node.getAdjacencies().Count; ++k)
         {
             Node       adjNode        = (Node)node.getAdjacencies()[k];
             EdgeLink   currentEdge    = new EdgeLink(node, adjNode);
             VisualNode visualnode_adj = nodes_in_scene[adjNode];
             n.addAdjacency(visualnode_adj);
             bool t = true;
             if (HashEdges.Contains(currentEdge) == false)
             {
                 HashEdges.Add(currentEdge);
                 //print("created");
                 GameObject edg = Instantiate(DynamicEdge, Vector3.zero, DynamicEdge.transform.rotation);
                 num_of_edges++;
                 DynamicEdge de = edg.GetComponent <DynamicEdge>();
                 edg.transform.parent = transform;
                 if (de.edgeType != global::DynamicEdge.EdgeType.LineRenderer)
                 {
                     edg.transform.GetChild(1).GetComponent <SkinnedMeshRenderer>().material.color = edgeColor;
                 }
                 de.setAnchor1(n.transform);
                 de.setAnchor2(adjNode.Transform);
                 de.setMidAnchor(adjNode.Transform, n.transform);
                 de.setHashCode(currentEdge.GetHashCode());
                 de.setAdjCount(node.getAdjacencies().Count, adjNode.getAdjacencies().Count);
                 //DynamicEdge d = cyl.AddComponent<DynamicEdge>();
                 //d.setTransforms(n.transform,n.transform);
                 edg.name = node.NodeID1 + " to " + adjNode.NodeID1;
             }
             else
             {
                 doubleUps++;
             }
         }
     }
 }