Files
ic10emu/www/src/ts/virtualMachine/vmWorker.ts
2024-08-19 22:22:39 -07:00

43 lines
1.3 KiB
TypeScript

import { VMRef, init } from "ic10emu_wasm";
import type {
TemplateDatabase,
} from "ic10emu_wasm";
import * as Comlink from "comlink";
import prefabDatabase from "./prefabDatabase";
import { comlinkSpecialJsonTransferHandler, parseNumber } from "utils";
Comlink.transferHandlers.set("SpecialJson", comlinkSpecialJsonTransferHandler);
console.info("Processing Json prefab Database ", prefabDatabase);
const vm: VMRef = init();
const start_time = performance.now();
const template_database = new Map(
Object.entries(prefabDatabase.prefabsByHash).map(([hash, prefabName]) => [
parseInt(hash),
prefabDatabase.prefabs[prefabName],
]),
) as TemplateDatabase;
console.info("Loading Prefab Template Database into VM", template_database);
try {
// vm.importTemplateDatabase(template_database);
vm.importTemplateDatabase(template_database);
const now = performance.now();
const time_elapsed = (now - start_time) / 1000;
console.info(`Prefab Template Database loaded in ${time_elapsed} seconds`);
} catch (e) {
if ("stack" in e) {
console.error("Error importing template database:", e.toString(), e.stack);
} else {
console.error("Error importing template database:", e.toString());
}
console.info(JSON.stringify(template_database));
}
postMessage("ready");
Comlink.expose(vm);