Merge pull request #386 from Dimava/feature/scroll-center

Center zoom on mouse
pull/393/head
tobspr 4 years ago committed by GitHub
commit 7cf467f4c3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -500,6 +500,7 @@ export class Camera extends BasicSerializableObject {
event.preventDefault(); event.preventDefault();
// event.stopPropagation(); // event.stopPropagation();
} }
const prevZoom = this.zoomLevel;
const delta = Math.sign(event.deltaY) * -0.15 * this.root.app.settings.getScrollWheelSensitivity(); const delta = Math.sign(event.deltaY) * -0.15 * this.root.app.settings.getScrollWheelSensitivity();
assert(Number.isFinite(delta), "Got invalid delta in mouse wheel event: " + event.deltaY); assert(Number.isFinite(delta), "Got invalid delta in mouse wheel event: " + event.deltaY);
@ -509,6 +510,16 @@ export class Camera extends BasicSerializableObject {
this.clampZoomLevel(); this.clampZoomLevel();
this.desiredZoom = null; this.desiredZoom = null;
const mousePosition = this.root.app.mousePosition;
if (mousePosition) {
const worldPos = this.root.camera.screenToWorld(mousePosition);
const worldDelta = worldPos.sub(this.center);
const actualDelta = this.zoomLevel / prevZoom - 1;
this.center = this.center.add(worldDelta.multiplyScalar(actualDelta));
this.desiredCenter = null;
}
return false; return false;
} }

Loading…
Cancel
Save