using System; using System.Collections; using System.Collections.Generic; using Ichni.RhythmGame; using UnityEngine; using UnityEngine.InputSystem; namespace Ichni.Editor { public class MusicPlayer : MonoBehaviour { public bool isDebugging; public bool isPlaying; public AudioSource audioSource; private float DspTime => (float)AudioSettings.dspTime; private void Update() { if (isDebugging) { EditorManager.instance.songInformation.songTime += Time.deltaTime; return; } if (isPlaying) { EditorManager.instance.songInformation.songTime = EditorManager.instance.musicPlayer.audioSource.time - EditorManager.instance.songInformation.offset; } } public void PlayMusic() { isPlaying = !isPlaying; audioSource.time = EditorManager.instance.songInformation.songTime + EditorManager.instance.songInformation.offset; if (isPlaying) { Trail.FreezeAllTrails(!isPlaying); audioSource.Play(); } else PauseMusic(); } public IEnumerator PlayBackMusic() { float startt = audioSource.time - EditorManager.instance.songInformation.offset; PlayMusic(); yield return new WaitUntil(() => Keyboard.current.rightAltKey.wasReleasedThisFrame); audioSource.time = startt + EditorManager.instance.songInformation.offset; PauseMusic(); } public void PauseMusic() { if (isPlaying) EditorManager.instance.songInformation.songTime = audioSource.time - EditorManager.instance.songInformation.offset; isPlaying = false; audioSource.Pause(); Trail.FreezeAllTrails(!isPlaying); } public void StopMusic() { isPlaying = false; EditorManager.instance.songInformation.songTime = 0; audioSource.Stop(); //EditorManager.instance.uiManager.timeline.timePointerModule.SetRange(0); } } }