31 super.OnActivate(pPrevCamera, pPrevCameraResult);
33 if (m_pCompartmentAccess && m_pCompartmentAccess.IsInCompartment())
40 SCR_VehicleCameraDataComponent vehicleCamDataComp = SCR_VehicleCameraDataComponent.Cast(
m_OwnerVehicle.FindComponent(SCR_VehicleCameraDataComponent));
41 if (vehicleCamDataComp)
46 m_fRollFactor = vehicleCamData.m_fRollFactor;
47 m_fPitchFactor = vehicleCamData.m_fPitchFactor;
67 m_CharacterHeadAimingComponent.SetPitchLimitReductionMultiplier(1.25);
78 static float UpdateAngleWithTarget(out
float pAngle, out
float pAngleAdd, out
float addVelocity,
vector limits,
float pDt,
float target,
float change,
bool freeLook)
82 pAngle =
Math.Clamp(pAngle, limits[0], limits[1]);
84 pAngleAdd =
Math.SmoothCD(pAngleAdd, 0, addVelocity, 0.14, 1000, pDt);
86 return Math.Clamp(pAngle + pAngleAdd, limits[0], limits[1]);
95 pOutResult.m_pWSAttachmentReference = null;
96 pOutResult.m_pOwner = m_OwnerCharacter;
97 pOutResult.m_fPositionModelSpace = 1.0;
98 pOutResult.m_fFOV = m_fFOV;
99 pOutResult.m_fNearPlane = 0.04;
100 pOutResult.m_bAllowInterpolation =
true;
101 pOutResult.m_bUpdateWhenBlendOut =
true;
102 pOutResult.m_fUseHeading = 0.0;
104 pOutResult.m_iDirectBone = -1;
106 vector offset = m_OffsetLS;
110 CharacterControllerComponent charController = m_OwnerCharacter.GetCharacterController();
114 if (charController.IsFreeLookEnabled() ||
m_pTurretController.GetCanAimOnlyInADS() || charController.IsTrackIREnabled())
116 float downLimit =
m_pCompartment.GetFreelookAimLimitOverrideDown();
118 float leftLimit =
m_pCompartment.GetFreelookAimLimitOverrideLeft();
119 float rightLimit =
m_pCompartment.GetFreelookAimLimitOverrideRight();
121 m_CharacterHeadAimingComponent.SetLimitAnglesOverride(downLimit, upLimit, leftLimit, rightLimit);
123 vector lookAnglesOverriden = m_CharacterHeadAimingComponent.GetLookAngles();
128 m_OwnerCharacter.GetAnimation().GetBoneMatrix(sm_iHeadBoneIndex, headBoneMat);
129 m_OwnerCharacter.GetAnimation().GetBoneMatrix(s_iNeckBoneIndex, neckBoneMat);
131 vector neckPosition = neckBoneMat[3] - headBoneMat[3];
135 float neckTraverse = aiming[0] *
m_pCompartment.GetFreelookCameraNeckFollowTraverse();
139 Math3D.MatrixIdentity4(neckOffsetMat);
140 SCR_Math3D.RotateAround(neckOffsetMat, neckPosition,
vector.Up, -
Math.DEG2RAD * (lookAnglesOverriden[0] + neckTraverse), neckOffsetMat);
141 SCR_Math3D.RotateAround(neckOffsetMat, neckPosition, neckOffsetMat[0], -
Math.DEG2RAD * lookAnglesOverriden[1], neckOffsetMat);
144 vector neckOffset = neckOffsetMat[3];
147 neckOffset[0] = neckOffset[0] * neckOffsetScale[0];
148 neckOffset[1] = neckOffset[1] * neckOffsetScale[1];
149 neckOffset[2] = neckOffset[2] * neckOffsetScale[2];
150 offset += neckOffset;
165 if (m_CharacterCameraHandler)
166 m_CharacterCameraHandler.AddShakeToToTransform(pOutResult.m_CameraTM, pOutResult.m_fFOV);