/// <summary> /// Initializes the connections based on the selected connection logic /// </summary> private void InitializeConnections() { IEnumerable <Node> selectedNodes = NodeEditor.GetSelectedNodes(); switch (ConnectionLogic) { case ConnectionStyle.FIRST_SELECTED: selectedNodes = new Node[] { selectedNodes.FirstOrDefault() }; break; case ConnectionStyle.LAST_SELECTED: selectedNodes = new Node[] { selectedNodes.LastOrDefault() }; break; } foreach (Node node in selectedNodes) { if (node == null) { continue; } Connector connector = ConnectorFactory(NodeEditor, node, NodeEditor.MouseNode); NodeEditor.AddConnector(connector); newConnections.Add(connector); } }
/// <summary> /// Handles making the connection, whether it's starting a new /// one or completing the existing one /// </summary> /// <param name="selectedNode">The node to react to</param> private void MakeConnection(Node selectedNode) { if (startNode == null) { startNode = selectedNode; connection = ConnectorFactory(NodeEditor, startNode, NodeEditor.MouseNode); NodeEditor.AddConnector(connection); NodeEditor.AddNode(startNode); } else { connection.RemoveNode(NodeEditor.MouseNode); connection.AddNode(selectedNode); startNode = null; connection = null; } }