예제 #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 void OpenDataflow(Dataflow d)
    {
        //Nodes
        List <DataflowNode> nodes = new List <DataflowNode>();

        for (int n = 0; n < d.nodes.Count; n++)
        {
            DrawNode(d.nodes[n]);
        }

        //Links
        for (int n = 0; n < d.nodes.Count; n++)
        {
            DataflowNode node = d.nodes[n];
            for (int i = 0; i < node.outputs.Count; i++)
            {
                for (int l = 0; l < node.outputs[i].links.Count; l++)
                {
                    DataflowOutput output     = node.outputs[i];
                    DataflowInput  input      = node.outputs[i].links[l];
                    UINodeLink     uiNodeLink = Instantiate(Resources.Load <UINodeLink>("Link"), panel);
                    uiNodeLink.outputAnchor = output.transform.GetChild(1).GetComponent <RectTransform>();
                    uiNodeLink.inputAnchor  = input.transform.GetChild(1).GetComponent <RectTransform>();
                    input.uiLink            = uiNodeLink;
                }
            }
        }

        dataflow = d;

        RefreshDataflowDropdown();
        RefreshDroneDropdown();
    }
예제 #3
0
    public void DeleteLink(DataflowInput input)
    {
        input.link = null;
        switch (input.type)
        {
        case IOType.Number: input.valueFloat = float.Parse(input.unlinkedValue); break;

        case IOType.Boolean: input.valueBoolean = bool.Parse(input.unlinkedValue); break;
        }
    }
예제 #4
0
 public void DeleteLinkFromInput(DataflowInput input)
 {
     if (input.link != null)
     {
         if (!input.noDefaultValue)
         {
             input.transform.GetChild(0).gameObject.SetActive(true);
         }
         dataflow.DeleteLink(input);
         Destroy(input.uiLink.gameObject);
     }
 }
예제 #5
0
    protected DataflowInput AddInput(string name, Dataflow.IOType type)
    {
        DataflowInput di = new DataflowInput()
        {
            name = name, type = type, node = this
        };

        if (type == Dataflow.IOType.TargetsList || type == Dataflow.IOType.Target || type == Dataflow.IOType.CoordinatesList)
        {
            di.noDefaultValue = true;
        }
        inputs.Add(di);
        return(di);
    }
예제 #6
0
    public void DrawInput(DataflowInput input, RectTransform nodeRT, Transform parent)
    {
        RectTransform inputRT = Instantiate(inputPrefab, parent).GetComponent <RectTransform>();

        inputRT.GetComponent <BoundTooltipTrigger>().text = input.name;
        //Input Field for default value
        inputRT.GetChild(0).GetComponent <InputField>().text = input.ValueToString();
        InputField ipf = inputRT.GetChild(0).GetComponent <InputField>();

        switch (input.type)
        {
        case Dataflow.IOType.Number: ipf.contentType = InputField.ContentType.DecimalNumber; break;

        case Dataflow.IOType.Boolean: ipf.contentType = InputField.ContentType.Standard; break;
        }
        if (input.link != null || input.noDefaultValue || input.type == Dataflow.IOType.Activator)
        {
            inputRT.GetChild(0).gameObject.SetActive(false);
        }
        //Icon type
        Image icon = inputRT.GetChild(1).GetComponent <Image>();

        switch (input.type)
        {
        case Dataflow.IOType.Number: icon.color = Color.green; break;

        case Dataflow.IOType.Boolean: icon.color = Color.yellow; break;

        case Dataflow.IOType.Activator: icon.color = Color.red; break;

        case Dataflow.IOType.TargetsList: icon.color = Color.gray; break;

        case Dataflow.IOType.CoordinatesList: icon.color = Color.white; break;

        case Dataflow.IOType.Target: icon.color = Color.blue; break;
        }
        inputRT.GetComponent <UINodeInput>().input = input;
        input.transform = inputRT;
    }
예제 #7
0
 public void AddLink(DataflowOutput output, DataflowInput input)
 {
     output.links.Add(input);
     input.link          = output;
     input.unlinkedValue = input.ValueToString();
 }