diff options
Diffstat (limited to 'static/src/mouse_controller.ts')
| -rw-r--r-- | static/src/mouse_controller.ts | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/static/src/mouse_controller.ts b/static/src/mouse_controller.ts deleted file mode 100644 index bd8d51a..0000000 --- a/static/src/mouse_controller.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { Vec2 } from "./vector"; -export class MouseController { - private last_event_time = Date.now(); - private last_movement: Vec2 | undefined; - private interval_id: number | undefined; - - constructor( - private readonly publisher: (new_movement: Vec2) => void | Promise<void>, - private readonly debounce_ms = 200, - ) {} - - public start() { - if (typeof this.interval_id !== "undefined") { - return; - } - this.interval_id = setInterval( - () => this.publish_movement(), - this.debounce_ms, - ); - } - - public stop() { - if (this.interval_id === null) { - return; - } - clearInterval(this.interval_id); - delete this.interval_id; - } - - public move(x: number, y: number) { - this.last_movement = new Vec2(x, y); - this.publish_movement(); - } - - private publish_movement() { - if ( - Date.now() - this.last_event_time < this.debounce_ms || - typeof this.last_movement === "undefined" - ) { - return; - } - - this.last_event_time = Date.now(); - this.publisher(this.last_movement.copy()); - delete this.last_movement; - } -} |
