protected override void Update() { if (!GameSession.IsPlaying) { return; } curTime = MusicController.CurrentTime; // Allocate next frame data nextFrame = null; if (replayWriter != null) { nextFrame = replayWriter.NextWriteItem; nextFrame?.Reset(); } // Process update for other game modules. inputter.UpdateInputs(curTime); HitObjectHolder.UpdateObjects(curTime); // Record replay frame if (nextFrame != null) { nextFrame.Time = curTime; replayWriter.WriteData(nextFrame); } }