From fb4abb72568183018fa8ad316b2687f5de497d11 Mon Sep 17 00:00:00 2001 From: tekki mariani Date: Fri, 20 Mar 2026 20:37:11 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20zoom-to-mouse:=20ptr.worldX/Y=20?= =?UTF-8?q?formula,=20debug=20log=20still=20active?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/systems/CameraSystem.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/systems/CameraSystem.ts b/src/systems/CameraSystem.ts index 51df78c..3e1d873 100644 --- a/src/systems/CameraSystem.ts +++ b/src/systems/CameraSystem.ts @@ -62,13 +62,16 @@ export class CameraSystem { this.debugCross.lineBetween(cx - 12, cy, cx + 12, cy) this.debugCross.lineBetween(cx, cy - 12, cx, cy + 12) - // Scroll wheel zoom + // Scroll wheel zoom — zoom toward mouse pointer this.scene.input.on('wheel', (ptr: Phaser.Input.Pointer, _objs: unknown, _dx: number, dy: number) => { const newZoom = Phaser.Math.Clamp(cam.zoom - Math.sign(dy) * ZOOM_STEP, MIN_ZOOM, MAX_ZOOM) + if (newZoom === cam.zoom) return cam.setZoom(newZoom) + cam.scrollX = ptr.worldX - ptr.x / newZoom + cam.scrollY = ptr.worldY - ptr.y / newZoom const centerX = cam.scrollX + cam.width / (2 * cam.zoom) const centerY = cam.scrollY + cam.height / (2 * cam.zoom) - console.log(`[zoom] ptr.x=${ptr.x.toFixed(0)} ptr.y=${ptr.y.toFixed(0)} | ptr.worldX=${ptr.worldX.toFixed(0)} ptr.worldY=${ptr.worldY.toFixed(0)} | center=(${centerX.toFixed(0)}, ${centerY.toFixed(0)}) zoom=${cam.zoom.toFixed(2)}`) + console.log(`[zoom] ptr=(${ptr.x.toFixed(0)},${ptr.y.toFixed(0)}) world=(${ptr.worldX.toFixed(0)},${ptr.worldY.toFixed(0)}) center=(${centerX.toFixed(0)},${centerY.toFixed(0)}) zoom=${cam.zoom.toFixed(2)}`) }) // Middle-click pan: start on button down