LoadTransformed, LoadTransformedSlidingWindow const fix.
This commit is contained in:
+18
-21
@@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
#include "NoteData.h"
|
#include "NoteData.h"
|
||||||
#include "RageUtil.h"
|
#include "RageUtil.h"
|
||||||
|
#include "RageLog.h"
|
||||||
|
|
||||||
|
|
||||||
NoteData::NoteData()
|
NoteData::NoteData()
|
||||||
@@ -436,60 +437,57 @@ void NoteData::ConvertHoldNotesTo4s()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// -1 for iOriginalTracksToTakeFrom means no track
|
// -1 for iOriginalTracksToTakeFrom means no track
|
||||||
void NoteData::LoadTransformed( NoteData* pOriginal, int iNewNumTracks, const int iOriginalTrackToTakeFrom[] )
|
void NoteData::LoadTransformed( const NoteData* pOriginal, int iNewNumTracks, const int iOriginalTrackToTakeFrom[] )
|
||||||
{
|
{
|
||||||
// reset all notes
|
// reset all notes
|
||||||
Init();
|
Init();
|
||||||
|
|
||||||
pOriginal->ConvertHoldNotesTo4s();
|
NoteData Original;
|
||||||
|
Original.To4s( *pOriginal );
|
||||||
|
|
||||||
Config(*pOriginal);
|
Config( Original );
|
||||||
m_iNumTracks = iNewNumTracks;
|
m_iNumTracks = iNewNumTracks;
|
||||||
|
|
||||||
// copy tracks
|
// copy tracks
|
||||||
for( int t=0; t<m_iNumTracks; t++ )
|
for( int t=0; t<m_iNumTracks; t++ )
|
||||||
{
|
{
|
||||||
const int iOriginalTrack = iOriginalTrackToTakeFrom[t];
|
const int iOriginalTrack = iOriginalTrackToTakeFrom[t];
|
||||||
|
ASSERT( iOriginalTrack < Original.m_iNumTracks );
|
||||||
|
|
||||||
ASSERT( iOriginalTrack < pOriginal->m_iNumTracks );
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if( iOriginalTrack == -1 )
|
if( iOriginalTrack == -1 )
|
||||||
continue;
|
continue;
|
||||||
m_TapNotes[t] = pOriginal->m_TapNotes[iOriginalTrack];
|
m_TapNotes[t] = Original.m_TapNotes[iOriginalTrack];
|
||||||
}
|
}
|
||||||
|
|
||||||
pOriginal->Convert4sToHoldNotes();
|
|
||||||
Convert4sToHoldNotes();
|
Convert4sToHoldNotes();
|
||||||
}
|
}
|
||||||
#include "RageLog.h"
|
|
||||||
|
|
||||||
void NoteData::LoadTransformedSlidingWindow( NoteData* pOriginal, int iNewNumTracks )
|
void NoteData::LoadTransformedSlidingWindow( const NoteData* pOriginal, int iNewNumTracks )
|
||||||
{
|
{
|
||||||
// reset all notes
|
// reset all notes
|
||||||
Init();
|
Init();
|
||||||
|
|
||||||
pOriginal->ConvertHoldNotesTo4s();
|
NoteData Original;
|
||||||
|
Original.To4s( *pOriginal );
|
||||||
|
|
||||||
Config(*pOriginal);
|
Config(*pOriginal);
|
||||||
m_iNumTracks = iNewNumTracks;
|
m_iNumTracks = iNewNumTracks;
|
||||||
|
|
||||||
|
|
||||||
int iCurTrackOffset = 0;
|
int iCurTrackOffset = 0;
|
||||||
int iTrackOffsetMin = 0;
|
int iTrackOffsetMin = 0;
|
||||||
int iTrackOffsetMax = abs( iNewNumTracks - pOriginal->m_iNumTracks );
|
int iTrackOffsetMax = abs( iNewNumTracks - Original.m_iNumTracks );
|
||||||
int bOffsetIncreasing = true;
|
int bOffsetIncreasing = true;
|
||||||
|
|
||||||
int iLastRow = pOriginal->GetLastRow();
|
int iLastRow = Original.GetLastRow();
|
||||||
for( int r=0; r<=iLastRow; )
|
for( int r=0; r<=iLastRow; )
|
||||||
{
|
{
|
||||||
// copy notes in this measure
|
// copy notes in this measure
|
||||||
for( int t=0; t<pOriginal->m_iNumTracks; t++ )
|
for( int t=0; t<Original.m_iNumTracks; t++ )
|
||||||
{
|
{
|
||||||
int iOldTrack = t;
|
int iOldTrack = t;
|
||||||
int iNewTrack = (iOldTrack + iCurTrackOffset) % iNewNumTracks;
|
int iNewTrack = (iOldTrack + iCurTrackOffset) % iNewNumTracks;
|
||||||
this->SetTapNote(iNewTrack, r, pOriginal->GetTapNote(iOldTrack, r));
|
this->SetTapNote(iNewTrack, r, Original.GetTapNote(iOldTrack, r));
|
||||||
}
|
}
|
||||||
r++;
|
r++;
|
||||||
|
|
||||||
@@ -499,10 +497,10 @@ void NoteData::LoadTransformedSlidingWindow( NoteData* pOriginal, int iNewNumTra
|
|||||||
bool bHoldCrossesThisMeasure = false;
|
bool bHoldCrossesThisMeasure = false;
|
||||||
|
|
||||||
if( r )
|
if( r )
|
||||||
for( int t=0; t<=pOriginal->m_iNumTracks; t++ )
|
for( int t=0; t<=Original.m_iNumTracks; t++ )
|
||||||
{
|
{
|
||||||
if( pOriginal->GetTapNote(t, r) == TAP_HOLD &&
|
if( Original.GetTapNote(t, r) == TAP_HOLD &&
|
||||||
pOriginal->GetTapNote(t, r-1) == TAP_HOLD)
|
Original.GetTapNote(t, r-1) == TAP_HOLD)
|
||||||
{
|
{
|
||||||
bHoldCrossesThisMeasure = true;
|
bHoldCrossesThisMeasure = true;
|
||||||
break;
|
break;
|
||||||
@@ -520,7 +518,6 @@ void NoteData::LoadTransformedSlidingWindow( NoteData* pOriginal, int iNewNumTra
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pOriginal->Convert4sToHoldNotes();
|
|
||||||
Convert4sToHoldNotes();
|
Convert4sToHoldNotes();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -124,8 +124,8 @@ public:
|
|||||||
int GetNumHoldNotes() const { return m_HoldNotes.size(); }
|
int GetNumHoldNotes() const { return m_HoldNotes.size(); }
|
||||||
|
|
||||||
// Transformations
|
// Transformations
|
||||||
void LoadTransformed( NoteData* pOriginal, int iNewNumTracks, const int iOriginalTrackToTakeFrom[] ); // -1 for iOriginalTracksToTakeFrom means no track
|
void LoadTransformed( const NoteData* pOriginal, int iNewNumTracks, const int iOriginalTrackToTakeFrom[] ); // -1 for iOriginalTracksToTakeFrom means no track
|
||||||
void LoadTransformedSlidingWindow( NoteData* pOriginal, int iNewNumTracks ); // used by autogen
|
void LoadTransformedSlidingWindow( const NoteData* pOriginal, int iNewNumTracks ); // used by autogen
|
||||||
|
|
||||||
// Convert between HoldNote representation and '2' and '3' markers in TapNotes
|
// Convert between HoldNote representation and '2' and '3' markers in TapNotes
|
||||||
void Convert2sAnd3sToHoldNotes();
|
void Convert2sAnd3sToHoldNotes();
|
||||||
@@ -138,9 +138,6 @@ public:
|
|||||||
void To4s( const NoteData &out );
|
void To4s( const NoteData &out );
|
||||||
void From4s( const NoteData &out );
|
void From4s( const NoteData &out );
|
||||||
|
|
||||||
// True if no notes in row that aren't true in the mask
|
|
||||||
bool RowPassesValidMask( int row, bool bValidMask[] );
|
|
||||||
|
|
||||||
void EliminateAllButOneTap( int row );
|
void EliminateAllButOneTap( int row );
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user