From 318b2437f9db0513ec9a42bc202d5f6f48eebc2a Mon Sep 17 00:00:00 2001 From: jaynus Date: Sun, 10 May 2015 07:42:53 -0700 Subject: [PATCH] Applied virtual time acceleration to the master ACE_time. Created ACE_tickTime macro, to provide same-frame millisecond resolution. --- addons/common/XEH_preInit.sqf | 1 + addons/common/functions/fnc_timePFH.sqf | 7 ++++--- addons/main/script_macros.hpp | 4 ++++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 881d77e156..cb688a419e 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -316,6 +316,7 @@ if (hasInterface) then { ACE_time = diag_tickTime; ACE_realTime = diag_tickTime; ACE_virtualTime = diag_tickTime; +ACE_tickTime = diag_tickTime; ACE_gameTime = time; PREP(timePFH); diff --git a/addons/common/functions/fnc_timePFH.sqf b/addons/common/functions/fnc_timePFH.sqf index e8f0be1efd..968df846cc 100644 --- a/addons/common/functions/fnc_timePFH.sqf +++ b/addons/common/functions/fnc_timePFH.sqf @@ -7,9 +7,9 @@ _lastRealTime = ACE_realTime; _lastGameTime = ACE_gameTime; ACE_gameTime = time; -ACE_realTime = diag_tickTime; +ACE_tickTime = diag_tickTime; -_delta = ACE_realTime - _lastRealTime; +_delta = ACE_tickTime - _lastRealTime; if(ACE_gameTime <= _lastGameTime) then { ACE_paused = true; // Game is paused or not running @@ -18,7 +18,8 @@ if(ACE_gameTime <= _lastGameTime) then { } else { ACE_paused = false; // Time is updating + ACE_realTime = ACE_realTime + _delta; ACE_virtualTime = ACE_virtualTime + (_delta * accTime); - ACE_time = ACE_time + _delta; + ACE_time = ACE_virtualTime; }; diff --git a/addons/main/script_macros.hpp b/addons/main/script_macros.hpp index d4b6739918..416cc6981f 100644 --- a/addons/main/script_macros.hpp +++ b/addons/main/script_macros.hpp @@ -82,4 +82,8 @@ #define HASHLIST_SET(hashList, index, value) ([hashList, index, value, __FILE__, __LINE__] call EFUNC(common,hashListSet)) #define HASHLIST_PUSH(hashList, value) ([hashList, value, __FILE__, __LINE__] call EFUNC(common,hashListPush)) +// Time functions for accuracy per frame +#define ACE_tickTime (ACE_tickTime + (diag_tickTime - ACE_tickTime)) + + #include "script_debug.hpp" \ No newline at end of file