implement NoteDataUtil::ShiftRight and NoteDataUtil::ShiftLeft without 4s

This commit is contained in:
Glenn Maynard
2005-01-23 04:59:10 +00:00
parent 60a0ce8eb0
commit 49d1922912
2 changed files with 17 additions and 32 deletions
+16 -32
View File
@@ -1375,44 +1375,28 @@ void NoteDataUtil::CollapseLeft( NoteData &inout )
inout.Convert2sAnd3sToHoldNotes();
}
void NoteDataUtil::ShiftTracks( NoteData &inout, int iShiftBy )
{
int iOriginalTrackToTakeFrom[MAX_NOTE_TRACKS];
for( int i = 0; i < inout.GetNumTracks(); ++i )
{
int iFrom = i-iShiftBy;
wrap( iFrom, inout.GetNumTracks() );
iOriginalTrackToTakeFrom[i] = iFrom;
}
NoteData orig( inout );
inout.LoadTransformed( orig, orig.GetNumTracks(), iOriginalTrackToTakeFrom );
}
void NoteDataUtil::ShiftLeft( NoteData &inout )
{
inout.ConvertHoldNotesTo4s();
FOREACH_NONEMPTY_ROW_ALL_TRACKS( inout, r )
{
for( int t=0; t<inout.GetNumTracks()-1; t++ ) // inout.GetNumTracks()-1 times
{
int iTrackEarlier = t;
int iTrackLater = (t+1) % inout.GetNumTracks();
// swap
TapNote tnEarlier = inout.GetTapNote(iTrackEarlier, r);
TapNote tnLater = inout.GetTapNote(iTrackLater, r);
inout.SetTapNote(iTrackEarlier, r, tnLater);
inout.SetTapNote(iTrackLater, r, tnEarlier);
}
}
inout.Convert4sToHoldNotes();
ShiftTracks( inout, -1 );
}
void NoteDataUtil::ShiftRight( NoteData &inout )
{
inout.ConvertHoldNotesTo4s();
FOREACH_NONEMPTY_ROW_ALL_TRACKS( inout, r )
{
for( int t=inout.GetNumTracks()-1; t>0; t-- ) // inout.GetNumTracks()-1 times
{
int iTrackEarlier = t;
int iTrackLater = (t+1) % inout.GetNumTracks();
// swap
TapNote tnEarlier = inout.GetTapNote(iTrackEarlier, r);
TapNote tnLater = inout.GetTapNote(iTrackLater, r);
inout.SetTapNote(iTrackEarlier, r, tnLater);
inout.SetTapNote(iTrackLater, r, tnEarlier);
}
}
inout.Convert4sToHoldNotes();
ShiftTracks( inout, +1 );
}