diff --git a/src/Actor.cpp b/src/Actor.cpp index f8d326827d..62abfaab16 100644 --- a/src/Actor.cpp +++ b/src/Actor.cpp @@ -311,6 +311,11 @@ void Actor::BeginDraw() // set the world matrix and calculate actor properties m_pTempState = &tempState; tempState = m_current; + // XXX HACK! We can't really determine the active player outside Draw() so + // figure it out just for this clock type here. + if( m_EffectClock == CLOCK_BGM_BEAT_PLAYER_ACTIVE ) + m_fSecsIntoEffect = g_vfCurrentBGMBeatPlayerNoOffset[m_ActivePlayerNumber]; + const float fTotalPeriod = GetEffectPeriod(); ASSERT( fTotalPeriod > 0 ); const float fTimeIntoEffect = fmodfp( m_fSecsIntoEffect+m_fEffectOffset, fTotalPeriod ); @@ -680,16 +685,12 @@ void Actor::UpdateInternal( float fDeltaTime ) break; } + case CLOCK_BGM_BEAT_PLAYER_ACTIVE: case CLOCK_BGM_BEAT: m_fEffectDelta = g_fCurrentBGMBeat - m_fSecsIntoEffect; m_fSecsIntoEffect = g_fCurrentBGMBeat; break; - case CLOCK_BGM_BEAT_PLAYER_ACTIVE: - m_fEffectDelta = g_vfCurrentBGMBeatPlayer[m_ActivePlayerNumber] - m_fSecsIntoEffect; - m_fSecsIntoEffect = g_vfCurrentBGMBeatPlayerNoOffset[m_ActivePlayerNumber]; - break; - case CLOCK_BGM_BEAT_PLAYER1: m_fEffectDelta = g_vfCurrentBGMBeatPlayer[PLAYER_1] - m_fSecsIntoEffect; m_fSecsIntoEffect = g_vfCurrentBGMBeatPlayerNoOffset[PLAYER_1]; diff --git a/src/NoteField.cpp b/src/NoteField.cpp index c60b0db328..49b6df3b0c 100644 --- a/src/NoteField.cpp +++ b/src/NoteField.cpp @@ -768,6 +768,8 @@ void NoteField::DrawPrimitives() { // XXX Hack: Set Actor's active player number so the notes get the flashing that matches the steps. + // save the active player number (so they can nest) + PlayerNumber pnLastActivePlayerNumber = m_pPlayerState->m_PlayerNumber; Actor::m_ActivePlayerNumber = m_pPlayerState->m_PlayerNumber; //LOG->Trace( "NoteField::DrawPrimitives()" ); @@ -1252,6 +1254,9 @@ void NoteField::DrawPrimitives() } cur->m_GhostArrowRow.Draw(); + + // restore the active player number + Actor::m_ActivePlayerNumber = pnLastActivePlayerNumber; } void NoteField::FadeToFail()