示例#1
0
 private void StopSongPreview()
 {
     StopAllCoroutines();
     songAudioPlayer.PauseAudio();
     isFadeInStarted = false;
     songVideoPlayer.gameObject.SetActive(false);
 }
示例#2
0
 private void OnBack(InputAction.CallbackContext context)
 {
     if (songEditorSceneControl.IsAnyDialogOpen)
     {
         songEditorSceneControl.CloseAllOpenDialogs();
     }
     else if (songEditorSideBarControl.IsAnySideBarContainerVisible)
     {
         songEditorSideBarControl.HideSideBarContainers();
     }
     else if (songAudioPlayer.IsPlaying)
     {
         songAudioPlayer.PauseAudio();
     }
     else if (selectionControl.HasSelectedNotes())
     {
         selectionControl.ClearSelection();
     }
     else if (AnyInputFieldHasFocus())
     {
         // Deselect TextArea
         eventSystem.SetSelectedGameObject(null);
     }
     else if (!inputFieldHasFocusOld)
     {
         // Special case: the back-Action in an InputField removes its focus.
         // Thus also check that in the previous frame no InputField was focused.
         songEditorSceneControl.ReturnToLastScene();
     }
 }
示例#3
0
 public void StopSongPreview()
 {
     StopAllCoroutines();
     songAudioPlayer.PauseAudio();
     isFadeInStarted = false;
     songRouletteControl.SongEntryControls.ForEach(it => it.SongPreviewVideoImage.HideByDisplay());
     songRouletteControl.SongEntryControls.ForEach(it => it.SongPreviewBackgroundImage.HideByDisplay());
 }
示例#4
0
 public void TogglePlayPause()
 {
     if (songAudioPlayer.IsPlaying)
     {
         songAudioPlayer.PauseAudio();
     }
     else
     {
         songAudioPlayer.PlayAudio();
     }
 }
示例#5
0
 public void TogglePlayPause()
 {
     if (songAudioPlayer.IsPlaying)
     {
         pauseOverlay.SetActive(true);
         songAudioPlayer.PauseAudio();
     }
     else
     {
         pauseOverlay.SetActive(false);
         songAudioPlayer.PlayAudio();
     }
 }
示例#6
0
 private void OnBack(InputAction.CallbackContext context)
 {
     if (songAudioPlayer.IsPlaying)
     {
         songAudioPlayer.PauseAudio();
     }
     else if (!inputFieldHasFocusOld)
     {
         // Special case: the back-Action in an InputField removes its focus.
         // Thus also check that in the previous frame no InputField was focused.
         songEditorSceneController.ReturnToLastScene();
     }
 }
    void Update()
    {
        // Automatically stop playback after a given threshold (e.g. only play the selected notes)
        if (songAudioPlayer.IsPlaying &&
            StopPlaybackAfterPositionInSongInMillis > 0 &&
            songAudioPlayer.PositionInSongInMillis > StopPlaybackAfterPositionInSongInMillis)
        {
            songAudioPlayer.PauseAudio();
            StopPlaybackAfterPositionInSongInMillis = 0;
        }

        // Create the audio waveform image if not done yet.
        if (!audioWaveFormInitialized && songAudioPlayer.HasAudioClip && songAudioPlayer.AudioClip.samples > 0)
        {
            using (new DisposableStopwatch($"Created audio waveform in <millis> ms"))
            {
                // For drawing the waveform, the AudioClip must not be streamed. All data must have been fully loaded.
                AudioClip audioClip = AudioManager.Instance.LoadAudioClip(SongMetaUtils.GetAbsoluteSongAudioPath(SongMeta), false);
                audioWaveFormInitialized = true;
                audioWaveFormVisualizer.DrawWaveFormMinAndMaxValues(audioClip);
            }
        }
    }
