21 super.OnActivate(pPrevCamera, pPrevCameraResult);
23 if (m_pCompartmentAccess)
32 SCR_VehicleCameraDataComponent vehicleCamDataComp = SCR_VehicleCameraDataComponent.Cast(
m_OwnerVehicle.FindComponent(SCR_VehicleCameraDataComponent));
33 if (vehicleCamDataComp)
38 m_fRollFactor = vehicleCamData.m_fRollFactor;
39 m_fPitchFactor = vehicleCamData.m_fPitchFactor;
44 if (m_ControllerComponent && m_ControllerComponent.IsGadgetInHands())
53 if (characterCamera3rdPersonVehicle)
55 m_fRollSmooth = characterCamera3rdPersonVehicle.m_fRollSmooth;
56 m_fRollSmoothVel = characterCamera3rdPersonVehicle.m_fRollSmoothVel;
57 m_fPitchSmooth = characterCamera3rdPersonVehicle.m_fPitchSmooth;
58 m_fPitchSmoothVel = characterCamera3rdPersonVehicle.m_fPitchSmoothVel;
63 float thirdPersonCameraOffset = (
m_OwnerVehicle.GetYawPitchRoll()[0] - m_OwnerCharacter.GetYawPitchRoll()[0]) *
Math.DEG2RAD;
65 if (!
float.AlmostEqual(thirdPersonCameraOffset, 0))
74 m_bCameraTransition =
false;
81 if (!m_bCameraTransition)
83 m_UseLookPositionOverrideLS =
true;
86 float yawOffset = -0.5 * m_CharacterHeadAimingComponent.GetLookAngles()[0];
87 vector additiveYaw = { yawOffset, 0.0, 0.0 };
90 const float OneBy90 = 1.0 / 90.0;
91 float t =
Math.Clamp(
Math.AbsFloat(additiveYaw[0] * OneBy90), 0.0, 1.0);
92 float yOffset = 0.03 * t;
93 float zOffset = -0.07 - 0.13 * t;
94 vector offsetLS = { m_OffsetLS[0], m_OffsetLS[1] + yOffset, zOffset };
97 m_CharacterHeadAimingComponent.GetLookTransformationLS(GetCameraBoneIndex(),
EDirectBoneMode.RelativePosition, offsetLS, additiveYaw, resultTM);
98 m_LookPositionOverrideLS = resultTM[3];
100 m_CharacterHeadAimingComponent.SetPitchLimitReductionMultiplier(0.5);
103 super.OnUpdate(pDt, pOutResult);
104 pOutResult.m_fUseHeading = 0.0;
110 if (sm_TagLyingCamera != -1 && sm_TagItemUpdateCols != -1)
113 if (characterAnimationComponent && characterAnimationComponent.IsPrimaryTag(sm_TagLyingCamera))
117 pOutResult.m_vBaseAngles = m_CharacterHeadAimingComponent.GetAimingRotation();
118 pOutResult.m_fUseHeading = 0.0;
120 pOutResult.m_iDirectBone = GetCameraBoneIndex();
121 pOutResult.m_bAllowInterpolation =
true;
123 vector additiveRotation =
"0 0 0";
124 vector offset = m_OffsetLS;
125 m_CharacterHeadAimingComponent.GetLookTransformationLS(pOutResult.m_iDirectBone, pOutResult.m_iDirectBoneMode, offset, additiveRotation, pOutResult.m_CameraTM);
127 m_CharacterCameraHandler.AddViewBobToTransform(pOutResult.m_CameraTM, 1,
false);
130 if (!characterAnimationComponent.IsPrimaryTag(sm_TagItemUpdateCols))
135 m_OwnerCharacter.GetAnimation().GetBoneMatrix(m_OwnerCharacter.GetAnimation().GetBoneIndex(
"Head"), camMatrix);
137 Math3D.AnglesToMatrix(
Vector(0, -camAngles[1], 0), rotMat);
141 Math3D.MatrixMultiply3(rotMat, pOutResult.m_CameraTM, pOutResult.m_CameraTM);
152 if (!vehicle || vehicle.GetPilot() != m_OwnerCharacter)
155 if (m_ControllerComponent && m_ControllerComponent.IsGadgetInHands())