diff --git a/packages/frontend/src/world/room/controller.ts b/packages/frontend/src/world/room/controller.ts index 31ea8fdbc8..2eecd61be4 100644 --- a/packages/frontend/src/world/room/controller.ts +++ b/packages/frontend/src/world/room/controller.ts @@ -207,9 +207,9 @@ export class RoomController { private onCanvasClick(ev: MouseEvent) { if (this.isCanvasDragging) return; if (this.worker != null) { - this.worker.postMessage({ type: 'dom:click', ev: { offsetX: ev.offsetX, offsetY: ev.offsetY } }); + this.worker.postMessage({ type: 'dom:click', ev: { x: ev.offsetX, y: ev.offsetY } }); } else if (this.engine != null) { - this.engine.domEvents.emit('click', { offsetX: ev.offsetX, offsetY: ev.offsetY }); + this.engine.domEvents.emit('click', { x: ev.offsetX, y: ev.offsetY }); } ev.preventDefault(); ev.stopPropagation(); diff --git a/packages/frontend/src/world/room/engine.ts b/packages/frontend/src/world/room/engine.ts index 91dcd14d0c..f5b89e5ffa 100644 --- a/packages/frontend/src/world/room/engine.ts +++ b/packages/frontend/src/world/room/engine.ts @@ -215,7 +215,7 @@ export class RoomEngine extends EventEmitter { private disposed = false; public domEvents: EventEmitter<{ - 'click': (event: { offsetX: number; offsetY: number; }) => void; + 'click': (event: { x: number; y: number; }) => void; 'keydown': (event: { code: string; shiftKey: boolean; }) => void; 'keyup': (event: { code: string; shiftKey: boolean; }) => void; 'wheel': (event: { deltaY: number; }) => void; @@ -520,7 +520,7 @@ export class RoomEngine extends EventEmitter { this.selectObject(null); // TODO: __PICK__考慮 - const pickingInfo = this.scene.pick(this.scene.pointerX, this.scene.pointerY, + const pickingInfo = this.scene.pick(ev.x, ev.y, (m) => m.name.includes('__PICK__') || (m.isVisible && m.isEnabled() && m.metadata?.objectId != null && this.objectEntities.has(m.metadata.objectId))); if (pickingInfo.pickedMesh != null) { diff --git a/packages/frontend/src/world/room/worker.ts b/packages/frontend/src/world/room/worker.ts index 8322d08473..f3a7899bfa 100644 --- a/packages/frontend/src/world/room/worker.ts +++ b/packages/frontend/src/world/room/worker.ts @@ -62,6 +62,11 @@ onmessage = async (event) => { engine.scene.onPointerObservable.notifyObservers({ type: BABYLON.PointerEventTypes.POINTERDOWN, event: event.data.ev }); break; } + case 'dom:click': { + if (engine == null) break; + engine.domEvents.emit('click', event.data.ev); + break; + } case 'call': { if (engine != null) engine[event.data.fn](...event.data.args); break;