@roomle/web-sdk 4.3.0-alpha.3 → 4.3.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/{api-1PNZF4e6.mjs → api-C-enDIJZ.mjs} +2 -2
- package/lib/{api-1PNZF4e6.mjs.map → api-C-enDIJZ.mjs.map} +1 -1
- package/lib/asset-loader.worker-eqHzNAwa.mjs.map +1 -1
- package/lib/banana-for-scale-DGYmxeBG.mjs.map +1 -1
- package/lib/budgeteer.sw-BUMElkO1.mjs.map +1 -1
- package/lib/{component-dimensioning-BXN285kw.mjs → component-dimensioning-rJ6hbyvw.mjs} +2 -2
- package/lib/{component-dimensioning-BXN285kw.mjs.map → component-dimensioning-rJ6hbyvw.mjs.map} +1 -1
- package/lib/{component-raycast-helper-CADFRMLS.mjs → component-raycast-helper-CLX5fLt9.mjs} +2 -2
- package/lib/{component-raycast-helper-CADFRMLS.mjs.map → component-raycast-helper-CLX5fLt9.mjs.map} +1 -1
- package/lib/configurator-BfdyDYqe.mjs +2 -0
- package/lib/{configurator-BMXr72V6.mjs → configurator-D8Bfu2_w.mjs} +4 -4
- package/lib/{configurator-BMXr72V6.mjs.map → configurator-D8Bfu2_w.mjs.map} +1 -1
- package/lib/glb-viewer-BFYG-bD2.mjs +2 -0
- package/lib/{glb-viewer-CFMOHQk3.mjs → glb-viewer-DMg1tKfk.mjs} +11 -11
- package/lib/{glb-viewer-CFMOHQk3.mjs.map → glb-viewer-DMg1tKfk.mjs.map} +1 -1
- package/lib/{highlight-coordinator-RCfVwPHC.mjs → highlight-coordinator-JwAVkMeS.mjs} +2 -2
- package/lib/{highlight-coordinator-RCfVwPHC.mjs.map → highlight-coordinator-JwAVkMeS.mjs.map} +1 -1
- package/lib/{homag-intelligence-BcNm3Zg8.mjs → homag-intelligence-CbzWp4pY.mjs} +3 -3
- package/lib/{homag-intelligence-BcNm3Zg8.mjs.map → homag-intelligence-CbzWp4pY.mjs.map} +1 -1
- package/lib/{material-viewer-DlLHNvj_.mjs → material-viewer-C4oV4F7e.mjs} +19 -19
- package/lib/{material-viewer-DlLHNvj_.mjs.map → material-viewer-C4oV4F7e.mjs.map} +1 -1
- package/lib/{packages-BKnJk02a.mjs → packages-Pc3dsyed.mjs} +5 -5
- package/lib/{packages-BKnJk02a.mjs.map → packages-Pc3dsyed.mjs.map} +1 -1
- package/lib/{planner-BLcwLi9h.mjs → planner-B3IWgziF.mjs} +3 -3
- package/lib/{planner-BLcwLi9h.mjs.map → planner-B3IWgziF.mjs.map} +1 -1
- package/lib/planner-BhnBEaPV.mjs +2 -0
- package/lib/roomle-headless.d.ts +25 -1
- package/lib/roomle-headless.js +9 -9
- package/lib/{roomle-sdk-DdQjEWNK.mjs → roomle-sdk-Be4K-H8u.mjs} +3525 -3202
- package/lib/roomle-sdk-Be4K-H8u.mjs.map +1 -0
- package/lib/roomle-sdk.d.ts +25 -1
- package/lib/roomle-sdk.js +8 -8
- package/lib/{scene-renderer-CSBoi_8w.mjs → scene-renderer-C8Lh-lff.mjs} +2 -2
- package/lib/{scene-renderer-CSBoi_8w.mjs.map → scene-renderer-C8Lh-lff.mjs.map} +1 -1
- package/lib/{script-loader-Binkn2lL.mjs → script-loader-CzikXnNg.mjs} +2 -2
- package/lib/{script-loader-Binkn2lL.mjs.map → script-loader-CzikXnNg.mjs.map} +1 -1
- package/lib/{stats-helper-P4jYV8as.mjs → stats-helper-Ddg1O4fO.mjs} +2 -2
- package/lib/{stats-helper-P4jYV8as.mjs.map → stats-helper-Ddg1O4fO.mjs.map} +1 -1
- package/lib/{threejs-utils-DKJ0uer7.mjs → threejs-utils-D5DMIzUO.mjs} +108 -98
- package/lib/threejs-utils-D5DMIzUO.mjs.map +1 -0
- package/lib/{tools-core-C8T-y6HX.mjs → tools-core-CVdBXX3L.mjs} +3 -3
- package/lib/{tools-core-C8T-y6HX.mjs.map → tools-core-CVdBXX3L.mjs.map} +1 -1
- package/package.json +2 -2
- package/lib/configurator-5BzSqk39.mjs +0 -2
- package/lib/glb-viewer-B3hqfiM6.mjs +0 -2
- package/lib/planner-CgL9JfFb.mjs +0 -2
- package/lib/roomle-sdk-DdQjEWNK.mjs.map +0 -1
- package/lib/threejs-utils-DKJ0uer7.mjs.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as e, r as t, t as n } from "./decorate-CjaqqbUP.mjs";
|
|
2
|
-
import { U as r, it as i } from "./roomle-sdk-
|
|
2
|
+
import { U as r, it as i } from "./roomle-sdk-Be4K-H8u.mjs";
|
|
3
3
|
//#region ../../node_modules/roomle-core-hsc/wasm_modern/ConfiguratorKernel.wasm?no-inline?url
|
|
4
4
|
var a = "" + new URL("ConfiguratorKernel.wasm", import.meta.url).href, o = "" + new URL("ConfiguratorKernel.js", import.meta.url).href, s = "" + new URL("RoomleCore.wasm", import.meta.url).href, c = "" + new URL("RoomleCore.js", import.meta.url).href, l = "" + new URL("RoomleToolsCore.wasm", import.meta.url).href, u = "" + new URL("RoomleToolsCore.js", import.meta.url).href, d = {
|
|
5
5
|
configurator: {
|
|
@@ -83,4 +83,4 @@ n([t, e("design:type", Object)], _.prototype, "_singlePromiseFactory", void 0);
|
|
|
83
83
|
//#endregion
|
|
84
84
|
export { p as n, _ as t };
|
|
85
85
|
|
|
86
|
-
//# sourceMappingURL=script-loader-
|
|
86
|
+
//# sourceMappingURL=script-loader-CzikXnNg.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"script-loader-Binkn2lL.mjs","names":[],"sources":["../../../../node_modules/roomle-core-hsc/wasm_modern/ConfiguratorKernel.wasm?no-inline?url","../../../../node_modules/roomle-core-hsc/wasm_modern/ConfiguratorKernel.js?no-inline?url","../../../../node_modules/roomle-core-hsc/wasm_modern/RoomleCore.wasm?no-inline?url","../../../../node_modules/roomle-core-hsc/wasm_modern/RoomleCore.js?no-inline?url","../../../../node_modules/roomle-core-hsc/wasm_modern/RoomleToolsCore.wasm?no-inline?url","../../../../node_modules/roomle-core-hsc/wasm_modern/RoomleToolsCore.js?no-inline?url","../../packages/common-core/src/static-files/roomle-core.ts","../../packages/common-core/src/script-loader.ts"],"sourcesContent":["export default \"__VITE_ASSET__epdbhdyBUyD3hvxx0_dcTg__\"","export default \"__VITE_ASSET__$oUiuAXR7gZMKRQU56HW2w__\"","export default \"__VITE_ASSET__Msg57USEadASvSStYSdmzA__\"","export default \"__VITE_ASSET__6kssa3xCT2YlMpIbbRNP$Q__\"","export default \"__VITE_ASSET__aLISaAY6NSiJFT$6GdtrfA__\"","export default \"__VITE_ASSET__DUq8YoikZLXEejpNZ1KQvg__\"","// @ts-ignore -- Uses vite to reference files as URLs.\nimport CONFIGURATOR_WASM_MODERN_FILE_NAME from 'roomle-core-hsc/wasm_modern/ConfiguratorKernel.wasm?no-inline?url';\n// @ts-ignore -- Uses vite to reference files as URLs.\nimport CONFIGURATOR_LOADER_MODERN_FILE_NAME from 'roomle-core-hsc/wasm_modern/ConfiguratorKernel.js?no-inline?url';\n// @ts-ignore -- Uses vite to reference files as URLs.\nimport PLANNER_WASM_MODERN_FILE_NAME from 'roomle-core-hsc/wasm_modern/RoomleCore.wasm?no-inline?url';\n// @ts-ignore -- Uses vite to reference files as URLs.\nimport PLANNER_LOADER_MODERN_FILE_NAME from 'roomle-core-hsc/wasm_modern/RoomleCore.js?no-inline?url';\n// @ts-ignore -- Uses vite to reference files as URLs.\nimport TOOLS_CORE_WASM_MODERN_FILE_NAME from 'roomle-core-hsc/wasm_modern/RoomleToolsCore.wasm?no-inline?url';\n// @ts-ignore -- Uses vite to reference files as URLs.\nimport TOOLS_CORE_LOADER_MODERN_FILE_NAME from 'roomle-core-hsc/wasm_modern/RoomleToolsCore.js?no-inline?url';\n\nconst WASM_FILES: Record<string, { loader: string; wasm: string }> = {\n configurator: {\n loader: 'ConfiguratorKernel.js',\n wasm: 'ConfiguratorKernel.wasm',\n },\n planner: { loader: 'RoomleCore.js', wasm: 'RoomleCore.wasm' },\n tools: { loader: 'RoomleToolsCore.js', wasm: 'RoomleToolsCore.wasm' },\n};\n\n// The wasm paths returned by this function are specific to browsers (not headless):\nexport const getWasmPath = (type: 'configurator' | 'planner' | 'tools') => {\n if (type === 'planner') {\n return {\n wasm: PLANNER_WASM_MODERN_FILE_NAME,\n loader: PLANNER_LOADER_MODERN_FILE_NAME,\n };\n }\n if (type === 'tools') {\n return {\n wasm: TOOLS_CORE_WASM_MODERN_FILE_NAME,\n loader: TOOLS_CORE_LOADER_MODERN_FILE_NAME,\n };\n }\n return {\n wasm: CONFIGURATOR_WASM_MODERN_FILE_NAME,\n loader: CONFIGURATOR_LOADER_MODERN_FILE_NAME,\n };\n};\n\n// Resolve WASM module paths for headless (Node.js/Bun) mode.\n// Strategies (tried in order):\n// 1. import.meta.resolve('roomle-core-hsc/...') — works when running from\n// source in the monorepo where roomle-core-hsc is in node_modules, and\n// the module resolver can walk up to it from the current file's location.\n// 2. Files directly in the same directory as this bundle — works when the SDK\n// is consumed as a built package (dist/lib/), where vite-plugin-static-copy\n// places ConfiguratorKernel.wasm etc. alongside the bundle chunks.\n// 3. Legacy static/ subdirectory — kept as a final fallback for older dist\n// layouts where vite-plugin-static-copy targeted dist/lib/static/.\nexport const getHeadlessWasmPath = (\n type: 'configurator' | 'planner' | 'tools',\n): { loader: string; wasm: string } => {\n const entry = WASM_FILES[type];\n const moduleSpecifiers = {\n loader: `roomle-core-hsc/wasm_modern/${entry.loader}`,\n wasm: `roomle-core-hsc/wasm_modern/${entry.wasm}`,\n };\n\n const toPath = (url: string) =>\n url.startsWith('file://') ? url.slice(7) : url;\n\n // Strategy 1: resolve from node_modules (source / monorepo).\n // May fail when the consuming project's module resolver cannot reach\n // roomle-core-hsc (e.g. when web-sdk is installed via a file: reference\n // and symlink resolution stops before reaching the monorepo node_modules).\n try {\n return {\n loader: toPath(import.meta.resolve(moduleSpecifiers.loader)),\n wasm: toPath(import.meta.resolve(moduleSpecifiers.wasm)),\n };\n } catch {\n // roomle-core-hsc not reachable — fall through to bundle-relative lookup\n }\n\n // Strategy 2: files copied directly alongside the bundle (current dist layout).\n // vite-plugin-static-copy places ConfiguratorKernel.wasm / RoomleCore.wasm\n // etc. in dist/lib/ next to the JS chunks. import.meta.url of any chunk in\n // that directory has bundleDir = dist/lib/, so the files are found directly.\n const bundleDir = toPath(import.meta.url).replace(/\\/[^/]+$/, '');\n return {\n loader: `${bundleDir}/${entry.loader}`,\n wasm: `${bundleDir}/${entry.wasm}`,\n };\n};\n\nexport {\n CONFIGURATOR_WASM_MODERN_FILE_NAME,\n CONFIGURATOR_LOADER_MODERN_FILE_NAME,\n PLANNER_WASM_MODERN_FILE_NAME,\n PLANNER_LOADER_MODERN_FILE_NAME,\n TOOLS_CORE_WASM_MODERN_FILE_NAME,\n TOOLS_CORE_LOADER_MODERN_FILE_NAME,\n};\n","import Benchmark from './utils/benchmark';\nimport inject from './di/inject';\nimport type SinglePromiseFactory from './utils/single-promise-factory';\nimport { PROMISE_CATEGORY } from './utils/single-promise-factory';\nimport type { Context } from './di/context';\nimport { getWasmPath } from './static-files/roomle-core';\n\nlet _scriptCache: { [key: string]: boolean } = {};\nlet _idCache: { [key: string]: boolean } = {};\n\nfunction attachScript(\n url: string,\n options: { id: string },\n resolve: (value?: any) => void,\n reject: (error?: any) => void,\n) {\n if (_scriptCache[url]) {\n return resolve();\n }\n if (options.id && _idCache[options.id]) {\n return reject(\n new Error('There is already a script with ID \"' + options.id + '\"'),\n );\n }\n\n const mark = Benchmark.start('load_' + options.id.replace(/-/g, '_'));\n const element = document.createElement('script');\n element.async = false;\n element.src = url;\n element.id = options.id;\n element.onload = () => {\n _scriptCache[url] = true;\n _idCache[options.id] = true;\n Benchmark.end(mark);\n Object.defineProperty(resolve, 'name', { value: 'resolve-' + options.id });\n resolve();\n };\n element.onerror = (error) => {\n reject(error);\n };\n document.body.appendChild(element);\n}\n\nexport interface ScriptData {\n name: string;\n id: string;\n}\n\nexport default class ScriptLoader implements Context {\n public _creator_: string;\n\n @inject\n private _singlePromiseFactory: SinglePromiseFactory;\n\n constructor(creator: string) {\n this._creator_ = creator;\n }\n\n public fetch(url: string, options: { id: string }) {\n return this._singlePromiseFactory.create(\n PROMISE_CATEGORY.FETCH_SCRIPT,\n url,\n (resolve, reject) => {\n attachScript(url, options, resolve, reject);\n },\n );\n }\n\n public loadScripts(scripts: ScriptData[]) {\n const promises: any = [];\n scripts.forEach((script: any) => {\n let scriptLoadPromise = this.fetch(script.name, { id: script.id });\n promises.push(scriptLoadPromise);\n });\n return Promise.all(promises);\n }\n\n public resolveKernelPaths(type: 'configurator' | 'planner' | 'tools'): {\n wasm: string;\n loader: string;\n } {\n return getWasmPath(type);\n }\n\n public cleanUp() {\n for (let key in _idCache) {\n /* istanbul ignore else */\n if (_idCache.hasOwnProperty(key)) {\n const script = document.getElementById(key);\n if (script) {\n script.parentElement?.removeChild(script);\n }\n }\n }\n _scriptCache = {};\n _idCache = {};\n }\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"script-loader-CzikXnNg.mjs","names":[],"sources":["../../../../node_modules/roomle-core-hsc/wasm_modern/ConfiguratorKernel.wasm?no-inline?url","../../../../node_modules/roomle-core-hsc/wasm_modern/ConfiguratorKernel.js?no-inline?url","../../../../node_modules/roomle-core-hsc/wasm_modern/RoomleCore.wasm?no-inline?url","../../../../node_modules/roomle-core-hsc/wasm_modern/RoomleCore.js?no-inline?url","../../../../node_modules/roomle-core-hsc/wasm_modern/RoomleToolsCore.wasm?no-inline?url","../../../../node_modules/roomle-core-hsc/wasm_modern/RoomleToolsCore.js?no-inline?url","../../packages/common-core/src/static-files/roomle-core.ts","../../packages/common-core/src/script-loader.ts"],"sourcesContent":["export default \"__VITE_ASSET___ewJD0zO9$SsiDvawfmAUw__\"","export default \"__VITE_ASSET__ykb1zIozoJBMq4UvQnlhcQ__\"","export default \"__VITE_ASSET__rN_1li4k2aIbHGs0zKW8QQ__\"","export default \"__VITE_ASSET__BjjUHagISQHtPWYmu3KuwQ__\"","export default \"__VITE_ASSET__m8R6TgWxwop2r_xOIPNRtg__\"","export default \"__VITE_ASSET__$oUiuAXR7gZMKRQU56HW2w__\"","// @ts-ignore -- Uses vite to reference files as URLs.\nimport CONFIGURATOR_WASM_MODERN_FILE_NAME from 'roomle-core-hsc/wasm_modern/ConfiguratorKernel.wasm?no-inline?url';\n// @ts-ignore -- Uses vite to reference files as URLs.\nimport CONFIGURATOR_LOADER_MODERN_FILE_NAME from 'roomle-core-hsc/wasm_modern/ConfiguratorKernel.js?no-inline?url';\n// @ts-ignore -- Uses vite to reference files as URLs.\nimport PLANNER_WASM_MODERN_FILE_NAME from 'roomle-core-hsc/wasm_modern/RoomleCore.wasm?no-inline?url';\n// @ts-ignore -- Uses vite to reference files as URLs.\nimport PLANNER_LOADER_MODERN_FILE_NAME from 'roomle-core-hsc/wasm_modern/RoomleCore.js?no-inline?url';\n// @ts-ignore -- Uses vite to reference files as URLs.\nimport TOOLS_CORE_WASM_MODERN_FILE_NAME from 'roomle-core-hsc/wasm_modern/RoomleToolsCore.wasm?no-inline?url';\n// @ts-ignore -- Uses vite to reference files as URLs.\nimport TOOLS_CORE_LOADER_MODERN_FILE_NAME from 'roomle-core-hsc/wasm_modern/RoomleToolsCore.js?no-inline?url';\n\nconst WASM_FILES: Record<string, { loader: string; wasm: string }> = {\n configurator: {\n loader: 'ConfiguratorKernel.js',\n wasm: 'ConfiguratorKernel.wasm',\n },\n planner: { loader: 'RoomleCore.js', wasm: 'RoomleCore.wasm' },\n tools: { loader: 'RoomleToolsCore.js', wasm: 'RoomleToolsCore.wasm' },\n};\n\n// The wasm paths returned by this function are specific to browsers (not headless):\nexport const getWasmPath = (type: 'configurator' | 'planner' | 'tools') => {\n if (type === 'planner') {\n return {\n wasm: PLANNER_WASM_MODERN_FILE_NAME,\n loader: PLANNER_LOADER_MODERN_FILE_NAME,\n };\n }\n if (type === 'tools') {\n return {\n wasm: TOOLS_CORE_WASM_MODERN_FILE_NAME,\n loader: TOOLS_CORE_LOADER_MODERN_FILE_NAME,\n };\n }\n return {\n wasm: CONFIGURATOR_WASM_MODERN_FILE_NAME,\n loader: CONFIGURATOR_LOADER_MODERN_FILE_NAME,\n };\n};\n\n// Resolve WASM module paths for headless (Node.js/Bun) mode.\n// Strategies (tried in order):\n// 1. import.meta.resolve('roomle-core-hsc/...') — works when running from\n// source in the monorepo where roomle-core-hsc is in node_modules, and\n// the module resolver can walk up to it from the current file's location.\n// 2. Files directly in the same directory as this bundle — works when the SDK\n// is consumed as a built package (dist/lib/), where vite-plugin-static-copy\n// places ConfiguratorKernel.wasm etc. alongside the bundle chunks.\n// 3. Legacy static/ subdirectory — kept as a final fallback for older dist\n// layouts where vite-plugin-static-copy targeted dist/lib/static/.\nexport const getHeadlessWasmPath = (\n type: 'configurator' | 'planner' | 'tools',\n): { loader: string; wasm: string } => {\n const entry = WASM_FILES[type];\n const moduleSpecifiers = {\n loader: `roomle-core-hsc/wasm_modern/${entry.loader}`,\n wasm: `roomle-core-hsc/wasm_modern/${entry.wasm}`,\n };\n\n const toPath = (url: string) =>\n url.startsWith('file://') ? url.slice(7) : url;\n\n // Strategy 1: resolve from node_modules (source / monorepo).\n // May fail when the consuming project's module resolver cannot reach\n // roomle-core-hsc (e.g. when web-sdk is installed via a file: reference\n // and symlink resolution stops before reaching the monorepo node_modules).\n try {\n return {\n loader: toPath(import.meta.resolve(moduleSpecifiers.loader)),\n wasm: toPath(import.meta.resolve(moduleSpecifiers.wasm)),\n };\n } catch {\n // roomle-core-hsc not reachable — fall through to bundle-relative lookup\n }\n\n // Strategy 2: files copied directly alongside the bundle (current dist layout).\n // vite-plugin-static-copy places ConfiguratorKernel.wasm / RoomleCore.wasm\n // etc. in dist/lib/ next to the JS chunks. import.meta.url of any chunk in\n // that directory has bundleDir = dist/lib/, so the files are found directly.\n const bundleDir = toPath(import.meta.url).replace(/\\/[^/]+$/, '');\n return {\n loader: `${bundleDir}/${entry.loader}`,\n wasm: `${bundleDir}/${entry.wasm}`,\n };\n};\n\nexport {\n CONFIGURATOR_WASM_MODERN_FILE_NAME,\n CONFIGURATOR_LOADER_MODERN_FILE_NAME,\n PLANNER_WASM_MODERN_FILE_NAME,\n PLANNER_LOADER_MODERN_FILE_NAME,\n TOOLS_CORE_WASM_MODERN_FILE_NAME,\n TOOLS_CORE_LOADER_MODERN_FILE_NAME,\n};\n","import Benchmark from './utils/benchmark';\nimport inject from './di/inject';\nimport type SinglePromiseFactory from './utils/single-promise-factory';\nimport { PROMISE_CATEGORY } from './utils/single-promise-factory';\nimport type { Context } from './di/context';\nimport { getWasmPath } from './static-files/roomle-core';\n\nlet _scriptCache: { [key: string]: boolean } = {};\nlet _idCache: { [key: string]: boolean } = {};\n\nfunction attachScript(\n url: string,\n options: { id: string },\n resolve: (value?: any) => void,\n reject: (error?: any) => void,\n) {\n if (_scriptCache[url]) {\n return resolve();\n }\n if (options.id && _idCache[options.id]) {\n return reject(\n new Error('There is already a script with ID \"' + options.id + '\"'),\n );\n }\n\n const mark = Benchmark.start('load_' + options.id.replace(/-/g, '_'));\n const element = document.createElement('script');\n element.async = false;\n element.src = url;\n element.id = options.id;\n element.onload = () => {\n _scriptCache[url] = true;\n _idCache[options.id] = true;\n Benchmark.end(mark);\n Object.defineProperty(resolve, 'name', { value: 'resolve-' + options.id });\n resolve();\n };\n element.onerror = (error) => {\n reject(error);\n };\n document.body.appendChild(element);\n}\n\nexport interface ScriptData {\n name: string;\n id: string;\n}\n\nexport default class ScriptLoader implements Context {\n public _creator_: string;\n\n @inject\n private _singlePromiseFactory: SinglePromiseFactory;\n\n constructor(creator: string) {\n this._creator_ = creator;\n }\n\n public fetch(url: string, options: { id: string }) {\n return this._singlePromiseFactory.create(\n PROMISE_CATEGORY.FETCH_SCRIPT,\n url,\n (resolve, reject) => {\n attachScript(url, options, resolve, reject);\n },\n );\n }\n\n public loadScripts(scripts: ScriptData[]) {\n const promises: any = [];\n scripts.forEach((script: any) => {\n let scriptLoadPromise = this.fetch(script.name, { id: script.id });\n promises.push(scriptLoadPromise);\n });\n return Promise.all(promises);\n }\n\n public resolveKernelPaths(type: 'configurator' | 'planner' | 'tools'): {\n wasm: string;\n loader: string;\n } {\n return getWasmPath(type);\n }\n\n public cleanUp() {\n for (let key in _idCache) {\n /* istanbul ignore else */\n if (_idCache.hasOwnProperty(key)) {\n const script = document.getElementById(key);\n if (script) {\n script.parentElement?.removeChild(script);\n }\n }\n }\n _scriptCache = {};\n _idCache = {};\n }\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as e, t } from "./rolldown-runtime-DgwB9i60.mjs";
|
|
2
|
-
import { t as n } from "./scene-renderer-
|
|
2
|
+
import { t as n } from "./scene-renderer-C8Lh-lff.mjs";
|
|
3
3
|
import { n as r, r as i, t as a } from "./decorate-CjaqqbUP.mjs";
|
|
4
4
|
//#endregion
|
|
5
5
|
//#region packages/common-core/src/utils/stats-helper.ts
|
|
@@ -93,4 +93,4 @@ a([i, r("design:type", Object)], s.prototype, "_cacheHolder", void 0);
|
|
|
93
93
|
//#endregion
|
|
94
94
|
export { s as default };
|
|
95
95
|
|
|
96
|
-
//# sourceMappingURL=stats-helper-
|
|
96
|
+
//# sourceMappingURL=stats-helper-Ddg1O4fO.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats-helper-P4jYV8as.mjs","names":[],"sources":["../../../../node_modules/stats.js/build/stats.min.js","../../packages/common-core/src/utils/stats-helper.ts"],"sourcesContent":["// stats.js - http://github.com/mrdoob/stats.js\n(function(f,e){\"object\"===typeof exports&&\"undefined\"!==typeof module?module.exports=e():\"function\"===typeof define&&define.amd?define(e):f.Stats=e()})(this,function(){var f=function(){function e(a){c.appendChild(a.dom);return a}function u(a){for(var d=0;d<c.children.length;d++)c.children[d].style.display=d===a?\"block\":\"none\";l=a}var l=0,c=document.createElement(\"div\");c.style.cssText=\"position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000\";c.addEventListener(\"click\",function(a){a.preventDefault();\nu(++l%c.children.length)},!1);var k=(performance||Date).now(),g=k,a=0,r=e(new f.Panel(\"FPS\",\"#0ff\",\"#002\")),h=e(new f.Panel(\"MS\",\"#0f0\",\"#020\"));if(self.performance&&self.performance.memory)var t=e(new f.Panel(\"MB\",\"#f08\",\"#201\"));u(0);return{REVISION:16,dom:c,addPanel:e,showPanel:u,begin:function(){k=(performance||Date).now()},end:function(){a++;var c=(performance||Date).now();h.update(c-k,200);if(c>g+1E3&&(r.update(1E3*a/(c-g),100),g=c,a=0,t)){var d=performance.memory;t.update(d.usedJSHeapSize/\n1048576,d.jsHeapSizeLimit/1048576)}return c},update:function(){k=this.end()},domElement:c,setMode:u}};f.Panel=function(e,f,l){var c=Infinity,k=0,g=Math.round,a=g(window.devicePixelRatio||1),r=80*a,h=48*a,t=3*a,v=2*a,d=3*a,m=15*a,n=74*a,p=30*a,q=document.createElement(\"canvas\");q.width=r;q.height=h;q.style.cssText=\"width:80px;height:48px\";var b=q.getContext(\"2d\");b.font=\"bold \"+9*a+\"px Helvetica,Arial,sans-serif\";b.textBaseline=\"top\";b.fillStyle=l;b.fillRect(0,0,r,h);b.fillStyle=f;b.fillText(e,t,v);\nb.fillRect(d,m,n,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d,m,n,p);return{dom:q,update:function(h,w){c=Math.min(c,h);k=Math.max(k,h);b.fillStyle=l;b.globalAlpha=1;b.fillRect(0,0,r,m);b.fillStyle=f;b.fillText(g(h)+\" \"+e+\" (\"+g(c)+\"-\"+g(k)+\")\",t,v);b.drawImage(q,d+a,m,n-a,p,d,m,n-a,p);b.fillRect(d+n-a,m,a,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d+n-a,m,a,g((1-h/w)*p))}}};return f});\n","import inject from '../di/inject';\nimport type { Panel } from '../../../typings/stats';\nimport type CacheHolder from '../services/cache-holder';\nimport type { WebGLInfo } from 'three';\nimport Stats from 'stats.js';\nimport {\n QUALITY_LEVELS,\n type QualityLevel,\n} from '../webgl/renderer/scene-renderer';\n\nexport default class StatsHelper {\n @inject\n protected _cacheHolder: CacheHolder;\n\n private _statPanels: Stats[] = [];\n private _drawPanel: Panel; // eslint-disable-line\n private _trianglesPanel: Panel; // eslint-disable-line\n private _geometryPanel: Panel; // eslint-disable-line\n private _texturePanel: Panel; // eslint-disable-line\n private _materialPanel: Panel; // eslint-disable-line\n private _qualityPanel: Panel; // eslint-disable-line\n\n constructor() {\n this._init();\n }\n\n private _init() {\n let fpsPanel = new Stats();\n fpsPanel.showPanel(0);\n fpsPanel.dom.style.cssText =\n 'position:absolute;top:0px;left:0px;z-index:110;';\n document.body.appendChild(fpsPanel.dom);\n this._statPanels.push(fpsPanel);\n\n let memoryPanel = new Stats();\n memoryPanel.showPanel(2);\n memoryPanel.dom.style.cssText =\n 'position:absolute;top:50px;left:0px;z-index:110;';\n document.body.appendChild(memoryPanel.dom);\n this._statPanels.push(memoryPanel);\n\n let drawPanel = new Stats();\n this._drawPanel = drawPanel.addPanel(\n new Stats.Panel('draw', '#0f0', '#000'),\n );\n drawPanel.showPanel(3);\n drawPanel.dom.style.cssText =\n 'position:absolute;top:100px;left:0px;z-index:110;';\n document.body.appendChild(drawPanel.dom);\n this._statPanels.push(drawPanel);\n\n let trianglesPanel = new Stats();\n this._trianglesPanel = trianglesPanel.addPanel(\n new Stats.Panel('poly', '#0f0', '#000'),\n );\n trianglesPanel.showPanel(3);\n trianglesPanel.dom.style.cssText =\n 'position:absolute;top:150px;left:0px;z-index:110;';\n document.body.appendChild(trianglesPanel.dom);\n this._statPanels.push(trianglesPanel);\n\n let geometryPanel = new Stats();\n this._geometryPanel = geometryPanel.addPanel(\n new Stats.Panel('geo', '#f00', '#000'),\n );\n geometryPanel.showPanel(3);\n geometryPanel.dom.style.cssText =\n 'position:absolute;top:200px;left:0px;z-index:110;';\n document.body.appendChild(geometryPanel.dom);\n this._statPanels.push(geometryPanel);\n\n let texturePanel = new Stats();\n this._texturePanel = texturePanel.addPanel(\n new Stats.Panel('tex', '#f00', '#000'),\n );\n texturePanel.showPanel(3);\n texturePanel.dom.style.cssText =\n 'position:absolute;top:250px;left:0px;z-index:110;';\n document.body.appendChild(texturePanel.dom);\n this._statPanels.push(texturePanel);\n\n let materialPanel = new Stats();\n this._materialPanel = materialPanel.addPanel(\n new Stats.Panel('mat', '#f00', '#000'),\n );\n materialPanel.showPanel(3);\n materialPanel.dom.style.cssText =\n 'position:absolute;top:300px;left:0px;z-index:110;';\n document.body.appendChild(materialPanel.dom);\n this._statPanels.push(materialPanel);\n\n let qualityPanel = new Stats();\n this._qualityPanel = qualityPanel.addPanel(\n new Stats.Panel('quality', '#fff', '#000'),\n );\n qualityPanel.showPanel(3);\n qualityPanel.dom.style.cssText =\n 'position:absolute;top:350px;left:0px;z-index:110;';\n document.body.appendChild(qualityPanel.dom);\n this._statPanels.push(qualityPanel);\n }\n\n public updateRenderInfo(info: WebGLInfo) {\n if (this._drawPanel && info.render.calls > 0) {\n this._drawPanel.update(info.render.calls, 500);\n }\n if (this._trianglesPanel && info.render.triangles > 0) {\n this._trianglesPanel.update(info.render.triangles, 10000);\n }\n if (this._geometryPanel && info.memory.geometries > 0) {\n this._geometryPanel.update(info.memory.geometries, 10000);\n }\n if (this._texturePanel && info.memory.textures > 0) {\n this._texturePanel.update(info.memory.textures, 10000);\n }\n if (this._materialPanel && this._cacheHolder.materialCache.size > 0) {\n this._materialPanel.update(this._cacheHolder.materialCache.size, 1000);\n }\n\n if (this._statPanels.length > 0) {\n this._statPanels.forEach((panel) => panel.update());\n }\n }\n\n public updateQualityInfo(qualityLevel: QualityLevel) {\n if (this._qualityPanel && qualityLevel) {\n const qualityValue = Object.values(QUALITY_LEVELS).indexOf(qualityLevel);\n this._qualityPanel.update(qualityValue, 5);\n }\n }\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stats-helper-Ddg1O4fO.mjs","names":[],"sources":["../../../../node_modules/stats.js/build/stats.min.js","../../packages/common-core/src/utils/stats-helper.ts"],"sourcesContent":["// stats.js - http://github.com/mrdoob/stats.js\n(function(f,e){\"object\"===typeof exports&&\"undefined\"!==typeof module?module.exports=e():\"function\"===typeof define&&define.amd?define(e):f.Stats=e()})(this,function(){var f=function(){function e(a){c.appendChild(a.dom);return a}function u(a){for(var d=0;d<c.children.length;d++)c.children[d].style.display=d===a?\"block\":\"none\";l=a}var l=0,c=document.createElement(\"div\");c.style.cssText=\"position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000\";c.addEventListener(\"click\",function(a){a.preventDefault();\nu(++l%c.children.length)},!1);var k=(performance||Date).now(),g=k,a=0,r=e(new f.Panel(\"FPS\",\"#0ff\",\"#002\")),h=e(new f.Panel(\"MS\",\"#0f0\",\"#020\"));if(self.performance&&self.performance.memory)var t=e(new f.Panel(\"MB\",\"#f08\",\"#201\"));u(0);return{REVISION:16,dom:c,addPanel:e,showPanel:u,begin:function(){k=(performance||Date).now()},end:function(){a++;var c=(performance||Date).now();h.update(c-k,200);if(c>g+1E3&&(r.update(1E3*a/(c-g),100),g=c,a=0,t)){var d=performance.memory;t.update(d.usedJSHeapSize/\n1048576,d.jsHeapSizeLimit/1048576)}return c},update:function(){k=this.end()},domElement:c,setMode:u}};f.Panel=function(e,f,l){var c=Infinity,k=0,g=Math.round,a=g(window.devicePixelRatio||1),r=80*a,h=48*a,t=3*a,v=2*a,d=3*a,m=15*a,n=74*a,p=30*a,q=document.createElement(\"canvas\");q.width=r;q.height=h;q.style.cssText=\"width:80px;height:48px\";var b=q.getContext(\"2d\");b.font=\"bold \"+9*a+\"px Helvetica,Arial,sans-serif\";b.textBaseline=\"top\";b.fillStyle=l;b.fillRect(0,0,r,h);b.fillStyle=f;b.fillText(e,t,v);\nb.fillRect(d,m,n,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d,m,n,p);return{dom:q,update:function(h,w){c=Math.min(c,h);k=Math.max(k,h);b.fillStyle=l;b.globalAlpha=1;b.fillRect(0,0,r,m);b.fillStyle=f;b.fillText(g(h)+\" \"+e+\" (\"+g(c)+\"-\"+g(k)+\")\",t,v);b.drawImage(q,d+a,m,n-a,p,d,m,n-a,p);b.fillRect(d+n-a,m,a,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d+n-a,m,a,g((1-h/w)*p))}}};return f});\n","import inject from '../di/inject';\nimport type { Panel } from '../../../typings/stats';\nimport type CacheHolder from '../services/cache-holder';\nimport type { WebGLInfo } from 'three';\nimport Stats from 'stats.js';\nimport {\n QUALITY_LEVELS,\n type QualityLevel,\n} from '../webgl/renderer/scene-renderer';\n\nexport default class StatsHelper {\n @inject\n protected _cacheHolder: CacheHolder;\n\n private _statPanels: Stats[] = [];\n private _drawPanel: Panel; // eslint-disable-line\n private _trianglesPanel: Panel; // eslint-disable-line\n private _geometryPanel: Panel; // eslint-disable-line\n private _texturePanel: Panel; // eslint-disable-line\n private _materialPanel: Panel; // eslint-disable-line\n private _qualityPanel: Panel; // eslint-disable-line\n\n constructor() {\n this._init();\n }\n\n private _init() {\n let fpsPanel = new Stats();\n fpsPanel.showPanel(0);\n fpsPanel.dom.style.cssText =\n 'position:absolute;top:0px;left:0px;z-index:110;';\n document.body.appendChild(fpsPanel.dom);\n this._statPanels.push(fpsPanel);\n\n let memoryPanel = new Stats();\n memoryPanel.showPanel(2);\n memoryPanel.dom.style.cssText =\n 'position:absolute;top:50px;left:0px;z-index:110;';\n document.body.appendChild(memoryPanel.dom);\n this._statPanels.push(memoryPanel);\n\n let drawPanel = new Stats();\n this._drawPanel = drawPanel.addPanel(\n new Stats.Panel('draw', '#0f0', '#000'),\n );\n drawPanel.showPanel(3);\n drawPanel.dom.style.cssText =\n 'position:absolute;top:100px;left:0px;z-index:110;';\n document.body.appendChild(drawPanel.dom);\n this._statPanels.push(drawPanel);\n\n let trianglesPanel = new Stats();\n this._trianglesPanel = trianglesPanel.addPanel(\n new Stats.Panel('poly', '#0f0', '#000'),\n );\n trianglesPanel.showPanel(3);\n trianglesPanel.dom.style.cssText =\n 'position:absolute;top:150px;left:0px;z-index:110;';\n document.body.appendChild(trianglesPanel.dom);\n this._statPanels.push(trianglesPanel);\n\n let geometryPanel = new Stats();\n this._geometryPanel = geometryPanel.addPanel(\n new Stats.Panel('geo', '#f00', '#000'),\n );\n geometryPanel.showPanel(3);\n geometryPanel.dom.style.cssText =\n 'position:absolute;top:200px;left:0px;z-index:110;';\n document.body.appendChild(geometryPanel.dom);\n this._statPanels.push(geometryPanel);\n\n let texturePanel = new Stats();\n this._texturePanel = texturePanel.addPanel(\n new Stats.Panel('tex', '#f00', '#000'),\n );\n texturePanel.showPanel(3);\n texturePanel.dom.style.cssText =\n 'position:absolute;top:250px;left:0px;z-index:110;';\n document.body.appendChild(texturePanel.dom);\n this._statPanels.push(texturePanel);\n\n let materialPanel = new Stats();\n this._materialPanel = materialPanel.addPanel(\n new Stats.Panel('mat', '#f00', '#000'),\n );\n materialPanel.showPanel(3);\n materialPanel.dom.style.cssText =\n 'position:absolute;top:300px;left:0px;z-index:110;';\n document.body.appendChild(materialPanel.dom);\n this._statPanels.push(materialPanel);\n\n let qualityPanel = new Stats();\n this._qualityPanel = qualityPanel.addPanel(\n new Stats.Panel('quality', '#fff', '#000'),\n );\n qualityPanel.showPanel(3);\n qualityPanel.dom.style.cssText =\n 'position:absolute;top:350px;left:0px;z-index:110;';\n document.body.appendChild(qualityPanel.dom);\n this._statPanels.push(qualityPanel);\n }\n\n public updateRenderInfo(info: WebGLInfo) {\n if (this._drawPanel && info.render.calls > 0) {\n this._drawPanel.update(info.render.calls, 500);\n }\n if (this._trianglesPanel && info.render.triangles > 0) {\n this._trianglesPanel.update(info.render.triangles, 10000);\n }\n if (this._geometryPanel && info.memory.geometries > 0) {\n this._geometryPanel.update(info.memory.geometries, 10000);\n }\n if (this._texturePanel && info.memory.textures > 0) {\n this._texturePanel.update(info.memory.textures, 10000);\n }\n if (this._materialPanel && this._cacheHolder.materialCache.size > 0) {\n this._materialPanel.update(this._cacheHolder.materialCache.size, 1000);\n }\n\n if (this._statPanels.length > 0) {\n this._statPanels.forEach((panel) => panel.update());\n }\n }\n\n public updateQualityInfo(qualityLevel: QualityLevel) {\n if (this._qualityPanel && qualityLevel) {\n const qualityValue = Object.values(QUALITY_LEVELS).indexOf(qualityLevel);\n this._qualityPanel.update(qualityValue, 5);\n }\n }\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
@@ -42,21 +42,21 @@ var ee = {
|
|
|
42
42
|
WALL: 0,
|
|
43
43
|
EDGE: 1,
|
|
44
44
|
CONSTRUCTION: 2
|
|
45
|
-
},
|
|
45
|
+
}, x = {
|
|
46
46
|
OBJECT: 0,
|
|
47
47
|
DOOR: 1,
|
|
48
48
|
WINDOW: 2,
|
|
49
49
|
CONSTRUCTION: 3,
|
|
50
50
|
UNKNOWN: 4
|
|
51
|
-
}, x = function(e) {
|
|
52
|
-
return Math.PI / 180 * e;
|
|
53
51
|
}, S = function(e) {
|
|
52
|
+
return Math.PI / 180 * e;
|
|
53
|
+
}, C = function(e) {
|
|
54
54
|
return 180 / Math.PI * e;
|
|
55
|
-
},
|
|
55
|
+
}, le = function(e) {
|
|
56
56
|
return e >= 0 ? -180 + (e + 180) % 360 : 180 - (-e + 180) % 360;
|
|
57
|
-
},
|
|
57
|
+
}, ue = function(e, t, n, r, i, a) {
|
|
58
58
|
e = Math.sqrt(e * e + n * n);
|
|
59
|
-
let o = i / a || 1, s = 2 * Math.atan(Math.tan(r * Math.PI / 180 / 2) * o) * 180 / Math.PI, c =
|
|
59
|
+
let o = i / a || 1, s = 2 * Math.atan(Math.tan(r * Math.PI / 180 / 2) * o) * 180 / Math.PI, c = S(r), l = t / 2 / Math.tan(c / 2), u = e / (2 * Math.atan(Math.PI * s / 360));
|
|
60
60
|
return Math.max(l, u);
|
|
61
61
|
}, w = function(e) {
|
|
62
62
|
return Math.round(e * 1e3) / 1e3;
|
|
@@ -65,7 +65,7 @@ var ee = {
|
|
|
65
65
|
}, fe = function(e, t) {
|
|
66
66
|
return Math.atan2(t.y - e.y, t.x - e.x);
|
|
67
67
|
}, pe = function(e) {
|
|
68
|
-
let t =
|
|
68
|
+
let t = C(e);
|
|
69
69
|
return t < 0 && (t = 180 + (180 + t)), t;
|
|
70
70
|
}, T = /* @__PURE__ */ function(e) {
|
|
71
71
|
return e[e.NODE = 0] = "NODE", e[e.WALL = 1] = "WALL", e[e.OBJECT = 2] = "OBJECT", e[e.FLOOR = 3] = "FLOOR", e[e.TEXT = 4] = "TEXT", e[e.MEASURE = 5] = "MEASURE", e[e.IMAGE = 6] = "IMAGE", e[e.CEILING = 7] = "CEILING", e;
|
|
@@ -461,25 +461,25 @@ var F = null;
|
|
|
461
461
|
globalThis.window !== void 0 && import("./dat.gui.module-B2PXSbre.mjs").then((e) => {
|
|
462
462
|
F = e.GUI;
|
|
463
463
|
}).catch(() => {});
|
|
464
|
-
var
|
|
464
|
+
var ve = .4, ye = "#DDDDDD", be = .4, xe = "#7B7B7B", Se = "#B1B1B1", Ce = "cameraFacingHidden", we = "cameraFacingIndicator", Te = .8, Ee = .9, De = (e) => e instanceof g ? e.capabilities.maxSamples : 16, Oe = (e) => e instanceof g ? e.capabilities.maxTextures : 16, ke = (e) => e instanceof g ? e.capabilities.getMaxAnisotropy() : 16, Ae = (e, n, r, i) => {
|
|
465
465
|
if (!e || !n || r === 0 || i === 0) return new t();
|
|
466
466
|
let a = e.clone(), o = r / 2, s = i / 2;
|
|
467
467
|
return a.project(n), a.x = Math.floor(a.x * o + o), a.y = Math.floor(-(a.y * s) + s), a.z = e.distanceTo(n.position), a;
|
|
468
|
-
},
|
|
468
|
+
}, je = (e, n) => {
|
|
469
469
|
n ||= new t(0, 0, 0);
|
|
470
470
|
let r = new t(e.size.x / 1e3, e.size.z / 1e3, e.size.y / 1e3), i = new t(e.origin.x / 1e3, e.origin.z / 1e3, e.origin.y / -1e3);
|
|
471
471
|
return new u(new t(0, 0, -r.z).add(i).sub(n), new t(r.x, r.y, 0).add(i).add(n));
|
|
472
|
-
},
|
|
472
|
+
}, Me = (e) => (e.from /= 1e3, e.to /= 1e3, e), Ne = (e, t) => {
|
|
473
473
|
let n = w(e.x), r = w(e.y), i = w(e.z), a = w(t.x), o = w(t.y), s = w(t.z);
|
|
474
474
|
return n === a && r === o && i === s;
|
|
475
|
-
},
|
|
475
|
+
}, Pe = (e, t) => {
|
|
476
476
|
let n = w(e.w), r = w(e.x), i = w(e.y), a = w(e.z), o = w(t.w), s = w(t.x), c = w(t.y), l = w(t.z);
|
|
477
477
|
return n === o && r === s && i === c && a === l;
|
|
478
|
-
},
|
|
478
|
+
}, Fe = (e, t) => {
|
|
479
479
|
let n = w(e.x), r = w(e.y), i = w(t.x), a = w(t.y);
|
|
480
480
|
return n === i && r === a;
|
|
481
|
-
},
|
|
482
|
-
if (
|
|
481
|
+
}, I = null, L = () => {
|
|
482
|
+
if (I) return I;
|
|
483
483
|
let e = new Uint8Array(4);
|
|
484
484
|
for (let t = 0; t < 1; t++) {
|
|
485
485
|
let n = t * 4;
|
|
@@ -487,81 +487,81 @@ var I = .4, ve = "#DDDDDD", ye = .4, be = "#7B7B7B", xe = "#B1B1B1", Se = .8, Ce
|
|
|
487
487
|
}
|
|
488
488
|
let t = new o(e, 1, 1, n);
|
|
489
489
|
return t.needsUpdate = !0, t;
|
|
490
|
-
},
|
|
491
|
-
e ||=
|
|
490
|
+
}, Ie = (e) => R(null, e), R = (e, t) => {
|
|
491
|
+
e ||= ze(), e.name = t.id ? t.id.toString() : "";
|
|
492
492
|
let n = t.shading.version === "2" || t.shading.version?.startsWith("2.");
|
|
493
|
-
return e = n ?
|
|
494
|
-
},
|
|
493
|
+
return e = n ? Re(e, t) : Le(e, t), e.userData.materialVersion = n ? 2 : 1, e.map || (I ||= L(), e.map = I), e;
|
|
494
|
+
}, Le = (e, t) => {
|
|
495
495
|
t.shading.metallic !== void 0 && (e.metalness = t.shading.metallic === 1 ? 1 : .5, e.reflectivity = y(t.shading.metallic, .5));
|
|
496
496
|
let n = !1;
|
|
497
|
-
return t.shading.transmission && t.shading.transmission > 0 ? (e.opacity = 1 - t.shading.transmission, e.transparent = !0, e.depthWrite = !1, e.metalness = 0, n = !0) : t.shading.alpha !== void 0 && t.shading.alpha < 1 && (e.transparent = t.shading.alpha < 1, e.opacity = t.shading.alpha, e.depthWrite = t.shading.alpha >= 1, e.metalness = .5 * Math.max(0, t.shading.alpha), n = !0), e.aoMapIntensity = y(t.shading.occlusion, 1), e.roughness = y(t.shading.roughness, .5), e.alphaTest = y(t.shading.alphaCutoff, 0),
|
|
498
|
-
},
|
|
497
|
+
return t.shading.transmission && t.shading.transmission > 0 ? (e.opacity = 1 - t.shading.transmission, e.transparent = !0, e.depthWrite = !1, e.metalness = 0, n = !0) : t.shading.alpha !== void 0 && t.shading.alpha < 1 && (e.transparent = t.shading.alpha < 1, e.opacity = t.shading.alpha, e.depthWrite = t.shading.alpha >= 1, e.metalness = .5 * Math.max(0, t.shading.alpha), n = !0), e.aoMapIntensity = y(t.shading.occlusion, 1), e.roughness = y(t.shading.roughness, .5), e.alphaTest = y(t.shading.alphaCutoff, 0), z(e.color, t.shading.basecolor), n || t.shading.doubleSided ? e.side = 2 : e.side = 0, e;
|
|
498
|
+
}, Re = (e, t) => {
|
|
499
499
|
let n = !1, r = t.shading.transmission && t.shading.transmission > 0;
|
|
500
|
-
t.shading.alpha !== void 0 && t.shading.alpha < 1 ? (e.transparent = !0, e.opacity = t.shading.alpha, e.depthWrite = !1, n = !0) : (e.transparent = !1, e.opacity = 1, e.depthWrite = !0), e.alphaTest = t.shading.alphaCutoff ?? 0,
|
|
500
|
+
t.shading.alpha !== void 0 && t.shading.alpha < 1 ? (e.transparent = !0, e.opacity = t.shading.alpha, e.depthWrite = !1, n = !0) : (e.transparent = !1, e.opacity = 1, e.depthWrite = !0), e.alphaTest = t.shading.alphaCutoff ?? 0, z(e.color, t.shading.basecolor), e.transmission = t.shading.transmission ?? 0, e.ior = Math.max(1, Math.min(2.33, t.shading.transmissionIOR ?? 1.5)), e.metalness = t.shading.metallic ?? 0, z(e.specularColor, t.shading.specularColor), e.specularIntensity = t.shading.specularity ?? 1, e.roughness = t.shading.roughness ?? 0, e.aoMapIntensity = t.shading.occlusion ?? 1, z(e.emissive, t.shading.emissiveColor), e.emissiveIntensity = t.shading.emissiveIntensity ?? 1, e.clearcoat = t.shading.clearcoatIntensity ?? 0, e.clearcoatRoughness = t.shading.clearcoatRoughness ?? 0, e.clearcoatNormalScale.setScalar(t.shading.clearcoatNormalScale ?? 1), z(e.sheenColor, t.shading.sheenColor), e.sheen = t.shading.sheenIntensity ?? 1, e.sheenRoughness = t.shading.sheenRoughness ?? 1, e.thickness = t.shading.thicknessFactor ?? 0;
|
|
501
501
|
let i = t.shading.attenuationDistance;
|
|
502
|
-
return r && i === 0 ? console.warn("invalid attenuation configuration for transmissive material -- Skipping attenuation color and distance configuration in material.") : (
|
|
503
|
-
},
|
|
502
|
+
return r && i === 0 ? console.warn("invalid attenuation configuration for transmissive material -- Skipping attenuation color and distance configuration in material.") : (z(e.attenuationColor, t.shading.attenuationColor), i != null && (e.attenuationDistance = i)), e.side = n || t.shading.doubleSided ? 2 : 0, e;
|
|
503
|
+
}, ze = () => E.createMeshPhysicalMaterial({}), Be = (e, t = 1) => t === 2 ? He(e) : Ve(e), Ve = (e) => {
|
|
504
504
|
let t = {
|
|
505
505
|
alpha: e.opacity,
|
|
506
506
|
metallic: e.reflectivity,
|
|
507
|
-
basecolor:
|
|
507
|
+
basecolor: B(e.color),
|
|
508
508
|
roughness: e.roughness,
|
|
509
509
|
doubleSided: e.side === 2,
|
|
510
510
|
alphaCutoff: e.alphaTest,
|
|
511
511
|
transmission: e.transmission
|
|
512
512
|
};
|
|
513
513
|
return e.metalness === 1 ? t.metallic = 1 : t.metallic = e.reflectivity, t;
|
|
514
|
-
},
|
|
514
|
+
}, He = (e) => ({
|
|
515
515
|
version: "2.0.0",
|
|
516
516
|
alpha: e.opacity,
|
|
517
517
|
alphaCutoff: e.alphaTest,
|
|
518
|
-
basecolor:
|
|
518
|
+
basecolor: B(e.color),
|
|
519
519
|
transmission: e.transmission,
|
|
520
520
|
transmissionIOR: e.ior,
|
|
521
521
|
metallic: e.metalness,
|
|
522
522
|
doubleSided: e.side === 2,
|
|
523
|
-
specularColor:
|
|
523
|
+
specularColor: B(e.specularColor),
|
|
524
524
|
specularity: e.specularIntensity,
|
|
525
525
|
roughness: e.roughness,
|
|
526
526
|
occlusion: e.aoMapIntensity,
|
|
527
|
-
emissiveColor:
|
|
527
|
+
emissiveColor: B(e.emissive),
|
|
528
528
|
emissiveIntensity: e.emissiveIntensity,
|
|
529
529
|
clearcoatIntensity: e.clearcoat,
|
|
530
530
|
clearcoatRoughness: e.clearcoatRoughness,
|
|
531
531
|
clearcoatNormalScale: e.clearcoatNormalScale.x,
|
|
532
|
-
sheenColor:
|
|
532
|
+
sheenColor: B(e.sheenColor),
|
|
533
533
|
sheenIntensity: e.sheen,
|
|
534
534
|
sheenRoughness: e.sheenRoughness,
|
|
535
535
|
thicknessFactor: e.thickness,
|
|
536
|
-
attenuationColor:
|
|
536
|
+
attenuationColor: B(e.attenuationColor),
|
|
537
537
|
attenuationDistance: e.attenuationDistance
|
|
538
|
-
}),
|
|
538
|
+
}), z = (e, t) => {
|
|
539
539
|
if (t !== void 0) {
|
|
540
540
|
let n = new h(t.r, t.g, t.b);
|
|
541
541
|
e.copy(n.convertSRGBToLinear());
|
|
542
542
|
}
|
|
543
|
-
},
|
|
543
|
+
}, B = (e) => {
|
|
544
544
|
let t = e.clone().convertLinearToSRGB();
|
|
545
545
|
return {
|
|
546
546
|
r: t.r,
|
|
547
547
|
g: t.g,
|
|
548
548
|
b: t.b
|
|
549
549
|
};
|
|
550
|
-
},
|
|
551
|
-
|
|
552
|
-
let s =
|
|
550
|
+
}, V = null, Ue = (e, t, n, r, i, a, o = 16) => {
|
|
551
|
+
V || (V = new p(), V.crossOrigin = "");
|
|
552
|
+
let s = V;
|
|
553
553
|
return new Promise((c, l) => {
|
|
554
554
|
if (!e) {
|
|
555
555
|
console.warn("trying to add a texture without image", t), c();
|
|
556
556
|
return;
|
|
557
557
|
}
|
|
558
558
|
s.load(e, (e) => {
|
|
559
|
-
|
|
559
|
+
H(e, t, n, r, i, a, o), c();
|
|
560
560
|
}, (e) => {
|
|
561
561
|
l(e);
|
|
562
562
|
});
|
|
563
563
|
});
|
|
564
|
-
},
|
|
564
|
+
}, H = (e, t, n, r, i, o, s = 16) => {
|
|
565
565
|
if (e.anisotropy = r, e.wrapS = a, e.wrapT = a, s <= 8 && [
|
|
566
566
|
v.ORM,
|
|
567
567
|
v.EMRGB,
|
|
@@ -574,10 +574,10 @@ var I = .4, ve = "#DDDDDD", ye = .4, be = "#7B7B7B", xe = "#B1B1B1", Se = .8, Ce
|
|
|
574
574
|
console.warn("ORM maps are not supported on devices with only " + s + " texture units");
|
|
575
575
|
return;
|
|
576
576
|
}
|
|
577
|
-
e.repeat.set(i, o),
|
|
578
|
-
},
|
|
579
|
-
n.mapping === v.XYZ ? (r.normalMap = t, r.map ===
|
|
580
|
-
},
|
|
577
|
+
e.repeat.set(i, o), We(e, t, n), t.mapping === v.RGBA && (n.transparent = !0, n.userData.materialVersion === 1 && n.name.includes("glow") && (n.emissiveIntensity = .5, n.emissive = new h(16777215), n.emissiveMap = n.map)), n.needsUpdate = !0;
|
|
578
|
+
}, We = (t, n, r) => {
|
|
579
|
+
n.mapping === v.XYZ ? (r.normalMap = t, r.map === L() && (r.map = null)) : n.mapping === v.ORM ? (r.aoMap = t, r.roughnessMap = t, r.metalnessMap = t) : n.mapping === v.EMRGB ? r.emissiveMap = t : n.mapping === v.CCRG ? (r.clearcoatMap = t, r.clearcoatRoughnessMap = t) : n.mapping === v.CCXYZ ? r.clearcoatNormalMap = t : n.mapping === v.SHRGBA ? (r.sheenColorMap = t, r.sheenRoughnessMap = t) : n.mapping === v.SPRGBA ? (r.specularColorMap = t, r.specularIntensityMap = t) : n.mapping === v.TTRG ? (r.transmissionMap = t, r.thicknessMap = t) : (t.colorSpace = e, r.map = t);
|
|
580
|
+
}, Ge = (e = !0) => {
|
|
581
581
|
if (!window.__RML_WEBGL_GUI__) {
|
|
582
582
|
if (!F) return null;
|
|
583
583
|
try {
|
|
@@ -587,20 +587,30 @@ var I = .4, ve = "#DDDDDD", ye = .4, be = "#7B7B7B", xe = "#B1B1B1", Se = .8, Ce
|
|
|
587
587
|
}
|
|
588
588
|
}
|
|
589
589
|
return window.__RML_WEBGL_GUI__ ?? null;
|
|
590
|
-
},
|
|
591
|
-
let
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
590
|
+
}, U = (e, t, n) => {
|
|
591
|
+
let r;
|
|
592
|
+
if (t.wallType.value === b.OuterWallRight && (r = _(t.rightNormal)), t.wallType.value === b.OuterWallLeft && (r = _(t.leftNormal)), !r) return !0;
|
|
593
|
+
let i = _(n).applyMatrix4(e.matrixWorldInverse);
|
|
594
|
+
return r = r.transformDirection(e.matrixWorldInverse), i.dot(r) >= 0;
|
|
595
|
+
}, W = (e) => {
|
|
596
|
+
let t = e?.getPlanElement();
|
|
597
|
+
return !t || !("getAttachedWall" in t) ? null : t.getAttachedWall();
|
|
598
|
+
}, G = (e, t) => !e || !t ? !1 : typeof e.getId == "function" && typeof t.getId == "function" ? e.getId() === t.getId() : e === t, Ke = (e, t, n = [], r = null) => {
|
|
599
|
+
let i = !1, a = W(r);
|
|
600
|
+
for (let n of t) {
|
|
601
|
+
let t = !(G(n.getPlanElement(), a) || U(e, n.getKernelObject(), n.getPlanElement().getCenter()));
|
|
602
|
+
t !== n.isHiddenByCameraFacing() && (i = !0), n.setHiddenByCameraFacing(t);
|
|
601
603
|
}
|
|
602
|
-
|
|
603
|
-
|
|
604
|
+
for (let t of n) {
|
|
605
|
+
let n = t.getPlanElement(), r = W(t);
|
|
606
|
+
if (!n || !r) continue;
|
|
607
|
+
let o = n.getObjectCategory?.().value;
|
|
608
|
+
if (o !== x.DOOR && o !== x.WINDOW) continue;
|
|
609
|
+
let s = G(r, a) || U(e, r, r.getCenter()), c = t.getContainer().visible;
|
|
610
|
+
t.setHiddenByCameraFacing(!s), c !== t.getContainer().visible && (i = !0);
|
|
611
|
+
}
|
|
612
|
+
return i;
|
|
613
|
+
}, qe = (e, t, n = !0) => {
|
|
604
614
|
if (!e.userData.tween) if (t) if (e.transparent = !0, !n) e.opacity = .2;
|
|
605
615
|
else {
|
|
606
616
|
let t = { opacity: 1 };
|
|
@@ -623,40 +633,40 @@ var I = .4, ve = "#DDDDDD", ye = .4, be = "#7B7B7B", xe = "#B1B1B1", Se = .8, Ce
|
|
|
623
633
|
}).start();
|
|
624
634
|
window.TWEEN?.add(n);
|
|
625
635
|
}
|
|
626
|
-
},
|
|
627
|
-
let o =
|
|
628
|
-
let n =
|
|
629
|
-
|
|
636
|
+
}, Je = (e, t, n, r, i, a) => {
|
|
637
|
+
let o = Ye(n, r), s = i.clone().multiply(r).multiply(t), c = o.clone().invert(), l = c.clone().multiply(n), u = c.clone().multiply(r), d = { t: 0 }, f = new N(d).to({ t: 1 }, 400).easing(D.Quadratic.InOut).onUpdate(() => {
|
|
638
|
+
let n = Xe(l, u, d.t);
|
|
639
|
+
q(e, i.clone().multiply(o).multiply(n).multiply(t)), a && a();
|
|
630
640
|
}).onComplete(() => {
|
|
631
|
-
|
|
641
|
+
q(e, s), a && a(), window.TWEEN?.remove(f);
|
|
632
642
|
}).onStop(() => {
|
|
633
643
|
window.TWEEN?.remove(f);
|
|
634
644
|
}).start();
|
|
635
645
|
return window.TWEEN?.add(f), f;
|
|
636
|
-
},
|
|
646
|
+
}, Ye = (e, n) => {
|
|
637
647
|
let r = e.clone().invert().clone().multiply(n), a = new t(), o = new i();
|
|
638
648
|
r.decompose(a, o, new t());
|
|
639
|
-
let s =
|
|
649
|
+
let s = K(o), c = s.axis;
|
|
640
650
|
if (a.length() < .001 || Math.abs(s.angleRad) < .001 || c.length() < .001) return new m().identity();
|
|
641
651
|
let l = new t().setFromMatrixPosition(e), u = new t().setFromMatrixPosition(n), d = l.clone().sub(u), f = d.length(), p = new t().crossVectors(c, d).normalize();
|
|
642
652
|
d = new t().crossVectors(p, c).normalize();
|
|
643
653
|
let h = l.clone().add(u).multiplyScalar(.5);
|
|
644
654
|
return h = h.sub(p.clone().multiplyScalar(f * .5 / Math.tan(s.angleRad * .5))), new m().makeBasis(p, c, d).setPosition(h);
|
|
645
|
-
},
|
|
655
|
+
}, K = (e) => {
|
|
646
656
|
let n = Math.sqrt(1 - e.w * e.w);
|
|
647
657
|
return {
|
|
648
658
|
axis: new t(e.x, e.y, e.z).multiplyScalar(n === 0 ? 1 : 1 / n),
|
|
649
659
|
angleRad: 2 * Math.acos(e.w)
|
|
650
660
|
};
|
|
651
|
-
},
|
|
661
|
+
}, q = (e, t) => {
|
|
652
662
|
e.updateMatrix(), t.multiply(e.matrix.clone().invert()), e.applyMatrix4(t), e.updateMatrix();
|
|
653
|
-
},
|
|
663
|
+
}, Xe = (e, n, r) => {
|
|
654
664
|
let a = new t(), o = new i(), s = new t();
|
|
655
665
|
e.decompose(a, o, s);
|
|
656
666
|
let c = new t(), l = new i(), u = new t();
|
|
657
667
|
n.decompose(c, l, u);
|
|
658
|
-
let d = new t().lerpVectors(a, c, r), f = new i().slerpQuaternions(o, l, r), p =
|
|
659
|
-
if (p.angleRad > Math.PI && (p.angleRad -= 2 * Math.PI), Math.abs(p.angleRad) >
|
|
668
|
+
let d = new t().lerpVectors(a, c, r), f = new i().slerpQuaternions(o, l, r), p = K(o.clone().conjugate().multiply(l));
|
|
669
|
+
if (p.angleRad > Math.PI && (p.angleRad -= 2 * Math.PI), Math.abs(p.angleRad) > S(1) && a.length() > .001 && c.length() > .001) {
|
|
660
670
|
let e = a.clone().normalize().dot(c.clone().normalize());
|
|
661
671
|
if (Math.abs(e) < .999) {
|
|
662
672
|
let n = new t().crossVectors(a, c), o = new i().setFromAxisAngle(n.normalize(), Math.acos(e) * r), s = a.length() * r + c.length() * (1 - r);
|
|
@@ -665,12 +675,12 @@ var I = .4, ve = "#DDDDDD", ye = .4, be = "#7B7B7B", xe = "#B1B1B1", Se = .8, Ce
|
|
|
665
675
|
}
|
|
666
676
|
let h = new t().lerpVectors(s, u, r), g = new m();
|
|
667
677
|
return g.compose(d, f, h), g;
|
|
668
|
-
},
|
|
678
|
+
}, Ze = (e) => {
|
|
669
679
|
let t = new h();
|
|
670
680
|
return t.setRGB((e >> 16) / 255, (e >> 8 & 255) / 255, (e >> 0 & 255) / 255), t;
|
|
671
|
-
},
|
|
681
|
+
}, J = (e, t) => {
|
|
672
682
|
t.transparent || (e.transparent = t.transparent, delete e.userData.postProcessingMaterialPlugin), e.opacity = t.opacity, e.needsUpdate = !0;
|
|
673
|
-
},
|
|
683
|
+
}, Qe = (e, t) => new Promise((n) => {
|
|
674
684
|
e.traverse((e) => {
|
|
675
685
|
if (e instanceof c) {
|
|
676
686
|
let r = e.material;
|
|
@@ -681,13 +691,13 @@ var I = .4, ve = "#DDDDDD", ye = .4, be = "#7B7B7B", xe = "#B1B1B1", Se = .8, Ce
|
|
|
681
691
|
a.toJSON = () => void 0, e.userData.tween = a, window.TWEEN?.add(a.to(t, 250).easing(D.Linear.None).onUpdate(() => {
|
|
682
692
|
r.opacity = i.opacity;
|
|
683
693
|
}).onStop(() => {
|
|
684
|
-
|
|
694
|
+
J(r, t), e.userData.tween = void 0;
|
|
685
695
|
}).onComplete(() => {
|
|
686
|
-
|
|
696
|
+
J(r, t), e.userData.tween = void 0, window.TWEEN?.remove(a), n();
|
|
687
697
|
}).start());
|
|
688
698
|
}
|
|
689
699
|
});
|
|
690
|
-
}),
|
|
700
|
+
}), $e = (e) => {
|
|
691
701
|
e.traverse((e) => {
|
|
692
702
|
if (e instanceof c) {
|
|
693
703
|
let t = e.material;
|
|
@@ -708,66 +718,66 @@ var I = .4, ve = "#DDDDDD", ye = .4, be = "#7B7B7B", xe = "#B1B1B1", Se = .8, Ce
|
|
|
708
718
|
window.TWEEN?.add(i);
|
|
709
719
|
}
|
|
710
720
|
});
|
|
711
|
-
},
|
|
721
|
+
}, et = (e, n) => {
|
|
712
722
|
let r = new u().setFromObject(e), i = r.getSize(new t()), a = Math.min(i.x, i.y, i.z), o = !0;
|
|
713
723
|
return a > 5 && (console.warn("GLB seems to be too big (" + a + ")", n), o = !1), r.min.y < -.01 && (console.warn("GLB seems to be under the floor (" + r.min.y + "): ", n), o = !1), o;
|
|
714
|
-
},
|
|
715
|
-
e.type === "Mesh" ?
|
|
716
|
-
},
|
|
724
|
+
}, tt = (e) => {
|
|
725
|
+
e.type === "Mesh" ? X(e) : Y(e);
|
|
726
|
+
}, Y = (e) => {
|
|
717
727
|
!e || !e.children || e.children.length === 0 || e.children.forEach((e) => {
|
|
718
|
-
|
|
728
|
+
X(e);
|
|
719
729
|
});
|
|
720
|
-
},
|
|
730
|
+
}, X = (e) => {
|
|
721
731
|
if (e) {
|
|
722
732
|
try {
|
|
723
|
-
e.material &&
|
|
733
|
+
e.material && Q(e.material);
|
|
724
734
|
} catch (e) {
|
|
725
735
|
console.warn("disposeMesh: material dispose failed", e);
|
|
726
736
|
}
|
|
727
737
|
try {
|
|
728
|
-
e.geometry &&
|
|
738
|
+
e.geometry && Z(e.geometry);
|
|
729
739
|
} catch (e) {
|
|
730
740
|
console.warn("disposeMesh: geometry dispose failed", e);
|
|
731
741
|
}
|
|
732
742
|
try {
|
|
733
|
-
e.children && e.children.length > 0 &&
|
|
743
|
+
e.children && e.children.length > 0 && Y(e);
|
|
734
744
|
} catch (e) {
|
|
735
745
|
console.warn("disposeMesh: child dispose failed", e);
|
|
736
746
|
}
|
|
737
747
|
}
|
|
738
|
-
},
|
|
748
|
+
}, Z = (e) => {
|
|
739
749
|
e && e.dispose();
|
|
740
|
-
},
|
|
750
|
+
}, Q = (e) => {
|
|
741
751
|
e && (e.map && e.map.dispose(), e.normalMap && e.normalMap.dispose(), e.dispose());
|
|
742
|
-
},
|
|
752
|
+
}, $, nt = () => ($ || ($ = new f(), $.visible = !1), $), rt, it = (e) => (rt ||= E.createMeshStandardMaterial({
|
|
743
753
|
color: e || "#FF0000",
|
|
744
754
|
transparent: !0,
|
|
745
755
|
opacity: .5,
|
|
746
756
|
visible: !0,
|
|
747
757
|
polygonOffset: !0,
|
|
748
758
|
polygonOffsetFactor: -1
|
|
749
|
-
}),
|
|
759
|
+
}), rt), at = (e) => e.x === 0 && e.y === 0 && e.z === 0, ot = (e) => Number.isFinite(e.x) && Number.isFinite(e.y) && Number.isFinite(e.z), st = (e, t) => {
|
|
750
760
|
let n = "";
|
|
751
761
|
return !e && e !== "" ? null : (e.materialId && e.materialId !== "" ? n = e.materialId : e.catalogItemId && e.catalogItemId !== "" ? n = e.catalogItemId : e.rgbValue > 0 ? n = "rgb" + JSON.stringify(e.rgbValue) : e.length > 0 ? n = e : t && t.value === T.WALL ? n = "default_wall_material_" + e.getSourceType().value : t && t.value === T.CEILING && (n = "default_ceiling_material_" + e.getSourceType().value), n);
|
|
752
|
-
},
|
|
762
|
+
}, ct = (e) => {
|
|
753
763
|
let n = e.getWorldDirection(new t()).clone();
|
|
754
764
|
n.y = 0, n.lengthSq() < .01 && (n = new t(0, 1, 0), n.applyQuaternion(e.quaternion), n.y = 0), n.normalize();
|
|
755
765
|
let r = Math.asin(n.x);
|
|
756
766
|
return n.z < 0 && (r = Math.PI - r), r < 0 && (r += Math.PI * 2), r;
|
|
757
|
-
},
|
|
767
|
+
}, lt = (e, t) => {
|
|
758
768
|
if (!e || !t) return 0;
|
|
759
769
|
let n = e.clone().expandByScalar(.001).containsBox(t), r = t.clone().expandByScalar(.001).containsBox(e);
|
|
760
770
|
return r && n || !r && !n ? 0 : n === !0 ? 1 : -1;
|
|
761
|
-
},
|
|
771
|
+
}, ut = (e, t) => {
|
|
762
772
|
if (!e || !t) return 0;
|
|
763
773
|
let n = e.clone().expandByScalar(.001).containsBox(t), r = t.clone().expandByScalar(.001).containsBox(e);
|
|
764
774
|
if (r && n) return 0;
|
|
765
775
|
if (!r && !n) {
|
|
766
|
-
let n =
|
|
776
|
+
let n = dt(e, t);
|
|
767
777
|
return n === .5 ? 0 : n > .5 ? -1 : 1;
|
|
768
778
|
}
|
|
769
779
|
return n === !0 ? 1 : -1;
|
|
770
|
-
},
|
|
780
|
+
}, dt = (e, n) => {
|
|
771
781
|
let r = new u();
|
|
772
782
|
if (r.copy(e).intersect(n), r.isEmpty()) return 0;
|
|
773
783
|
let i = (e) => {
|
|
@@ -775,34 +785,34 @@ var I = .4, ve = "#DDDDDD", ye = .4, be = "#7B7B7B", xe = "#B1B1B1", Se = .8, Ce
|
|
|
775
785
|
return e.getSize(n), n.x * n.y * n.z;
|
|
776
786
|
}, a = i(e), o = i(r);
|
|
777
787
|
return a === 0 ? 0 : o / a;
|
|
778
|
-
},
|
|
788
|
+
}, ft = (e) => e[0] === 1 && e[1] === 0 && e[2] === 0 && e[3] === 1 && e[4] === 0 && e[5] === 0, pt = (e, n, r, i = 1) => {
|
|
779
789
|
let a = n > r, o = a ? 15 : 0, s = a ? 0 : 10, c = e.getSize(new t()), l = e.getCenter(new t()), d = c.x > 2 * o ? c.x / 2 : o, f = c.z > 2 * s ? c.z / 2 : s;
|
|
780
790
|
return d *= i, f *= i, new u(new t(l.x - d, l.y, l.z - f), new t(l.x + d, l.y, l.z + f));
|
|
781
|
-
},
|
|
791
|
+
}, mt = (e) => {
|
|
782
792
|
let { x: t, y: n } = e;
|
|
783
793
|
return {
|
|
784
794
|
x: t,
|
|
785
795
|
y: n
|
|
786
796
|
};
|
|
787
|
-
},
|
|
797
|
+
}, ht = (e) => {
|
|
788
798
|
let { x: t, y: n, z: r } = e;
|
|
789
799
|
return {
|
|
790
800
|
x: t,
|
|
791
801
|
y: n,
|
|
792
802
|
z: r
|
|
793
803
|
};
|
|
794
|
-
},
|
|
804
|
+
}, gt = (e, n, r) => new t().setFromSphericalCoords(e, Math.PI * (1 - r), Math.PI * 2 * (1 - n)), _t = (e) => {
|
|
795
805
|
let t = new r();
|
|
796
806
|
return e.environment && (t.environment = e.environment.clone()), e.userData.environmentDefinition && (t.userData.environmentDefinition = e.userData.environmentDefinition.clone()), t.userData.shadowFromEnvironment = e.userData.shadowFromEnvironment, t;
|
|
797
|
-
},
|
|
807
|
+
}, vt = (e, n) => {
|
|
798
808
|
let r = new l(), i = new m().multiplyMatrices(e.projectionMatrix, e.matrixWorldInverse);
|
|
799
809
|
r.setFromProjectionMatrix(i);
|
|
800
810
|
let a = n.getCenter(new t());
|
|
801
811
|
return r.containsPoint(a);
|
|
802
|
-
},
|
|
812
|
+
}, yt = (e) => {
|
|
803
813
|
e.lights_fragment_begin = "\n vec3 geometryPosition = - vViewPosition;\n vec3 geometryNormal = normal;\n vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n vec3 geometryClearcoatNormal = vec3( 0.0 );\n #ifdef USE_CLEARCOAT\n geometryClearcoatNormal = clearcoatNormal;\n #endif\n\n // OPTIMIZATION: Early exit for transparent/invisible materials\n #ifdef USE_ALPHATEST\n if ( diffuseColor.a < alphaTest ) discard;\n #endif\n\n // OPTIMIZATION: Cache expensive calculations\n float NdotV = saturate( dot( geometryNormal, geometryViewDir ) );\n\n #ifdef USE_IRIDESCENCE\n float dotNVi = NdotV; // Reuse calculated value\n if ( material.iridescenceThickness == 0.0 ) {\n material.iridescence = 0.0;\n } else {\n material.iridescence = saturate( material.iridescence );\n }\n // OPTIMIZATION: Skip iridescence calculations if effect is minimal\n if ( material.iridescence > 0.01 ) {\n material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\n material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\n }\n #endif\n\n IncidentLight directLight;\n\n // OPTIMIZATION: Early exit if material has no metalness or roughness variation\n #ifdef USE_ROUGHNESSMAP\n bool hasRoughnessVariation = true;\n #else\n bool hasRoughnessVariation = false;\n #endif\n\n #ifdef USE_METALNESSMAP\n bool hasMetalnessVariation = true;\n #else\n bool hasMetalnessVariation = false;\n #endif\n\n #if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n PointLight pointLight;\n #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n PointLightShadow pointLightShadow;\n #endif\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n pointLight = pointLights[ i ];\n getPointLightInfo( pointLight, geometryPosition, directLight );\n\n // OPTIMIZATION: Enhanced visibility and distance checks\n #if defined( RE_Direct )\n if ( directLight.visible ) {\n // OPTIMIZATION: Skip lights with negligible contribution based on color intensity\n float lightIntensity = dot( directLight.color, vec3( 0.299, 0.587, 0.114 ) );\n if ( lightIntensity > 0.001 ) {\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n pointLightShadow = pointLightShadows[ i ];\n directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n #endif\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n }\n #endif\n }\n #pragma unroll_loop_end\n #endif\n\n #if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n SpotLight spotLight;\n vec4 spotColor;\n vec3 spotLightCoord;\n bool inSpotLightMap;\n #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n SpotLightShadow spotLightShadow;\n #endif\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n spotLight = spotLights[ i ];\n getSpotLightInfo( spotLight, geometryPosition, directLight );\n\n // OPTIMIZATION: Enhanced visibility checks for spot lights\n #if defined( RE_Direct )\n if ( directLight.visible ) {\n // OPTIMIZATION: Skip spot light map calculation if light contribution is minimal\n float lightIntensity = dot( directLight.color, vec3( 0.299, 0.587, 0.114 ) );\n if ( lightIntensity > 0.001 ) {\n #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\n #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\n #else\n #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n #endif\n #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\n spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\n inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\n if ( inSpotLightMap ) {\n spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\n directLight.color = directLight.color * spotColor.rgb;\n }\n #endif\n #undef SPOT_LIGHT_MAP_INDEX\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n spotLightShadow = spotLightShadows[ i ];\n directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n #endif\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n }\n #endif\n }\n #pragma unroll_loop_end\n #endif\n\n #if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n DirectionalLight directionalLight;\n #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n DirectionalLightShadow directionalLightShadow;\n #endif\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n directionalLight = directionalLights[ i ];\n getDirectionalLightInfo( directionalLight, directLight );\n\n // OPTIMIZATION: Skip very dim directional lights\n #if defined( RE_Direct )\n float lightIntensity = dot( directLight.color, vec3( 0.299, 0.587, 0.114 ) );\n if ( directLight.visible && lightIntensity > 0.001 ) {\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n directionalLightShadow = directionalLightShadows[ i ];\n directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n #endif\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #endif\n }\n #pragma unroll_loop_end\n #endif\n\n #if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n RectAreaLight rectAreaLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n rectAreaLight = rectAreaLights[ i ];\n // OPTIMIZATION: Simple rect area light processing - Three.js handles distance internally\n RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n #endif\n\n // OPTIMIZATION: Streamlined indirect lighting with early exits\n #if defined( RE_IndirectDiffuse )\n vec3 iblIrradiance = vec3( 0.0 );\n vec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\n // OPTIMIZATION: Skip light probe calculation if ambient is sufficient\n float ambientIntensity = dot( irradiance, vec3( 0.299, 0.587, 0.114 ) );\n\n #if defined( USE_LIGHT_PROBES )\n if ( ambientIntensity < 0.9 ) {\n irradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\n }\n #endif\n\n #if ( NUM_HEMI_LIGHTS > 0 )\n if ( ambientIntensity < 0.9 ) {\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n vec3 hemiContribution = getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\n // OPTIMIZATION: Skip negligible hemisphere light contributions\n if ( dot( hemiContribution, vec3( 0.299, 0.587, 0.114 ) ) > 0.001 ) {\n irradiance += hemiContribution;\n }\n }\n #pragma unroll_loop_end\n }\n #endif\n #endif\n\n #if defined( RE_IndirectSpecular )\n vec3 radiance = vec3( 0.0 );\n vec3 clearcoatRadiance = vec3( 0.0 );\n #endif", e.lights_pars_begin = e.lights_pars_begin.replace("light.color = pointLight.color;", "\n light.color = pointLight.color * step( lightDistance, pointLight.distance );\n ");
|
|
804
814
|
};
|
|
805
815
|
//#endregion
|
|
806
|
-
export {
|
|
816
|
+
export { gt as $, ke as A, Me as B, nt as C, ie as Ct, pt as D, it as E, b as Et, ct as F, R as G, Fe as H, Ke as I, mt as J, q as K, vt as L, Oe as M, Ae as N, st as O, Ge as P, at as Q, ft as R, $e as S, ae as St, Ze as T, ne as Tt, Ne as U, yt as V, Pe as W, Qe as X, ht as Y, ot as Z, tt as _, oe as _t, be as a, ge as at, X as b, x as bt, ve as c, me as ct, Ue as d, ue as dt, D as et, Je as f, le as ft, Ie as g, ce as gt, _t as h, S as ht, Ee as i, _e as it, De as j, Be as k, ye as l, fe as lt, lt as m, C as mt, we as n, N as nt, xe as o, he as ot, et as p, pe as pt, qe as q, Te as r, E as rt, Se as s, T as st, Ce as t, k as tt, H as u, de as ut, Z as v, re as vt, ut as w, ee as wt, Y as x, te as xt, Q as y, se as yt, je as z };
|
|
807
817
|
|
|
808
|
-
//# sourceMappingURL=threejs-utils-
|
|
818
|
+
//# sourceMappingURL=threejs-utils-D5DMIzUO.mjs.map
|