From 4166d52c98a7d8f639252e0857a3242450886d7d Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Sun, 28 Aug 2005 18:03:03 +0000 Subject: [PATCH] optimize: save TweenStates instead of re-applying the position function --- stepmania/src/PlayerScoreList.cpp | 18 +++++++++++++++--- stepmania/src/PlayerScoreList.h | 7 +++---- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/stepmania/src/PlayerScoreList.cpp b/stepmania/src/PlayerScoreList.cpp index 9a475421f6..8dbee0c60c 100644 --- a/stepmania/src/PlayerScoreList.cpp +++ b/stepmania/src/PlayerScoreList.cpp @@ -48,7 +48,19 @@ void PlayerScoreList::Init( vector vpPlayerState, vectorGetMetric("PlayerScoreList","ItemPositionCommandFunction") ); + // + { + LuaExpression expr; + expr.SetFromExpression( THEME->GetMetric("PlayerScoreList","ItemPositionCommandFunction") ); + Actor a; + FOREACH( const PlayerState*, m_vpPlayerState, iter ) + { + int i = iter - m_vpPlayerState.begin(); + + PositionItem( expr, &a, i, vpPlayerState.size() ); + m_vtsPositions.push_back( a.DestTweenState() ); + } + } GameCommand gc; FOREACH( const PlayerState*, m_vpPlayerState, iter ) @@ -64,7 +76,7 @@ void PlayerScoreList::Init( vector vpPlayerState, vectorRelease( L ); m_vsprBullet[i].Load( THEME->GetPathG("PlayerScoreList","Bullet") ); - PositionItem( m_exprItemPositionCommandFunction, m_vsprBullet[i], i, vpPlayerState.size() ); + m_vsprBullet[i]->DestTweenState() = m_vtsPositions[i]; this->AddChild( m_vsprBullet[i] ); m_vScoreItem[i].Init( vpPlayerState[i], vpPlayerStageStats[i] ); @@ -113,7 +125,7 @@ void PlayerScoreList::Refresh() PlayerScoreItem &psi = m_vScoreItem[iter->iEnabledPlayerIndex]; psi.SetDrawOrder( -i ); psi.BeginTweening( 0.5f, Actor::TWEEN_DECELERATE ); - PositionItem( m_exprItemPositionCommandFunction, &psi, i, m_vpPlayerStageStats.size() ); + psi.DestTweenState() = m_vtsPositions[i]; } this->SortByDrawOrder(); diff --git a/stepmania/src/PlayerScoreList.h b/stepmania/src/PlayerScoreList.h index 1e2b15dbef..58004ca028 100644 --- a/stepmania/src/PlayerScoreList.h +++ b/stepmania/src/PlayerScoreList.h @@ -32,12 +32,11 @@ protected: vector m_vpPlayerState; vector m_vpPlayerStageStats; - LuaExpression m_exprItemPositionCommandFunction; // params: self,itemIndex,numItems - RageTimer m_timerRefreshCountdown; - vector m_vsprBullet; - vector m_vScoreItem; + vector m_vtsPositions; // size = num joined players + vector m_vsprBullet; // size = num joined players + vector m_vScoreItem; // size = num joined players }; #endif