You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2026-01-06 19:41:11 +00:00
Merge pull request #64101 from timothyqiu/subsecond
This commit is contained in:
@@ -547,6 +547,23 @@ uint64_t OS_UWP::get_unix_time() const {
|
||||
return (*(uint64_t *)&ft - *(uint64_t *)&fep) / 10000000;
|
||||
};
|
||||
|
||||
double OS_UWP::get_subsecond_unix_time() const {
|
||||
// 1 Windows tick is 100ns
|
||||
const uint64_t WINDOWS_TICKS_PER_SECOND = 10000000;
|
||||
const uint64_t TICKS_TO_UNIX_EPOCH = 116444736000000000LL;
|
||||
|
||||
SYSTEMTIME st;
|
||||
GetSystemTime(&st);
|
||||
FILETIME ft;
|
||||
SystemTimeToFileTime(&st, &ft);
|
||||
uint64_t ticks_time;
|
||||
ticks_time = ft.dwHighDateTime;
|
||||
ticks_time <<= 32;
|
||||
ticks_time |= ft.dwLowDateTime;
|
||||
|
||||
return (double)(ticks_time - TICKS_TO_UNIX_EPOCH) / WINDOWS_TICKS_PER_SECOND;
|
||||
}
|
||||
|
||||
void OS_UWP::delay_usec(uint32_t p_usec) const {
|
||||
int msec = p_usec < 1000 ? 1 : p_usec / 1000;
|
||||
|
||||
|
||||
@@ -193,6 +193,7 @@ public:
|
||||
virtual Time get_time(bool utc) const;
|
||||
virtual TimeZoneInfo get_time_zone_info() const;
|
||||
virtual uint64_t get_unix_time() const;
|
||||
virtual double get_subsecond_unix_time() const;
|
||||
|
||||
virtual bool can_draw() const;
|
||||
virtual Error set_cwd(const String &p_cwd);
|
||||
|
||||
@@ -2584,6 +2584,23 @@ uint64_t OS_Windows::get_system_time_msecs() const {
|
||||
return (uint64_t)(ret / WINDOWS_TICK - MSEC_TO_UNIX_EPOCH);
|
||||
}
|
||||
|
||||
double OS_Windows::get_subsecond_unix_time() const {
|
||||
// 1 Windows tick is 100ns
|
||||
const uint64_t WINDOWS_TICKS_PER_SECOND = 10000000;
|
||||
const uint64_t TICKS_TO_UNIX_EPOCH = 116444736000000000LL;
|
||||
|
||||
SYSTEMTIME st;
|
||||
GetSystemTime(&st);
|
||||
FILETIME ft;
|
||||
SystemTimeToFileTime(&st, &ft);
|
||||
uint64_t ticks_time;
|
||||
ticks_time = ft.dwHighDateTime;
|
||||
ticks_time <<= 32;
|
||||
ticks_time |= ft.dwLowDateTime;
|
||||
|
||||
return (double)(ticks_time - TICKS_TO_UNIX_EPOCH) / WINDOWS_TICKS_PER_SECOND;
|
||||
}
|
||||
|
||||
void OS_Windows::delay_usec(uint32_t p_usec) const {
|
||||
if (p_usec < 1000)
|
||||
Sleep(1);
|
||||
|
||||
@@ -520,6 +520,7 @@ public:
|
||||
virtual uint64_t get_unix_time() const;
|
||||
virtual uint64_t get_system_time_secs() const;
|
||||
virtual uint64_t get_system_time_msecs() const;
|
||||
virtual double get_subsecond_unix_time() const;
|
||||
|
||||
virtual bool can_draw() const;
|
||||
virtual Error set_cwd(const String &p_cwd);
|
||||
|
||||
Reference in New Issue
Block a user