Ejemplo n.º 1
0
        static void CreateNodes(Store store, IPortModel portModel, Vector2 position,
                                IEnumerable <IEdgeModel> edgesToDelete, IStackModel stackModel, int index, IGroupNodeModel groupModel)
        {
            switch (portModel.PortType)
            {
            case PortType.Data:
            case PortType.Instance:
                switch (portModel.Direction)
                {
                case Direction.Output when stackModel != null:
                    if (portModel.DataType != TypeHandle.Unknown)
                    {
                        SearcherService.ShowOutputToStackNodes(
                            store.GetState(), stackModel, portModel, position, item =>
                        {
                            store.Dispatch(new CreateStackedNodeFromOutputPortAction(
                                               portModel, stackModel, index, item, edgesToDelete, groupModel));
                        });
                    }
                    break;

                case Direction.Output:
                    SearcherService.ShowOutputToGraphNodes(store.GetState(), portModel, position, item =>
                    {
                        store.Dispatch(new CreateNodeFromOutputPortAction(
                                           portModel, position, item, edgesToDelete, groupModel));
                    });
                    break;

                case Direction.Input:
                    SearcherService.ShowInputToGraphNodes(store.GetState(), portModel, position, item =>
                    {
                        store.Dispatch(new CreateNodeFromInputPortAction(
                                           portModel, position, item, edgesToDelete, groupModel));
                    });
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
                break;

            case PortType.Execution:
                if (portModel.NodeModel is LoopStackModel loopStack && portModel.Direction == Direction.Input)
                {
                    if (stackModel != null)
                    {
                        store.Dispatch(new CreateInsertLoopNodeAction(
                                           portModel, stackModel, index, loopStack, edgesToDelete, groupModel));
                    }
                }
                else
                {
                    store.Dispatch(new CreateNodeFromExecutionPortAction(
                                       portModel, position, edgesToDelete, groupModel));
                }
                break;
        public override void CreateNodesFromPort(Store store, IPortModel portModel, Vector2 localPosition, Vector2 worldPosition,
                                                 IEnumerable <IGTFEdgeModel> edgesToDelete, IStackModel stackModel, int index)
        {
            switch (portModel.Direction)
            {
            case Direction.Output:
                SearcherService.ShowOutputToGraphNodes(store.GetState(), portModel, worldPosition, item =>
                                                       store.Dispatch(new CreateNodeFromOutputPortAction(portModel, localPosition, item, edgesToDelete)));
                break;

            case Direction.Input:
                SearcherService.ShowInputToGraphNodes(store.GetState(), portModel, worldPosition, item =>
                                                      store.Dispatch(new CreateNodeFromInputPortAction(portModel, localPosition, item, edgesToDelete)));
                break;
            }
        }
Ejemplo n.º 3
0
        public virtual void CreateNodesFromPort(Store store, IPortModel portModel, Vector2 localPosition, Vector2 worldPosition,
                                                IEnumerable <IGTFEdgeModel> edgesToDelete, IStackModel stackModel, int index)
        {
            switch (portModel.PortType)
            {
            case PortType.Data:
            case PortType.Instance:
                switch (portModel.Direction)
                {
                case Direction.Output when stackModel != null:
                    if (portModel.DataTypeHandle != TypeHandle.Unknown)
                    {
                        SearcherService.ShowOutputToStackNodes(
                            store.GetState(), stackModel, portModel, worldPosition, item =>
                        {
                            store.Dispatch(new CreateStackedNodeFromOutputPortAction(
                                               portModel, stackModel, index, item, edgesToDelete));
                        });
                    }
                    break;

                case Direction.Output:
                    SearcherService.ShowOutputToGraphNodes(store.GetState(), portModel, worldPosition, item =>
                                                           store.Dispatch(new CreateNodeFromOutputPortAction(portModel, localPosition, item, edgesToDelete)));
                    break;

                case Direction.Input:
                    SearcherService.ShowInputToGraphNodes(store.GetState(), portModel, worldPosition, item =>
                                                          store.Dispatch(new CreateNodeFromInputPortAction(portModel, localPosition, item, edgesToDelete)));
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
                break;

            case PortType.Execution:
                store.Dispatch(new CreateNodeFromExecutionPortAction(portModel, localPosition, edgesToDelete));
                break;
            }
        }