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; } }
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; } }