22 lines
679 B
C++
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;
|
|
};
|