Пример #1
0
    // Start is called before the first frame update
    void Start()
    {
        root_CovidNode           = JsonMapper.ToObject <CovidNode>(data_covidJson.text);
        node_Position_Dictionary = JsonMapper.ToObject <Dictionary <string, Vector3> >(data_nodePos.text);
        Debug.Log("Total Nodes : " + node_Position_Dictionary.Count);

        obj_metaInfo = JsonMapper.ToObject <NodeMetaInfo[]>(text_metaInfo.text);
        for (int i = 0; i < obj_metaInfo.Length; i++)
        {
            if (!Node_MetaInfo_Dictionary.ContainsKey(obj_metaInfo[i].Strain))
            {
                Node_MetaInfo_Dictionary.Add(obj_metaInfo[i].Strain, obj_metaInfo[i]);
            }

            if (CountryAndCounts.ContainsKey(obj_metaInfo[i].Country))
            {
                CountryAndCounts[obj_metaInfo[i].Country].NumberOfAffected += 1;
            }
            else
            {
                Color32 color = new Color32(
                    (byte)Random.Range(0, 255f),
                    (byte)Random.Range(0, 255f),
                    (byte)Random.Range(0, 255f),
                    (byte)255f
                    );

                NetworkCountries countryInfo = new NetworkCountries(obj_metaInfo[i].Country, color, 1);
                CountryAndCounts.Add(obj_metaInfo[i].Country, countryInfo);
            }
        }

        Debug.Log("Total countries : " + CountryAndCounts.Count);

        foreach (var entry in CountryAndCounts)
        {
            Debug.Log(entry.Key + " " + entry.Value.NumberOfAffected);
        }

        //Generating RootNode
        Vector3 pos = Vector3.zero;

        if (node_Position_Dictionary.ContainsKey(root_CovidNode.name))
        {
            pos         = node_Position_Dictionary[root_CovidNode.name];
            Go_RootNode = Instantiate(prefab_Node);    //, Vector3.zero, Quaternion.identity) as GameObject;
            Go_RootNode.transform.SetParent(transform);
            Go_RootNode.transform.localPosition = pos; // Vector3.zero;
            Go_RootNode.GetComponent <NodeInstance>().Init(0, root_CovidNode.name, null);
            StartCoroutine(LoadNetwork());
        }
        else
        {
            Debug.LogError("RootNode name not found in dictionary !");
        }
    }
Пример #2
0
    // Start is called before the first frame update
    void Start()
    {
        covidNode = JsonUtility.FromJson <CovidNode>(covidJson.text);

        //var tree = new Parser("((B:0.2,(C:0.3,D:0.4)E:0.5)A:0.1)F;").ParseTree();
        //var tree = new Parser(treeData.text).ParseTree();
        //var tree = new Parser("((A:1, B:2):3, C:4)").ParseTree();
        //var leaf = tree as Leaf;
        //Debug.Log("Name : " + tree.Length + ", tree.SubBranches.Count:  " + tree.SubBranches.Count);

        //PrintNode(tree.SubBranches);
    }
Пример #3
0
    void GenerateDescedants(int level, Transform startNode, CovidNode node)
    {
        startNode.name = node.name;
        if (level > MAX_LEVEL)
        {
            return;
        }

        if (node.children == null)
        {
            return;
        }

        for (int i = 0; i < node.children.Count; i++)
        {
            Vector3 pos = Vector3.zero;
            if (node_Position_Dictionary.ContainsKey(node.children[i].name))
            {
                float factor = 100;

                pos = node_Position_Dictionary[node.children[i].name] / factor;
                GameObject descedantNode = Instantiate(prefab_Node);// pos, Quaternion.identity) as GameObject;
                descedantNode.transform.SetParent(startNode.transform);
                descedantNode.transform.localPosition = pos;
                //descedantNode.transform.localScale /= 10;
                GameObject edge = Instantiate(prefab_Edge);//, startNode.position, Quaternion.identity);
                //
                edge.transform.SetParent(startNode.transform);
                edge.transform.localPosition = Vector3.zero;
                edge.GetComponent <EdgeComponent>().Init(startNode, descedantNode.transform);
                LineRenderer lr = edge.GetComponent <LineRenderer>();
                lr.SetPosition(0, Vector3.zero);
                lr.SetPosition(1, descedantNode.transform.localPosition);// / factor);
                lr.startWidth = lr.endWidth = 0.008f;
                descedantNode.GetComponent <NodeInstance>().Init(level, node.children[i].name, edge);

                //DrawEdge
                //graph.NewEdge(startNode, descedantNode);

                if (node.children[i] != null)
                {
                    GenerateDescedants(level + 1, descedantNode.transform, node.children[i]);
                }
            }
            else
            {
                Debug.LogError("Node name : " + node.children[i].name + ",  not found in dictionary !");
            }
        }
    }