321 {
323 vector playerTransformWS[4];
324 m_pPlayer.GetTransform(playerTransformWS);
325
327 vector cameraPosition = vector.Zero;
329 {
330 vector vehiclePositionWS =
m_Transport.GetOrigin();
331 vector vehiclePositionMS = vehiclePositionWS.
InvMultiply4(playerTransformWS);
333 }
334
339
341 vector posDiffLS = vector.Zero;
342 vector rotDiffLS = vector.Zero;
343
344 vector rotWS =
m_pPlayer.GetOrientation();
345 rotWS = rotWS * Math.DEG2RAD;
346 rotWS[2] = 0;
347
349
351 {
353 posDiffLS = posDiffLS + posDiffWS.
InvMultiply3(playerTransformWS);
354
356 rotDiffLS = rotDiffLS + rotDiffWS.
InvMultiply3(playerTransformWS);
357
358 vector tempRot1 = rotDiffLS;
359 rotDiffLS[0] = tempRot1[1];
360 rotDiffLS[1] = tempRot1[2];
361 rotDiffLS[2] = tempRot1[0];
362
363 rotWS[0] = rotWS[0] + rotDiffLS[0];
364 rotWS[1] = rotWS[1] + rotDiffLS[1];
365 rotWS[2] = rotWS[2] + rotDiffLS[2];
366 }
367
372
376
380 {
381 vector rotTM[3];
382 Math3D.YawPitchRollMatrix(rot, rotTM);
383
384 Math3D.MatrixInvMultiply3(playerTransformWS, rotTM, rotTM);
385
386 vector tempRot = Math3D.MatrixToAngles(rotTM);
387 float lagYaw = tempRot[0];
388 if (lagYaw > 180.0)
389 lagYaw -= 360.0;
391 }
392
396
398
401
403 {
405 }
406
407 Math3D.YawPitchRollMatrix(rot, pOutResult.m_CameraTM);
408
411
413 pOutResult.m_fDistance = distance;
414 pOutResult.m_fUseHeading = 0.0;
415 pOutResult.m_fInsideCamera = 0.0;
416 pOutResult.m_fIgnoreParentRoll = 1.0;
417 pOutResult.m_fIgnoreParentPitch = 1.0;
418 pOutResult.m_fIgnoreParentYaw = 0.0;
419 pOutResult.m_bUpdateEveryFrame =
g_Game.IsPhysicsExtrapolationEnabled();
420
423 pOutResult.m_fPredictCollisionRadius = 1.0;
424
426
427 super.OnUpdate(pDt, pOutResult);
428 }
float UpdateLRAngleUnlocked(out float pAngle, out float pAngleAdd, float pMin, float pMax, float pDt)
float m_CurrentCameraPitch
float UpdateUDAngleUnlocked(out float pAngle, out float pAngleAdd, float pMin, float pMax, float pDt)
void StdFovUpdate(float pDt, out DayZPlayerCameraResult pOutResult)
float m_CurrentCameraRoll
static const float UP_ANGLE_CAP
const float CONST_ANGULAR_LAG_ROLL_STRENGTH
float m_fLagOffsetVelocityZ[1]
static const float CONST_YAW_LAG_REVERSE
float m_fLagOffsetVelocityYaw[1]
float m_fLagOffsetVelocityX[1]
const float CONST_LINEAR_VELOCITY_STRENGTH
static const float CONST_UD_MIN
down limit
float m_fUpDownAngleAdd
up down angle in rad
float m_fLagOffsetVelocityPitch[1]
float m_fLeftRightAngle
left right angle in rad
Transport m_Transport
cache
static const float CONST_LR_MIN
down limit
static const float CONST_SPRING_SMOOTHTIME_YAW
float m_fLagOffsetVelocityY[1]
const float CONST_ANGULAR_LAG_YAW_STRENGTH
const float CONST_ANGULAR_VELOCITY_STRENGTH
const float CONST_ANGULAR_LAG_PITCH_STRENGTH
float m_fDistance
distance from start
static const float CONST_SPRING_SMOOTHTIME_PITCH
static const float CONST_SPRING_SMOOTHTIME_POS_Y
static const float CONST_UD_MAX
up limit
static const float CONST_SPRING_SMOOTHTIME_ROLL
static const float CONST_LR_MAX
up limit
vector m_LagOffsetPosition
lag offsets
float m_fUpDownAngle
runtime values
static const float CONST_SPRING_SMOOTHTIME_POS_Z
vector m_LagOffsetOrientation
vector m_CameraOffsetMS
runtime config
float m_fLeftRightAngleAdd
left right angle in rad
float m_fLagOffsetVelocityRoll[1]
static const float CONST_SPRING_SMOOTHTIME_POS_X
proto vector InvMultiply4(vector mat[4])
Invert-transforms position.
proto vector InvMultiply3(vector mat[3])
Invert-transforms vector.
vector GetCurrentOrientation()
proto native vector GetVelocity(notnull IEntity ent)
Returns linear velocity.
proto vector dBodyGetAngularVelocity(notnull IEntity body)
Gets angular velocity for a rigidbody.