示例#8
0
    void Update()
    {
        // Jump to last position in song when playback stops
        if (songAudioPlayer.IsPlaying)
        {
            if (!lastIsPlaying)
            {
                positionInSongInMillisWhenPlaybackStarted = songAudioPlayer.PositionInSongInMillis;
            }
        }
        else
        {
            if (lastIsPlaying)
            {
                songAudioPlayer.PositionInSongInMillis = positionInSongInMillisWhenPlaybackStarted;
            }
        }
        lastIsPlaying = songAudioPlayer.IsPlaying;

        // Automatically stop playback after a given threshold (e.g. only play the selected notes)
        if (songAudioPlayer.IsPlaying &&
            StopPlaybackAfterPositionInSongInMillis > 0 &&
            songAudioPlayer.PositionInSongInMillis > StopPlaybackAfterPositionInSongInMillis)
        {
            songAudioPlayer.PauseAudio();
            StopPlaybackAfterPositionInSongInMillis = 0;
        }

        // Create the audio waveform image if not done yet.
        if (!audioWaveFormInitialized && songAudioPlayer.HasAudioClip && songAudioPlayer.AudioClip.samples > 0)
        {
            using (new DisposableStopwatch($"Created audio waveform in <millis> ms"))
            {
                audioWaveFormInitialized = true;
                audioWaveFormVisualizer.DrawWaveFormMinAndMaxValues(songAudioPlayer.AudioClip);
            }
        }
    }
    public void Update()
    {
        // Detect isAnyKeyUp
        isAnyKeyUp = false;
        if (Input.anyKey)
        {
            isAnyKey = true;
        }
        else if (isAnyKey)
        {
            isAnyKey   = false;
            isAnyKeyUp = true;
        }

        bool inputFieldHasFocus = GameObjectUtils.InputFieldHasFocus(eventSystem);

        if (inputFieldHasFocus)
        {
            inputFieldHasFocusOld = true;
            return;
        }

        EKeyboardModifier modifier = InputUtils.GetCurrentKeyboardModifier();

        // Jump to start / end of song, via Home (Pos1 on German keyboard) / End
        if (Input.GetKeyUp(KeyCode.Home))
        {
            songAudioPlayer.PositionInSongInMillis = 0;
        }
        if (Input.GetKeyUp(KeyCode.End))
        {
            songAudioPlayer.PositionInSongInMillis = songAudioPlayer.DurationOfSongInMillis - 1;
        }

        // Play / pause via Space or P
        bool isPlayPauseButtonUp = Input.GetKeyUp(KeyCode.Space) || Input.GetKeyUp(KeyCode.P);

        if (isPlayPauseButtonUp && modifier == EKeyboardModifier.None)
        {
            ToggleAudioPlayPause();
        }

        // Play only the selected notes via Ctrl+Space or Ctrl+P
        if (isPlayPauseButtonUp && modifier == EKeyboardModifier.Ctrl)
        {
            List <Note> selectedNotes = selectionController.GetSelectedNotes();
            PlayAudioInRangeOfNotes(selectedNotes);
        }

        // Stop playback or return to SingScene via Escape
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            if (songAudioPlayer.IsPlaying)
            {
                songAudioPlayer.PauseAudio();
            }
            else if (!inputFieldHasFocusOld)
            {
                // Special case: the Escape key in an InputField removes its focus on key down.
                // Thus also check that in the previous frame no InputField was focused.
                songEditorSceneController.ContinueToSingScene();
            }
        }

        // Select all notes via Ctrl+A
        if (Input.GetKeyUp(KeyCode.A) && modifier == EKeyboardModifier.Ctrl)
        {
            selectionController.SelectAll();
        }

        // Delete notes
        if (Input.GetKeyUp(KeyCode.Delete))
        {
            List <Note> selectedNotes = selectionController.GetSelectedNotes();
            deleteNotesAction.ExecuteAndNotify(selectedNotes);
        }

        // Undo via Ctrl+Z
        if (Input.GetKeyUp(KeyCode.Z) && modifier == EKeyboardModifier.Ctrl)
        {
            historyManager.Undo();
        }

        // Redo via Ctrl+Y
        if (Input.GetKeyUp(KeyCode.Y) && modifier == EKeyboardModifier.Ctrl)
        {
            historyManager.Redo();
        }

        // Save via Ctrl+S
        if (Input.GetKeyUp(KeyCode.S) && modifier == EKeyboardModifier.Ctrl)
        {
            songEditorSceneController.SaveSong();
        }

        // Tab to select next note, Shift+Tab to select previous note
        if (Input.GetKeyUp(KeyCode.Tab))
        {
            if (modifier == EKeyboardModifier.None)
            {
                selectionController.SelectNextNote();
            }
            else if (modifier == EKeyboardModifier.Shift)
            {
                selectionController.SelectPreviousNote();
            }
        }

        // Start editing of lyrics with F2
        if (Input.GetKeyUp(KeyCode.F2))
        {
            List <Note> selectedNotes = selectionController.GetSelectedNotes();
            if (selectedNotes.Count == 1)
            {
                Note         selectedNote = selectedNotes.FirstOrDefault();
                EditorUiNote uiNote       = editorNoteDisplayer.GetUiNoteForNote(selectedNote);
                if (uiNote != null)
                {
                    uiNote.StartEditingNoteText();
                }
            }
        }

        // Change position in song with Ctrl+ArrowKey
        if (!songAudioPlayer.IsPlaying)
        {
            if (Input.GetKey(KeyCode.LeftArrow) && modifier == EKeyboardModifier.Ctrl)
            {
                songAudioPlayer.PositionInSongInMillis -= 1;
            }
            if (Input.GetKey(KeyCode.RightArrow) && modifier == EKeyboardModifier.Ctrl)
            {
                songAudioPlayer.PositionInSongInMillis += 1;
            }
        }

        // Make golden / freestyle / normal
        UpdateInputToChangeNoteType(modifier);

        // Move and stretch notes
        UpdateInputToMoveAndStretchNotes(modifier);

        // Scroll and zoom in NoteArea
        UpdateInputToScrollAndZoom(modifier);

        // Use the shortcuts that are also used in the YASS song editor.
        UpdateInputForYassShortcuts(modifier);

        inputFieldHasFocusOld = inputFieldHasFocus;
    }
