initial commit
This commit is contained in:
commit
e8c3f9862a
193 files changed
+29795
No files matched your search
@@ -0,0 +1,56 @@
|
||||
import { Vector2D } from './Vector2D.js';
|
||||
|
||||
export class Input {
|
||||
constructor(canvas, viewport) {
|
||||
this.keys = new Set();
|
||||
this.pressed = new Set();
|
||||
this.mouse = new Vector2D(viewport.width / 2, viewport.height / 2);
|
||||
this.mouseDown = false;
|
||||
this.mouseClicked = false;
|
||||
|
||||
window.addEventListener('keydown', (event) => {
|
||||
this.keys.add(event.key.toLowerCase());
|
||||
if (!event.repeat) {
|
||||
this.pressed.add(event.key.toLowerCase());
|
||||
}
|
||||
if (event.key === ' ') {
|
||||
event.preventDefault();
|
||||
if (
|
||||
document.activeElement &&
|
||||
document.activeElement.tagName === 'BUTTON' &&
|
||||
typeof document.activeElement.blur === 'function'
|
||||
) {
|
||||
document.activeElement.blur();
|
||||
}
|
||||
}
|
||||
});
|
||||
window.addEventListener('keyup', (event) => {
|
||||
this.keys.delete(event.key.toLowerCase());
|
||||
});
|
||||
window.addEventListener('blur', () => {
|
||||
this.keys.clear();
|
||||
this.pressed.clear();
|
||||
this.mouseDown = false;
|
||||
});
|
||||
|
||||
canvas.addEventListener('mousemove', (event) => {
|
||||
const rect = canvas.getBoundingClientRect();
|
||||
this.mouse.x = ((event.clientX - rect.left) / rect.width) * viewport.width;
|
||||
this.mouse.y = ((event.clientY - rect.top) / rect.height) * viewport.height;
|
||||
});
|
||||
canvas.addEventListener('mousedown', (event) => {
|
||||
if (event.button === 0) {
|
||||
this.mouseDown = true;
|
||||
this.mouseClicked = true;
|
||||
}
|
||||
});
|
||||
window.addEventListener('mouseup', () => {
|
||||
this.mouseDown = false;
|
||||
});
|
||||
}
|
||||
|
||||
clearPressed() {
|
||||
this.pressed.clear();
|
||||
this.mouseClicked = false;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user