import { appConfig } from '../config'; const INITIAL_FPS = 60; const FRAME_GAP_RESET_SECONDS = 1; export class FramePerformance { public smoothedFps = INITIAL_FPS; private previousFrameTime: DOMHighResTimeStamp | null = null; public update(time: DOMHighResTimeStamp): void { const previous = this.previousFrameTime; this.previousFrameTime = time; if (previous === null) { return; } const deltaSeconds = (time - previous) / 1000; if (deltaSeconds <= 0 || deltaSeconds > FRAME_GAP_RESET_SECONDS) { return; } const fps = 1 / deltaSeconds; this.smoothedFps = this.smoothedFps * appConfig.simulation.budget.fpsSmoothingRetain + fps * appConfig.simulation.budget.fpsSmoothingNew; } }