private void RemovePort(RoomNode _roomNode, Port _portToRemove, string _portDirection) { List <Edge> edgesToList; //identificamos los puertos que provengan de este room node & nos aseguramos de que este port proviene de este room node if (_portDirection == "out") { _roomNode.outputContainer.Remove(_portToRemove); edgesToList = edges.ToList().Where(x => x.output.portName == _portToRemove.portName && x.output.node == _portToRemove.node).ToList(); if (edgesToList.Any()) { Edge targetEdge = edgesToList.First(); targetEdge.input.Disconnect(targetEdge); RemoveElement(edgesToList.First()); } } else { _roomNode.inputContainer.Remove(_portToRemove); edgesToList = edges.ToList().Where(x => x.input.portName == _portToRemove.portName && x.input.node == _portToRemove.node).ToList(); if (edgesToList.Any()) { Edge targetEdge = edgesToList.First(); targetEdge.output.Disconnect(targetEdge); RemoveElement(edgesToList.First()); } } _roomNode.RefreshPorts(); _roomNode.RefreshExpandedState(); }
public Port GenerateInputPortsOnNode(RoomNode _roomNode, string _overridedName = "") { Port l_generatedPort = GeneratePort(_roomNode, Direction.Input, Port.Capacity.Single); string portName; portName = string.IsNullOrEmpty(_overridedName) ? "Input" : _overridedName;//si no ponemos nombre, que se muestre el por defecto //generamos el campo de texto donde pondremos el nombre de la conexion TextField portText = new TextField(); portText.value = portName; //asignamos el valor del puerto a la nueva string portText.RegisterValueChangedCallback(evt => l_generatedPort.portName = evt.newValue); //capturamos el evento de cambiar el nombre en el textField y le asignamos ese nombre al puertoGenerado l_generatedPort.contentContainer.Add(portText); l_generatedPort.portName = portName; //boton para borrar el puerto Button deleteInputPortButton = new Button(); deleteInputPortButton.text = "-"; deleteInputPortButton.clickable.clicked += () => RemovePort(_roomNode, l_generatedPort, "input"); l_generatedPort.contentContainer.Add(deleteInputPortButton); _roomNode.inputContainer.Add(l_generatedPort); _roomNode.RefreshPorts(); _roomNode.RefreshExpandedState(); return(l_generatedPort); }
//agregar mas puertos de conexion out al nodo public Port GenerateOutputPortsOnNode(RoomNode _roomNode, string _overridedName = "") { Port l_generatedPort = GeneratePort(_roomNode, Direction.Output, Port.Capacity.Single); //asignar nombre al puerto de salida //int outputPortCount = _roomNode.outputContainer.Query(name: "connector").ToList().Count; string l_portName; l_portName = string.IsNullOrEmpty(_overridedName) ? "Output" : _overridedName;//si no ponemos nombre, que se muestre 'output' por defecto //borrar las etiquetas(nombres) anteriores //Label oldPortName = generatedPort.contentContainer.Q<Label>("type");//cogemos los elementos <Label> de la cola del nodo //generatedPort.contentContainer.Remove(oldPortName); //generamos el campo de texto donde pondremos el nombre de la conexion TextField l_portText = new TextField(); l_portText.value = l_portName; //asignamos el valor del puerto a la nueva string l_portText.RegisterValueChangedCallback(evt => l_generatedPort.portName = evt.newValue); //capturamos el evento de cambiar el nombre en el textField y le asignamos ese nombre al puertoGenerado l_generatedPort.contentContainer.Add(l_portText); l_generatedPort.portName = l_portName; //boton para borrar el puerto Button l_deleteOutPortButton = new Button(); l_deleteOutPortButton.text = "-"; l_deleteOutPortButton.clickable.clicked += () => RemovePort(_roomNode, l_generatedPort, "out"); l_generatedPort.contentContainer.Add(l_deleteOutPortButton); _roomNode.outputContainer.Add(l_generatedPort); _roomNode.RefreshPorts(); //actualizamos la lista de puertos _roomNode.RefreshExpandedState(); //hacer visibles los nuevos elementos del container return(l_generatedPort); }