From cfb9d284c5ad03355cffd08a5eda7d476134443c Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Sun, 16 Jan 2005 04:35:47 +0000 Subject: [PATCH] simplify: combine two Actor deques into one --- stepmania/src/Actor.cpp | 57 +++++++++++++++++++---------------------- stepmania/src/Actor.h | 12 ++++++--- 2 files changed, 34 insertions(+), 35 deletions(-) diff --git a/stepmania/src/Actor.cpp b/stepmania/src/Actor.cpp index 19e376448a..71f8c1aa6d 100644 --- a/stepmania/src/Actor.cpp +++ b/stepmania/src/Actor.cpp @@ -15,8 +15,7 @@ float Actor::g_fCurrentBGMTime = 0, Actor::g_fCurrentBGMBeat; * that shouldn't change the position of the actor. */ void Actor::Reset() { - m_TweenStates.clear(); - m_TweenInfo.clear(); + m_Tweens.clear(); m_pTempState = NULL; @@ -245,15 +244,16 @@ void Actor::UpdateTweening( float fDeltaTime ) { while( 1 ) { - if( m_TweenStates.empty() ) // nothing to do + if( m_Tweens.empty() ) // nothing to do return; if( fDeltaTime == 0 ) // nothing will change return; // update current tween state - TweenState &TS = m_TweenStates[0]; // earliest tween - TweenInfo &TI = m_TweenInfo[0]; // earliest tween + // earliest tween + TweenState &TS = m_Tweens[0].state; + TweenInfo &TI = m_Tweens[0].info; if( TI.m_fTimeLeftInTween == TI.m_fTweenTime ) // we are just beginning this tween { @@ -274,8 +274,7 @@ void Actor::UpdateTweening( float fDeltaTime ) m_current = TS; // delete the head tween - m_TweenStates.pop_front(); - m_TweenInfo.pop_front(); + m_Tweens.pop_front(); } else // in the middle of tweening. Recalcute the current position. { @@ -372,21 +371,19 @@ void Actor::BeginTweening( float time, TweenType tt ) time = max( time, 0 ); - DEBUG_ASSERT( m_TweenStates.size() < 50 ); // there's no reason for the number of tweens to ever go this large + DEBUG_ASSERT( m_Tweens.size() < 50 ); // there's no reason for the number of tweens to ever go this large // add a new TweenState to the tail, and initialize it - m_TweenStates.resize( m_TweenStates.size()+1 ); - m_TweenInfo.resize( m_TweenInfo.size()+1 ); + m_Tweens.resize( m_Tweens.size()+1 ); - ASSERT( m_TweenStates.size() == m_TweenInfo.size() ); + // latest + TweenState &TS = m_Tweens.back().state; + TweenInfo &TI = m_Tweens.back().info; - TweenState &TS = m_TweenStates.back(); // latest - TweenInfo &TI = m_TweenInfo.back(); // latest - - if( m_TweenStates.size() >= 2 ) // if there was already a TS on the stack + if( m_Tweens.size() >= 2 ) // if there was already a TS on the stack { // initialize the new TS from the last TS in the list - TS = m_TweenStates[m_TweenStates.size()-2]; + TS = m_Tweens[m_Tweens.size()-2].state; // don't inherit the queued state's command TS.command.Clear(); @@ -405,8 +402,7 @@ void Actor::BeginTweening( float time, TweenType tt ) void Actor::StopTweening() { - m_TweenStates.clear(); - m_TweenInfo.clear(); + m_Tweens.clear(); } void Actor::FinishTweening() @@ -417,10 +413,10 @@ void Actor::FinishTweening() void Actor::HurryTweening( float factor ) { - for( unsigned i = 0; i < m_TweenInfo.size(); ++i ) + for( unsigned i = 0; i < m_Tweens.size(); ++i ) { - m_TweenInfo[i].m_fTimeLeftInTween *= factor; - m_TweenInfo[i].m_fTweenTime *= factor; + m_Tweens[i].info.m_fTimeLeftInTween *= factor; + m_Tweens[i].info.m_fTweenTime *= factor; } } @@ -787,8 +783,8 @@ float Actor::GetTweenTimeLeft() const tot += m_fHibernateSecondsLeft; - for( unsigned i=0; i m_TweenStates; // use deque for contant time delete of the head - deque m_TweenInfo; + struct TweenStateAndInfo + { + TweenState state; + TweenInfo info; + }; + deque m_Tweens; // use deque for contant time delete of the head - TweenState& LatestTween() { ASSERT(m_TweenStates.size()>0); return m_TweenStates.back(); }; + TweenState& LatestTween() { ASSERT(m_Tweens.size()>0); return m_Tweens.back().state; }; // // Temporary variables that are filled just before drawing