virtual void OnExit(float blendTime) { IAnimationPoseBlenderDir *poseBlenderLook = m_charInstance->GetISkeletonPose()->GetIPoseBlenderLook(); if (poseBlenderLook) { poseBlenderLook->SetState(false); poseBlenderLook->SetFadeOutSpeed(blendTime); } }
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); } }
virtual void Update(float timePassed) { m_lookAroundTime -= timePassed; if (m_lookAroundTime < 0.0f) { UpdateLookTarget(); } Vec3 lookPos = m_entity->GetWorldPos(); lookPos += m_entity->GetRotation() * (m_lookOffset*10.0f); IAnimationPoseBlenderDir* pIPoseBlenderLook = m_charInstance->GetISkeletonPose()->GetIPoseBlenderLook(); if (pIPoseBlenderLook) { pIPoseBlenderLook->SetState(true); pIPoseBlenderLook->SetTarget(lookPos); pIPoseBlenderLook->SetFadeoutAngle(DEG2RAD(180.0f)); } }
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 ); }