//------------------------------------------------------------------------ void CReplayActor::PlayUpperAnimation(int animId, const CryCharAnimationParams& params, float speedMultiplier, float animTime) { float adjustedLayerTime = 0; ICharacterInstance* pCharacterInstance = GetEntity()->GetCharacter(0); if (animTime == 0 || GetAdjustedLayerTime(pCharacterInstance, animId, params, speedMultiplier, animTime, adjustedLayerTime)) { m_animationProxyUpper.StartAnimationById(GetEntity(), animId, params, speedMultiplier); ISkeletonAnim* pSkeletonAnim = pCharacterInstance->GetISkeletonAnim(); pSkeletonAnim->SetLayerNormalizedTime(params.m_nLayerID, adjustedLayerTime); ICharacterInstance* pShadowCharacter = GetShadowCharacter(); if (pShadowCharacter) { pShadowCharacter->GetISkeletonAnim()->SetLayerNormalizedTime(params.m_nLayerID, adjustedLayerTime); } } }