From 9d6e5252a50c5f89197e9c2ead794589223d31aa Mon Sep 17 00:00:00 2001 From: bjorn Date: Tue, 16 May 2017 20:25:29 -0600 Subject: [PATCH] lovr.timer.getAverageDelta; --- src/api/timer.c | 6 ++++++ src/timer/timer.c | 5 +++++ src/timer/timer.h | 2 ++ 3 files changed, 13 insertions(+) diff --git a/src/api/timer.c b/src/api/timer.c index f875dcba..5a51efa9 100644 --- a/src/api/timer.c +++ b/src/api/timer.c @@ -13,6 +13,11 @@ int l_lovrTimerGetDelta(lua_State* L) { return 1; } +int l_lovrTimerGetAverageDelta(lua_State* L) { + lua_pushnumber(L, lovrTimerGetAverageDelta()); + return 1; +} + int l_lovrTimerGetFPS(lua_State* L) { lua_pushnumber(L, lovrTimerGetFPS()); return 1; @@ -36,6 +41,7 @@ int l_lovrTimerSleep(lua_State* L) { const luaL_Reg lovrTimer[] = { { "getDelta", l_lovrTimerGetDelta }, + { "getAverageDelta", l_lovrTimerGetAverageDelta }, { "getFPS", l_lovrTimerGetFPS }, { "getTime", l_lovrTimerGetTime }, { "step", l_lovrTimerStep }, diff --git a/src/timer/timer.c b/src/timer/timer.c index 59a6494b..57c037b8 100644 --- a/src/timer/timer.c +++ b/src/timer/timer.c @@ -28,6 +28,7 @@ double lovrTimerStep() { timerState.tickSum -= timerState.tickBuffer[timerState.tickIndex]; timerState.tickSum += timerState.dt; timerState.tickBuffer[timerState.tickIndex] = timerState.dt; + timerState.averageDelta = timerState.tickSum / TICK_SAMPLES; timerState.fps = (int) (1 / (timerState.tickSum / TICK_SAMPLES) + .5); if (++timerState.tickIndex == TICK_SAMPLES) { timerState.tickIndex = 0; @@ -35,6 +36,10 @@ double lovrTimerStep() { return timerState.dt; } +double lovrTimerGetAverageDelta() { + return timerState.averageDelta; +} + int lovrTimerGetFPS() { return timerState.fps; } diff --git a/src/timer/timer.h b/src/timer/timer.h index dfdbfdc7..e706653c 100644 --- a/src/timer/timer.h +++ b/src/timer/timer.h @@ -9,6 +9,7 @@ typedef struct { int tickIndex; double tickSum; double tickBuffer[TICK_SAMPLES]; + double averageDelta; int fps; } TimerState; @@ -16,5 +17,6 @@ void lovrTimerInit(); double lovrTimerGetDelta(); double lovrTimerGetTime(); double lovrTimerStep(); +double lovrTimerGetAverageDelta(); int lovrTimerGetFPS(); void lovrTimerSleep(double seconds);