public void MoveSelection(float beats, bool snapObjects = false) { List <BeatmapAction> allActions = new List <BeatmapAction>(); foreach (BeatmapObject data in SelectedObjects) { BeatmapObjectContainerCollection collection = BeatmapObjectContainerCollection.GetCollectionForType(data.beatmapType); BeatmapObject original = BeatmapObject.GenerateCopy(data); collection.LoadedObjects.Remove(data); data._time += beats; if (snapObjects) { data._time = Mathf.Round(beats / (1f / atsc.gridMeasureSnapping)) * (1f / atsc.gridMeasureSnapping); } collection.LoadedObjects.Add(data); if (collection.LoadedContainers.TryGetValue(data, out BeatmapObjectContainer con)) { con.UpdateGridPosition(); } if (collection is NotesContainer notesContainer) { notesContainer.RefreshSpecialAngles(original, false, false); notesContainer.RefreshSpecialAngles(data, false, false); } allActions.Add(new BeatmapObjectModifiedAction(data, data, original, "", true)); } BeatmapActionContainer.AddAction(new ActionCollectionAction(allActions, true, true, "Shifted a selection of objects.")); BeatmapObjectContainerCollection.RefreshAllPools(); }
/// <summary> /// Deletes and clears the current selection. /// </summary> public void Delete(bool triggersAction = true) { IEnumerable <BeatmapObject> objects = SelectedObjects.ToArray(); if (triggersAction) { BeatmapActionContainer.AddAction(new SelectionDeletedAction(objects)); } DeselectAll(); foreach (BeatmapObject con in objects) { BeatmapObjectContainerCollection.GetCollectionForType(con.beatmapType).DeleteObject(con, false, false); } BeatmapObjectContainerCollection.RefreshAllPools(); }