mirror of
https://github.com/yeicor-3d/yet-another-cad-viewer.git
synced 2025-12-19 14:14:13 +01:00
58 lines
2.1 KiB
TypeScript
58 lines
2.1 KiB
TypeScript
// These are the default values for the settings, which are overridden below
|
|
export const settings = {
|
|
preloadModels: [
|
|
// @ts-ignore
|
|
// new URL('../../assets/fox.glb', import.meta.url).href,
|
|
// @ts-ignore
|
|
// new URL('../../assets/logo_build/base.glb', import.meta.url).href,
|
|
// @ts-ignore
|
|
// new URL('../../assets/logo_build/location.glb', import.meta.url).href,
|
|
// @ts-ignore
|
|
// new URL('../../assets/logo_build/img.jpg.glb', import.meta.url).href,
|
|
// Websocket URLs automatically listen for new models from the python backend
|
|
"ws://127.0.0.1:32323/"
|
|
],
|
|
displayLoadingEveryMs: 1000, /* How often to display partially loaded models */
|
|
monitorEveryMs: 100,
|
|
monitorOpenTimeoutMs: 10000,
|
|
// ModelViewer settings
|
|
autoplay: true,
|
|
arModes: 'webxr scene-viewer quick-look',
|
|
exposure: 1,
|
|
shadowIntensity: 0,
|
|
background: '',
|
|
}
|
|
|
|
const firstTimeNames = []; // Needed for array values, which clear the array when overridden
|
|
function parseSetting(name: string, value: string): any {
|
|
let arrayElem = name.endsWith(".0")
|
|
if (arrayElem) name = name.slice(0, -2);
|
|
let prevValue = settings[name];
|
|
if (prevValue === undefined) throw new Error(`Unknown setting: ${name}`);
|
|
if (Array.isArray(prevValue) && !arrayElem) {
|
|
let toExtend = []
|
|
if (!firstTimeNames.includes(name)) {
|
|
firstTimeNames.push(name);
|
|
} else {
|
|
toExtend = prevValue;
|
|
}
|
|
toExtend.push(parseSetting(name + ".0", value));
|
|
return toExtend;
|
|
}
|
|
switch (typeof prevValue) {
|
|
case 'boolean':
|
|
return value === 'true';
|
|
case 'number':
|
|
return Number(value);
|
|
case 'string':
|
|
return value;
|
|
default:
|
|
throw new Error(`Unknown setting type: ${typeof prevValue}`);
|
|
}
|
|
}
|
|
|
|
// Auto-override any settings from the URL
|
|
const url = new URL(window.location.href);
|
|
url.searchParams.forEach((value, key) => {
|
|
if (key in settings) settings[key] = parseSetting(key, value);
|
|
}) |