add AutosyncMachine (shift + F6)

This commit is contained in:
Chris Danford
2005-04-11 04:50:39 +00:00
parent 42dbfa3557
commit ea31bb3f90
5 changed files with 70 additions and 21 deletions
+22 -7
View File
@@ -1008,21 +1008,36 @@ void Player::HandleStep( int col, const RageTimer &tm, bool bHeld )
void Player::HandleAutosync(float fNoteOffset)
{
if( !GAMESTATE->m_SongOptions.m_bAutoSync )
if( GAMESTATE->m_SongOptions.m_AutosyncType == SongOptions::AUTOSYNC_OFF )
return;
m_fOffset[m_iOffsetSample++] = fNoteOffset;
if (m_iOffsetSample < SAMPLE_COUNT)
if( m_iOffsetSample < SAMPLE_COUNT )
return; /* need more */
const float mean = calc_mean(m_fOffset, m_fOffset+SAMPLE_COUNT);
const float stddev = calc_stddev(m_fOffset, m_fOffset+SAMPLE_COUNT);
const float mean = calc_mean( m_fOffset, m_fOffset+SAMPLE_COUNT );
const float stddev = calc_stddev( m_fOffset, m_fOffset+SAMPLE_COUNT );
if( stddev < .03 && stddev < fabsf(mean) ) // If they stepped with less than .03 error
{
switch( GAMESTATE->m_SongOptions.m_AutosyncType )
{
case SongOptions::AUTOSYNC_SONG:
GAMESTATE->m_pCurSong->m_Timing.m_fBeat0OffsetInSeconds += mean;
break;
case SongOptions::AUTOSYNC_MACHINE:
PREFSMAN->m_fGlobalOffsetSeconds = PREFSMAN->m_fGlobalOffsetSeconds + mean;
break;
default:
ASSERT(0);
}
if (stddev < .03 && stddev < fabsf(mean)) { //If they stepped with less than .03 error
GAMESTATE->m_pCurSong->m_Timing.m_fBeat0OffsetInSeconds += mean;
LOG->Trace("Offset corrected by %f. Error in steps: %f seconds.", mean, stddev);
} else
}
else
{
LOG->Trace("Offset NOT corrected. Average offset: %f seconds. Error: %f seconds.", mean, stddev);
}
m_iOffsetSample = 0;
}