public void HandleRemoveNode(NoFlo_Basic.Component component)
 {
     if (component.Visualisation != null)
     {
         Destroy(component.Visualisation.gameObject);
     }
 }
        private List <profile> BackwardConnectedNodes(NoFlo_Basic.Component n)
        {
            List <profile> list = new List <profile>();

            foreach (InPort p in n.Input.GetPorts())
            {
                foreach (Edge e in p.Edges())
                {
                    list.Add(profilesByNode[e.Source.Component]);
                }
            }
            return(list);
        }
        private List <profile> ForwardConnectedNodes(NoFlo_Basic.Component n)
        {
            List <profile> list = new List <profile>();

            foreach (OutPort p in n.Output.GetPorts())
            {
                foreach (Edge e in p.Edges())
                {
                    list.Add(profilesByNode[e.Target.Component]);
                }
            }
            return(list);
        }
        public void HandleAddNode(NoFlo_Basic.Component component)
        {
            GameObject newNode = Instantiate <GameObject>(Templates.NodeTemplate);

            newNode.transform.SetParent(GraphRenderingPanel);

            NodeVisualisation v = newNode.GetComponent <NodeVisualisation>();

            v.NodeName = component.ComponentName;
            v.Graph    = CurrentGraph;
            v.gameObject.GetComponentInChildren <ComponentNameVisualisation>().Component = component;
            component.Visualisation = v;
            v.SetupWithComponent(component);

            v.transform.localPosition = v.Component.MetadataPosition;
        }
        public void SetupWithComponent(NoFlo_Basic.Component component)
        {
            this.Component = component;

            SetName(component.ComponentName);
            ComponentQualifiedName.text = ComponentCatalog.RequestQualifedNameByComponentType()[component.GetType()];

            InPortVisualisations = new List <PortVisualisation>();
            foreach (NoFlo_Basic.InPort p in component.Input.GetPorts())
            {
                if (p.Hidden)
                {
                    continue;
                }

                GameObject        newPort = Instantiate <GameObject>(Graph.GraphEditor.Templates.PortTemplate);
                PortVisualisation v       = newPort.GetComponent <PortVisualisation>();
                InPortVisualisations.Add(v);
                newPort.transform.SetParent(InPortContainer);
                p.Visualisation = v;
                v.Port          = p;
                v.Graph         = Component.Graph;
            }

            OutPortVisualisations = new List <PortVisualisation>();
            foreach (NoFlo_Basic.OutPort p in component.Output.GetPorts())
            {
                if (p.Hidden)
                {
                    continue;
                }

                GameObject        newPort = Instantiate <GameObject>(Graph.GraphEditor.Templates.PortTemplate);
                PortVisualisation v       = newPort.GetComponent <PortVisualisation>();
                OutPortVisualisations.Add(v);
                newPort.transform.SetParent(OutPortContainer);
                p.Visualisation = v;
                v.Port          = p;
                v.Graph         = Component.Graph;
            }
        }
        public void SetNode(NoFlo_Basic.Component Component)
        {
            NormalMode();
            ComponentName.text = Component.ComponentName;

            foreach (Transform t in InPortsContainer)
            {
                Destroy(t.gameObject);
            }
            foreach (Transform t in OutPortsContainer)
            {
                Destroy(t.gameObject);
            }

            foreach (InPort p in Component.Input.GetPorts())
            {
                if (p.Hidden)
                {
                    continue;
                }

                PortInfo info = GameObject.Instantiate <GameObject>(InPortInfoTemplate).GetComponent <PortInfo>();
                info.transform.SetParent(InPortsContainer);
                info.Setup(p, this);
            }

            foreach (OutPort p in Component.Output.GetPorts())
            {
                if (p.Hidden)
                {
                    continue;
                }

                PortInfo info = GameObject.Instantiate <GameObject>(OutPortInfoTemplate).GetComponent <PortInfo>();
                info.transform.SetParent(OutPortsContainer);
                info.Setup(p, this);
            }

            NormalMode();
            LayoutRebuilder.ForceRebuildLayoutImmediate(transform as RectTransform);
        }
        void Start()
        {
            Text   = GetComponentInChildren <Text>();
            Button = GetComponent <Button>();
            Button.onClick.AddListener(Action);

            Dictionary <string, Type> ComponentsByQualifiedName = ComponentCatalog.RequestComponentsByQualifiedName();

            foreach (string QualifiedName in ComponentsByQualifiedName.Keys)
            {
                ComponentSelection cs = GameObject.Instantiate <GameObject>(ComponentSelectionTemplate).GetComponent <ComponentSelection>();
                cs.transform.SetParent(SideMenuContents);
                cs.Setup(QualifiedName, ComponentsByQualifiedName[QualifiedName], () => {
                    SideMenu.SetActive(false);
                    NoFlo_Basic.Component c = Graph.AddNode(cs.ComponentType);
                    c.SetName(cs.ComponentType.Name);
                    c.Visualisation.transform.position = Camera.main.ViewportToScreenPoint(0.5f * Vector2.one);
                    Text.text = "Add";
                });
            }

            SideMenu.SetActive(false);
        }