DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ OnUpdate() [3/3]

override void DayZPlayerCameraBase::OnUpdate ( float pDt,
out DayZPlayerCameraResult pOutResult )
inlineprotected

update angles from input

См. определение в файле DayZPlayerCameraIronsights.c строка 136

137 {
139 float min;
140 DayZPlayerImplement player = DayZPlayerImplement.Cast(GetGame().GetPlayer());
141 if (player && player.IsPlayerInStance(DayZPlayerConstants.STANCEMASK_RAISEDPRONE))
142 min = CONST_UD_MIN_BACK;
143 else
144 min = CONST_UD_MIN;
145
148
149 // get model space transform matrix of the gun's eye vector
150 vector matTM[4];
151 HumanItemAccessor hia = m_pPlayer.GetItemAccessor();
153 hia.WeaponGetCameraPointBoneRelative(GetCurrentSightEntity(), m_OpticsCamPos, m_OpticsCamDir, m_iBoneIndex, matTM);
154
155 // aim change based on character movement
156 vector aimChangeYPR;
157 float aimChangeX = m_pInput.GetAimDelta(pDt)[0] * Math.RAD2DEG;
158 float aimChangeY = m_pInput.GetAimDelta(pDt)[1] * Math.RAD2DEG;
159
160 HumanCommandMove hcm = m_pPlayer.GetCommand_Move();
161 if (hcm)
162 {
163 float speed = hcm.GetCurrentMovementSpeed();
164
165 if( speed > 0 )
166 m_movementTimeAcc += pDt;
167 else
169
170 aimChangeX += m_movementAmplitudeX * speed * Math.Sin(Math.PI2 * m_movementFrequencyX * m_movementTimeAcc);
171 aimChangeY += m_movementAmplitudeY * speed * Math.Sin(Math.PI2 * m_movementFrequencyY * m_movementTimeAcc);
172 }
173
174 aimChangeYPR[0] = Math.SmoothCD(aimChangeYPR[0], -(m_dynamicsStrength * aimChangeY), m_velocityYaw, m_dynamicsSmoothTime, 1000, pDt);
175 aimChangeYPR[1] = Math.SmoothCD(aimChangeYPR[1], -(m_dynamicsStrength * aimChangeX), m_velocityPitch, m_dynamicsSmoothTime, 1000, pDt);
176 aimChangeYPR[2] = 0;
177
178 vector dynamics[4];
179 Math3D.YawPitchRollMatrix(aimChangeYPR, dynamics);
180 dynamics[3] = vector.Zero;
181
182 // aiming model offsets
183 vector aimingMatTM[4];
184 hia.WeaponGetAimingModelDirTm(aimingMatTM);
185
186 // final offset matrix
187 Math3D.MatrixMultiply4(dynamics, aimingMatTM, dynamics);
188 Math3D.MatrixMultiply4(dynamics, matTM, pOutResult.m_CameraTM);
189
190 AdjustCameraParameters(pDt, pOutResult);
192 UpdateCameraNV(PlayerBase.Cast(m_pPlayer));
193
194 if(m_CameraShake)
195 {
196 float x,y;
197 m_CameraShake.Update(pDt, x, y);
198 DayZPlayerImplement.Cast(m_pPlayer).GetAimingModel().SetCamShakeValues(x, y);
199 }
200 }
float UpdateLRAngleUnlocked(out float pAngle, out float pAngleAdd, float pMin, float pMax, float pDt)
Определения DayZPlayerCamera_Base.c:190
ref CameraShake m_CameraShake
Определения DayZPlayerCamera_Base.c:75
float m_CurrentCameraYaw
Определения DayZPlayerCamera_Base.c:578
float m_CurrentCameraPitch
Определения DayZPlayerCamera_Base.c:579
float UpdateUDAngleUnlocked(out float pAngle, out float pAngleAdd, float pMin, float pMax, float pDt)
Определения DayZPlayerCamera_Base.c:129
void UpdateCameraNV(PlayerBase player)
Определения DayZPlayerCamera_Base.c:421
Icon x
Icon y
PlayerBase GetPlayer()
Определения ModifierBase.c:51
void Update(float delta_time, out float x_axis, out float y_axis)
Определения CameraShake.c:41
EntityAI GetCurrentSightEntity()
Определения DayZPlayerCameraIronsights.c:103
float m_movementFrequencyY
Определения DayZPlayerCameraIronsights.c:29
float m_fLeftRightAngleAdd
left right angle in rad (in freelook only)
Определения DayZPlayerCamera1stPerson.c:96
float m_movementFrequencyX
Определения DayZPlayerCameraIronsights.c:28
float m_dynamicsSmoothTime
Определения DayZPlayerCameraIronsights.c:22
float m_movementAmplitudeY
Определения DayZPlayerCameraIronsights.c:27
static const float CONST_UD_MIN_BACK
down limit on back
Определения DayZPlayerCameraIronsights.c:7
float m_movementAmplitudeX
Определения DayZPlayerCameraIronsights.c:26
int m_iBoneIndex
main bone
Определения DayZPlayerCamera1stPerson.c:90
void AdjustCameraParameters(float pDt, inout DayZPlayerCameraResult pOutResult)
Определения DayZPlayerCameraIronsights.c:220
static const float CONST_LR_MIN
down limit
Определения DayZPlayerCamera1stPerson.c:9
static const float CONST_UD_MAX
up limit
Определения DayZPlayerCamera1stPerson.c:7
static const float CONST_UD_MIN
down limit
Определения DayZPlayerCamera1stPerson.c:6
float m_velocityYaw[1]
camera dynamics
Определения DayZPlayerCameraIronsights.c:19
float m_fUpDownAngleAdd
up down angle in rad
Определения DayZPlayerCamera1stPerson.c:94
float m_fLeftRightAngle
left right angle in rad (in freelook only)
Определения DayZPlayerCamera1stPerson.c:95
float m_velocityPitch[1]
Определения DayZPlayerCameraIronsights.c:20
static const float CONST_LR_MAX
up limit
Определения DayZPlayerCamera1stPerson.c:10
void UpdateBatteryOptics(EntityAI entity)
Определения DayZPlayerCameraIronsights.c:338
float m_fUpDownAngle
up down angle in rad
Определения DayZPlayerCamera1stPerson.c:93
proto native float GetCurrentMovementSpeed()
0,1,2..3 idle, walk, run, sprint
proto native vector GetAimDelta(float dt)
returns aim change (in radians)
static const vector Zero
Определения EnConvert.c:110
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
DayZPlayer m_pPlayer
data
Определения dayzplayer.c:135
HumanInputController m_pInput
human input
Определения dayzplayer.c:136
proto native CGame GetGame()
void HumanCommandMove()
Определения human.c:514
void HumanItemAccessor()
Определения humanitems.c:141

