public void Update(float time, HitWindow <GuitarNoteHitKnowledge> hitWindow, GamepadInput guitarInput, uint noteStreak, GuitarSustainHitKnowledge sustainKnowledge) { // Capture input bool strum = guitarInput.GetStrumInputControllerOrKeyboard(); int inputMask = guitarInput.GetFretInputMaskControllerOrKeyboard(); if (inputMask != previousInputMask) { canTap = true; } // What note is the player trying to hit next? GuitarNoteHitKnowledge nextNoteToHit = hitWindow.oldestUnhitNote; UpdateNoteKnowledge(time, hitWindow, inputMask, strum, noteStreak, nextNoteToHit, sustainKnowledge); if (nextNoteToHit != null) { Note nextSeperate = nextNoteToHit.note.nextSeperateNote; if (noteStreak > 0) { PreserveStreakDetect(time, hitWindow, strum, noteStreak, nextNoteToHit, inputMask); } else { RecoveryDetect(time, hitWindow, inputMask, strum, noteStreak); } } // No note in window else { BlankWindowDetect(time, strum); } previousInputMask = inputMask; }