void DrawPrimitives() { if( GAMESTATE->IsPlayerEnabled(m_PlayerNumber) ) { DrawMask( m_fPercent ); // this is the "right endcap" to the life const float fChamberWidthInPercent = 1.0f/NUM_CHAMBERS; float fPercentBetweenStrips = 1.0f/NUM_STRIPS; // round this so that the chamber overflows align if( NUM_CHAMBERS > 10 ) fPercentBetweenStrips = froundf( fPercentBetweenStrips, fChamberWidthInPercent ); float fPercentOffset = fmodf( GAMESTATE->m_fSongBeat/4+1000, fPercentBetweenStrips ); ASSERT( fPercentOffset >= 0 && fPercentOffset <= fPercentBetweenStrips ); for( float f=fPercentOffset+1; f>=0; f-=fPercentBetweenStrips ) { DrawMask( f ); DrawStrip( f ); } } m_sprFrame.Draw(); }
void StreamDisplay::DrawPrimitives() { DrawMask( m_fTrailingPercent ); // this is the "right endcap" to the life const float fChamberWidthInPercent = 1.0f/m_iNumChambers; float fStripWidthInPercent = 1.0f/m_iNumStrips; float fPercentBetweenStrips = 1.0f/m_iNumStrips; // round down so that the chamber overflows align if( m_iNumChambers > 10 ) fPercentBetweenStrips = Quantize( fPercentBetweenStrips-fChamberWidthInPercent/2, fChamberWidthInPercent ); if( m_iNumChambers > 3 ) fPercentBetweenStrips -= 2*fChamberWidthInPercent; float fPercentOffset = fmodf( GAMESTATE->m_fSongBeat/4+1000, fPercentBetweenStrips ); ASSERT( fPercentOffset >= 0 && fPercentOffset <= fPercentBetweenStrips ); // "+fPercentBetweenStrips" so that the whole area is overdrawn 2x for( float f=fPercentOffset+1+fPercentBetweenStrips; f>=0; f-=fPercentBetweenStrips ) { DrawMask( f ); DrawStrip( f, fStripWidthInPercent ); } // Don't leave the Zbuffer in a messy state for arrows and dancing characters DISPLAY->ClearZBuffer(); }