DayZ 1.27
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 строка 160

161 {
162 float breathing_offset_x;
163 float breathing_offset_y;
164
165 float noise_offset_x;
166 float noise_offset_y;
167
168 float shake_offset_x;
169 float shake_offset_y;
170
171 float recoil_offset_mouse_x;
172 float recoil_offset_mouse_y;
173
174 float recoil_offset_hands_x;
175 float recoil_offset_hands_y;
176
177 float kuru_offset_x;
178 float kuru_offset_y;
179
180 float player_stamina = m_PlayerPb.GetStaminaHandler().GetSyncedStaminaNormalized();
181
182 #ifdef DEVELOPER
183 DbgPrintAimingImplement("Player: " + m_PlayerPb + " | ProcessAimFilters | timestamp: " + m_PlayerPb.GetSimulationTimeStamp());
184 #endif
185
186 //negates stamina effect during hold breath
187 if (m_PlayerPb.IsHoldingBreath())
188 {
189 player_stamina = 1;
190 }
191 float speed = CalculateSpeedMultiplier(player_stamina);
192 m_TotalTime += pDt * speed;
193
194 if (m_PlayerPb.IsHoldingBreath() && !m_HoldingBreathSet)
195 {
197 m_StaminaPercentage = m_PlayerPb.GetStaminaHandler().GetStamina() / m_PlayerPb.GetStaminaHandler().GetStaminaMax();
198 }
199 else if (!m_PlayerPb.IsHoldingBreath() && m_HoldingBreathSet)
200 {
202 }
203
204 float adjusted_sway_multiplier = CalculateSwayMultiplier();
205 m_LastSwayMultiplier = adjusted_sway_multiplier;
206
207 m_SwayWeight = CalculateWeight( stance_index, player_stamina, 0.5/*m_PlayerPb.m_CameraSwayModifier*/, m_PlayerPb.IsHoldingBreath()) * adjusted_sway_multiplier;
208
210 ApplyBreathingPattern(breathing_offset_x, breathing_offset_y, 3.0, m_TotalTime, m_SwayWeight);
211 ApplyHorizontalNoise(noise_offset_x, noise_offset_y, 0.2, 0.5, 3.0 * m_SwayModifier[0], speed, 3 * m_SwayModifier[1], m_SwayWeight, pDt);
212
213 int shake_level = m_PlayerPb.GetShakeLevel();
214 if (shake_level != 0)
215 {
216 ApplyShakes(shake_offset_x, shake_offset_y, shake_level);
217 }
218
220 if (m_CurrentRecoil)
221 {
222 m_CurrentRecoil.Update(pModel, recoil_offset_mouse_x, recoil_offset_mouse_y, recoil_offset_hands_x, recoil_offset_hands_y, pDt);
223 }
224
225 if (m_KuruShake)
226 {
227 m_KuruShake.Update(pDt, kuru_offset_x, kuru_offset_y);
228 }
229
231 pModel.m_fAimXHandsOffset = breathing_offset_x + noise_offset_x + recoil_offset_hands_x + shake_offset_x + kuru_offset_x;
232 pModel.m_fAimYHandsOffset = breathing_offset_y + noise_offset_y + recoil_offset_hands_y + shake_offset_y + kuru_offset_y;
233
234 #ifdef DEVELOPER
235 DbgPrintAimingImplement("breathing_offset_y: " + breathing_offset_y);
236 DbgPrintAimingImplement("noise_offset_y: " + noise_offset_y);
237 DbgPrintAimingImplement("recoil_offset_hands_y: " + recoil_offset_hands_y);
238 DbgPrintAimingImplement("shake_offset_y: " + shake_offset_y);
239 DbgPrintAimingImplement("kuru_offset_y: " + kuru_offset_y);
240 DbgPrintAimingImplement("pModel.m_fAimYHandsOffset: " + pModel.m_fAimYHandsOffset);
241 #endif
243 pModel.m_fAimXCamOffset = -shake_offset_x - recoil_offset_hands_x - kuru_offset_x + m_CamShakeX;
244 pModel.m_fAimYCamOffset = -shake_offset_y - recoil_offset_hands_y - kuru_offset_y + m_CamShakeY;
245
246
247 #ifdef DEVELOPER
248 DbgPrintAimingImplement("m_CamShakeY: " + m_CamShakeY);
249 DbgPrintAimingImplement("pModel.m_fAimYCamOffset: " + pModel.m_fAimYCamOffset);
250 #endif
251
253 if (stance_index == DayZPlayerConstants.STANCEIDX_RAISEDPRONE)
254 {
255 float newVal = DayZPlayerUtils.LinearRangeClamp(pModel.m_fCurrentAimX, pModel.m_fCurrentAimY, m_AimXClampRanges);
256 pModel.m_fAimYHandsOffset += newVal - pModel.m_fCurrentAimY;
257 }
258 float absAimY = Math.AbsFloat(pModel.m_fCurrentAimY);
259 pModel.m_fAimYHandsOffset = Math.Clamp(pModel.m_fAimYHandsOffset,absAimY - 89.9,89.9 - absAimY); //'90' leads to rounding errors down the line
260
261 if (m_PlayerDpi.IsInOptics() && m_KuruShake)
262 {
263 //TODO - do not offset mouse
264 }
266 pModel.m_fAimXMouseShift = recoil_offset_mouse_x -kuru_offset_x / 10;
267 pModel.m_fAimYMouseShift = recoil_offset_mouse_y + kuru_offset_y / 10;
268
269 #ifdef DEVELOPER
270 DbgPrintAimingImplement("recoil_offset_mouse_y: " + recoil_offset_mouse_y);
271 DbgPrintAimingImplement("pModel.m_fAimYMouseShift: " + pModel.m_fAimYMouseShift);
272 #endif
273
274 if (m_PlayerPb.IsHoldingBreath() && !m_HoldingBreathSet)
275 {
276 m_HoldingBreathSet = true;
277 m_HorizontalNoiseXAxisOffset = noise_offset_x;
278 m_BreathingXAxisOffset = breathing_offset_x;
279 m_BreathingYAxisOffset = breathing_offset_y;
280 }
281 else if (!m_PlayerPb.IsHoldingBreath() && m_HoldingBreathSet)
282 {
283 m_HoldingBreathSet = false;
284 }
285
286 if (!m_PlayerPb.IsHoldingBreath() && m_LastSwayMultiplier == PlayerSwayConstants.SWAY_MULTIPLIER_DEFAULT && m_HorizontalNoiseXAxisOffset != 0)
287 {
291 }
292
293 if (m_PlayerPb.IsHoldingBreath())
294 {
295 m_PlayerPb.DepleteStamina(EStaminaModifiers.HOLD_BREATH,pDt*speed);
296 }
297 #ifdef DEVELOPER
298 DbgPrintAimingImplement("----------------------------");
299 #endif
300 return true;
301 }
void DayZPlayerUtils()
cannot be instantiated
Определения DayZPlayerUtils.c:465
EStaminaModifiers
Определения EStaminaModifiers.c:2
ref KuruShake m_KuruShake
Определения DayZPlayerImplementAiming.c:62
static float m_AimXClampRanges[]
Определения DayZPlayerImplementAiming.c:71
float CalculateWeight(int stance_index, float current_stamina, float camera_sway_modifier, bool holding_breath)
Определения DayZPlayerImplementAiming.c:422
float m_HorizontalNoiseXAxisOffset
Определения DayZPlayerImplementAiming.c:52
void DbgPrintAimingImplement(string val)
Определения DayZPlayerImplementAiming.c:455
float CalculateSpeedMultiplier(float stamina)
Определения DayZPlayerImplementAiming.c:344
void ApplyShakes(out float x_axis, out float y_axis, int level)
Определения DayZPlayerImplementAiming.c:407
ref RecoilBase m_CurrentRecoil
Определения DayZPlayerImplementAiming.c:58
void ApplyBreathingPattern(out float x_axis, out float y_axis, float pAmplitude, float pTotalTime, float weight)
Определения DayZPlayerImplementAiming.c:368
DayZPlayerImplement m_PlayerDpi
Определения DayZPlayerImplementAiming.c:43
float CalculateSwayMultiplier()
Определения DayZPlayerImplementAiming.c:303
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:389
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(), 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_HoldingBreathSet, m_HorizontalNoiseXAxisOffset, m_KuruShake, m_LastSwayMultiplier, m_PlayerDpi, m_PlayerPb, m_ReferenceTime, m_StaminaPercentage, m_SwayModifier, m_SwayWeight и m_TotalTime.