improve tween synchronization

This commit is contained in:
Chris Danford
2003-05-16 21:09:26 +00:00
parent 5227ac7ea1
commit c97ead322e
+13 -9
View File
@@ -203,23 +203,26 @@ void Actor::EndDraw()
void Actor::UpdateTweening( float fDeltaTime ) void Actor::UpdateTweening( float fDeltaTime )
{ {
// update tweening while( 1 )
if( m_TweenStates.empty() ) {
if( m_TweenStates.empty() ) // nothing to do
return; return;
// we are performing a tween if( fDeltaTime == 0 ) // nothing will change
return;
// update current tween state
TweenState &TS = m_TweenStates[0]; // earliest tween TweenState &TS = m_TweenStates[0]; // earliest tween
TweenInfo &TI = m_TweenInfo[0]; // earliest tween TweenInfo &TI = m_TweenInfo[0]; // earliest tween
if( TI.m_fTimeLeftInTween == TI.m_fTweenTime ) // we are just beginning this tween if( TI.m_fTimeLeftInTween == TI.m_fTweenTime ) // we are just beginning this tween
{ m_start = m_current; // set the start position
// set the start position
m_start = m_current;
}
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; m_current = TS;
@@ -246,6 +249,7 @@ void Actor::UpdateTweening( float fDeltaTime )
TweenState::MakeWeightedAverage( m_current, m_start, TS, fPercentAlongPath ); TweenState::MakeWeightedAverage( m_current, m_start, TS, fPercentAlongPath );
} }
}
} }
bool Actor::IsFirstUpdate() bool Actor::IsFirstUpdate()