MyNodes.Nodes.NodesEngine.CloneNode C# (CSharp) Method

CloneNode() public method

public CloneNode ( string id ) : void
id string
return void
        public void CloneNode(string id)
        {
            Node oldNode = GetNode(id);
            if (oldNode is PanelNode)
            {
                string json = NodesEngineSerializer.SerializePanel(id, this);

                List<Node> newNodes;
                List<Link> newLinks;
                NodesEngineSerializer.DeserializePanel(json, out newNodes, out newLinks);

                newNodes[0].Position = new Position { X = oldNode.Position.X + 5, Y = oldNode.Position.Y + 20 };

                GenerateNewIds(ref newNodes, ref newLinks);

                AddNodes(newNodes);
                AddLinks(newLinks);

                newNodes[0].ResetInputs();
            }
            else
            {
                string json = NodesEngineSerializer.SerializeNode(oldNode);
                Node newNode = NodesEngineSerializer.DeserializeNode(json);

                GenerateNewIds(newNode);

                newNode.Position = new Position { X = oldNode.Position.X + 5, Y = oldNode.Position.Y + 20 };
                AddNode(newNode, true);
                newNode.ResetInputs();
            }


        }