blaze-2d
Version:
A fast and simple WebGL 2 2D game engine written in TypeScript
42 lines • 1.4 kB
JavaScript
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