diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index 217e515554..8b9e03cb0d 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -2372,11 +2372,11 @@ void ScreenEdit::TransitionEditState( EditState em ) GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat = m_fBeatToReturnTo; // Make sure we're snapped. - GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat = Quantize( GAMESTATE->m_Position.m_fSongBeat, NoteTypeToBeat(m_SnapDisplay.GetNoteType()) ); + GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat = Quantize( GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat, NoteTypeToBeat(m_SnapDisplay.GetNoteType()) ); /* Playing and recording have lead-ins, which may start before beat 0; * make sure we don't stay there if we escaped out early. */ - GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat = max( GAMESTATE->m_Position.m_fSongBeat, 0 ); + GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat = max( GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat, 0 ); break; diff --git a/src/Song.cpp b/src/Song.cpp index dcb39b1eec..8bf3c72fd0 100644 --- a/src/Song.cpp +++ b/src/Song.cpp @@ -472,6 +472,13 @@ void Song::TidyUpData() m_fMusicLengthSeconds = 0; } + m_SongTiming.TidyUpData(); + + FOREACH( Steps *, m_vpSteps, s ) + { + (*s)->m_Timing.TidyUpData(); + } + /* Generate these before we autogen notes, so the new notes can inherit * their source's values. */ ReCalculateRadarValuesAndLastBeat(); @@ -488,13 +495,6 @@ void Song::TidyUpData() m_sArtist = "Unknown artist"; TranslateTitles(); - m_SongTiming.TidyUpData(); - - FOREACH( Steps *, m_vpSteps, s ) - { - (*s)->m_Timing.TidyUpData(); - } - if( m_fMusicSampleStartSeconds == -1 || m_fMusicSampleStartSeconds == 0 || m_fMusicSampleStartSeconds+m_fMusicSampleLengthSeconds > this->m_fMusicLengthSeconds ) @@ -833,8 +833,8 @@ void Song::ReCalculateRadarValuesAndLastBeat() if( tempNoteData.GetLastRow() == 0 ) continue; - fFirstBeat = min( fFirstBeat, tempNoteData.GetFirstBeat() ); - fLastBeat = max( fLastBeat, tempNoteData.GetLastBeat() ); + fFirstBeat = min( fFirstBeat, m_SongTiming.GetBeatFromElapsedTime(pSteps->m_Timing.GetElapsedTimeFromBeat(tempNoteData.GetFirstBeat())) ); + fLastBeat = max( fLastBeat, m_SongTiming.GetBeatFromElapsedTime(pSteps->m_Timing.GetElapsedTimeFromBeat(tempNoteData.GetLastBeat())) ); } m_fFirstBeat = fFirstBeat;