diff --git a/src/systems/CameraSystem.ts b/src/systems/CameraSystem.ts index a41b456..51df78c 100644 --- a/src/systems/CameraSystem.ts +++ b/src/systems/CameraSystem.ts @@ -26,6 +26,7 @@ export class CameraSystem { private middlePanActive = false private lastPanX = 0 private lastPanY = 0 + private debugCross?: Phaser.GameObjects.Graphics constructor(scene: Phaser.Scene, adapter: LocalAdapter) { this.scene = scene @@ -52,10 +53,22 @@ export class CameraSystem { d: kb.addKey(Phaser.Input.Keyboard.KeyCodes.D), } + // Debug cross at viewport center (fixed to screen, not world) + this.debugCross = this.scene.add.graphics() + this.debugCross.setScrollFactor(0).setDepth(999) + this.debugCross.lineStyle(2, 0xff0000, 1) + const cx = cam.width / 2 + const cy = cam.height / 2 + this.debugCross.lineBetween(cx - 12, cy, cx + 12, cy) + this.debugCross.lineBetween(cx, cy - 12, cx, cy + 12) + // Scroll wheel zoom - this.scene.input.on('wheel', (_ptr: Phaser.Input.Pointer, _objs: unknown, _dx: number, dy: number) => { + 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) cam.setZoom(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)}`) }) // Middle-click pan: start on button down