示例#10
0
    public void Update()
    {
        EKeyboardModifier modifier = InputUtils.GetCurrentKeyboardModifier();

        // Play / pause via Space
        if (Input.GetKeyUp(KeyCode.Space) && !InputFieldHasFocus())
        {
            ToggleAudioPlayPause();
        }

        // Stop via Escape
        if (Input.GetKeyUp(KeyCode.Escape))
        {
            songAudioPlayer.PauseAudio();
        }

        // Delete notes
        if (Input.GetKeyUp(KeyCode.Delete))
        {
            List <Note> selectedNotes = selectionController.GetSelectedNotes();
            deleteNotesAction.ExecuteAndNotify(selectedNotes);
        }

        // Undo via Ctrl+Z
        if (Input.GetKeyUp(KeyCode.Z) && modifier == EKeyboardModifier.Ctrl)
        {
            historyManager.Undo();
        }

        // Redo via Ctrl+Y
        if (Input.GetKeyUp(KeyCode.Y) && modifier == EKeyboardModifier.Ctrl)
        {
            historyManager.Redo();
        }

        // Save via Ctrl+S
        if (Input.GetKeyUp(KeyCode.S) && modifier == EKeyboardModifier.Ctrl)
        {
            songEditorSceneController.SaveSong();
        }

        // Tab to select next note, Shift+Tab to select previous note
        if (Input.GetKeyUp(KeyCode.Tab))
        {
            if (modifier == EKeyboardModifier.None)
            {
                selectionController.SelectNextNote();
            }
            else if (modifier == EKeyboardModifier.Shift)
            {
                selectionController.SelectPreviousNote();
            }
        }

        // Start editing of lyrics with F2
        if (Input.GetKeyUp(KeyCode.F2))
        {
            List <Note> selectedNotes = selectionController.GetSelectedNotes();
            if (selectedNotes.Count == 1)
            {
                Note         selectedNote = selectedNotes.FirstOrDefault();
                EditorUiNote uiNote       = editorNoteDisplayer.GetUiNoteForNote(selectedNote);
                if (uiNote != null)
                {
                    uiNote.StartEditingNoteText();
                }
            }
        }

        // Change position in song with Ctrl+ArrowKey
        if (!songAudioPlayer.IsPlaying)
        {
            if (Input.GetKey(KeyCode.LeftArrow) && modifier == EKeyboardModifier.Ctrl && !InputFieldHasFocus())
            {
                songAudioPlayer.PositionInSongInMillis -= 1;
            }
            if (Input.GetKey(KeyCode.RightArrow) && modifier == EKeyboardModifier.Ctrl && !InputFieldHasFocus())
            {
                songAudioPlayer.PositionInSongInMillis += 1;
            }
        }

        // Move and stretch notes
        UpdateInputToMoveAndStretchNotes(modifier);

        // Scroll and zoom in NoteArea
        UpdateInputToScrollAndZoom(modifier);
    }
    public void Update()
    {
        // Detect isAnyKeyUp
        isAnyKeyUp = false;
        if (Input.anyKey)
        {
            isAnyKey = true;
        }
        else if (isAnyKey)
        {
            isAnyKey   = false;
            isAnyKeyUp = true;
        }

        if (GameObjectUtils.InputFieldHasFocus(eventSystem))
        {
            return;
        }

        EKeyboardModifier modifier = InputUtils.GetCurrentKeyboardModifier();

        // Play / pause via Space or P
        bool isPlayPauseButtonUp = Input.GetKeyUp(KeyCode.Space) || Input.GetKeyUp(KeyCode.P);

        if (isPlayPauseButtonUp && modifier == EKeyboardModifier.None)
        {
            ToggleAudioPlayPause();
        }

        // Play only the selected notes via Ctrl+Space or Ctrl+P
        if (isPlayPauseButtonUp && modifier == EKeyboardModifier.Ctrl)
        {
            List <Note> selectedNotes = selectionController.GetSelectedNotes();
            PlayAudioInRangeOfNotes(selectedNotes);
        }

        // Stop via Escape
        if (Input.GetKeyUp(KeyCode.Escape))
        {
            songAudioPlayer.PauseAudio();
        }

        // Select all notes via Ctrl+A
        if (Input.GetKeyUp(KeyCode.A) && modifier == EKeyboardModifier.Ctrl)
        {
            selectionController.SelectAll();
        }

        // Delete notes
        if (Input.GetKeyUp(KeyCode.Delete))
        {
            List <Note> selectedNotes = selectionController.GetSelectedNotes();
            deleteNotesAction.ExecuteAndNotify(selectedNotes);
        }

        // Undo via Ctrl+Z
        if (Input.GetKeyUp(KeyCode.Z) && modifier == EKeyboardModifier.Ctrl)
        {
            historyManager.Undo();
        }

        // Redo via Ctrl+Y
        if (Input.GetKeyUp(KeyCode.Y) && modifier == EKeyboardModifier.Ctrl)
        {
            historyManager.Redo();
        }

        // Save via Ctrl+S
        if (Input.GetKeyUp(KeyCode.S) && modifier == EKeyboardModifier.Ctrl)
        {
            songEditorSceneController.SaveSong();
        }

        // Tab to select next note, Shift+Tab to select previous note
        if (Input.GetKeyUp(KeyCode.Tab))
        {
            if (modifier == EKeyboardModifier.None)
            {
                selectionController.SelectNextNote();
            }
            else if (modifier == EKeyboardModifier.Shift)
            {
                selectionController.SelectPreviousNote();
            }
        }

        // Start editing of lyrics with F2
        if (Input.GetKeyUp(KeyCode.F2))
        {
            List <Note> selectedNotes = selectionController.GetSelectedNotes();
            if (selectedNotes.Count == 1)
            {
                Note         selectedNote = selectedNotes.FirstOrDefault();
                EditorUiNote uiNote       = editorNoteDisplayer.GetUiNoteForNote(selectedNote);
                if (uiNote != null)
                {
                    uiNote.StartEditingNoteText();
                }
            }
        }

        // Change position in song with Ctrl+ArrowKey
        if (!songAudioPlayer.IsPlaying)
        {
            if (Input.GetKey(KeyCode.LeftArrow) && modifier == EKeyboardModifier.Ctrl)
            {
                songAudioPlayer.PositionInSongInMillis -= 1;
            }
            if (Input.GetKey(KeyCode.RightArrow) && modifier == EKeyboardModifier.Ctrl)
            {
                songAudioPlayer.PositionInSongInMillis += 1;
            }
        }

        // Move and stretch notes
        UpdateInputToMoveAndStretchNotes(modifier);

        // Scroll and zoom in NoteArea
        UpdateInputToScrollAndZoom(modifier);

        // Use the shortcuts that are also used in the YASS song editor.
        UpdateInputForYassShortcuts(modifier);
    }