From be5419e77c7fafec69720577443f9cf758e141ca Mon Sep 17 00:00:00 2001 From: Mitchell Richters Date: Tue, 25 Aug 2020 17:50:09 +1000 Subject: [PATCH] - i_time: Add `I_GetBuildTimeFrac()`. * Currently not needed, but adding for feature parity. --- source/common/utility/i_time.cpp | 14 ++++++++++++++ source/common/utility/i_time.h | 3 ++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/source/common/utility/i_time.cpp b/source/common/utility/i_time.cpp index 2103c9830..ce14e52d4 100644 --- a/source/common/utility/i_time.cpp +++ b/source/common/utility/i_time.cpp @@ -79,6 +79,11 @@ static uint64_t TicToNS(int tic) return static_cast(tic) * 1'000'000'000 / GameTicRate; } +static uint64_t BuildTicToNS(int tic) +{ + return static_cast(tic) * 1'000'000'000 / 120; +} + void I_SetFrameTime() { // Must only be called once per frame/swapbuffers. @@ -184,6 +189,15 @@ double I_GetTimeFrac() return (CurrentFrameStartTime - ticStartTime) / (double)(ticNextTime - ticStartTime); } +double I_GetBuildTimeFrac() +{ + int currentTic = NSToBuildTic(CurrentFrameStartTime - FirstFrameStartTime); + uint64_t ticStartTime = FirstFrameStartTime + BuildTicToNS(currentTic); + uint64_t ticNextTime = FirstFrameStartTime + BuildTicToNS(currentTic + 1); + + return (CurrentFrameStartTime - ticStartTime) / (double)(ticNextTime - ticStartTime); +} + void I_FreezeTime(bool frozen) { if (frozen) diff --git a/source/common/utility/i_time.h b/source/common/utility/i_time.h index 230765053..1f28df893 100644 --- a/source/common/utility/i_time.h +++ b/source/common/utility/i_time.h @@ -12,13 +12,14 @@ int I_GetTime(); // same, but using nanoseconds uint64_t I_GetTimeNS(); -// Called by Build games in liew of totalclock, returns current time in tics at ticrate of 120. +// Called by Build games in lieu of totalclock, returns current time in tics at ticrate of 120. int I_GetBuildTime(); // Reset timer variables to zero when called. void I_ResetTime(); double I_GetTimeFrac(); +double I_GetBuildTimeFrac(); // like I_GetTime, except it waits for a new tic before returning int I_WaitForTic(int);