mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-05-16 17:55:30 +02:00
wip
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user