public void Migrate() { bool selected = SelectionManager.IsSelected(this); SetAttributeNode newNode = NodeUtils.CreateNode(DashEditorCore.EditorConfig.editingGraph, typeof(SetAttributeNode), rect.position) as SetAttributeNode; newNode.Model.attributeName.SetValue(Model.attributeName); newNode.Model.expression = Model.expression; newNode.Model.specifyType = true; newNode.Model.attributeType = Model.attributeType; Graph.Connections.FindAll(c => c.inputNode == this).ToArray().ForEach(c => { NodeConnection nc = new NodeConnection(c.inputIndex, newNode, c.outputIndex, c.outputNode); Graph.Connections.Add(nc); Graph.Connections.Remove(c); }); Graph.Connections.FindAll(c => c.outputNode == this).ToArray().ForEach(c => { NodeConnection nc = new NodeConnection(c.inputIndex, c.inputNode, c.outputIndex, newNode); Graph.Connections.Add(nc); Graph.Connections.Remove(c); }); Graph.DeleteNode(this); if (selected) { SelectionManager.SelectNode(newNode, Graph); } }