From 252853f4d4596711d63b5cc3bb55c267e59dca6c Mon Sep 17 00:00:00 2001 From: PopSlime Date: Sat, 12 Nov 2022 17:02:21 +0800 Subject: [PATCH] Add time debug info. Fix sleep duration for audio sync. --- Assets/Cryville/Crtr/ChartPlayer.cs | 11 +++++++++-- Assets/Cryville/Crtr/InputProxy.cs | 7 +++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Assets/Cryville/Crtr/ChartPlayer.cs b/Assets/Cryville/Crtr/ChartPlayer.cs index 7956351..0295c5f 100644 --- a/Assets/Cryville/Crtr/ChartPlayer.cs +++ b/Assets/Cryville/Crtr/ChartPlayer.cs @@ -105,6 +105,7 @@ namespace Cryville.Crtr { bool texloaddone; diag::Stopwatch texloadtimer = new diag::Stopwatch(); bool firstFrame; + double atime0; void Update() { // if (Input.GetKeyDown(KeyCode.Return)) TogglePlay(); if (started) { @@ -238,6 +239,12 @@ namespace Cryville.Crtr { UnityEngine.Profiling.Profiler.GetTotalReservedMemory() #endif ); + if (started) sttext += string.Format( + "\nSTime: {0:R}\nATime: {1:R}\nITime: {2:R}", + cbus.Time, + Game.AudioClient.Position - atime0, + inputProxy.GetTimestampAverage() + ); if (judge != null) sttext += "\n== Scores ==\n" + judge.GetFullFormattedScoreString(); status.text = sttext; } @@ -401,8 +408,8 @@ namespace Cryville.Crtr { timer.Stop(); Logger.Log("main", 1, "Load/Prehandle", "Prehandling done ({0}ms)", timer.Elapsed.TotalMilliseconds); Game.AudioSequencer.Playing = true; - Thread.Sleep((int)(Game.AudioClient.BufferPosition - Game.AudioClient.Position)); - // TODO SyncTime(cbus.Time); + atime0 = Game.AudioClient.BufferPosition; + Thread.Sleep((int)((atime0 - Game.AudioClient.Position) * 1000)); inputProxy.SyncTime(cbus.Time); started = true; } diff --git a/Assets/Cryville/Crtr/InputProxy.cs b/Assets/Cryville/Crtr/InputProxy.cs index 33b15f8..47df4c3 100644 --- a/Assets/Cryville/Crtr/InputProxy.cs +++ b/Assets/Cryville/Crtr/InputProxy.cs @@ -194,6 +194,13 @@ namespace Cryville.Crtr { } } } + public double GetTimestampAverage() { + double result = 0; + foreach (var src in _sproxies.Keys) { + result += src.Handler.GetCurrentTimestamp() - _timeOrigins[src.Handler]; + } + return result / _sproxies.Count; + } #endregion }