UNPKG

blaze-2d

Version:

A fast and simple WebGL 2 2D game engine written in TypeScript

42 lines 1.4 kB
import { vec2 } from "gl-matrix"; import Blaze from "../../blaze"; import { Mouse } from "../../input/mouse"; import PivotConstraint from "./pivot"; /** * Constrains an {@link CollisionObject}'s position to the mouse's world position in the current {@link Camera}'s view. */ export default class MouseConstraint extends PivotConstraint { /** * Creates an {@link MouseConstraint}. * * @param obj The object to constrain */ constructor(obj) { super(obj, vec2.create()); this.mouseListener = () => { const mouse = this.getMousePosition(); this.point = mouse; }; // compute point this.mouseListener(); // calculate anchor vec2.sub(this.anchorA, this.point, this.a.getPosition()); this.rotA = this.a.getRotation(); Blaze.getCanvas().mouse.addListener(Mouse.MOVE, this.mouseListener); } /** * Removes the mouse constraint's listeners from the canvas. */ remove() { Blaze.getCanvas().mouse.removeListener(Mouse.MOVE, this.mouseListener); } /** * Gets the mouse's world position in the current camera's view. */ getMousePosition() { const pixel = Blaze.getCanvas().mouse.getMousePos(); const world = Blaze.getScene().world.getWorldFromPixel(pixel); return world; } } //# sourceMappingURL=mouse.js.map