vertecs
Version:
A typescript entity-component-system framework
59 lines (48 loc) • 2.08 kB
text/typescript
import { Entity, System } from "../core";
export default abstract class MouseInputSystem extends System<[]> {
readonly
protected constructor(canvasId?: string, tps?: number) {
super([], tps);
this.
this.
}
async initialize(): Promise<void> {
if (this.
const canvas = document.getElementsByTagName("canvas")[0];
if (!canvas) {
throw new Error(`Canvas not found with id: ${this.
}
canvas.addEventListener("mousedown", (e) => this.
canvas.addEventListener("mouseup", (e) => this.
canvas.addEventListener("mousemove", (e) => this.
canvas.addEventListener("wheel", (e) => this.
} else {
document.addEventListener("mousedown", (e) => this.
document.addEventListener("mouseup", (e) => this.
document.addEventListener("mousemove", (e) => this.
}
}
public onLoop(components: [], entities: Entity[]): void {
this.
switch (event.type) {
case "mousemove":
return this.onMouseMove(event as MouseEvent);
case "mousedown":
return this.onMouseDown(event as MouseEvent);
case "mouseup":
return this.onMouseUp(event as MouseEvent);
case "wheel":
return this.onMouseWheel(event as WheelEvent);
default:
return null;
}
});
// clear buffer
this.
}
abstract onMouseMove(event: MouseEvent): void;
abstract onMouseDown(event: MouseEvent): void;
abstract onMouseUp(event: MouseEvent): void;
abstract onMouseWheel(event: WheelEvent): void;
}