// Update is called once per frame void Update() { if (Input.GetKeyDown(startKey) && !isRecording) { isRecording = true; audioSource.Play(); } else if (Input.GetKeyDown(stopKey) && isRecording) { isRecording = false; audioSource.Pause(); } if (Input.GetKeyDown(tapKey)) { timeWhenPressed = audioSource.time; } else if (Input.GetKeyUp(tapKey)) { timeHeld = audioSource.time - timeWhenPressed; if (timeHeld < 0.5) { timeHeld = 0; } timelineIndicator.addNoteObject(timeWhenPressed, timeHeld); Debug.Log(timeWhenPressed + " / " + timeHeld); } }
IEnumerator LoadMusic(string levelName) { WaveformDrawer waveformDrawer = FindObjectOfType <WaveformDrawer>(); // Load music requires coroutine StartCoroutine(levelCreatorManager.LoadMp3File(levelName)); // Wait for music to load if (!levelCreatorManager.MusicLoaded) { yield return(new WaitForSeconds(.1f)); } // Check if error occured if (levelCreatorManager.MusicSource.clip == null) { yield break; } // Clear timeline if music is loaded not for the first time if (timelineIndicator.enabled) { timelineIndicator.DestroyAllNoteObjects(); timelineIndicator.ChangeCurrentAudioClipTime(0); } // Initialize timeline if music is loaded for the first time else { waveformDrawer.InitializeTimelineSettings(); } // Draw timeline waveformDrawer.DrawTimeline(); // Set bpm bars timelineIndicator.SetBeatIndicators(levelCreatorManager.BeatsTotal, levelCreatorManager.OffsetValue); // load data if such exist string fileLocation = CrossSceneData.LevelDir + "/" + levelName + "/" + levelName; List <(float, float)> noteTuples = levelDataPasser.LoadLevelDataFromDat(fileLocation); if (noteTuples == null) { yield break; } (float, float)bmpAndOffset = noteTuples[0]; noteTuples.RemoveAt(0); levelCreatorManager.SetBmpOffset(bmpAndOffset.Item1, bmpAndOffset.Item2); foreach ((float, float)noteTuple in noteTuples) { timelineIndicator.addNoteObject(noteTuple.Item1, noteTuple.Item2); } }