7 static const float CONST_UD_MIN = -89.0;
8 static const float CONST_UD_MAX = 89.0;
10 static const float CONST_LR_MIN = -160.0;
11 static const float CONST_LR_MAX = 160.0;
14 void CharacterCamera1stPerson(CameraHandlerComponent pCameraHandler)
16 m_pCompartmentAccess = m_OwnerCharacter.GetCompartmentAccessComponent();
18 m_OffsetLS =
"0.0 0.03 -0.07";
19 m_ApplyHeadBob =
true;
23 override void OnActivate(ScriptedCameraItem pPrevCamera, ScriptedCameraItemResult pPrevCameraResult)
25 super.OnActivate(pPrevCamera, pPrevCameraResult);
26 m_bCameraTransition =
false;
30 override void OnUpdate(
float pDt, out ScriptedCameraItemResult pOutResult)
34 pOutResult.m_vBaseAngles = m_CharacterHeadAimingComponent.GetLookAngles();
35 pOutResult.m_fUseHeading = 1.0;
37 pOutResult.m_iDirectBone = GetCameraBoneIndex();
39 if (m_OverrideDirectBoneMode)
40 pOutResult.m_iDirectBoneMode = m_OverrideDirectBoneMode;
44 if (m_bCameraTransition)
46 pOutResult.m_fUseHeading = 0.0;
51 if (sm_iHeadBoneIndex != -1)
52 pOutResult.m_iDirectBone = sm_iHeadBoneIndex;
55 vector additiveRotation =
"0 0 0";
56 m_CharacterHeadAimingComponent.GetLookTransformationLS(pOutResult.m_iDirectBone, pOutResult.m_iDirectBoneMode, m_OffsetLS, additiveRotation, pOutResult.m_CameraTM);
58 if (m_CharacterAnimationComponent.PhysicsIsLinked())
60 pOutResult.m_fUseHeading = 0.0;
63 vector
angles =
Vector(m_OwnerCharacter.GetAimRotationModel()[0] * Math.RAD2DEG, 0.0, 0.0);
67 angles =
angles -
Vector(0, m_OwnerCharacter.GetYawPitchRoll()[1], m_OwnerCharacter.GetYawPitchRoll()[2]);
70 Math3D.AnglesToMatrix(
angles, headingMat);
71 Math3D.MatrixMultiply3(headingMat, pOutResult.m_CameraTM, pOutResult.m_CameraTM);
74 vector vYPR =
"0 0 0";
75 if (!m_bIgnoreCharacterPitch)
76 vYPR[1] = m_OwnerCharacter.GetLocalYawPitchRoll()[1];
78 Math3D.AnglesToMatrix(vYPR, mat);
79 Math3D.MatrixMultiply4(mat, pOutResult.m_CameraTM, pOutResult.m_CameraTM);
81 if (m_UseLookPositionOverrideLS)
82 pOutResult.m_CameraTM[3] = m_LookPositionOverrideLS;
85 m_CharacterCameraHandler.AddViewBobToTransform(pOutResult.m_CameraTM, 1,
false);
87 pOutResult.m_fFOV = m_fFOV;
88 pOutResult.m_fNearPlane = 0.0125;
89 pOutResult.m_bUpdateWhenBlendOut =
true;
90 pOutResult.m_fPositionModelSpace = 0.0;
91 pOutResult.m_bAllowInterpolation =
true;
92 pOutResult.m_pOwner = m_OwnerCharacter;
93 pOutResult.m_pWSAttachmentReference = null;
96 if (m_CharacterCameraHandler)
97 m_CharacterCameraHandler.AddShakeToToTransform(pOutResult.m_CameraTM, pOutResult.m_fFOV);
103 CameraManager cameraManager =
GetGame().GetCameraManager();
107 return cameraManager.GetFirstPersonFOV();
112 CharacterAnimationComponent animComponent = m_ControllerComponent.GetAnimationComponent();
115 CharacterMovementState charMovementState =
new CharacterMovementState();
116 animComponent.GetMovementState(charMovementState);
139 super.OnUpdate(pDt, pOutResult);
140 pOutResult.m_fUseHeading = 0.0;
142 vector additiveRotation =
"0 0 0";
143 m_CharacterHeadAimingComponent.GetLookTransformationLS(pOutResult.m_iDirectBone, pOutResult.m_iDirectBoneMode, m_OffsetLS, additiveRotation, pOutResult.m_CameraTM);
ArmaReforgerScripted GetGame()
ref array< string > angles
override void OnActivate()
override float GetBaseFOV()
CompartmentAccessComponent m_pCompartmentAccess
vector m_OffsetLS
position offset
vector m_LookPositionOverrideLS
bool m_UseLookPositionOverrideLS
proto native vector Vector(float x, float y, float z)