private void MainScriptingPanel_MouseClick(object sender, MouseEventArgs e) //Show node search bar { if (e.Button == MouseButtons.Right) { if (createNodeSearchBar != null) { createNodeSearchBar.Dispose(); } createNodeSearchBar = new CreateNodeSearchBar(e.Location, this); MainScriptingPanel.Controls.Add(createNodeSearchBar); createNodeSearchBar.partPressed += SpawnNode; firstSelectedNode = null; firstSelectedPin = null; } else { firstSelectedNode = null; firstSelectedPin = null; if (createNodeSearchBar != null) { createNodeSearchBar.Dispose(); } createNodeSearchBar = null; } MainScriptingPanel.Refresh(); }
public void SpawnNode(Point _position, BaseCreateNodePanelPart _panel) //Spawn node { BaseNodePanel newNodePanel = null; var CheckNode = _panel as VisualNodeCreatePanelPart; var CheckVariable = _panel as VisualVariableCreatePanelPart; var CheckFunction = _panel as VisualFunctionCreatePanelPart; if (CheckNode != null) //Node selected { VisualNodeCreatePanelPart node = (VisualNodeCreatePanelPart)_panel; VisualNode newNode = (VisualNode)Activator.CreateInstance(node.nodeType); newNodePanel = new BaseNodePanel(newNode); newNodePanel.visualNode = newNode; newNode.baseNodePanel = newNodePanel; visualFunction.visualNodes.Add(newNode); } else if (CheckVariable != null) //variable selected { VisualVariableCreatePanelPart variablePanel = (VisualVariableCreatePanelPart)_panel; VisualVariableNodePanel node = new VisualVariableNodePanel(new VisualNode(), variablePanel.visualVariable); newNodePanel = new VisualVariableNodePanel(variablePanel.visualVariable, variablePanel.visualVariable); variablePanel.visualVariable.baseNodePanel = newNodePanel; } else if (CheckFunction != null) { VisualFunctionCreatePanelPart functionPanel = (VisualFunctionCreatePanelPart)_panel; VisualFunctionNodePanel node = new VisualFunctionNodePanel(new VisualNode(), functionPanel.visualFunction); newNodePanel = new VisualFunctionNodePanel(functionPanel.visualFunction, functionPanel.visualFunction); functionPanel.visualFunction.baseNodePanel = newNodePanel; } form.MainScriptingPanel.Controls.Add(newNodePanel); newNodePanel.Location = _position; currentNodesPanels.Add(newNodePanel); newNodePanel.myMouseDown += StartMovingNode; newNodePanel.myMouseUp += StopMovingNode; newNodePanel.myMouseMove += MainScriptingPanel_MouseMove; newNodePanel.pinPressed += PinPressed; if (createNodeSearchBar != null) { createNodeSearchBar.Dispose(); } if (firstSelectedPin != null) { if (firstSelectedPin.visualPin.pinRole == PinRole.Input) //Selected input { foreach (VisualPin p in newNodePanel.visualNode.visualOutputs) { if (p.pinType == firstSelectedPin.visualPin.pinType) { p.otherConnectedPin = firstSelectedPin.visualPin; firstSelectedPin.visualPin.otherConnectedPin = p; firstSelectedPin = null; break; } } } else //Selected output { foreach (VisualPin p in newNodePanel.visualNode.visualInputs) { if (p.pinType == firstSelectedPin.visualPin.pinType) { p.otherConnectedPin = firstSelectedPin.visualPin; firstSelectedPin.visualPin.otherConnectedPin = p; firstSelectedPin = null; break; } } } } form.MainScriptingPanel.Refresh(); }