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)); }
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(); } }
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); } } }
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); } }