Пример #1
0
    void Start()
    {
        instance = this;

        //Add Node Menu
        foreach (var nt in System.Reflection.Assembly.GetExecutingAssembly().GetTypes().Where(t => t.BaseType == typeof(DataflowNode)))
        {
            string[] path = nt.ToString().Split('.');
            if (!categories.Contains(path[path.Length - 2]))
            {
                categories.Add(path[path.Length - 2]);
            }
        }
        foreach (var c in categories)
        {
            GameObject go;
            go      = Instantiate(nodeCategoryPrefab, addNodeList);
            go.name = c;
            go.transform.GetChild(1).GetComponent <Text>().text = c;
            go.GetComponent <Toggle>().onValueChanged.AddListener(delegate { SelectCategory(c, go.GetComponent <Toggle>()); });
            go.GetComponent <Toggle>().group = addNodeList.GetComponent <ToggleGroup>();
        }
        foreach (var nt in System.Reflection.Assembly.GetExecutingAssembly().GetTypes().Where(t => t.BaseType == typeof(DataflowNode)))
        {
            GameObject go;
            string[]   path = nt.ToString().Split('.');
            go      = Instantiate(addNodePrefab, addNodeList);
            go.name = path[path.Length - 2] + "." + path[path.Length - 1];
            go.transform.GetChild(0).GetComponent <Text>().text = path[path.Length - 1];
            go.GetComponent <Button>().onClick.AddListener(delegate { DrawNode(dataflow.AddNode(go.name)); });
            go.SetActive(false);
        }

        ReloadEditor();
    }
Пример #2
0
    public Dataflow ToDataflow()
    {
        Dataflow d = new Dataflow(name);

        foreach (var n in nodes)
        {
            DataflowNode node = d.AddNode(n.name, n.posx, n.posy);
            node.activator.valueFloat   = n.activator.valueFloat;
            node.activator.valueBoolean = n.activator.valueBoolean;
            node.activator.ready        = n.activator.ready;
            for (int i = 0; i < node.inputs.Count; i++)
            {
                node.inputs[i].valueFloat   = n.inputs[i].valueFloat;
                node.inputs[i].valueBoolean = n.inputs[i].valueBoolean;
                node.inputs[i].ready        = n.inputs[i].ready;
            }
            foreach (var c in n.configs)
            {
                node.configs[c.name].value = c.value;
            }
        }

        foreach (var l in links)
        {
            if (l.outputId < d.nodes[l.outputNodeId].outputs.Count && l.inputId < d.nodes[l.inputNodeId].inputs.Count)                  //Check for different save versions (inputs/outputs changed)
            {
                d.AddLink(d.nodes[l.outputNodeId].outputs[l.outputId], l.inputId < 0 ? d.nodes[l.inputNodeId].activator : d.nodes[l.inputNodeId].inputs[l.inputId]);
            }
        }

        return(d);
    }