Exemple #1
0
bool CActionScope::InstallAnimation(int animID, const CryCharAnimationParams &animParams)
{
    ISkeletonAnim *pSkelAnim = m_scopeContext.charInst->GetISkeletonAnim();
    const bool startAnimationSuccess = pSkelAnim->StartAnimationById(animID, animParams);
    pSkelAnim->SetLayerPlaybackScale(animParams.m_nLayerID, m_speedBias);
    pSkelAnim->SetLayerBlendWeight(animParams.m_nLayerID, m_animWeight);

    return startAnimationSuccess;
}
Exemple #2
0
void CActionScope::Update(float timePassed)
{
    IAction * const pPlayingAction = GetPlayingAction().get();
    if (pPlayingAction)
    {
        ISkeletonAnim *pSkelAnim = m_scopeContext.charInst ? m_scopeContext.charInst->GetISkeletonAnim() : NULL;

        const float newSpeedBias = pPlayingAction->GetSpeedBias();
        const float newAnimWeight = pPlayingAction->GetAnimWeight();

        if (m_speedBias != newSpeedBias)
        {
            m_speedBias = newSpeedBias;

            if(pSkelAnim)
            {
                for (uint32 layer=0; layer<m_numLayers; layer++)
                {
                    pSkelAnim->SetLayerPlaybackScale(m_layer+layer, newSpeedBias);
                }
            }
        }

        if(m_animWeight != newAnimWeight)
        {
            m_animWeight = newAnimWeight;

            if(pSkelAnim)
            {
                for (uint32 layer=0; layer<m_numLayers; layer++)
                {
                    pSkelAnim->SetLayerBlendWeight(m_layer+layer, newAnimWeight);
                }
            }
        }

        timePassed *= m_speedBias;

        m_fragmentTime += timePassed+m_timeIncrement;
    }

    UpdateSequencers(timePassed);
}