fix: if multiple holds start on the same row, only the last one on the row was being updated
This commit is contained in:
@@ -721,7 +721,7 @@ void Player::Update( float fDeltaTime )
|
|||||||
iter++;
|
iter++;
|
||||||
}
|
}
|
||||||
|
|
||||||
map<int,TrackRowTapNote> mapRowToTap;
|
multimap<int,TrackRowTapNote> mapRowToTap;
|
||||||
for( int t=0; t<m_NoteData.GetNumTracks(); t++ )
|
for( int t=0; t<m_NoteData.GetNumTracks(); t++ )
|
||||||
{
|
{
|
||||||
// If there is a hold on this track that overlaps the current row
|
// If there is a hold on this track that overlaps the current row
|
||||||
@@ -741,13 +741,13 @@ void Player::Update( float fDeltaTime )
|
|||||||
if( !bInRange )
|
if( !bInRange )
|
||||||
continue;
|
continue;
|
||||||
TrackRowTapNote trtn = { t, iRow, &tn };
|
TrackRowTapNote trtn = { t, iRow, &tn };
|
||||||
mapRowToTap[iRow] = trtn;
|
mapRowToTap.insert( pair<int,TrackRowTapNote>(iRow,trtn) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// mapRowToTap now contains all overlapping holds sored by row
|
// mapRowToTap now contains all overlapping holds sored by row
|
||||||
int iRowOfLastHoldNote = -1;
|
int iRowOfLastHoldNote = -1;
|
||||||
vector<TrackRowTapNote> vHoldNotesToGradeTogether;
|
vector<TrackRowTapNote> vHoldNotesToGradeTogether;
|
||||||
FOREACHM( int, TrackRowTapNote, mapRowToTap, iter )
|
FOREACHMM( int, TrackRowTapNote, mapRowToTap, iter )
|
||||||
{
|
{
|
||||||
TrackRowTapNote &trtn = iter->second;
|
TrackRowTapNote &trtn = iter->second;
|
||||||
TapNote &tn = *trtn.pTN;
|
TapNote &tn = *trtn.pTN;
|
||||||
|
|||||||
Reference in New Issue
Block a user