void CProceduralContextAim::InitialisePoseBlenderAim() { CRY_ASSERT( m_entity ); const int slot = 0; ICharacterInstance* pCharacterInstance = m_entity->GetCharacter( slot ); if ( pCharacterInstance == NULL ) { return; } ISkeletonPose* pSkeletonPose = pCharacterInstance->GetISkeletonPose(); if ( pSkeletonPose == NULL ) { return; } m_pPoseBlenderAim = pSkeletonPose->GetIPoseBlenderAim(); if ( m_pPoseBlenderAim ) { m_defaultPolarCoordinatesSmoothTimeSeconds = 0.1f; float polarCoordinatesMaxYawDegreesPerSecond = 360.f; float polarCoordinatesMaxPitchDegreesPerSecond = 360.f; float fadeInSeconds = 0.25f; float fadeOutSeconds = 0.25f; float fadeOutMinDistance = 0.f; IScriptTable* pScriptTable = m_entity->GetScriptTable(); if ( pScriptTable ) { SmartScriptTable pProceduralContextAimTable; pScriptTable->GetValue( "ProceduralContextAim", pProceduralContextAimTable ); if ( pProceduralContextAimTable ) { pProceduralContextAimTable->GetValue( "polarCoordinatesSmoothTimeSeconds", m_defaultPolarCoordinatesSmoothTimeSeconds ); pProceduralContextAimTable->GetValue( "polarCoordinatesMaxYawDegreesPerSecond", polarCoordinatesMaxYawDegreesPerSecond ); pProceduralContextAimTable->GetValue( "polarCoordinatesMaxPitchDegreesPerSecond", polarCoordinatesMaxPitchDegreesPerSecond ); pProceduralContextAimTable->GetValue( "fadeInSeconds", fadeInSeconds ); pProceduralContextAimTable->GetValue( "fadeOutSeconds", fadeOutSeconds ); pProceduralContextAimTable->GetValue( "fadeOutMinDistance", fadeOutMinDistance ); } } m_defaultPolarCoordinatesMaxSmoothRateRadiansPerSecond = Vec2( DEG2RAD( polarCoordinatesMaxYawDegreesPerSecond ), DEG2RAD( polarCoordinatesMaxPitchDegreesPerSecond ) ); m_pPoseBlenderAim->SetPolarCoordinatesSmoothTimeSeconds( m_defaultPolarCoordinatesSmoothTimeSeconds ); m_pPoseBlenderAim->SetPolarCoordinatesMaxRadiansPerSecond( m_defaultPolarCoordinatesMaxSmoothRateRadiansPerSecond ); m_pPoseBlenderAim->SetFadeInSpeed( fadeInSeconds ); m_pPoseBlenderAim->SetFadeOutSpeed( fadeOutSeconds ); m_pPoseBlenderAim->SetFadeOutMinDistance( fadeOutMinDistance ); m_pPoseBlenderAim->SetState( false ); } }
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 ); }