示例#1
0
        public void Do()
        {
            scene.ClearSelection();

            scene.Children.Modify(list =>
            {
                foreach (var item in items)
                {
                    list.Remove(item);
                }
            });

            scene.SelectLastChild();

            scene.Invalidate(new InvalidateArgs(null, InvalidateType.Content));
        }
示例#2
0
        public static void DeleteSelection(this InteractiveScene scene)
        {
            if (scene.HasSelection)
            {
                // Create and perform the delete operation
                var deleteOperation = new DeleteCommand(scene, scene.SelectedItem);

                // Store the operation for undo/redo
                scene.UndoBuffer.AddAndDo(deleteOperation);

                scene.ClearSelection();
            }
        }
示例#3
0
        public static void DeleteSelection(this InteractiveScene scene)
        {
            var selectedItem = scene.SelectedItem;

            if (selectedItem != null)
            {
                // Create and perform the delete operation
                var deleteOperation = new DeleteCommand(scene, selectedItem);

                // Store the operation for undo/redo
                scene.UndoBuffer.AddAndDo(deleteOperation);

                scene.ClearSelection();

                scene.Invalidate(new InvalidateArgs(null, InvalidateType.Children));
            }
        }
        /// <summary>
        /// Collapse the InsertionGroup into the scene
        /// </summary>
        public void Collapse()
        {
            // Drag operation has finished, we need to perform the collapse
            var loadedItems = this.Children;

            if (loadedItems.Count == 1)
            {
                var first = loadedItems.First();
                if (first.GetType() == typeof(Object3D) &&
                    first.Mesh == null &&
                    first.Children.Count == 1)
                {
                    // collapse our first child into this
                    this.Children.Modify(list =>
                    {
                        first.CollapseInto(list, false);
                    });
                }
            }

            // Collapse our contents into the root of the scene
            // of the scene when it loses focus
            scene.Children.Modify(list =>
            {
                this.CollapseInto(list, false);
            });

            // Create and push the undo operation
            foreach (var item in loadedItems)
            {
                view3DWidget.AddUndoOperation(new InsertCommand(scene, item));
            }

            if (scene.SelectedItem == this &&
                loadedItems.Count > 0)
            {
                scene.ClearSelection();

                foreach (var item in loadedItems)
                {
                    scene.AddToSelection(item);
                }
            }
        }
示例#5
0
        public DeleteCommand(InteractiveScene scene, IObject3D deletingItem)
        {
            this.scene = scene;

            if (deletingItem is SelectionGroupObject3D)
            {
                var childrenToAdd = deletingItem.Children;
                // push whatever happened to the selection into the objects before saving them
                scene.ClearSelection();
                // save them in our list
                foreach (var item in childrenToAdd)
                {
                    items.Add(item);
                }
            }
            else
            {
                this.items.Add(deletingItem);
            }
        }