Перекрестные ссылки AdjustCameraParameters(), CONST_LR_MAX, CONST_LR_MIN, CONST_UD_MAX, CONST_UD_MIN, CONST_UD_MIN_BACK, HumanCommandMove::GetCurrentMovementSpeed(), GetCurrentSightEntity(), GetGame(), GetPlayer(), HumanItemAccessor(), m_CameraShake, m_CurrentCameraPitch, m_CurrentCameraYaw, m_dynamicsSmoothTime, m_dynamicsStrength, m_fLeftRightAngle, m_fLeftRightAngleAdd, m_fUpDownAngle, m_fUpDownAngleAdd, m_iBoneIndex, m_movementAmplitudeX, m_movementAmplitudeY, m_movementFrequencyX, m_movementFrequencyY, m_movementTimeAcc, m_OpticsCamDir, m_OpticsCamPos, m_pInput, m_pPlayer, m_velocityPitch, m_velocityYaw, Math3D::MatrixMultiply4(), Math::PI2, Math::RAD2DEG, Math::Sin(), Math::SmoothCD(), UpdateBatteryOptics(), UpdateCameraNV(), UpdateLRAngleUnlocked(), UpdateUDAngleUnlocked(), x, y, Math3D::YawPitchRollMatrix() и vector::Zero.