UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

83 lines (82 loc) 1.87 kB
"use strict"; function stopEvent(e) { e.preventDefault(); } export class CorePlayerKeyEvents { constructor(player) { this.player = player; this._bounds = { keydown: this._onKeyDown.bind(this), keyup: this._onKeyUp.bind(this) }; } _onKeyDown(e) { if (e.ctrlKey) { return; } switch (e.code) { case "ArrowUp": case "KeyW": this.player.setForward(true); stopEvent(e); break; case "ArrowDown": case "KeyS": this.player.setBackward(true); stopEvent(e); break; case "ArrowRight": case "KeyD": this.player.setRight(true); stopEvent(e); break; case "ArrowLeft": case "KeyA": this.player.setLeft(true); stopEvent(e); break; case "Space": this.player.jump(); stopEvent(e); break; case "ShiftLeft": case "ShiftRight": this.player.setRun(true); stopEvent(e); break; } } _onKeyUp(e) { switch (e.code) { case "ArrowUp": case "KeyW": this.player.setForward(false); break; case "ArrowDown": case "KeyS": this.player.setBackward(false); break; case "ArrowRight": case "KeyD": this.player.setRight(false); break; case "ArrowLeft": case "KeyA": this.player.setLeft(false); break; case "ShiftLeft": case "ShiftRight": this.player.setRun(false); stopEvent(e); break; } } addEvents() { document.addEventListener("keydown", this._bounds.keydown); document.addEventListener("keyup", this._bounds.keyup); } removeEvents() { document.removeEventListener("keydown", this._bounds.keydown); document.removeEventListener("keyup", this._bounds.keyup); } }