1
0
mirror of https://github.com/misskey-dev/misskey.git synced 2026-05-16 17:55:30 +02:00
This commit is contained in:
syuilo
2026-04-28 16:03:28 +09:00
parent 11e55d8fe8
commit 5a7960d0a9
3 changed files with 9 additions and 4 deletions

View File

@@ -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();

View File

@@ -215,7 +215,7 @@ export class RoomEngine extends EventEmitter<RoomEngineEvents> {
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<RoomEngineEvents> {
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) {

View File

@@ -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;