public void HandleQueue(DataQueue queue) { BaseEntity root; BaseEntity refering; GameObject go; if (queue.GetFromQueue(out root, out refering)) { Node rootNode = root != null?nodes.ContainsKey(root.Id) ? nodes[root.Id] : null : null; Node referingNode = refering != null?nodes.ContainsKey(refering.Id) ? nodes[refering.Id] : null : null; if (root != null && rootNode == null) { go = CreateNode(root.Id); NodeInformation nodeInfo = go.GetComponent <NodeInformation>(); nodes[nodeInfo.node.ID] = nodeInfo.node; rootNode = nodeInfo.node; nodeInfo.entity = root; } if (refering != null && referingNode == null) { go = CreateNode(refering.Id); NodeInformation nodeInfo = go.GetComponent <NodeInformation>(); nodes[nodeInfo.node.ID] = nodeInfo.node; referingNode = nodeInfo.node; nodeInfo.entity = refering; } if (rootNode != null && referingNode != null) { go = CreateEdge(rootNode, referingNode); EdgeInformation edgeInfo = go.GetComponent <EdgeInformation>(); } } }