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

◆ ProcessAimFilters()

bool DayZPlayerImplementAiming::ProcessAimFilters ( float pDt,
SDayZPlayerAimingModel pModel,
int stance_index )
inlineprotected

get sway

get recoil

hands offset

cam offset

clamp aim ranges

mouse offset

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

163 {
164 float breathing_offset_x;
165 float breathing_offset_y;
166
167 float noise_offset_x;
168 float noise_offset_y;
169
170 float shake_offset_x;
171 float shake_offset_y;
172
173 float recoil_offset_mouse_x;
174 float recoil_offset_mouse_y;
175
176 float recoil_offset_hands_x;
177 float recoil_offset_hands_y;
178
179 float kuru_offset_x;
180 float kuru_offset_y;
181
182 float player_stamina = m_PlayerPb.GetStaminaHandler().GetSyncedStaminaNormalized();
183
184 #ifdef DEVELOPER
185 DbgPrintAimingImplement("Player: " + m_PlayerPb + " | ProcessAimFilters | timestamp: " + m_PlayerPb.GetSimulationTimeStamp());
186 #endif
187
188 //negates stamina effect during hold breath
189 if (m_PlayerPb.IsHoldingBreath())
190 {
191 player_stamina = 1;
192 }
193 float speed = CalculateSpeedMultiplier(player_stamina);
194 m_TotalTime += pDt * speed;
195
196 if (m_PlayerPb.IsHoldingBreath() && !m_HoldingBreathSet)
197 {
199 m_StaminaPercentage = m_PlayerPb.GetStaminaHandler().GetSyncedStaminaNormalized();
200 m_HoldBreathSwayCoef = Math.InverseLerp(0,PlayerSwayConstants.HOLD_BREATH_STAMINA_THRESHOLD,m_StaminaPercentage);
202 m_HoldBreathSwayCoef = Math.Lerp(PlayerSwayConstants.HOLD_BREATH_STAMINA_THRESHOLD,1,m_HoldBreathSwayCoef);
203 }
204 else if (!m_PlayerPb.IsHoldingBreath() && m_HoldingBreathSet)
205 {
207 }
208
209 float adjusted_sway_multiplier = CalculateSwayMultiplier();
210 m_LastSwayMultiplier = adjusted_sway_multiplier;
211
212 m_SwayWeight = CalculateWeight( stance_index, player_stamina, 0.5/*m_PlayerPb.m_CameraSwayModifier*/, m_PlayerPb.IsHoldingBreath()) * adjusted_sway_multiplier;
213
215 ApplyBreathingPattern(breathing_offset_x, breathing_offset_y, 3.0, m_TotalTime, m_SwayWeight);
216 ApplyHorizontalNoise(noise_offset_x, noise_offset_y, 0.2, 0.5, 3.0 * m_SwayModifier[0], speed, 3 * m_SwayModifier[1], m_SwayWeight, pDt);
217
218 int shake_level = m_PlayerPb.GetShakeLevel();
219 if (shake_level != 0)
220 {
221 ApplyShakes(shake_offset_x, shake_offset_y, shake_level);
222 }
223
225 if (m_CurrentRecoil)
226 {
227 m_CurrentRecoil.Update(pModel, recoil_offset_mouse_x, recoil_offset_mouse_y, recoil_offset_hands_x, recoil_offset_hands_y, pDt);
228 }
229
230 if (m_KuruShake)
231 {
232 m_KuruShake.Update(pDt, kuru_offset_x, kuru_offset_y);
233 }
234
236 pModel.m_fAimXHandsOffset = breathing_offset_x + noise_offset_x + recoil_offset_hands_x + shake_offset_x + kuru_offset_x;
237 pModel.m_fAimYHandsOffset = breathing_offset_y + noise_offset_y + recoil_offset_hands_y + shake_offset_y + kuru_offset_y;
238
239 #ifdef DEVELOPER
240 DbgPrintAimingImplement("breathing_offset_y: " + breathing_offset_y);
241 DbgPrintAimingImplement("noise_offset_y: " + noise_offset_y);
242 DbgPrintAimingImplement("recoil_offset_hands_y: " + recoil_offset_hands_y);
243 DbgPrintAimingImplement("shake_offset_y: " + shake_offset_y);
244 DbgPrintAimingImplement("kuru_offset_y: " + kuru_offset_y);
245 DbgPrintAimingImplement("pModel.m_fAimYHandsOffset: " + pModel.m_fAimYHandsOffset);
246 #endif
248 pModel.m_fAimXCamOffset = -shake_offset_x - recoil_offset_hands_x - kuru_offset_x + m_CamShakeX;
249 pModel.m_fAimYCamOffset = -shake_offset_y - recoil_offset_hands_y - kuru_offset_y + m_CamShakeY;
250
251
252 #ifdef DEVELOPER
253 DbgPrintAimingImplement("m_CamShakeY: " + m_CamShakeY);
254 DbgPrintAimingImplement("pModel.m_fAimYCamOffset: " + pModel.m_fAimYCamOffset);
255 #endif
256
258 if (stance_index == DayZPlayerConstants.STANCEIDX_RAISEDPRONE)
259 {
260 float newVal = DayZPlayerUtils.LinearRangeClamp(pModel.m_fCurrentAimX, pModel.m_fCurrentAimY, m_AimXClampRanges);
261 pModel.m_fAimYHandsOffset += newVal - pModel.m_fCurrentAimY;
262 }
263 float absAimY = Math.AbsFloat(pModel.m_fCurrentAimY);
264 pModel.m_fAimYHandsOffset = Math.Clamp(pModel.m_fAimYHandsOffset,absAimY - 89.9,89.9 - absAimY); //'90' leads to rounding errors down the line
265
266 if (m_PlayerDpi.IsInOptics() && m_KuruShake)
267 {
268 //TODO - do not offset mouse
269 }
271 pModel.m_fAimXMouseShift = recoil_offset_mouse_x -kuru_offset_x / 10;
272 pModel.m_fAimYMouseShift = recoil_offset_mouse_y + kuru_offset_y / 10;
273
274 #ifdef DEVELOPER
275 DbgPrintAimingImplement("recoil_offset_mouse_y: " + recoil_offset_mouse_y);
276 DbgPrintAimingImplement("pModel.m_fAimYMouseShift: " + pModel.m_fAimYMouseShift);
277 #endif
278
279 if (m_PlayerPb.IsHoldingBreath() && !m_HoldingBreathSet)
280 {
281 m_HoldingBreathSet = true;
282 m_HorizontalNoiseXAxisOffset = noise_offset_x;
283 m_BreathingXAxisOffset = breathing_offset_x;
284 m_BreathingYAxisOffset = breathing_offset_y;
285 }
286 else if (!m_PlayerPb.IsHoldingBreath() && m_HoldingBreathSet)
287 {
288 m_HoldingBreathSet = false;
289 }
290
291 if (!m_PlayerPb.IsHoldingBreath() && m_LastSwayMultiplier == PlayerSwayConstants.SWAY_MULTIPLIER_DEFAULT && m_HorizontalNoiseXAxisOffset != 0)
292 {
296 }
297
298 if (m_PlayerPb.IsHoldingBreath())
299 {
300 m_PlayerPb.DepleteStaminaEx(EStaminaModifiers.HOLD_BREATH, pDt * speed, m_HoldBreathSwayCoef);
301 }
302 #ifdef DEVELOPER
303 DbgPrintAimingImplement("----------------------------");
304 #endif
305 return true;
306 }
void DayZPlayerUtils()
cannot be instantiated
Определения DayZPlayerUtils.c:465
EStaminaModifiers
Определения EStaminaModifiers.c:2
ref KuruShake m_KuruShake
Определения DayZPlayerImplementAiming.c:64
static float m_AimXClampRanges[]
Определения DayZPlayerImplementAiming.c:73
float m_HoldBreathSwayCoef
stamina percentage at hold breath start
Определения DayZPlayerImplementAiming.c:49
float CalculateWeight(int stance_index, float current_stamina, float camera_sway_modifier, bool holding_breath)
Определения DayZPlayerImplementAiming.c:427
float m_HorizontalNoiseXAxisOffset
Определения DayZPlayerImplementAiming.c:54
void DbgPrintAimingImplement(string val)
Определения DayZPlayerImplementAiming.c:460
float CalculateSpeedMultiplier(float stamina)
Определения DayZPlayerImplementAiming.c:349
void ApplyShakes(out float x_axis, out float y_axis, int level)
Определения DayZPlayerImplementAiming.c:412
ref RecoilBase m_CurrentRecoil
Определения DayZPlayerImplementAiming.c:60
void ApplyBreathingPattern(out float x_axis, out float y_axis, float pAmplitude, float pTotalTime, float weight)
Определения DayZPlayerImplementAiming.c:373
DayZPlayerImplement m_PlayerDpi
Определения DayZPlayerImplementAiming.c:44
float CalculateSwayMultiplier()
Определения DayZPlayerImplementAiming.c:308
void ApplyHorizontalNoise(out float x_axis, out float y_axis, float smooth_time, float max_velocity_low, float max_velocity_high, float velocity_modifier, float max_distance, float weight, float pDt)
Определения DayZPlayerImplementAiming.c:394
float m_fAimXCamOffset
Определения dayzplayer.c:1104
float m_fAimYMouseShift
Определения dayzplayer.c:1109
float m_fAimXHandsOffset
Определения dayzplayer.c:1106
float m_fAimYCamOffset
Определения dayzplayer.c:1105
float m_fCurrentAimY
Определения dayzplayer.c:1102
float m_fAimYHandsOffset
Определения dayzplayer.c:1107
float m_fAimXMouseShift
Определения dayzplayer.c:1108
float m_fCurrentAimX
Определения dayzplayer.c:1101
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602

