Exemplo n.º 1
0
    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();
    }
Exemplo n.º 2
0
    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);
        }
    }
Exemplo n.º 3
0
    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();
    }