From 8529f14c35aca2a8cb49b1305adbb1e478bedfde Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Sun, 18 Jan 2004 04:43:56 +0000 Subject: [PATCH] UpdateSongPosition can take an explicit timestamp --- stepmania/src/GameState.cpp | 11 +++++++---- stepmania/src/GameState.h | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index b9d5c16c14..129c585372 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -395,12 +395,15 @@ void GameState::ResetStageStatistics() } } -void GameState::UpdateSongPosition( float fPositionSeconds, const TimingData &timing ) +void GameState::UpdateSongPosition( float fPositionSeconds, const TimingData &timing, const RageTimer ×tamp ) { - m_fMusicSeconds = fPositionSeconds; - timing.GetBeatAndBPSFromElapsedTime( m_fMusicSeconds, m_fSongBeat, m_fCurBPS, m_bFreeze ); - m_LastBeatUpdate.Touch(); + if( !timestamp.IsZero() ) + m_LastBeatUpdate = timestamp; + else + m_LastBeatUpdate.Touch(); + timing.GetBeatAndBPSFromElapsedTime( fPositionSeconds, m_fSongBeat, m_fCurBPS, m_bFreeze ); + m_fMusicSeconds = fPositionSeconds; // LOG->Trace( "m_fMusicSeconds = %f, m_fSongBeat = %f, m_fCurBPS = %f, m_bFreeze = %f", m_fMusicSeconds, m_fSongBeat, m_fCurBPS, m_bFreeze ); } diff --git a/stepmania/src/GameState.h b/stepmania/src/GameState.h index e1a1f215af..2d89f258b7 100644 --- a/stepmania/src/GameState.h +++ b/stepmania/src/GameState.h @@ -158,7 +158,7 @@ public: static const float MUSIC_SECONDS_INVALID; void ResetMusicStatistics(); // Call this when it's time to play a new song. Clears the values above. - void UpdateSongPosition( float fPositionSeconds, const TimingData &timing ); + void UpdateSongPosition( float fPositionSeconds, const TimingData &timing, const RageTimer ×tamp = RageZeroTimer ); float GetSongPercent( float beat ) const; enum HealthState { HOT, ALIVE, DANGER, DEAD };