示例#1
0
    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();
    }
示例#2
0
    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);
    }
示例#3
0
    //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);
    }