puzzle/public/gameloop.js

34 lines
651 B
JavaScript
Raw Normal View History

2021-05-09 13:49:40 +02:00
"use strict"
2020-11-07 11:35:29 +01:00
export const run = options => {
const fps = options.fps || 60
const slow = options.slow || 1
const update = options.update
const render = options.render
const raf = window.requestAnimationFrame
const step = 1 / fps
const slowStep = slow * step
let now
let dt = 0
let last = window.performance.now()
const frame = () => {
now = window.performance.now()
dt = dt + Math.min(1, (now - last) / 1000) // duration capped at 1.0 seconds
while (dt > slowStep) {
dt = dt - slowStep
update(step)
}
render(dt / slow)
last = now
raf(frame)
}
raf(frame)
}
export default {
run
2021-05-09 13:49:40 +02:00
}