예제 #1
0
 public void StartNewLink(DataflowOutput output)
 {
     newLinkOutput          = output;
     uiLinkTmp              = Instantiate(linkPrefab, instance.panel).GetComponent <UINodeLink>();
     uiLinkTmp.outputAnchor = newLinkOutput.transform.GetChild(1).GetComponent <RectTransform>();
     uiLinkTmp.inputAnchor  = instance.cursor;
 }
예제 #2
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;
    }
예제 #3
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();
    }
예제 #4
0
 public void OnPointerClick(PointerEventData eventData)
 {
     //Cancel linking nodes
     if (newLinkOutput != null && newLinkInput == null)
     {
         newLinkOutput = null;
         Destroy(uiLinkTmp.gameObject);
     }
 }
예제 #5
0
 public void AddLink(DataflowOutput output, DataflowInput input)
 {
     output.links.Add(input);
     input.link          = output;
     input.unlinkedValue = input.ValueToString();
 }