Modules/Utils/public/Timing.hpp
2023-06-30 14:04:14 +00:00

58 lines
No EOL
854 B
C++

#pragma once
#include "Environment.hpp"
namespace tp {
typedef alni time_ms;
typedef alni time_ns;
extern time_ms gCurrentTime;
class Timer {
time_ms mStart;
time_ms mDuration;
public:
Timer();
explicit Timer(time_ms time);
time_ms start();
time_ms duration();
void setDuration(time_ms dur);
bool isTimeout();
void reset();
time_ms timePassed();
time_ms remainder();
void wait();
float easeIn(time_ms duration = 0);
float easeOut(time_ms duration = 0);
};
void sleep(time_ms duration);
time_ms get_time();
struct FpsCounter {
halni frames = 0;
Timer time;
halni fps = 0;
FpsCounter() : time(1000) {}
void update(bool log = true) {
frames++;
if (time.isTimeout()) {
fps = frames;
if (log) {
// printf("fps %i \n", fps);
}
frames = 0;
time.reset();
}
}
};
}