示例#1
0
        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);
            }
        }