79 update(std::max<float>(0, std::min<float>(1, m_elapsed / std::max<float>(
m_duration, FLT_EPSILON))));
89 LOG(
"CActionInterval::reverse() not implemented");
161 m_diffAngle = btVector3( m_dstAngle.y() - m_startAngle.y(),
162 m_dstAngle.x() - m_startAngle.x(),
163 m_dstAngle.z() - m_startAngle.z() );
169 float heading_diff = m_diffAngle.y() * t;
170 float pitch_diff = m_diffAngle.x() * t;
171 float bank_diff = m_diffAngle.z() * t;
173 btQuaternion y_rot = btQuaternion(btVector3(1, 0, 0),
DEGTORAD(heading_diff));
174 btQuaternion x_rot = btQuaternion(btVector3(0, 1, 0),
DEGTORAD(pitch_diff));
175 btQuaternion z_rot = btQuaternion(btVector3(0, 0, 1),
DEGTORAD(bank_diff));
177 btQuaternion final_rot = m_startAngle;
179 final_rot = final_rot * y_rot;
180 final_rot = x_rot * final_rot;
181 final_rot = final_rot * z_rot;
209 float heading_diff = m_dstAngle.y() * t;
210 float pitch_diff = m_dstAngle.x() * t;
211 float bank_diff = m_dstAngle.z() * t;
213 btQuaternion y_rot = btQuaternion(btVector3(1, 0, 0),
DEGTORAD(heading_diff));
214 btQuaternion x_rot = btQuaternion(btVector3(0, 1, 0),
DEGTORAD(pitch_diff));
215 btQuaternion z_rot = btQuaternion(btVector3(0 ,0, 1),
DEGTORAD(bank_diff));
217 btQuaternion final_rot = m_startAngle;
219 final_rot = final_rot * y_rot;
220 final_rot = x_rot * final_rot;
221 final_rot = final_rot * z_rot;
293 va_start(params,action);
303 ((
CSequence*)prev)->initHavingActions(prev_old, now);
323 RE_ASSERT(firstAction != m_actions[0] && firstAction != m_actions[1]);
324 RE_ASSERT(secondAction != m_actions[0] && secondAction != m_actions[1]);
367 new_t = (t-m_split) / (1 - m_split );
372 if ( m_last == -1 ) {
375 m_actions[0]->
update(1.0f);
376 m_actions[0]->
stop();
377 }
else if ( m_last == 0 )
380 m_actions[0]->
update(1.0f);
381 m_actions[0]->
stop();
386 if ( found != m_last )
389 m_actions[found]->
update(new_t);
396 if ( m_last != -1 ) {
397 m_actions[m_last]->
stop();
409 return reversed_sequence;
423 m_callbackMethod = callback_method;
virtual void startWithTarget(CGameObject *target)
virtual void startWithTarget(CGameObject *target)
virtual void initWithDuration(float duration, btVector3 &angle)
virtual void update(float t)
virtual CActionInterval * reverse()
btVector3 m_startPosition
float getDuration() const
virtual void startWithTarget(CGameObject *target)
virtual void initWithDuration(float duration, float sx, float sy, float sz)
virtual void startWithTarget(CGameObject *target)
virtual void update(float t)
void onActionStart(CAction *action)
virtual void update(float t)
virtual void update(float)
CScaleBy(float duration, float sx, float sy, float sz)
CSequence * initHavingActions(CFiniteTimeAction *firstAction, CFiniteTimeAction *secondAction)
virtual void startWithTarget(CGameObject *target)
virtual void initWithDuration(float duration)
virtual void update(float)
virtual void startWithTarget(CGameObject *target)
virtual CActionInterval * reverse()
virtual void startWithTarget(CGameObject *target)
virtual void startWithTarget(CGameObject *target)
virtual void update(float t)
virtual void startWithTarget(CGameObject *target)
void onActionDone(CAction *action)
virtual void initWithDuration(float duration, btVector3 &angle)
virtual CActionInterval * reverse()
static CFiniteTimeAction * actions(CFiniteTimeAction *action,...)
virtual CActionInterval * reverse()
virtual void step(float dt)
virtual void update(float t)
virtual void startWithTarget(CGameObject *target)