UNPKG

@vladkrutenyuk/three-kvy-core

Version:

Everything you need to create any-complexity 3D apps with Three.js. Empower Three.js with a modular, lifecycle-managed context that seamlessly propagates through objects via reusable features providing structured logic.

23 lines (19 loc) 768 B
import * as KVY from "@vladkrutenyuk/three-kvy-core"; export class InputKeyModule extends KVY.CoreContextModule { keys = new Set(); isKeyDown = (key) => this.keys.has(key); useCtx(ctx) { const onKeyDown = (e) => this.keys.add(e.code); const onKeyUp = (e) => this.keys.delete(e.code); const onBlur = () => this.keys.clear(); const dom = ctx.three.renderer.domElement; dom.addEventListener("keydown", onKeyDown); dom.addEventListener("keyup", onKeyUp); dom.addEventListener("blur", onBlur); return () => { dom.removeEventListener("keydown", onKeyDown); dom.removeEventListener("keyup", onKeyUp); dom.removeEventListener("blur", onBlur); } } }