always update m_fSecsIntoEffect

add GetEffectDeltaTime() to allow easy access to the effect timer
This commit is contained in:
Glenn Maynard
2004-10-18 04:19:20 +00:00
parent 0634c55431
commit 1e7e57a1c8
2 changed files with 25 additions and 17 deletions
+20 -16
View File
@@ -30,6 +30,7 @@ void Actor::Reset()
m_Effect = no_effect; m_Effect = no_effect;
m_fSecsIntoEffect = 0; m_fSecsIntoEffect = 0;
m_fEffectDelta = 0;
m_fEffectPeriodSeconds = 1; m_fEffectPeriodSeconds = 1;
m_fEffectDelay = 0; m_fEffectDelay = 0;
m_fEffectOffset = 0; m_fEffectOffset = 0;
@@ -305,6 +306,25 @@ void Actor::Update( float fDeltaTime )
if( m_fHibernateSecondsLeft > 0 ) if( m_fHibernateSecondsLeft > 0 )
return; return;
switch( m_EffectClock )
{
case CLOCK_TIMER:
m_fSecsIntoEffect += fDeltaTime;
m_fEffectDelta = fDeltaTime;
m_fSecsIntoEffect = fmodfp( m_fSecsIntoEffect, m_fEffectPeriodSeconds + m_fEffectDelay );
break;
case CLOCK_BGM_BEAT:
m_fEffectDelta = g_fCurrentBGMBeat - m_fSecsIntoEffect;
m_fSecsIntoEffect = g_fCurrentBGMBeat;
break;
case CLOCK_BGM_TIME:
m_fEffectDelta = g_fCurrentBGMTime - m_fSecsIntoEffect;
m_fSecsIntoEffect = g_fCurrentBGMTime;
break;
}
// update effect // update effect
switch( m_Effect ) switch( m_Effect )
{ {
@@ -319,22 +339,6 @@ void Actor::Update( float fDeltaTime )
case bounce: case bounce:
case bob: case bob:
case pulse: case pulse:
switch( m_EffectClock )
{
case CLOCK_TIMER:
m_fSecsIntoEffect += fDeltaTime;
m_fSecsIntoEffect = fmodfp( m_fSecsIntoEffect, m_fEffectPeriodSeconds + m_fEffectDelay );
break;
case CLOCK_BGM_BEAT:
m_fSecsIntoEffect = g_fCurrentBGMBeat;
break;
case CLOCK_BGM_TIME:
m_fSecsIntoEffect = g_fCurrentBGMTime;
break;
}
break; break;
case spin: case spin:
m_current.rotation += fDeltaTime*m_vEffectMagnitude; m_current.rotation += fDeltaTime*m_vEffectMagnitude;
+5 -1
View File
@@ -364,12 +364,16 @@ protected:
// Stuff for effects // Stuff for effects
// //
Effect m_Effect; Effect m_Effect;
float m_fSecsIntoEffect; float m_fSecsIntoEffect, m_fEffectDelta;
float m_fEffectPeriodSeconds; float m_fEffectPeriodSeconds;
float m_fEffectDelay; float m_fEffectDelay;
float m_fEffectOffset; float m_fEffectOffset;
EffectClock m_EffectClock; EffectClock m_EffectClock;
/* This can be used in lieu of the fDeltaTime parameter to Update() to
* follow the effect clock. Actor::Update must be called first. */
float GetEffectDeltaTime() const { return m_fEffectDelta; }
RageColor m_effectColor1; RageColor m_effectColor1;
RageColor m_effectColor2; RageColor m_effectColor2;
RageVector3 m_vEffectMagnitude; RageVector3 m_vEffectMagnitude;