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;
                }
            }
        };
    }
}