diff --git a/doc/en/scripting/builtins/libtime.md b/doc/en/scripting/builtins/libtime.md index 8fcd4035f..51e125e9c 100644 --- a/doc/en/scripting/builtins/libtime.md +++ b/doc/en/scripting/builtins/libtime.md @@ -1,13 +1,21 @@ -# *time* library +# *time* Library -```python -time.uptime() -> float +```lua +-- Returns the time since engine startup in seconds and milliseconds. +time.uptime() -> number + +-- Returns the time delta in seconds and milliseconds (time elapsed since the previous frame) +time.delta() -> number + +-- Returns UTC time in seconds +time.utc_time() -> int + +-- Returns local (system) time in seconds +time.local_time() -> int + +-- Returns the local time offset from UTC in seconds +time.utc_offset() -> int + +-- Returns high-precision time in seconds (elapsed since the engine startup). +time.precise_time() -> number ``` - -Returns time elapsed since the engine started. - -```python -time.delta() -> float -``` - -Returns time elapsed since the last frame. diff --git a/doc/ru/scripting/builtins/libtime.md b/doc/ru/scripting/builtins/libtime.md index 81bae58f7..62e95892a 100644 --- a/doc/ru/scripting/builtins/libtime.md +++ b/doc/ru/scripting/builtins/libtime.md @@ -15,4 +15,7 @@ time.local_time() -> int -- Возвращает смещение локального времени от UTC в секундах time.utc_offset() -> int + +-- Возвращает время высокой точности в секундах. За точку отсчёта берётся запуск движка. +time.precise_time() -> number ``` diff --git a/src/logic/scripting/lua/libs/libtime.cpp b/src/logic/scripting/lua/libs/libtime.cpp index f953955be..342226035 100644 --- a/src/logic/scripting/lua/libs/libtime.cpp +++ b/src/logic/scripting/lua/libs/libtime.cpp @@ -62,11 +62,20 @@ static int l_utc_offset(lua::State* L) { return lua::pushnumber(L, offset); } +static auto start_time = std::chrono::steady_clock::now(); + +static int l_precise_time(lua::State* L) { + auto time = std::chrono::steady_clock::now(); + std::chrono::duration delta = time - start_time; + return lua::pushnumber(L, delta.count()); +} + const luaL_Reg timelib[] = { {"uptime", lua::wrap}, {"delta", lua::wrap}, {"utc_time", lua::wrap}, {"utc_offset", lua::wrap}, {"local_time", lua::wrap}, + {"precise_time", lua::wrap}, {nullptr, nullptr} };