virtual void OnEnter(float blendTime, float duration, const SLookAroundParams ¶ms) { const float smoothTime = params.smoothTime; const uint32 ikLayer = m_scope->GetBaseLayer() + params.scopeLayer; UpdateLookTarget(); Vec3 lookPos = m_entity->GetWorldPos(); lookPos += m_entity->GetRotation() * (m_lookOffset*10.0f); if (!params.animRef.IsEmpty()) { CryCharAnimationParams animParams; animParams.m_fTransTime = blendTime; animParams.m_nLayerID = ikLayer; animParams.m_nFlags = CA_LOOP_ANIMATION|CA_ALLOW_ANIM_RESTART; int animID = m_charInstance->GetIAnimationSet()->GetAnimIDByCRC(params.animRef.crc); m_charInstance->GetISkeletonAnim()->StartAnimationById(animID, animParams); } IAnimationPoseBlenderDir* poseBlenderLook = m_charInstance->GetISkeletonPose()->GetIPoseBlenderLook(); if (poseBlenderLook) { poseBlenderLook->SetState(true); poseBlenderLook->SetTarget(lookPos); poseBlenderLook->SetFadeoutAngle(DEG2RAD(180.0f)); poseBlenderLook->SetPolarCoordinatesSmoothTimeSeconds(smoothTime); poseBlenderLook->SetLayer(ikLayer); poseBlenderLook->SetFadeInSpeed(blendTime); } }
void CAnimActionAIAimPose::InitialiseAimPoseBlender() { IScope& rootScope = GetRootScope(); ICharacterInstance* pCharacterInstance = rootScope.GetCharInst(); CRY_ASSERT( pCharacterInstance ); if ( ! pCharacterInstance ) { return; } ISkeletonPose* pSkeletonPose = pCharacterInstance->GetISkeletonPose(); CRY_ASSERT( pSkeletonPose ); IAnimationPoseBlenderDir* pPoseBlenderAim = pSkeletonPose->GetIPoseBlenderAim(); CRY_ASSERT( pPoseBlenderAim ); if ( ! pPoseBlenderAim ) { return; } const uint32 aimPoseAnimationLayer = rootScope.GetBaseLayer(); pPoseBlenderAim->SetLayer( aimPoseAnimationLayer ); }