fleeting-garden/src/utils/delta-time-calculator.ts
2026-05-21 07:43:10 +01:00

32 lines
807 B
TypeScript

import { appConfig } from '../config';
import { clamp } from './math';
export class DeltaTimeCalculator {
private previousTime: DOMHighResTimeStamp | null = null;
constructor() {
document.addEventListener('visibilitychange', this.handleVisibilityChange.bind(this));
}
public calculateDeltaTimeInSeconds(
currentTime: DOMHighResTimeStamp
): DOMHighResTimeStamp {
if (this.previousTime === null) {
this.previousTime = currentTime;
}
const delta = currentTime - this.previousTime;
this.previousTime = currentTime;
return clamp(
delta / 1000,
appConfig.deltaTime.minDeltaTimeSeconds,
appConfig.deltaTime.maxDeltaTimeSeconds
);
}
private handleVisibilityChange() {
if (!document.hidden) {
this.previousTime = null;
}
}
}