diff --git a/stepmania/src/NoteData.cpp b/stepmania/src/NoteData.cpp index 3ac5280684..6d42452156 100644 --- a/stepmania/src/NoteData.cpp +++ b/stepmania/src/NoteData.cpp @@ -86,7 +86,7 @@ void NoteData::CopyRange( NoteData* pFrom, int iFromIndexBegin, int iFromIndexEn // copy recorded TapNotes int f = iFromIndexBegin, t = iToIndexBegin; - while( f<=iFromIndexEnd ) + while( fGetTapNote(c, f)); diff --git a/stepmania/src/NoteDataUtil.cpp b/stepmania/src/NoteDataUtil.cpp index c629510651..1dd47012ae 100644 --- a/stepmania/src/NoteDataUtil.cpp +++ b/stepmania/src/NoteDataUtil.cpp @@ -504,6 +504,7 @@ void NoteDataUtil::Wide( NoteData &in, float fStartBeat, float fEndBeat ) in.ConvertHoldNotesTo4s(); + int first_row = 0; if( fStartBeat != -1 ) first_row = BeatToNoteRow(fStartBeat); @@ -512,7 +513,7 @@ void NoteDataUtil::Wide( NoteData &in, float fStartBeat, float fEndBeat ) if( fEndBeat != -1 ) last_row = BeatToNoteRow(fEndBeat); - for( int i=first_row; i<=last_row; i+=ROWS_PER_BEAT*2 ) // every even beat + for( int i=first_row; im_pCurSong->GetBeatFromElapsedTime( fEndSeconds ); fEndBeat = ((int)fEndBeat)+1; + LOG->Trace( "Applying transform from %f to %f", fStartBeat, fEndBeat ); + switch( GAMESTATE->m_TransformsToApply[m_PlayerNumber][i] ) { case PlayerOptions::TRANSFORM_LITTLE: NoteDataUtil::Little( *this, fStartBeat, fEndBeat ); - NoteDataUtil::Little( m_NoteField, fStartBeat, fEndBeat ); break; case PlayerOptions::TRANSFORM_WIDE: NoteDataUtil::Wide( *this, fStartBeat, fEndBeat ); - NoteDataUtil::Wide( m_NoteField, fStartBeat, fEndBeat ); break; case PlayerOptions::TRANSFORM_BIG: NoteDataUtil::Big( *this, fStartBeat, fEndBeat ); - NoteDataUtil::Big( m_NoteField, fStartBeat, fEndBeat ); break; case PlayerOptions::TRANSFORM_QUICK: NoteDataUtil::Quick( *this, fStartBeat, fEndBeat ); - NoteDataUtil::Quick( m_NoteField, fStartBeat, fEndBeat ); break; case PlayerOptions::TRANSFORM_SKIPPY: NoteDataUtil::Skippy( *this, fStartBeat, fEndBeat ); - NoteDataUtil::Skippy( m_NoteField, fStartBeat, fEndBeat ); break; case PlayerOptions::TRANSFORM_MINES: NoteDataUtil::Mines( *this, fStartBeat, fEndBeat ); - NoteDataUtil::Mines( m_NoteField, fStartBeat, fEndBeat ); break; case PlayerOptions::TRANSFORM_NONE: default: ASSERT(0); } + + m_NoteField.CopyRange( this, BeatToNoteRow(fStartBeat), BeatToNoteRow(fEndBeat), BeatToNoteRow(fStartBeat) ); } GAMESTATE->m_TransformsToApply[m_PlayerNumber].clear(); diff --git a/stepmania/src/ScreenEdit.cpp b/stepmania/src/ScreenEdit.cpp index 350f152fee..937a59fb0d 100644 --- a/stepmania/src/ScreenEdit.cpp +++ b/stepmania/src/ScreenEdit.cpp @@ -1421,23 +1421,25 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers ) break; case transform: { - HandleAreaMenuChoice( cut, NULL ); +// HandleAreaMenuChoice( cut, NULL ); + float fBeginBeat = m_NoteFieldEdit.m_fBeginMarker; + float fEndBeat = m_NoteFieldEdit.m_fEndMarker; TransformType tt = (TransformType)iAnswers[c]; switch( tt ) { - case little: NoteDataUtil::Little( m_Clipboard ); break; - case wide: NoteDataUtil::Wide( m_Clipboard ); break; - case big: NoteDataUtil::Big( m_Clipboard ); break; - case quick: NoteDataUtil::Quick( m_Clipboard ); break; - case skippy: NoteDataUtil::Skippy( m_Clipboard ); break; + case little: NoteDataUtil::Little( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break; + case wide: NoteDataUtil::Wide( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break; + case big: NoteDataUtil::Big( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break; + case quick: NoteDataUtil::Quick( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break; + case skippy: NoteDataUtil::Skippy( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break; default: ASSERT(0); } // bake in the additions - NoteDataUtil::ConvertAdditionsToRegular( m_Clipboard ); + NoteDataUtil::ConvertAdditionsToRegular( m_NoteFieldEdit ); - HandleAreaMenuChoice( paste_at_begin_marker, NULL ); +// HandleAreaMenuChoice( paste_at_begin_marker, NULL ); } break; case alter: