use GetTapNoteRangeAllTracks to iterate holds

This commit is contained in:
Chris Danford
2007-01-15 11:33:34 +00:00
parent fb1fd171cb
commit 7a15dddb62
+7 -9
View File
@@ -75,7 +75,6 @@ Preference<float> g_fTimingWindowHopo ( "TimingWindowHopo", 0.25 );
ThemeMetric<bool> PENALIZE_TAP_SCORE_NONE ( "Player", "PenalizeTapScoreNone" ); ThemeMetric<bool> PENALIZE_TAP_SCORE_NONE ( "Player", "PenalizeTapScoreNone" );
float Player::GetWindowSeconds( TimingWindow tw ) float Player::GetWindowSeconds( TimingWindow tw )
{ {
float fSecs = m_fTimingWindowSeconds[tw]; float fSecs = m_fTimingWindowSeconds[tw];
@@ -650,19 +649,18 @@ void Player::Update( float fDeltaTime )
// //
// update HoldNotes logic // update HoldNotes logic
// //
for( int iTrack=0; iTrack<m_NoteData.GetNumTracks(); ++iTrack )
{ {
// Since this is being called every frame, let's not check the whole array every time.
// Instead, only check 1 beat back. Even 1 is overkill.
const int iStartCheckingAt = max( 0, iSongRow-BeatToNoteRow(1) ); const int iStartCheckingAt = max( 0, iSongRow-BeatToNoteRow(1) );
NoteData::iterator begin, end; vector<TrackRowTapNote> vHoldNotesToGradeTogether;
m_NoteData.GetTapNoteRangeInclusive( iTrack, iStartCheckingAt, iSongRow+1, begin, end ); NoteData::all_tracks_iterator iter = m_NoteData.GetTapNoteRangeAllTracks( iStartCheckingAt, iSongRow+1, NULL, true );
for( ; begin != end; ++begin ) for( ; !iter.IsAtEnd(); ++iter )
{ {
TapNote &tn = begin->second; TapNote &tn = *iter;
if( tn.type != TapNote::hold_head ) if( tn.type != TapNote::hold_head )
continue; continue;
int iRow = begin->first;
int iTrack = iter.Track();
int iRow = iter.Row();
int iEndRow = iRow + tn.iDuration; int iEndRow = iRow + tn.iDuration;
// set hold flags so NoteField can do intelligent drawing // set hold flags so NoteField can do intelligent drawing