Program Listing for File timeResource.h
↰ Return to documentation for file (PrismEngine/src/timeResource.h)
#pragma once
#include <cmath>
namespace prism {
namespace scene {
struct TimeResource
{
// === Масштабируемое время (игровое) ===
double_t deltaTime = 0.0;
double_t time = 0.0;
// === Немасштабируемое время (реальное) ===
double_t unscaledDeltaTime = 0.0;
double_t unscaledTime = 0.0;
double timeScale = 1.0;
// === Методы управления ===
void update(double_t rawDeltaTime) {
unscaledDeltaTime = rawDeltaTime;
unscaledTime += rawDeltaTime;
deltaTime = rawDeltaTime * timeScale;
time += deltaTime;
}
void setScale(double scale) {
timeScale = scale;
}
void pause() {
timeScale = 0.0;
}
void resume() {
timeScale = 1.0;
}
void togglePause() {
timeScale = (timeScale == 0.0) ? 1.0 : 0.0;
}
bool isPaused() const {
return timeScale == 0.0;
}
void reset(bool keepScale = true) {
time = 0.0;
unscaledTime = 0.0;
if (!keepScale) {
timeScale = 1.0;
}
}
};
}
}