From 3489e8682089c71c42b30eca80d7230b2ecf44f8 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sun, 24 Oct 2021 08:05:50 +0200 Subject: Add clock --- src/system/clock.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/system/clock.c (limited to 'src/system/clock.c') diff --git a/src/system/clock.c b/src/system/clock.c new file mode 100644 index 0000000..3ec2276 --- /dev/null +++ b/src/system/clock.c @@ -0,0 +1,27 @@ +#include "../../include/mgl/system/clock.h" +#include + +/* TODO: Implement for macOS */ + +static double clock_get_monotonic_seconds() { + struct timespec ts; + ts.tv_sec = 0; + ts.tv_nsec = 0; + clock_gettime(CLOCK_MONOTONIC, &ts); + return (double)ts.tv_sec + (double)ts.tv_nsec * 0.000000001; +} + +void mgl_clock_init(mgl_clock *self) { + self->captured_seconds = clock_get_monotonic_seconds(); +} + +double mgl_clock_restart(mgl_clock *self) { + const double new_time_seconds = clock_get_monotonic_seconds(); + const double elapsed_time_seconds = self->captured_seconds - new_time_seconds; + self->captured_seconds = new_time_seconds; + return elapsed_time_seconds; +} + +double mgl_clock_get_elapsed_time_seconds(mgl_clock *self) { + return clock_get_monotonic_seconds() - self->captured_seconds; +} -- cgit v1.2.3