private void UpdateNotes() { if (!musicIsPlaying || musicIsFinished) { return; } double relativeMusicTimestamp = Time.time - musicStartTimestamp; if (notes.Count > 0) { double noteTimestamp = notes.Peek().timestamp + eventOffsetInSeconds; if (!(noteTimestamp < relativeMusicTimestamp)) { return; } TimedNote note = notes.Dequeue(); FireNoteEvent(note); if (notes.Count == 0) { musicIsFinished = true; OnSongFinished?.Invoke(); } } }
private void BassGuidance(TimedNote note) { Debug.Log("Bass Guide"); Guidance bassGuidance = Instantiate(bassPrefab, guidanceSpawnPosition.transform).GetComponent <Guidance>(); bassGuidance.OnMiss += Miss; activeGuidance.Add(bassGuidance); }
private void SnareGuidance(TimedNote note) { Guidance snareGuidance = Instantiate(snarePrefab).GetComponent <Guidance>(); snareGuidance.transform.SetParent(guidanceSpawnPosition.transform, false); snareGuidance.OnMiss += Miss; activeGuidance.Add(snareGuidance); }
private void FireNoteGuidanceEvent(TimedNote note) { switch (note.type) { case NoteType.Bass: OnBassGuidance?.Invoke(note); break; case NoteType.Rest: break; case NoteType.Snare: OnSnareGuidance?.Invoke(note); break; default: throw new InvalidOperationException(); } }
private void UpdateNoteGuidance() { if (!musicIsPlaying || musicIsFinished) { return; } double relativeMusicTimestamp = Time.time - musicStartTimestamp; if (noteGuidance.Count > 0) { double noteTimestamp = noteGuidance.Peek().timestamp; if (!(noteTimestamp < relativeMusicTimestamp)) { return; } TimedNote note = noteGuidance.Dequeue(); FireNoteGuidanceEvent(note); } }
public void OnNote(TimedNote note) { activeNote = note; }