improve tween synchronization
This commit is contained in:
+13
-9
@@ -203,23 +203,26 @@ void Actor::EndDraw()
|
||||
|
||||
void Actor::UpdateTweening( float fDeltaTime )
|
||||
{
|
||||
// update tweening
|
||||
if( m_TweenStates.empty() )
|
||||
while( 1 )
|
||||
{
|
||||
if( m_TweenStates.empty() ) // nothing to do
|
||||
return;
|
||||
|
||||
// we are performing a tween
|
||||
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
|
||||
|
||||
if( TI.m_fTimeLeftInTween == TI.m_fTweenTime ) // we are just beginning this tween
|
||||
{
|
||||
// set the start position
|
||||
m_start = m_current;
|
||||
}
|
||||
m_start = m_current; // set the start position
|
||||
|
||||
TI.m_fTimeLeftInTween -= fDeltaTime;
|
||||
float fSecsToSubtract = min( TI.m_fTimeLeftInTween, fDeltaTime );
|
||||
TI.m_fTimeLeftInTween -= fSecsToSubtract;
|
||||
fDeltaTime -= fSecsToSubtract;
|
||||
|
||||
if( TI.m_fTimeLeftInTween <= 0 ) // The tweening is over. Stop the tweening
|
||||
if( TI.m_fTimeLeftInTween == 0 ) // Current tween is over. Stop.
|
||||
{
|
||||
m_current = TS;
|
||||
|
||||
@@ -246,6 +249,7 @@ void Actor::UpdateTweening( float fDeltaTime )
|
||||
|
||||
TweenState::MakeWeightedAverage( m_current, m_start, TS, fPercentAlongPath );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool Actor::IsFirstUpdate()
|
||||
|
||||
Reference in New Issue
Block a user