mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-05-30 21:33:56 +02:00
update directory structure
This commit is contained in:
54
packages/frontend/src/world/room/worker.ts
Normal file
54
packages/frontend/src/world/room/worker.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
import * as BABYLON from '@babylonjs/core';
|
||||
import { RoomEngine } from './engine.js';
|
||||
import type { RoomState } from './engine.js';
|
||||
|
||||
let engine: RoomEngine | null = null;
|
||||
let canvas: HTMLCanvasElement | null = null;
|
||||
|
||||
onmessage = async (event) => {
|
||||
//console.log('Worker received message:', event.data);
|
||||
|
||||
switch (event.data?.type) {
|
||||
case 'init': {
|
||||
const roomState = event.data.roomState as RoomState;
|
||||
canvas = event.data.canvas as HTMLCanvasElement;
|
||||
const babylonEngine = new BABYLON.WebGPUEngine(canvas);
|
||||
babylonEngine.compatibilityMode = false;
|
||||
await babylonEngine.initAsync();
|
||||
engine = new RoomEngine(roomState, { canvas, engine: babylonEngine });
|
||||
await engine.init();
|
||||
break;
|
||||
}
|
||||
case 'resize': {
|
||||
canvas.width = event.data.width;
|
||||
canvas.height = event.data.height;
|
||||
if (engine != null) engine.resize();
|
||||
break;
|
||||
}
|
||||
case 'dom:keydown': {
|
||||
if (engine == null) break;
|
||||
engine.scene.onKeyboardObservable.notifyObservers({ type: BABYLON.KeyboardEventTypes.KEYDOWN, event: event.data.ev });
|
||||
break;
|
||||
}
|
||||
case 'dom:keyup': {
|
||||
if (engine == null) break;
|
||||
engine.scene.onKeyboardObservable.notifyObservers({ type: BABYLON.KeyboardEventTypes.KEYUP, event: event.data.ev });
|
||||
break;
|
||||
}
|
||||
case 'dom:pointerdown': {
|
||||
if (engine == null) break;
|
||||
event.data.ev.preventDefault = () => {};
|
||||
event.data.ev.stopPropagation = () => {};
|
||||
engine.scene.onPointerObservable.notifyObservers({ type: BABYLON.PointerEventTypes.POINTERDOWN, event: event.data.ev });
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
console.warn('Unrecognized message type:', event.data?.type);
|
||||
}
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user