void Reset() { originalSongObjects.Clear(); foreach (SongObject songObject in movingSongObjects) { if (songObject.controller) { songObject.controller.gameObject.SetActive(false); } } movingSongObjects.Clear(); anchorArrayPos = SongObjectHelper.NOTFOUND; notesToEnable.Clear(); starpowerToEnable.Clear(); chartEventsToEnable.Clear(); bpmsToEnable.Clear(); timeSignaturesToEnable.Clear(); sectionsToEnable.Clear(); eventsToEnable.Clear(); initialDeleteCommands = null; fullCommands.Clear(); }
void ApplyPostValidatedAction(IList <SongObject> songObjectsToAdd, IList <SongObject> songObjectsToDelete) { SongEditDelete.ApplyAction(songObjectsToDelete, null); // Overwrite can be null for special case with song edit add, as corrections can mess SEA up foreach (SongObject songObject in songObjectsToAdd) { ApplyPostValidatedAction(songObject); } }
public void StartMoveAction(IList <SongObject> songObjects, int anchorArrayPos, bool delete = false) { if (editor.services.mouseMonitorSystem.world2DPosition != null) { initMousePos = (Vector2)editor.services.mouseMonitorSystem.world2DPosition; } else { initMousePos = Vector2.zero; } Reset(); this.anchorArrayPos = anchorArrayPos; originalSongObjects.Clear(); movingSongObjects.Clear(); originalSongObjects.AddRange(songObjects); initObjectSnappedChartPos = objectSnappedChartPos; int lastNotePos = -1; initialDeleteCommands = new SongEditDelete(songObjects); fullCommands.Clear(); fullCommands.Add(new SongEditDelete(songObjects)); for (int i = 0; i < songObjects.Count; ++i) { movingSongObjects.Add(songObjects[i].Clone()); // Rebuild linked list if ((SongObject.ID)songObjects[i].classID == SongObject.ID.Note) { if (lastNotePos >= 0) { ((Note)movingSongObjects[i]).previous = ((Note)movingSongObjects[lastNotePos]); ((Note)movingSongObjects[lastNotePos]).next = ((Note)movingSongObjects[i]); } lastNotePos = i; } originalSongObjects[i].song = editor.currentSong; movingSongObjects[i].song = editor.currentSong; if (originalSongObjects[i].GetType().IsSubclassOf(typeof(ChartObject))) { ((ChartObject)originalSongObjects[i]).chart = editor.currentChart; ((ChartObject)movingSongObjects[i]).chart = editor.currentChart; } } MouseMonitor.cancel = true; editor.commandStack.Push(initialDeleteCommands); notesToEnable.AddRange(movingSongObjects.OfType <Note>()); starpowerToEnable.AddRange(movingSongObjects.OfType <Starpower>()); chartEventsToEnable.AddRange(movingSongObjects.OfType <ChartEvent>()); bpmsToEnable.AddRange(movingSongObjects.OfType <BPM>()); timeSignaturesToEnable.AddRange(movingSongObjects.OfType <TimeSignature>().ToArray()); sectionsToEnable.AddRange(movingSongObjects.OfType <Section>().ToArray()); eventsToEnable.AddRange(movingSongObjects.OfType <MoonscraperChartEditor.Song.Event>().ToArray()); editor.selectedObjectsManager.currentSelectedObject = null; editor.events.groupMoveStart.Fire(); }