public void DuplicateNode()
 {
     GroundSceneCallbacks.AddUpdateLoopCall(() =>
     {
         var obj = Game.PlayerLookAtTargetObject;
         if (obj != null)
         {
             var node = WorldSnapshotReaderWriter.Get().GetNodeById((int)obj.NetworkId, obj.ParentObject);
             if (node != null)
             {
                 var newNode = WorldSnapshot.CreateNodeCopy(node, obj.Transform);
                 if (newNode != null)
                 {
                     editorPlugin.AddUndoCommand(this, new AddUndoCommandEventArgs(new AddWorldSnapshotNodeCommand(newNode)));
                 }
             }
         }
     });
 }
        public void PasteNode()
        {
            GroundSceneCallbacks.AddUpdateLoopCall(() =>
            {
                if (copiedNode != null)
                {
                    var copiedTransform = new Transform(copiedNode.Transform)
                    {
                        Position = cui_hud.GetCursorWorldPosition()
                    };

                    var newNode = WorldSnapshot.CreateNodeCopy(copiedNode, copiedTransform);
                    if (newNode != null)
                    {
                        editorPlugin.AddUndoCommand(this, new AddUndoCommandEventArgs(new AddWorldSnapshotNodeCommand(newNode)));
                    }
                }
            });
        }