80 CompartmentAccessComponent compartmentAccess =
m_OwnerCharacter.GetCompartmentAccessComponent();
81 if (compartmentAccess && compartmentAccess.IsInCompartment())
91 SCR_VehicleCameraDataComponent vehicleCamDataComp = SCR_VehicleCameraDataComponent.Cast(vehicle.
FindComponent(SCR_VehicleCameraDataComponent));
93 SCR_VehicleCameraDataComponent ownerCamDataComp = SCR_VehicleCameraDataComponent.Cast(compartmentOwner.
FindComponent(SCR_VehicleCameraDataComponent));
98 if (!vehicleCamData || !vehicleCamData.m_bOverrideVehicleSettings)
159 super.OnActivate(pPrevCamera, pPrevCameraResult);
165 vector f = pPrevCamera.GetBaseAngles();
173 if (characterCamera1stPersonVehicle)
175 m_fRollSmooth = characterCamera1stPersonVehicle.m_fRollSmooth;
185 if (!
float.AlmostEqual(thirdPersonCameraOffset, 0))
207 CompartmentAccessComponent compartmentAccess =
m_OwnerCharacter.GetCompartmentAccessComponent();
208 if (compartmentAccess && compartmentAccess.IsInCompartment())
236 bool bCharacterAttached =
true;
250 characterOffset =
m_vCameraCenter.Multiply4(vehMat).InvMultiply4(charaMat);
251 bCharacterAttached =
false;
257 localVelocity = physics.GetVelocity().InvMultiply3(vehMat);
258 localAngVelocity = physics.GetAngularVelocity().InvMultiply3(vehMat);
265 steeringAngle = simulation.GetSteering();
270 Math3D.MatrixIdentity4(vehMat);
291 bool isFocused =
false;
300 if (
float.AlmostEqual(v.LengthSq(), 0.0))
311 float focusLevel = 0;
314 float camHeight =
m_fHeight + focusLevel;
317 if (bCharacterAttached)
324 Math3D.AnglesToMatrix(
Vector(0, 0, -yawPitchRoll[2]), orientation);
325 Math3D.MatrixMultiply3(orientation, pOutResult.m_CameraTM, pOutResult.m_CameraTM);
328 rollAngle = yawPitchRoll[2] *
m_fRollFactor *
Math.DEG2RAD * pOutResult.m_CameraTM[2][2];
331 float heightSign = vehMat[1][1];
332 characterOffset = characterOffset +
Vector(0, heightSign * camHeight, 0);
337 rollAngle = yawPitchRoll[2] * (1.0 -
m_fRollFactor) *
Math.DEG2RAD * pOutResult.m_CameraTM[2][2];
340 characterOffset = characterOffset +
Vector(0, camHeight, 0);
342 Math3D.AnglesToMatrix({0, yawPitchRoll[1], yawPitchRoll[2]}, pitchRollMat);
343 characterOffset = characterOffset.Multiply3(pitchRollMat);
346 float rollMask =
Math.Max(0, vehMat[1][1]);
347 SCR_Math3D.RotateAround(pOutResult.m_CameraTM,
vector.Zero, pOutResult.m_CameraTM[2], -rollAngle * rollMask, pOutResult.m_CameraTM);
349 pOutResult.m_CameraTM[3] = characterOffset;
353 pOutResult.m_CameraTM[3] = characterOffset +
Vector(0, camHeight, 0);
357 UpdateViewBob(pDt, localVelocity, localAngVelocity);
364 pOutResult.m_CameraTM[3] = pOutResult.m_CameraTM[3] + translation;
369 bool applyCharAngle =
true;
373 if (characterAnimationComponent && characterAnimationComponent.IsPrimaryTag(
sm_TagLyingCamera))
374 applyCharAngle =
false;
384 SCR_Math3D.RotateAround(pOutResult.m_CameraTM, pOutResult.m_CameraTM[3], pOutResult.m_CameraTM[0], 0, pOutResult.m_CameraTM);
390 vector camAngles =
Math3D.MatrixToAngles(pOutResult.m_CameraTM);
391 camAngles[1] = camAngles[1] - camAngles[1]*0.65 * focusLevel;
392 Math3D.AnglesToMatrix(camAngles, pOutResult.m_CameraTM);
396 pOutResult.m_fUseHeading = 0.0;
399 pOutResult.m_pWSAttachmentReference = null;
401 pOutResult.m_bAllowCollisionSolver = bCharacterAttached;
403 pOutResult.m_bAllowInterpolation =
true;