23 lines
689 B
TypeScript
23 lines
689 B
TypeScript
export class DeltaTime {
|
|
private static lastTime = Date.now()
|
|
private static initialized = false
|
|
private static _dt = 0
|
|
|
|
static get dt(): number {
|
|
if (!DeltaTime.initialized) {
|
|
DeltaTime.lastTime = Date.now()
|
|
DeltaTime.initialized = true
|
|
window.requestAnimationFrame(DeltaTime.tick)
|
|
return 0
|
|
}
|
|
const clamp = (min: number, max: number, value: number) => Math.min(max, Math.max(min, value))
|
|
return clamp(0, 100, DeltaTime._dt)
|
|
}
|
|
|
|
static tick(nowish: number) {
|
|
DeltaTime._dt = nowish - DeltaTime.lastTime
|
|
DeltaTime.lastTime = nowish
|
|
|
|
window.requestAnimationFrame(DeltaTime.tick)
|
|
}
|
|
} |