add Actor::QueueCommand
This commit is contained in:
+27
-1
@@ -253,8 +253,15 @@ void Actor::UpdateTweening( float fDeltaTime )
|
|||||||
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
|
m_start = m_current; // set the start position
|
||||||
|
|
||||||
|
// Execute the command in this tween (if any).
|
||||||
|
const ParsedCommand &command = TS.command;
|
||||||
|
if( !command.vTokens.empty() )
|
||||||
|
this->HandleCommand( command );
|
||||||
|
}
|
||||||
|
|
||||||
float fSecsToSubtract = min( TI.m_fTimeLeftInTween, fDeltaTime );
|
float fSecsToSubtract = min( TI.m_fTimeLeftInTween, fDeltaTime );
|
||||||
TI.m_fTimeLeftInTween -= fSecsToSubtract;
|
TI.m_fTimeLeftInTween -= fSecsToSubtract;
|
||||||
fDeltaTime -= fSecsToSubtract;
|
fDeltaTime -= fSecsToSubtract;
|
||||||
@@ -636,7 +643,7 @@ void Actor::HandleCommand( const ParsedCommand &command )
|
|||||||
const CString& sName = sParam(0);
|
const CString& sName = sParam(0);
|
||||||
|
|
||||||
// Commands that go in the tweening queue:
|
// Commands that go in the tweening queue:
|
||||||
if ( sName=="sleep" ) { BeginTweening( fParam(1), TWEEN_LINEAR ); BeginTweening( 0, TWEEN_LINEAR ); }
|
if ( sName=="sleep" ) Sleep( fParam(1) );
|
||||||
else if( sName=="linear" ) BeginTweening( fParam(1), TWEEN_LINEAR );
|
else if( sName=="linear" ) BeginTweening( fParam(1), TWEEN_LINEAR );
|
||||||
else if( sName=="accelerate" ) BeginTweening( fParam(1), TWEEN_ACCELERATE );
|
else if( sName=="accelerate" ) BeginTweening( fParam(1), TWEEN_ACCELERATE );
|
||||||
else if( sName=="decelerate" ) BeginTweening( fParam(1), TWEEN_DECELERATE );
|
else if( sName=="decelerate" ) BeginTweening( fParam(1), TWEEN_DECELERATE );
|
||||||
@@ -729,6 +736,13 @@ void Actor::HandleCommand( const ParsedCommand &command )
|
|||||||
else if( sName=="hidden" ) SetHidden( bParam(1) );
|
else if( sName=="hidden" ) SetHidden( bParam(1) );
|
||||||
else if( sName=="hibernate" ) SetHibernate( fParam(1) );
|
else if( sName=="hibernate" ) SetHibernate( fParam(1) );
|
||||||
else if( sName=="playcommand" ) PlayCommand( sParam(1) );
|
else if( sName=="playcommand" ) PlayCommand( sParam(1) );
|
||||||
|
else if( sName=="queuecommand" )
|
||||||
|
{
|
||||||
|
ParsedCommand newcommand = command;
|
||||||
|
newcommand.vTokens.erase( newcommand.vTokens.begin() );
|
||||||
|
QueueCommand( newcommand );
|
||||||
|
return; // don't to parameter number checking
|
||||||
|
}
|
||||||
|
|
||||||
/* These are commands intended for a Sprite commands, but they will get
|
/* These are commands intended for a Sprite commands, but they will get
|
||||||
* sent to all sub-actors (which aren't necessarily Sprites) on
|
* sent to all sub-actors (which aren't necessarily Sprites) on
|
||||||
@@ -875,3 +889,15 @@ void Actor::CopyTweening( const Actor &from )
|
|||||||
m_TweenStates = from.m_TweenStates;
|
m_TweenStates = from.m_TweenStates;
|
||||||
m_TweenInfo = from.m_TweenInfo;
|
m_TweenInfo = from.m_TweenInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Actor::Sleep( float time )
|
||||||
|
{
|
||||||
|
BeginTweening( time, TWEEN_LINEAR );
|
||||||
|
BeginTweening( 0, TWEEN_LINEAR );
|
||||||
|
}
|
||||||
|
|
||||||
|
void Actor::QueueCommand( ParsedCommand command )
|
||||||
|
{
|
||||||
|
BeginTweening( 0, TWEEN_LINEAR );
|
||||||
|
DestTweenState().command = command;
|
||||||
|
}
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ public:
|
|||||||
RageColor diffuse[4];
|
RageColor diffuse[4];
|
||||||
RageColor glow;
|
RageColor glow;
|
||||||
GlowMode glowmode;
|
GlowMode glowmode;
|
||||||
|
ParsedCommand command; // command to execute when this
|
||||||
|
|
||||||
void Init();
|
void Init();
|
||||||
static void MakeWeightedAverage( TweenState& average_out, const TweenState& ts1, const TweenState& ts2, float fPercentBetween );
|
static void MakeWeightedAverage( TweenState& average_out, const TweenState& ts1, const TweenState& ts2, float fPercentBetween );
|
||||||
@@ -181,6 +182,8 @@ public:
|
|||||||
|
|
||||||
void BeginTweening( float time, TweenType tt = TWEEN_LINEAR );
|
void BeginTweening( float time, TweenType tt = TWEEN_LINEAR );
|
||||||
void StopTweening();
|
void StopTweening();
|
||||||
|
void Sleep( float time );
|
||||||
|
void QueueCommand( ParsedCommand command );
|
||||||
virtual void FinishTweening();
|
virtual void FinishTweening();
|
||||||
virtual void HurryTweening( float factor );
|
virtual void HurryTweening( float factor );
|
||||||
// Let ActorFrame and BGAnimation override
|
// Let ActorFrame and BGAnimation override
|
||||||
|
|||||||
Reference in New Issue
Block a user