/// <summary> /// Runs the transform on all the currently selected objects /// </summary> /// <param name="transformationName">The name of the transformation</param> /// <param name="transform">The transformation to apply</param> /// <param name="clone">True to create a clone before transforming the original.</param> private void ExecuteTransform(string transformationName, IUnitTransformation transform, bool clone) { if (clone) transformationName += "-clone"; var objects = Document.Selection.GetSelectedParents().ToList(); var name = String.Format("{0} {1} object{2}", transformationName, objects.Count, (objects.Count == 1 ? "" : "s")); var cad = new CreateEditDelete(); var action = new ActionCollection(cad); if (clone) { // Copy the selection, transform it, and reselect var copies = ClipboardManager.CloneFlatHeirarchy(Document, Document.Selection.GetSelectedObjects()).ToList(); foreach (var mo in copies) { mo.Transform(transform, Document.Map.GetTransformFlags()); if (Sledge.Settings.Select.KeepVisgroupsWhenCloning) continue; foreach (var o in mo.FindAll()) o.Visgroups.Clear(); } cad.Create(Document.Map.WorldSpawn.ID, copies); var sel = new ChangeSelection(copies.SelectMany(x => x.FindAll()), Document.Selection.GetSelectedObjects()); action.Add(sel); } else { // Transform the selection cad.Edit(objects, new TransformEditOperation(transform, Document.Map.GetTransformFlags())); } // Execute the action Document.PerformAction(name, action); }
private void SelectEntity(Entity sel) { var currentSelection = DocumentManager.CurrentDocument.Selection.GetSelectedObjects(); var change = new ChangeSelection(sel.FindAll(), currentSelection); DocumentManager.CurrentDocument.PerformAction("Select entity", change); }