diff options
Diffstat (limited to 'src/controller')
-rw-r--r-- | src/controller/gamecontext.ts | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/controller/gamecontext.ts b/src/controller/gamecontext.ts index 4fcc883..1a94e3e 100644 --- a/src/controller/gamecontext.ts +++ b/src/controller/gamecontext.ts @@ -9,7 +9,7 @@ import { Renderer } from '../view/renderer/renderer'; import { Collidable } from '../math/collision'; import { Movement } from '../math/line'; -import { getJSON } from '../util'; +import { getJSON, nextAnimationFrame } from '../util'; import { vec2 } from 'gl-matrix'; @@ -84,7 +84,7 @@ export class GameContext implements CollidableGroup { } }); - window.requestAnimationFrame(this.render); + this.renderLoop(); } public getTranslation(): null { @@ -160,16 +160,18 @@ export class GameContext implements CollidableGroup { this.updateStep(); } - private render = (curTime: number) => { - const time = curTime - this.initTime; - this.update(time); - + private render(): void { this.renderer.setCenter(this.player.pos); this.renderer.clear(); for (const r of [this.mapView, ...this.entities, this.player]) - r.render(time); + r.render(this.time); + } - window.requestAnimationFrame(this.render); + private async renderLoop(): Promise<void> { + while (true) { + this.update(await nextAnimationFrame() - this.initTime); + this.render(); + } } } |