Пример #1
0
    public void EndNewLink(DataflowInput input)
    {
        newLinkInput          = input;
        uiLinkTmp.inputAnchor = input.transform.GetChild(1).GetComponent <RectTransform>();

        //Check if the same or if type matches
        if (newLinkOutput.transform.parent.parent == newLinkInput.transform.parent.parent || (newLinkOutput.type != newLinkInput.type && newLinkInput.type != Dataflow.IOType.Activator))
        {
            newLinkOutput = null;
            newLinkInput  = null;
            Destroy(uiLinkTmp.gameObject);
            return;
        }

        //Remove already existing link
        if (newLinkInput.link != null)
        {
            if (!newLinkInput.noDefaultValue)
            {
                newLinkInput.transform.GetChild(0).gameObject.SetActive(true);
            }
            dataflow.DeleteLink(newLinkInput);
            Destroy(newLinkInput.uiLink.gameObject);
        }

        dataflow.AddLink(newLinkOutput, newLinkInput);
        newLinkInput.uiLink = uiLinkTmp;
        newLinkInput.transform.GetChild(0).gameObject.SetActive(false);

        newLinkOutput = null;
        newLinkInput  = null;
    }
Пример #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);
    }