// 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++; } } } }