always update m_fSecsIntoEffect
add GetEffectDeltaTime() to allow easy access to the effect timer
This commit is contained in:
+20
-16
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user