Vain, hopeless attempt to simplify GetBeatAndBPSFromElapsedTime. :)

This commit is contained in:
Glenn Maynard
2002-08-20 07:20:59 +00:00
parent 8b7b267dbe
commit 8814a37d19
+28 -30
View File
@@ -163,7 +163,8 @@ void Song::GetBeatAndBPSFromElapsedTime( float fElapsedTime, float &fBeatOut, fl
// calculate the number of seconds in this segment // calculate the number of seconds in this segment
float fSecondsInThisSegment = fBeatsInThisSegment / fBPS; float fSecondsInThisSegment = fBeatsInThisSegment / fBPS;
for( int j=0; j<m_StopSegments.GetSize(); j++ ) // foreach freeze int j;
for( j=0; j<m_StopSegments.GetSize(); j++ ) // foreach freeze
{ {
if( fStartBeatThisSegment <= m_StopSegments[j].m_fStartBeat && m_StopSegments[j].m_fStartBeat < fStartBeatNextSegment ) if( fStartBeatThisSegment <= m_StopSegments[j].m_fStartBeat && m_StopSegments[j].m_fStartBeat < fStartBeatNextSegment )
{ {
@@ -177,43 +178,40 @@ void Song::GetBeatAndBPSFromElapsedTime( float fElapsedTime, float &fBeatOut, fl
{ {
// this BPMSegement is NOT the current segment // this BPMSegement is NOT the current segment
fElapsedTime -= fSecondsInThisSegment; fElapsedTime -= fSecondsInThisSegment;
continue;
} }
else
// this BPMSegment IS the current segment
float fBeatEstimate = fStartBeatThisSegment + fElapsedTime*fBPS;
for( j=0; j<m_StopSegments.GetSize(); j++ ) // foreach freeze
{ {
// this BPMSegment IS the current segment if( fStartBeatThisSegment > m_StopSegments[j].m_fStartBeat ||
m_StopSegments[j].m_fStartBeat > fStartBeatNextSegment )
continue;
float fBeatEstimate = fStartBeatThisSegment + fElapsedTime*fBPS; // this freeze lies within this BPMSegment
for( int j=0; j<m_StopSegments.GetSize(); j++ ) // foreach freeze if( m_StopSegments[j].m_fStartBeat > fBeatEstimate )
break;
fElapsedTime -= m_StopSegments[j].m_fStopSeconds;
// re-estimate
fBeatEstimate = fStartBeatThisSegment + fElapsedTime*fBPS;
if( fBeatEstimate < m_StopSegments[j].m_fStartBeat )
{ {
if( fStartBeatThisSegment <= m_StopSegments[j].m_fStartBeat && m_StopSegments[j].m_fStartBeat <= fStartBeatNextSegment ) fBeatOut = m_StopSegments[j].m_fStartBeat;
{ fBPSOut = fBPS;
// this freeze lies within this BPMSegment bFreezeOut = true;
return;
if( m_StopSegments[j].m_fStartBeat <= fBeatEstimate )
{
fElapsedTime -= m_StopSegments[j].m_fStopSeconds;
// re-estimate
fBeatEstimate = fStartBeatThisSegment + fElapsedTime*fBPS;
if( fBeatEstimate < m_StopSegments[j].m_fStartBeat )
{
fBeatOut = m_StopSegments[j].m_fStartBeat;
fBPSOut = fBPS;
bFreezeOut = true;
return;
}
}
else
break;
}
} }
fBeatOut = fBeatEstimate;
fBPSOut = fBPS;
bFreezeOut = false;
return;
} }
fBeatOut = fBeatEstimate;
fBPSOut = fBPS;
bFreezeOut = false;
return;
} }
} }