public void Copy() { _copiedNodes.Clear(); var sourceNodes = selection.OfType <GraphViewNode>().Where(node => !(node is StartGraphViewNode)).Select(node => node.Data.Node).ToList(); var copiedData = new List <GraphNode.NodeData>(); foreach (var node in sourceNodes) { var copy = CloneNode(node); var data = new GraphNode.NodeData(copy); copiedData.Add(data); _copiedNodes.Add(copy); } foreach (var data in copiedData) { foreach (var connection in data.Connections) { var index = connection.To != null?sourceNodes.IndexOf(connection.To) : -1; connection.SetTarget(index >= 0 ? copiedData[index] : null); } } }
public GraphViewNode(GraphNode node) { AddToClassList(UssClassName); Data = new GraphNode.NodeData(node); _serializedObject = new SerializedObject(node); titleContainer.style.backgroundColor = node.NodeColor; titleContainer.style.unityFontStyleAndWeight = FontStyle.Bold; m_CollapseButton.SetDisplayed(false); SetPosition(new Rect(node.GraphPosition, Vector2.zero)); }
private void SetConnectionTarget(GraphNode.ConnectionData connection, GraphNode.NodeData target) { using (new ChangeScope(Graph)) connection.SetTarget(target); }