diff --git a/src/GameState.cpp b/src/GameState.cpp index 51852c9a51..148e8e0562 100644 --- a/src/GameState.cpp +++ b/src/GameState.cpp @@ -1271,7 +1271,8 @@ void GameState::UpdateSongPosition( float fPositionSeconds, const TimingData &ti { if( m_pCurSteps[pn] ) { - m_pPlayerState[pn]->m_Position.UpdateSongPosition( fPositionSeconds, *m_pCurSteps[pn]->GetTimingData(), timestamp ); + float fAdditionalVisualDelay = m_pPlayerState[pn]->m_PlayerOptions.GetPreferred().m_fVisualDelay; + m_pPlayerState[pn]->m_Position.UpdateSongPosition( fPositionSeconds, *m_pCurSteps[pn]->GetTimingData(), timestamp, fAdditionalVisualDelay ); Actor::SetPlayerBGMBeat( pn, m_pPlayerState[pn]->m_Position.m_fSongBeatVisible, m_pPlayerState[pn]->m_Position.m_fSongBeatNoOffset ); } } diff --git a/src/SongPosition.cpp b/src/SongPosition.cpp index 2668d0043a..4804bb29da 100644 --- a/src/SongPosition.cpp +++ b/src/SongPosition.cpp @@ -3,7 +3,7 @@ static Preference g_fVisualDelaySeconds( "VisualDelaySeconds", 0.0f ); -void SongPosition::UpdateSongPosition( float fPositionSeconds, const TimingData &timing, const RageTimer ×tamp ) +void SongPosition::UpdateSongPosition( float fPositionSeconds, const TimingData &timing, const RageTimer ×tamp, float fAdditionalVisualDelay ) { if( !timestamp.IsZero() ) @@ -31,7 +31,7 @@ void SongPosition::UpdateSongPosition( float fPositionSeconds, const TimingData m_fSongBeatNoOffset = timing.GetBeatFromElapsedTimeNoOffset( fPositionSeconds ); - m_fMusicSecondsVisible = fPositionSeconds - g_fVisualDelaySeconds.Get(); + m_fMusicSecondsVisible = fPositionSeconds - g_fVisualDelaySeconds.Get() - fAdditionalVisualDelay; beat_info.elapsed_time= m_fMusicSecondsVisible; timing.GetBeatAndBPSFromElapsedTime(beat_info); m_fSongBeatVisible= beat_info.beat; diff --git a/src/SongPosition.h b/src/SongPosition.h index 314629b702..fa8f39d57b 100644 --- a/src/SongPosition.h +++ b/src/SongPosition.h @@ -34,7 +34,7 @@ public: float m_fSongBeatVisible; void Reset(); - void UpdateSongPosition( float fPositionSeconds, const TimingData &timing, const RageTimer ×tamp = RageZeroTimer ); + void UpdateSongPosition( float fPositionSeconds, const TimingData &timing, const RageTimer ×tamp = RageZeroTimer, float fAdditionalVisualDelay = 0.0f ); // Lua void PushSelf( lua_State *L );