Files
2026-11-09 18:07:16 +08:00

47 lines
1.8 KiB
JavaScript

import {app} from "../../scripts/app.js";
import {api} from "../../scripts/api.js";
const cacheToken = String(Date.now());
const controllerBundleUrl = new URL(
"./assets/lux3d-viewer-controller.mjs",
import.meta.url,
);
controllerBundleUrl.searchParams.set("v", cacheToken);
const inputSourcesBundleUrl = new URL(
"./assets/lux3d-input-source-extension.mjs",
import.meta.url,
);
inputSourcesBundleUrl.searchParams.set("v", cacheToken);
const adapterModuleUrls = Object.freeze({
glb: new URL("./assets/lux3d-glb-adapter.mjs", import.meta.url).href,
gaussian: new URL("./assets/lux3d-gaussian-adapter.mjs", import.meta.url).href,
});
const viewerConfig = Object.freeze({
maxAssetBytes: 256 * 1024 * 1024,
fetchTimeoutMs: 120_000,
maxResidentViewers: 2,
residentLimitBehavior: "reject",
});
try {
const {registerLux3DInputSourceExtension} = await import(inputSourcesBundleUrl.href);
registerLux3DInputSourceExtension({app, api});
const resultsUrl = new URL("./assets/lux3d-postprocess-extension.mjs", import.meta.url);
resultsUrl.searchParams.set("v", cacheToken);
const {registerLux3DPostprocessExtension} = await import(resultsUrl.href);
registerLux3DPostprocessExtension({app, api});
const localizationUrl = new URL("./assets/lux3d-localization-extension.mjs", import.meta.url);
localizationUrl.searchParams.set("v", cacheToken);
const {registerLux3DLocalizationExtension} = await import(localizationUrl.href);
registerLux3DLocalizationExtension({app, api});
const {registerLux3DViewerExtension} = await import(controllerBundleUrl.href);
registerLux3DViewerExtension({
app,
config: viewerConfig,
adapterModuleUrls,
assetBaseUrl: globalThis.document?.baseURI,
});
} catch {
console.error("[Lux3D] RUNTIME_EXTENSION_LOAD_FAILED");
}