public override void Update()
    {
        base.Update();

        ChartEditor editor = ChartEditor.Instance;

        if (!audioStarted)
        {
            float audioPlayPoint = playFromTime + editor.services.totalSongAudioOffset;
            float currentTime    = editor.services.currentAudioTime;
            if (currentTime >= audioPlayPoint && currentTime > 0)
            {
                editor.PlayAudio(currentTime);
                audioStarted = true;
            }
        }

        if (MSChartEditorInput.GetInputDown(MSChartEditorInputActions.StepIncrease))
        {
            GameSettings.snappingStep.Increment();
        }

        else if (MSChartEditorInput.GetInputDown(MSChartEditorInputActions.StepDecrease))
        {
            GameSettings.snappingStep.Decrement();
        }

        if (MSChartEditorInput.GetInputDown(MSChartEditorInputActions.PlayPause) || MSChartEditorInput.GetInputDown(MSChartEditorInputActions.StartGameplay))
        {
            editor.Stop();
        }
    }
    public override void Enter()
    {
        ChartEditor editor = ChartEditor.Instance;

        selectedBeforePlay.Clear();
        selectedBeforePlay.AddRange(editor.selectedObjectsManager.currentSelectedObjects);
        editor.selectedObjectsManager.currentSelectedObject = null;

        float playPoint      = playFromTime;
        float audioPlayPoint = playPoint + editor.services.totalSongAudioOffset;

        editor.movement.SetTime(playPoint);

        if (audioPlayPoint >= 0)
        {
            editor.PlayAudio(audioPlayPoint);
            audioStarted = true;
        }

        base.Enter();
    }