Перекрестные ссылки Math::AbsFloat(), ApplyBreathingPattern(), ApplyHorizontalNoise(), ApplyShakes(), CalculateSpeedMultiplier(), CalculateSwayMultiplier(), CalculateWeight(), Math::Clamp(), DayZPlayerUtils(), DbgPrintAimingImplement(), Math::InverseLerp(), Math::Lerp(), m_AimXClampRanges, m_BreathingXAxisOffset, m_BreathingYAxisOffset, m_CamShakeX, m_CamShakeY, m_CurrentRecoil, SDayZPlayerAimingModel::m_fAimXCamOffset, SDayZPlayerAimingModel::m_fAimXHandsOffset, SDayZPlayerAimingModel::m_fAimXMouseShift, SDayZPlayerAimingModel::m_fAimYCamOffset, SDayZPlayerAimingModel::m_fAimYHandsOffset, SDayZPlayerAimingModel::m_fAimYMouseShift, SDayZPlayerAimingModel::m_fCurrentAimX, SDayZPlayerAimingModel::m_fCurrentAimY, m_HoldBreathSwayCoef, m_HoldingBreathSet, m_HorizontalNoiseXAxisOffset, m_KuruShake, m_LastSwayMultiplier, m_PlayerDpi, m_PlayerPb, m_ReferenceTime, m_StaminaPercentage, m_SwayModifier, m_SwayWeight и m_TotalTime.