/** Executes an animation action. * * This function executes an animation action. * * @param id The ID of the animation action that should be blended. * @param delayIn The time in seconds until the animation action reaches the * full weight from the beginning of its execution. * @param delayOut The time in seconds in which the animation action reaches * zero weight at the end of its execution. * @param weightTarget The weight to interpolate the animation action to. * @param autoLock This prevents the Action from being reset and removed * on the last keyframe if true. * * @return One of the following values: * \li \b true if successful * \li \b false if an error happend *****************************************************************************/ bool CalMixer::executeAction(int id, float delayIn, float delayOut, float weightTarget, bool autoLock) { // get the core animation CalCoreAnimation *pCoreAnimation; pCoreAnimation = m_pModel->getCoreModel()->getCoreAnimation(id); if(pCoreAnimation == 0) { return false; } // allocate a new animation action instance CalAnimationAction *pAnimationAction = new CalAnimationAction(pCoreAnimation); if(pAnimationAction == 0) { CalError::setLastError(CalError::MEMORY_ALLOCATION_FAILED, __FILE__, __LINE__); return false; } // insert new animation into the table m_listAnimationAction.push_front(pAnimationAction); // execute the animation pAnimationAction->execute(delayIn, delayOut, weightTarget, autoLock); pAnimationAction->checkCallbacks(0, m_pModel); return true; }
/** Executes an animation action. * * This function executes an animation action. * * @param id The ID of the animation cycle that should be blended. * @param delayIn The time in seconds until the animation action reaches the * full weight from the beginning of its execution. * @param delayOut The time in seconds in which the animation action reaches * zero weight at the end of its execution. * @param weightTarget No doxygen comment for this. FIXME. * @param autoLock This prevents the Action from being reset and removed * on the last keyframe if true. * * @return One of the following values: * \li \b true if successful * \li \b false if an error happend *****************************************************************************/ bool CalMixer::executeAction(int id, float delayIn, float delayOut, float weightTarget, bool autoLock) { // Create a new action. Test for error conditions. CalAnimationAction * aa = newAnimationAction(id); if( !aa ) return false; // If we got the action, then configure it for being update(). return aa->execute(delayIn, delayOut, weightTarget, autoLock); }