Beispiel #1
0
    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();
    }
Beispiel #3
0
 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);
     });
 }