From a8bcacc95045102e67f2feabbdddf79535837554 Mon Sep 17 00:00:00 2001 From: jacopograndi Date: Thu, 19 Aug 2021 18:46:51 +0200 Subject: forgot to make repo until now --- timing/timing.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ timing/timing.h | 24 ++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 timing/timing.cpp create mode 100644 timing/timing.h (limited to 'timing') diff --git a/timing/timing.cpp b/timing/timing.cpp new file mode 100644 index 0000000..37c5f40 --- /dev/null +++ b/timing/timing.cpp @@ -0,0 +1,44 @@ +#include "timing.h" + +timing_sdl::timing_sdl (double fps) { + frame_time = 1/fps; + last_time = SDL_GetTicks(); + frame_counter = 0; + tot_time = 0; + unprocessed_time = 0; + frames = 0; + render = false; +} + +void timing_sdl::process () { + render = false; + + double startTime = SDL_GetTicks(); + double passedTime = (startTime - last_time)/1000; + last_time = startTime; + + unprocessed_time += passedTime; + frame_counter += passedTime; + tot_time += passedTime; + + if (frame_counter >= 1.0) { + //printf("FPS: %i | %f ms\n", frames, 1000.0 / ((double)frames)); + frames = 0; + frame_counter = 0; + } +} + +bool timing_sdl::check_process () { + if (unprocessed_time > frame_time) { + render = true; + unprocessed_time -= frame_time; + return true; + } else { + return false; + } +} + +bool timing_sdl::check_render () { + if (render) { frames ++; } + return render; +} \ No newline at end of file diff --git a/timing/timing.h b/timing/timing.h new file mode 100644 index 0000000..f420582 --- /dev/null +++ b/timing/timing.h @@ -0,0 +1,24 @@ +#ifndef TIMING_H +#define TIMING_H + +#define SDL_MAIN_HANDLED +#include + +class timing_sdl { + public: + timing_sdl(double fps); + void process(); + bool check_process(); + bool check_render(); + + private: + double frame_time; + double last_time; + double frame_counter; + double tot_time; + double unprocessed_time; + int frames; + bool render; +}; + +#endif \ No newline at end of file -- cgit v1.2.3-54-g00ecf