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

◆ CalculateSwayMultiplier()

float DayZPlayerImplementAiming::CalculateSwayMultiplier ( )
inlineprotected

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

304 {
305 float max;
306 float time;
307 float time_clamped;
308 float ret;
309
310 if (m_PlayerPb.IsHoldingBreath())
311 {
313
314 if (time < (PlayerSwayConstants.SWAY_TIME_IN * m_StaminaPercentage))
315 {
316 UpdateSwayState(eSwayStates.HOLDBREATH_IN);
317 max = PlayerSwayConstants.SWAY_TIME_IN * m_StaminaPercentage;
318 time_clamped = Math.Clamp((m_TotalTime - m_SwayStateStartTime),0,max);
319 ret = Math.Lerp(m_LastSwayMultiplier,PlayerSwayConstants.SWAY_MULTIPLIER_STABLE,time_clamped/max);
320 }
321 else if (time >= (PlayerSwayConstants.SWAY_TIME_IN * m_StaminaPercentage) && time < (m_StaminaPercentage * (PlayerSwayConstants.SWAY_TIME_IN + PlayerSwayConstants.SWAY_TIME_STABLE)))
322 {
323 UpdateSwayState(eSwayStates.HOLDBREATH_STABLE);
324 ret = PlayerSwayConstants.SWAY_MULTIPLIER_STABLE;
325 }
326 else
327 {
328 UpdateSwayState(eSwayStates.HOLDBREATH_EXHAUSTED);
329 max = PlayerSwayConstants.SWAY_TIME_EXHAUSTED * m_StaminaPercentage;
330 time_clamped = Math.Clamp((m_TotalTime - m_SwayStateStartTime),0,max);
331 ret = Math.Lerp(PlayerSwayConstants.SWAY_MULTIPLIER_STABLE,PlayerSwayConstants.SWAY_MULTIPLIER_EXHAUSTED,(time_clamped/max));
332 }
333 }
334 else
335 {
337 max = PlayerSwayConstants.SWAY_TIME_OUT;
338 time_clamped = Math.Clamp((m_TotalTime - m_SwayStateStartTime),0,max);
339 ret = Math.Lerp(m_LastSwayMultiplier,1,time_clamped/max);
340 }
341 return ret;
342 }
eSwayStates
Определения DayZPlayerImplementAiming.c:11
bool UpdateSwayState(int state)
Определения DayZPlayerImplementAiming.c:349

Перекрестные ссылки Math::Clamp(), Math::Lerp(), m_LastSwayMultiplier, m_PlayerPb, m_ReferenceTime, m_StaminaPercentage, m_SwayStateStartTime, m_TotalTime и UpdateSwayState().

Используется в ProcessAimFilters().