protected void UpdateEdges() { sceneComponents.AcceptEdge(edgeComponent => { edgeComponent.sourceRb.mass++; edgeComponent.targetRb.mass++; AbstractGraphEdge edge = edgeComponent.GetGraphEdge(); AbstractGraphNode startNode = edge.GetStartGraphNode(); AbstractGraphNode endNode = edge.GetEndGraphNode(); sceneComponents.GetNodeComponent(startNode.GetId()).ConnectedRb.Add(sceneComponents.GetNodeComponent(endNode.GetId()).Rb); sceneComponents.GetNodeComponent(endNode.GetId()).ConnectedRb.Add(sceneComponents.GetNodeComponent(startNode.GetId()).Rb); edgeComponent.UpdateGeometry( sceneComponents.GetNodeComponent(startNode.GetId()).GetVisualComponent().transform.position, sceneComponents.GetNodeComponent(endNode.GetId()).GetVisualComponent().transform.position); }); float MostEdgesNodeCount = 0; foreach (var n in sceneComponents.nodeComponents) { n.Rb.mass--; if (n.Rb.mass > MostEdgesNodeCount) { MostEdgesNodeCount = n.Rb.mass; } } }
public void GetNeoData(List <NeoUnity.Neo4j.GraphData> data) { ClearGraph(); foreach (NeoUnity.Neo4j.GraphData graphdata in data) { //loop though all neo4j nodes and make our nodes from it foreach (var node in graphdata.graph.nodes) { if (nodes.ContainsKey(int.Parse(node.id))) { //Debug.LogError("Duplicate Node " + int.Parse(node.id) + ", Droping Node"); } else { int nid = int.Parse(node.id); string ntype = "", ntitle = "", ncontent = ""; string Role1 = this.GetComponent <ServerConnector>().Entity1_Str; string Role2 = this.GetComponent <ServerConnector>().Entity2_Str; /* check label . judge data entities (movie or perosn)*/ if (node.labels.Contains(Role1)) { ntype = "M"; ntitle = Role1 + "\n" + node.properties.title + "(" + node.properties.released.ToString() + ")"; ncontent = node.properties.tagline; } else { ntype = "P"; ntitle = Role2 + "\n" + node.properties.name + "(" + node.properties.born.ToString() + ")"; } AbstractGraphNode newNode = graph.NewNode(nid, ntype, ntitle, ncontent); nodes.Add(nid, newNode); } } foreach (var rel in graphdata.graph.relationships) { if (relationship.ContainsValue(rel.startNode + "" + rel.endNode)) { //Debug.LogError("Duplicate Edge " + int.Parse(rel.id) + ", Droping Edge"); } else { //Debug.Log(rel.startNode + "-" + rel.endNode); AbstractGraphEdge newEdge = graph.NewEdge(nodes[int.Parse(rel.startNode)], nodes[int.Parse(rel.endNode)], rel.type); rels.Add(newEdge); relationship.Add(rel.id, rel.startNode + "" + rel.endNode); } } } maxDisplace = (float)(Mathf.Sqrt(area) / 3F); k = (float)Mathf.Sqrt(area / (1 + nodes.Count)); graphScene.DrawGraph(); UpdateStatus(); }
protected void UpdateEdges() { sceneComponents.AcceptEdge(edgeComponent => { AbstractGraphEdge edge = edgeComponent.GetGraphEdge(); AbstractGraphNode startNode = edge.GetStartGraphNode(); AbstractGraphNode endNode = edge.GetEndGraphNode(); edgeComponent.UpdateGeometry( sceneComponents.GetNodeComponent(startNode.GetId()).GetVisualComponent().transform.position, sceneComponents.GetNodeComponent(endNode.GetId()).GetVisualComponent().transform.position); }); }