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 &params)
	{
		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 );
}