Files
dota_factory/src/lib/sim/TickDriver.h
2026-04-19 15:49:18 +02:00

22 lines
679 B
C++

#pragma once
// Accumulator-based fixed-timestep driver. Decouples wall-clock render rate
// from the 30 Hz simulation tick rate. See architecture.md §Render Loop.
class TickDriver
{
public:
TickDriver() = default;
// Adds elapsedWallMs * gameSpeedMultiplier to the accumulator and returns
// how many simulation ticks should be stepped this frame. The remainder
// stays in the accumulator for the next call.
// A multiplier of 0.0 freezes accumulation (pause).
// Valid multipliers per REQ-UI-SPEED: 0, 0.5, 1, 2, 4.
int advance(double elapsedWallMs, double gameSpeedMultiplier);
void reset();
private:
double m_accumulatorMs = 0.0;
};