/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/Engine/Foundation/Time/Implementation/DefaultTimeStepSmoothing.cpp
57 строк
1 KB
C-Core
Re-enabled security relevant warnings (#1339)
25 июн 2024, 12:03
Не верифицирован
25 июн 2024, 12:03
7083663
Код
Авторство
О чём код?
#include <Foundation/FoundationPCH.h> #include <Foundation/Time/DefaultTimeStepSmoothing.h> ezDefaultTimeStepSmoothing::ezDefaultTimeStepSmoothing() { m_fLerpFactor = 0.2f; } void ezDefaultTimeStepSmoothing::Reset(const ezClock* pClock) { EZ_IGNORE_UNUSED(pClock); m_LastTimeSteps.Clear(); } ezTime ezDefaultTimeStepSmoothing::GetSmoothedTimeStep(ezTime rawTimeStep, const ezClock* pClock) { rawTimeStep = ezMath::Clamp(rawTimeStep * pClock->GetSpeed(), pClock->GetMinimumTimeStep(), pClock->GetMaximumTimeStep()); if (m_LastTimeSteps.GetCount() < 10) { m_LastTimeSteps.PushBack(rawTimeStep); m_LastTimeStepTaken = rawTimeStep; return m_LastTimeStepTaken; } if (!m_LastTimeSteps.CanAppend(1)) m_LastTimeSteps.PopFront(1); m_LastTimeSteps.PushBack(rawTimeStep); ezStaticArray<ezTime, 11> Sorted; Sorted.SetCountUninitialized(m_LastTimeSteps.GetCount()); for (ezUInt32 i = 0; i < m_LastTimeSteps.GetCount(); ++i) Sorted[i] = m_LastTimeSteps[i]; Sorted.Sort(); ezUInt32 uiFirstSample = 2; ezUInt32 uiLastSample = 8; ezTime tAvg; for (ezUInt32 i = uiFirstSample; i <= uiLastSample; ++i) { tAvg = tAvg + Sorted[i]; } tAvg = tAvg / (double)((uiLastSample - uiFirstSample) + 1.0); m_LastTimeStepTaken = ezMath::Lerp(m_LastTimeStepTaken, tAvg, m_fLerpFactor); return m_LastTimeStepTaken; }