@realsee/five-webgpu 1.0.0-alpha.8 → 1.0.0-alpha.9

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.
Files changed (41) hide show
  1. package/docs/classes/index.FiveRenderer.html +2 -2
  2. package/five/index.js +111 -37
  3. package/five/index.mjs +1067 -721
  4. package/five/renderer/compute-renderers/binned/binned-core.d.ts +46 -0
  5. package/five/renderer/compute-renderers/binned/binned-pipelines.d.ts +10 -0
  6. package/five/renderer/compute-renderers/binned/shaders/classify.d.ts +2 -0
  7. package/five/renderer/compute-renderers/binned/shaders/coop.d.ts +2 -0
  8. package/five/renderer/compute-renderers/pointcloud-compute-renderer.d.ts +12 -38
  9. package/five/renderer/compute-renderers/shaders/lib/color.d.ts +2 -0
  10. package/five/renderer/compute-renderers/shaders/lib/cull.d.ts +2 -0
  11. package/five/renderer/compute-renderers/shaders/lib/encode.d.ts +2 -0
  12. package/five/renderer/compute-renderers/shaders/lib/point-setup.d.ts +2 -0
  13. package/five/renderer/compute-renderers/shaders/lib/point-size.d.ts +2 -0
  14. package/five/renderer/compute-renderers/shaders/lib/raster.d.ts +2 -0
  15. package/five/renderer/compute-renderers/shaders/lib/size-class.d.ts +2 -0
  16. package/five/renderer/compute-renderers/shaders/lib/tile-bindings.d.ts +2 -0
  17. package/five/renderer/compute-renderers/uniform-layout.d.ts +23 -0
  18. package/five/renderer/five-renderer.d.ts +2 -0
  19. package/gltf-loader/index.js +3 -3
  20. package/gltf-loader/index.mjs +3 -3
  21. package/line/index.js +3 -3
  22. package/line/index.mjs +3 -3
  23. package/package.json +1 -1
  24. package/plugins/index.js +2 -2
  25. package/plugins/index.mjs +2 -2
  26. package/react/index.js +2 -2
  27. package/react/index.mjs +2 -2
  28. package/sticker/index.js +3 -3
  29. package/sticker/index.mjs +3 -3
  30. package/umd/five-gltf-loader.js +3 -3
  31. package/umd/five-line.js +3 -3
  32. package/umd/five-plugins.js +2 -2
  33. package/umd/five-react.js +2 -2
  34. package/umd/five-sticker.js +3 -3
  35. package/umd/five-vfx.js +2 -2
  36. package/umd/five.js +131 -57
  37. package/vfx/index.js +2 -2
  38. package/vfx/index.mjs +2 -2
  39. package/work-downloader/index.js +2 -2
  40. package/work-downloader/index.mjs +2 -2
  41. /package/five/renderer/compute-renderers/{shaders/rasterize.d.ts → binned/shaders/args-builder.d.ts} +0 -0
package/five/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five-webgpu
4
- * Generated: 2026/10/19
5
- * Version: 1.0.0-alpha.8
4
+ * Generated: 2026/10/21
5
+ * Version: 1.0.0-alpha.9
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
@@ -19456,28 +19456,302 @@ var OS = class extends Kx {
19456
19456
  }
19457
19457
  }, HS = function(...e) {
19458
19458
  return e[0].split("").map((e) => e.charCodeAt(0) > 126 ? e : String.fromCharCode((e.charCodeAt(0) + 113) % 126)).join("");
19459
- }("p-Snzrb{vs|z-\n--vr]|wG-znA\x07AIs@?K9--prr{V{s|G-rpAI@?K9\fHMt|}5=6-Mov{qv{t5=6-nI|ntr9-rnqlvrK-snzrossrG-nn\bIn|zvpI@?KKHMt|}5=6-Mov{qv{t5>6-nI{vs|zK-snzrG-Snzrb{vs|zHMp|z}r-M|xt|}lv r5?BC6s{-znv{5Movyv{5ty|onylv{|pnv|{lvq6-tvqG-rp@I@?K6-\n--yr-vq\x07-J-tvq;\x07H--yr-|ny]v\x07ry-J-snzr;prr{V{s|;\x07-7-snzr;prr{V{s|;\bH--vs-5vq\x07-KJ-|ny]v\x07ry6-\n----r{H--\f--n|zvp`|r53snzrossrhvq\x07j9-=\x07SSSSSSSS6H\f"), US = function(...e) {
19459
+ }("Mt|}5=6-Mov{qv{t5=6-nI|ntr9-rnqlvrK-snzrossrG-nn\bIn|zvpI@?KKHMt|}5=6-Mov{qv{t5>6-nI{vs|zK-snzrG-Snzrb{vs|zHMp|z}r-M|xt|}lv r5?BC6s{-znv{5Movyv{5ty|onylv{|pnv|{lvq6-tvqG-rp@I@?K6-\n--yr-vq\x07-J-tvq;\x07H--yr-|ny]v\x07ry-J-snzr;prr{V{s|;\x07-7-snzr;prr{V{s|;\bH--vs-5vq\x07-KJ-|ny]v\x07ry6-\n----r{H--\f--n|zvp`|r53snzrossrhvq\x07j9-=\x07SSSSSSSS6H\f"), US = function(...e) {
19460
19460
  return e[0].split("").map((e) => e.charCodeAt(0) > 126 ? e : String.fromCharCode((e.charCodeAt(0) + 113) % 126)).join("");
19461
- }("p-crr\x07\\}-\n--Movyv{5}|vv|{6-}|vv|{G-rpAIs@?K9--My|pnv|{5=6-G-rp?Is@?K9\fHMrr\x07s{-lznv{5Movyv{5rr\x07lv{qr\x076-vqG-@?6-:K-crr\x07\\}-\n--<<-Syyprr{-vn{tyrG-@-rvpr-p|r-ur-r{vr-prr{--yr-\x07-J-s@?5vq-3->6-7-A;=-:->;=H--yr-\b-J-s@?55vq-KK->6-3->6-7-A;=-:->;=H--n-|G-crr\x07\\}H--|;}|vv|{-J-rpAIs@?K5\x079-\b9-=;=9->;=6H--|;-J-rp?Is@?K5\x07-7-=;B-8-=;B9->;=-:-5\b-7-=;B-8-=;B66H--r{-|H\fp-]nnz-\n--prr{dvquG-@?9--prr{UrvtuG-@?9\fHMt|}5=6-Mov{qv{t5=6-nI|ntr9-rnqK-snzrossrG-nn\bI@?KHMt|}5=6-Mov{qv{t5>6-nI{vs|zK-}nnzG-]nnzHp-Snt\\}-\n--My|pnv|{5=6-p|y|G-rpAIs@?K9--Movyv{5sntlqr}u6-qr}uG-s@?9\fHMsntzr{s{-slznv{5Movyv{5}|vv|{6-sntP||qG-rpAIs@?K6-:K-Snt\\}-\n--yr-\x07-J-@?5sntP||q;\x076H--yr-\b-J-@?5sntP||q;\b6H--yr-vq\x07-J-\b-7-}nnz;prr{dvqu-8-\x07H--yr-r{p|qrq-J-snzrossrhvq\x07jH--n-|G-Snt\\}H--<<-Vs-}v\x07ry-n-{rr-vr{-5vyy-pyrnrq-|-=\x07SSSSSSSS69-qvpnq-v--<<-o\b-}uv{t-qr}u-|->;=-n{q-|}v{t-n{}nr{-—-rssrpvry\b-xv}}rq--vs-5r{p|qrq-JJ-=\x07SSSSSSSS6-\n----qvpnqH--\f--<<-Qrp|qr-qr}u-s|z-}}r->C-ov-→-h=9->j--yr-qr}ub>C-J-5r{p|qrq-KK->C6-3-=\x07SSSSH--|;qr}u-J-s@?5qr}ub>C6-<-CBB@B;=H--<<-Qrp|qr-_TOBCB-s|z-y|r->C-ov--yr-toBCB-J-r{p|qrq-3-=\x07SSSSH--yr--J-s@?55toBCB-KK->>6-3-=\x07>S6-<-@>;=H--yr-t-J-s@?55toBCB-KK-B6-3-=\x07@S6-<-C@;=H--yr-o-J-s@?5toBCB-3-=\x07>S6-<-@>;=H--|;p|y|-J-rpAIs@?K59-t9-o9->;=6H--r{-|H\f"), WS = function(...e) {
19461
+ }("p-crr\x07\\}-\n--Movyv{5}|vv|{6-}|vv|{G-rpAIs@?K9--My|pnv|{5=6-G-rp?Is@?K9\fHMrr\x07s{-lznv{5Movyv{5rr\x07lv{qr\x076-vqG-@?6-:K-crr\x07\\}-\n--<<-Syyprr{-vn{tyrG-@-rvpr-p|r-ur-r{vr-prr{--yr-\x07-J-s@?5vq-3->6-7-A;=-:->;=H--yr-\b-J-s@?55vq-KK->6-3->6-7-A;=-:->;=H--n-|G-crr\x07\\}H--|;}|vv|{-J-rpAIs@?K5\x079-\b9-=;=9->;=6H--|;-J-rp?Is@?K5\x07-7-=;B-8-=;B9->;=-:-5\b-7-=;B-8-=;B66H--r{-|H\fp-]nnz-\n--prr{dvquG-@?9--prr{UrvtuG-@?9\fHMt|}5=6-Mov{qv{t5=6-nI|ntr9-rnqK-snzrossrG-nn\bI@?KHMt|}5=6-Mov{qv{t5>6-nI{vs|zK-}nnzG-]nnzHp-Snt\\}-\n--My|pnv|{5=6-p|y|G-rpAIs@?K9--Movyv{5sntlqr}u6-qr}uG-s@?9\fHMsntzr{s{-slznv{5Movyv{5}|vv|{6-sntP||qG-rpAIs@?K6-:K-Snt\\}-\n--yr-\x07-J-@?5sntP||q;\x076H--yr-\b-J-@?5sntP||q;\b6H--yr-vq\x07-J-\b-7-}nnz;prr{dvqu-8-\x07H--yr-r{p|qrq-J-snzrossrhvq\x07jH--n-|G-Snt\\}H--<<-Vs-}v\x07ry-n-{rr-vr{-5vyy-pyrnrq-|-=\x07SSSSSSSS69-qvpnq-v--<<-o\b-}uv{t-qr}u-|->;=-n{q-|}v{t-n{}nr{-—-rssrpvry\b-xv}}rq--vs-5r{p|qrq-JJ-=\x07SSSSSSSS6-\n----qvpnqH--\f--<<-Qrp|qr-qr}u-s|z-}}r->C-ov-→-h=9->j--yr-qr}ub>C-J-5r{p|qrq-KK->C6-3-=\x07SSSSH--|;qr}u-J-s@?5qr}ub>C6-<-CBB@B;=H--<<-Qrp|qr-_TOBCB-s|z-y|r->C-ov--yr-toBCB-J-r{p|qrq-3-=\x07SSSSH--yr--J-s@?55toBCB-KK->>6-3-=\x07>S6-<-@>;=H--yr-t-J-s@?55toBCB-KK-B6-3-=\x07@S6-<-C@;=H--yr-o-J-s@?5toBCB-3-=\x07>S6-<-@>;=H--|;p|y|-J-rpAIs@?K59-t9-o9->;=6H--r{-|H\f"), WS = {
19462
+ "mat4x4<f32>": 64,
19463
+ "vec4<f32>": 16,
19464
+ "vec4<u32>": 16
19465
+ };
19466
+ function GS(e, t) {
19467
+ let n = 0, r = {}, i = [];
19468
+ for (let [e, a] of t) r[e] = n, i.push(` ${e}: ${a},`), n += WS[a];
19469
+ return {
19470
+ offsets: r,
19471
+ size: n,
19472
+ wgsl: `struct ${e} {\n${i.join("\n")}\n};\n`
19473
+ };
19474
+ }
19475
+ var KS = GS("FrameUniforms", [
19476
+ ["viewProj", "mat4x4<f32>"],
19477
+ ["screenInfo", "vec4<u32>"],
19478
+ ["pointAttenPack", "vec4<f32>"],
19479
+ ["viewZRow", "vec4<f32>"],
19480
+ ["sizeInfo0", "vec4<f32>"],
19481
+ ["sizeInfo1", "vec4<u32>"],
19482
+ ["cameraWorld", "vec4<f32>"],
19483
+ ["cameraForward", "vec4<f32>"],
19484
+ ["constantColor", "vec4<f32>"],
19485
+ ["colorGain", "vec4<f32>"],
19486
+ ["stylePack", "vec4<u32>"],
19487
+ ["floorPack", "vec4<f32>"],
19488
+ ["clip0Inv", "mat4x4<f32>"],
19489
+ ["clip0Meta", "vec4<f32>"],
19490
+ ["clip1Inv", "mat4x4<f32>"],
19491
+ ["clip1Meta", "vec4<f32>"],
19492
+ ["rasterParams", "vec4<f32>"],
19493
+ ["binnedInfo", "vec4<u32>"]
19494
+ ]), qS = GS("TileUniforms", [
19495
+ ["modelMatrix", "mat4x4<f32>"],
19496
+ ["bboxMin", "vec4<f32>"],
19497
+ ["bboxMax", "vec4<f32>"],
19498
+ ["tilePack", "vec4<u32>"],
19499
+ ["mvp", "mat4x4<f32>"]
19500
+ ]), JS = KS.wgsl + qS.wgsl + "\nconst SUB_BLOCK_SIZE: u32 = 8u;\nconst COOP_WORKGROUP_SIZE: u32 = 64u;\nconst CLASSIFY_WORKGROUP_SIZE: u32 = 256u;\nconst SUB_BLOCK_INVALID: u32 = 0xffffffffu;\nconst SIZE_SMALL: u32 = 0u;\nconst SIZE_MEDIUM: u32 = 1u;\nconst SIZE_LARGE: u32 = 2u;\n", YS = "\nstruct BucketEntry { cx: f32, cy: f32, size: f32, encoded: u32, };\nstruct SubBlockEntry { pointIndex: u32, blockXY: u32, };\nstruct Counters { medium: atomic<u32>, large: atomic<u32>, subBlock: atomic<u32>, overflow: atomic<u32>, };\n", XS = function(...e) {
19501
+ return e[0].split("").map((e) => e.charCodeAt(0) > 126 ? e : String.fromCharCode((e.charCodeAt(0) + 113) % 126)).join("");
19502
+ }("Mt|}5=6-Mov{qv{t5=6-nI|ntr9-rnqlvrK-snzrossrG-nn\bIn|zvpI@?KKHMt|}5=6-Mov{qv{t5>6-nI{vs|zK-snzrG-Snzrb{vs|zHMt|}5=6-Mov{qv{t5?6-nI|ntr9-rnqK-}|vv|{G-nn\bIs@?KHMt|}5=6-Mov{qv{t5@6-nI|ntr9-rnqK-p|y|G-nn\bI@?KHMt|}5=6-Mov{qv{t5A6-n-tnqvr{ar\x07G-r\x07rl?qIs@?KHMt|}5=6-Mov{qv{t5B6-n-tnqvr{`nz}yrG-nz}yrHMt|}5=6-Mov{qv{t5C6-nI|ntr9-rnqK-}|v{[|znyG-nn\bI@?KHMt|}5=6-Mov{qv{t5D6-nI{vs|zK-vyrG-avyrb{vs|zH"), ZS = function(...e) {
19503
+ return e[0].split("").map((e) => e.charCodeAt(0) > 126 ? e : String.fromCharCode((e.charCodeAt(0) + 113) % 126)).join("");
19504
+ }("s{-{}npxlvE\x07Al{|zny5}npxrqG-@?6-:K-rp@Is@?K-\n--yr-{\x07-J-s@?55v@?5}npxrq-II-?A66-KK-?A6H--yr-{\b-J-s@?55v@?5}npxrq-II->C66-KK-?A6H--yr-{ -J-s@?55v@?5}npxrq-II--E66-KK-?A6H--r{-rp@Is@?K5{\x079-{\b9-{ 6-7-5>;=-<->?D;=6H\f<<-世界空间法线:{|znyv r5zn@5z|qry6-7-{Y|pny6s{-|yql{|zny5vq\x07G-@?6-:K-rp@Is@?K-\n--yr-{Y|pny-J-{}npxlvE\x07Al{|zny5}|v{[|znyhvq\x07j6H--r{-{|znyv r5zn@\x07@Is@?K5----vyr;z|qryZnv\x07h=j;\x07\b 9----vyr;z|qryZnv\x07h>j;\x07\b 9----vyr;z|qryZnv\x07h?j;\x07\b 9--6-7-{Y|pny6H\fs{-toBCBl|lyv{rn5toBCBG-@?6-:K-rp@Is@?K-\n--yr-B-J-5toBCB-KK->>6-3-=\x07>SH--yr-tC-J-5toBCB-KK-B6-3-=\x07@SH--yr-oB-J-toBCB-3-=\x07>SH--r{-rp@Is@?K5----s@?5B6-<-@>;=9----s@?5tC6-<-C@;=9----s@?5oB6-<-@>;=9--6H\fs{-tol|lu5pG-rp@Is@?K6-:K-rp@Is@?K-\n--yr-X-J-rpAIs@?K5=;=9-:>;=-<-@;=9-?;=-<-@;=9-:>;=6H--yr-}-J-zv\x075----rpAIs@?K5p;o9-p;t9-X;9-X; 69----rpAIs@?K5p;t9-p;o9-X;\x079-X;\b69----s@?5p;o-I-p;t69--6H--yr-\0-J-zv\x075----rpAIs@?K5};\x079-};\b9-};9-p;69----rpAIs@?K5p;9-};\b9-}; 9-};\x0769----s@?5};\x07-I-p;69--6H--yr-q-J-\0;\x07-:-zv{5\0;9-\0;\b6H--yr-r-J->;=r:>=H--r{-rp@Is@?K5----no5\0; -8-5\0;-:-\0;\b6-<-5C;=-7-q-8-r669----q-<-5\0;\x07-8-r69----\0;\x079--6H\fs{-ul|lto5pG-rp@Is@?K6-:K-rp@Is@?K-\n--yr-X-J-rpAIs@?K5>;=9-?;=-<-@;=9->;=-<-@;=9-@;=6H--yr-}-J-no5snp5p;\x07\x07\x07-8-X;\x07\b 6-7-C;=-:-X;6H--r{-p; -7-zv\x075X;\x07\x07\x079-pynz}5}-:-X;\x07\x07\x079-rp@Is@?K5=;=69-rp@Is@?K5>;=669-p;\b6H\fs{-n}}y\blp|y|lnqwzr{5toG-rp@Is@?K9-{d|yqG-rp@Is@?K9-|yq]|G-rp@Is@?K6-:K-rp@Is@?K-\n--n-u-J-tol|lu5to6H--u;\b-8J-snzr;p|y|Tnv{;\x07H--u; -8J-snzr;p|y|Tnv{;\bH--yr-un[-J-yr{tu5{d|yq6-K->r:BH--vs-5un[-33-snzr;p|y|Tnv{; -K-=;=6-\n----yr-pnza|]|v{-J-|yq]|-:-snzr;pnzrnd|yq;\x07\b H----yr-vrQv-J-{|znyv r5pnza|]|v{6H----yr-p|aurn-J-q|5{|znyv r5{d|yq69-vrQv6H----yr-n{tyr-J-np|5pynz}5p|aurn9-:>;=9->;=66H----yr-|yv{rSnp|-J-}|5>;=-:-no5n{tyr-:->;BD=DFC@?CDF6-<->;BD=DFC@?CDF9-B;=6H----u; -8J-snzr;p|y|Tnv{; -7-|yv{rSnp|H----u; -J-pynz}5u; 9-=;=9->;=6H--\f--vs-5un[-33-snzr;p|y|Tnv{;-.J-=;=6-\n----yr-oo|\x07Pr{r-J-5vyr;oo|\x07Zv{;\x07\b -8-vyr;oo|\x07Zn\x07;\x07\b 6-7-=;BH----yr-o|{qv{tYr{tu-J-zn\x075>r:B9-vyr;oo|\x07Zn\x07;\b-:-vyr;oo|\x07Zv{;\b6-7->;BH----yr-pnza|]|v{-J-|yq]|-:-snzr;pnzrnd|yq;\x07\b H----yr-pnzrnQvn{pr-J-yr{tu5pnza|]|v{6H----yr-pnzrnO|{qv{tQvn{pr-J-zn\x075=;=9-yr{tu5snzr;pnzrnd|yq;\x07\b -:-oo|\x07Pr{r6-:-o|{qv{tYr{tu-7-=;B6H----yr-pnzrnQvNqw-J-zn\x075=;=9-pnzrnQvn{pr-:-pnzrnO|{qv{tQvn{pr6H----n-qvn{prSnp|-J-pynz}5pnzrnQvNqw-<-o|{qv{tYr{tu9-=;=9->;=6H----qvn{prSnp|-J-5=;E-:-pynz}5>;=-:-}|5>;=-:-qvn{prSnp|9-@;=69-=;=9->;=66-7->?;=H----yr-p|aurn-J-q|5{|znyv r5{d|yq69-{|znyv r5pnza|]|v{66H----yr-n{tyr-J-np|5pynz}5p|aurn9-:>;=9->;=66H----yr-|yv{rSnp|-J-}|5>;=-:-no5n{tyr-:->;BD=DFC@?CDF6-<->;BD=DFC@?CDF9-B;=6H----u; -8J-zv\x075u; -7-snzr;p|y|Tnv{;-7-qvn{prSnp|9-=;=9-|yv{rSnp|6H----u; -J-pynz}5u; 9-=;=9->;=6H--\f--r{-zn\x075ul|lto5u69-rp@Is@?K5=;=66H\f<<-计算点颜色并编码为-_TOBCBs{-unqrl}|v{5vq\x07G-@?9-|yq]|G-rp@Is@?K9-{d|yqG-rp@Is@?K9-qnxr{G-o||y9-ny}unG-s@?6-:K-@?-\n--yr-p|y|`\byr-J-snzr;\byr]npx;\x07H--n-to-J-toBCBl|lyv{rn5p|y|hvq\x07j-3-=\x07SSSS6H--vs-5p|y|`\byr-JJ-?6-\n----to-J-snzr;p|{n{P|y|;\x07\b H--\f-ryr-vs-5p|y|`\byr-JJ->6-\n----yr-qr{|z-J-zn\x075vyr;oo|\x07Zn\x07;\b-:-vyr;oo|\x07Zv{;\b9->r:C6H----yr-Tnq-J-5|yq]|;\b-:-vyr;oo|\x07Zv{;\b6-<-qr{|zH----to-J-r\x07r`nz}yrYrry5tnqvr{ar\x079-tnqvr{`nz}yr9-rp?Is@?K5pynz}5Tnq9-=;=9->;=69-=;B69-=;=6;toH--\f--vs-5no5snzr;p|y|Tnv{;\x076-K->r:C-\v\v-no5snzr;p|y|Tnv{;\b6-K->r:C-\v\v------snzr;p|y|Tnv{; -K->r:C-\v\v-no5snzr;p|y|Tnv{;6-K->r:C6-\n----to-J-n}}y\blp|y|lnqwzr{5to9-{d|yq9-|yq]|6H--\f--vs-5qnxr{6-\n----to-7J-=;EH--\f--to-7J-ny}unH--to-7J-zn\x075vyr;oo|\x07Zn\x07;9-=;===>6H--yr-B-J-@?5pynz}5to;-7-@>;=9-=;=9-@>;=66H--yr-tC-J-@?5pynz}5to;t-7-C@;=9-=;=9-C@;=66H--yr-oB-J-@?5pynz}5to;o-7-@>;=9-=;=9-@>;=66H--r{-5B-II->>6-\v-5tC-II-B6-\v-oBH\f"), QS = function(...e) {
19505
+ return e[0].split("").map((e) => e.charCodeAt(0) > 126 ? e : String.fromCharCode((e.charCodeAt(0) + 113) % 126)).join("");
19506
+ }("<<<-与-svr-}ozl}|v{py|q<rr\x07;tyy-一致:用-}|wrpv|{-分量-8-视空间- ,而非-pyv};。s{-}|v{lv rl}v\x07rylnr{nrq5--}|v{`v rZ|qrG-@?9--onr]|v{`v rG-s@?9--r|yv|{fG-s@?9--}|v{Nr{]npxG-rpAIs@?K9--vrg_|G-rpAIs@?K9--|yq]|G-rp@Is@?K96-:K-s@?-\n--n-}|v{`v r]v\x07ry-J-onr]|v{`v rH--vs-5}|v{`v rZ|qr-JJ->6-\n----yr-zg-J-q|5vrg_|;\x07\b 9-|yq]|6-8-vrg_|;H----yr-urvtu-J-}|v{Nr{]npx;\b-7-zv\x075>;=9-zn\x075:zg9->r:B69-}|v{Nr{]npx;\x076H----}|v{`v r]v\x07ry-J-r|yv|{f-7-onr]|v{`v r-<-zn\x075urvtu9->r:B6H--\f--r{-}|v{`v r]v\x07ryH\f<<-基础尺寸-→-nr{nv|{-→-pynz}5zv{9-zn\x076-7-}v\x07ry_nv|-→-NaaR[bNaV\\[-时-zv{5unqZn\x076-→-zn\x075>6s{-p|z}rl}|v{lv rl}\x075|yq]|G-rp@Is@?K6-:K-s@?-\n--yr-}|v{`v rZ|qr-J-snzr;prr{V{s|;H--yr-}|v{`pnyr-J-snzr;v rV{s|=;\x07H--yr-}|v{Zv{]v\x07ry-J-snzr;v rV{s|=;\bH--yr-}|v{Zn\x07]v\x07ry-J-snzr;v rV{s|=; H--yr-}v\x07ry_nv|-J-snzr;v rV{s|=;H--yr-r|yv|{f-J-s@?5snzr;v rV{s|>;\x076H--yr-}|v{]v\x07ryUnqZn\x07-J-s@?5snzr;v rV{s|>;\b6H--yr-onr]|v{`v r-J-}|v{`pnyr-7-}v\x07ry_nv|H--n-}|v{`v r]v\x07ry-J-}|v{lv rl}v\x07rylnr{nrq5----}|v{`v rZ|qr9----onr]|v{`v r9----r|yv|{f9----snzr;}|v{Nr{]npx9----snzr;vrg_|9----|yq]|9--6H--}|v{`v r]v\x07ry-J-pynz}5}|v{`v r]v\x07ry9-}|v{Zv{]v\x07ry-7-}v\x07ry_nv|9-}|v{Zn\x07]v\x07ry-7-}v\x07ry_nv|6H--vs-5}|v{`v rZ|qr-JJ->6-\n----}|v{`v r]v\x07ry-J-zv{5}|v{`v r]v\x07ry9-}|v{]v\x07ryUnqZn\x076H--\f--}|v{`v r]v\x07ry-J-zn\x075}|v{`v r]v\x07ry9->;=6H--r{-}|v{`v r]v\x07ryH\f"), $S = function(...e) {
19507
+ return e[0].split("").map((e) => e.charCodeAt(0) > 126 ? e : String.fromCharCode((e.charCodeAt(0) + 113) % 126)).join("");
19508
+ }("<<-当前楼层判断:u|{Sy||-I-:=;=>-表示显示全部楼层s{-vlpr{lsy||56-:K-o||y-\n--yr-sy||Vq\x07-J-snzr;sy||]npx;\x07H--yr-u|{Sy||-J-snzr;sy||]npx;\bH--r{-u|{Sy||-I-:=;=>-\v\v-no5sy||Vq\x07-:-u|{Sy||6-I-=;FFH\f<<-非当前楼层且-sy||`\byr-JJ->-时的半透明系数,其余为->s{-sy||l|}npv\b5vPr{G-o||y6-:K-s@?-\n--n-sy||\\}npv\b-J->;=H--vs-5.vPr{-33-snzr;\byr]npx;\b-JJ->6-\n----sy||\\}npv\b-J-pynz}5=;?-7-zv{5>;=-8-snzr;pnzrnS|nq;\b9->;=69-=;=9->;=6H--\f--r{-sy||\\}npv\bH\fs{-pyv}lr5v{G-znA\x07AIs@?K9-pyv}ZrnG-rpAIs@?K9-|yq]|G-rpAIs@?K9-sy||Vq\x07G-s@?6-:K-o||y-\n--vs-5pyv}Zrn;-I-=;B6-\n----r{-snyrH--\f--yr-pyv}Sy||-J-pyv}Zrn;\x07H--yr-sy||\\x-J-pyv}Sy||-I-:=;B-\v\v-no5sy||Vq\x07-:-pyv}Sy||6-I-=;FFH--vs-5.sy||\\x6-\n----r{-snyrH--\f--yr-}-J-v{-7-|yq]|H--vs-5};\x07-K-:=;B-33-};\x07-I-=;B-33-};\b-K-:=;B-33-};\b-I-=;B-33-}; -K-:=;B-33-}; -I-=;B6-\n----r{-rH--\f--r{-snyrH\f<<-任一-pyv}}r-命中即剔除(先-pyv}=-后-pyv}>)s{-pyv}}rqlo\blpyv}}r5|yq]|AG-rpAIs@?K6-:K-o||y-\n--yr-sy||Vq\x07-J-snzr;sy||]npx;\x07H--vs-5pyv}lr5snzr;pyv}=V{9-snzr;pyv}=Zrn9-|yq]|A9-sy||Vq\x0766-\n----r{-rH--\f--vs-5pyv}lr5snzr;pyv}>V{9-snzr;pyv}>Zrn9-|yq]|A9-sy||Vq\x0766-\n----r{-rH--\f--r{-snyrH\f"), eC = function(...e) {
19509
+ return e[0].split("").map((e) => e.charCodeAt(0) > 126 ? e : String.fromCharCode((e.charCodeAt(0) + 113) % 126)).join("");
19510
+ }("s{-\0n{v rlqr}u5 =>G-s@?6-:K-@?-\n--r{-@?5 =>-7-CBB@B;=6H\f<<-高->C-位深度、低->C-位-_TOBCB,n|zvpZv{-即深度测试s{-r{p|qrlnyr5qr}ub>CG-@?9-toBCBG-@?6-:K-@?-\n--r{-5qr}ub>C-II->C6-\v-5toBCB-3-=\x07SSSS6H\f"), tC = function(...e) {
19511
+ return e[0].split("").map((e) => e.charCodeAt(0) > 126 ? e : String.fromCharCode((e.charCodeAt(0) + 113) % 126)).join("");
19512
+ }("<<-点覆盖的像素矩形-5\x07=9-\x07>9-\b=9-\b>6,已裁剪到屏幕,为空时-n-K-r{qs{-}|v{lrp5p\x07G-s@?9-p\bG-s@?9-v rG-s@?9-G-v@?9-uG-v@?6-:K-rpAIv@?K-\n--yr-unys`v r-J-v r-7-=;BH--yr-p\x07\\ss-J-p\x07-:-=;BH--yr-p\b\\ss-J-p\b-:-=;BH--r{-rpAIv@?K5----zn\x075v@?5prvy5p\x07\\ss-:-unys`v r669-=69----zv{5v@?5sy||5p\x07\\ss-8-unys`v r669--:->69----zn\x075v@?5prvy5p\b\\ss-:-unys`v r669-=69----zv{5v@?5sy||5p\b\\ss-8-unys`v r669-u-:->69--6H\fs{-pr{rl}v\x07ry5p\x07G-s@?9-p\bG-s@?6-:K-rp?Iv@?K-\n--r{-rp?Iv@?K5v@?5p\x0769-v@?5p\b66H\f<<-圆形点且尺寸-K-@-时才做圆形遮罩s{-{rrqlpvpyr5v rG-s@?6-:K-o||y-\n--r{-snzr;v rV{s|>; -JJ->-33-v r-K-@;=H\f<<-圆形点在第-}\b-行覆盖的像素区间-h\x079-\x07rjs{-|l}n{5p\x07G-s@?9-p\bG-s@?9-v rG-s@?9-}\bG-v@?9-rpG-rpAIv@?K6-:K-rp?Iv@?K-\n--yr--J-v r-7-=;BH--yr-q\b-J-5s@?5}\b6-8-=;B6-:-p\bH--yr-rz-J--7--:-q\b-7-q\bH--vs-5rz-I-=;=6-\n----r{-rp?Iv@?K5>9-=6H--\f--yr-u-J-\05rz6H--yr-\x07-J-zn\x075v@?5prvy5p\x07-:-=;B-:-u669-rp;\x076H--yr-\x07r-J-zv{5v@?5sy||5p\x07-:-=;B-8-u669-rp;\b6H--r{-rp?Iv@?K5\x079-\x07r6H\f<<-先读后写,被遮挡时跳过原子操作s{-rny\blqr}ulvr5}v\x07ryVq\x07G-@?9-G-@?6-\n--vs-5n|zvpY|nq53snzrossrh}v\x07ryVq\x07j6-K-6-\n----n|zvpZv{53snzrossrh}v\x07ryVq\x07j9-6H--\f\f<<-单线程绘制一个点s{-nrl}|v{lv{tyr5p\x07G-s@?9-p\bG-s@?9-v rG-s@?9-r{p|qrqG-@?6-\n--yr--J-v@?5snzr;prr{V{s|;\x076H--yr-u-J-v@?5snzr;prr{V{s|;\b6H--vs-5v r-IJ->;=6-\n----yr-p-J-pr{rl}v\x07ry5p\x079-p\b6H----vs-5p;\x07-KJ-=-33-p;\x07-I--33-p;\b-KJ-=-33-p;\b-I-u6-\n------rny\blqr}ulvr5@?5p;\b-7--8-p;\x0769-r{p|qrq6H----\f----r{H--\f--yr-rp-J-}|v{lrp5p\x079-p\b9-v r9-9-u6H--yr-pvpyr-J-{rrqlpvpyr5v r6H--s|-5n-}\bG-v@?-J-rp; H-}\b-IJ-rp;H-}\b-J-}\b-8->6-\n----n-\x07-J-rp;\x07H----n-\x07r-J-rp;\bH----vs-5pvpyr6-\n------yr--J-|l}n{5p\x079-p\b9-v r9-}\b9-rp6H------\x07-J-;\x07H------\x07r-J-;\bH----\f----s|-5n-}\x07G-v@?-J-\x07H-}\x07-IJ-\x07rH-}\x07-J-}\x07-8->6-\n------rny\blqr}ulvr5@?5}\b-7--8-}\x0769-r{p|qrq6H----\f--\f\f"), nC = function(...e) {
19513
+ return e[0].split("").map((e) => e.charCodeAt(0) > 126 ? e : String.fromCharCode((e.charCodeAt(0) + 113) % 126)).join("");
19514
+ }("p-]|v{Tr|-\n--nyvqG-o||y9--p\x07G-s@?9--p\bG-s@?9--v rG-s@?9--qr}ub>CG-@?9--|yq]|G-rp@Is@?K9--{d|yqG-rp@Is@?K9--qnxr{G-o||y9--ny}unG-s@?9\fH<<-带法线且-}|v{Onpx-为-UVQQR[-<-QN_X-时需要做背面判断s{-r}l{rrqlonpxsnprl{|zny56-:K-o||y-\n--yr-un[|zny-J-5vyr;vyr]npx;\b-3->6-.J-=H--yr-}|v{Onpx-J-snzr;\byr]npx; H--r{-un[|zny-33-5}|v{Onpx-JJ->-\v\v-}|v{Onpx-JJ-?6H\f<<-投影与剔除(楼层、pyv}}r、视锥深度、屏幕范围、背面、透明度),被剔除时-nyvq-J-snyrs{-r}l}|v{ltr|zr\b5vq\x07G-@?6-:K-]|v{Tr|-\n--n-tG-]|v{Tr|H--t;nyvq-J-snyrH--yr-vP-J-vlpr{lsy||56H--vs-5snzr;\byr]npx;\b-JJ-=-33-.vP6-\n----r{-tH--\f--yr-onr-J-vq\x07-7-@H--yr-}-J-rpAIs@?K5}|vv|{honrj9-}|vv|{honr-8->j9-}|vv|{honr-8-?j9->;=6H--yr-|yqA-J-vyr;z|qryZnv\x07-7-}H--vs-5pyv}}rqlo\blpyv}}r5|yqA66-\n----r{-tH--\f--yr-pyv}-J-vyr;z}-7-}H--vs-5no5pyv};6-I->r:C6-\n----r{-tH--\f--yr-{qp-J-pyv};\x07\b -<-pyv};H--vs-5{qp; -I-=;=-\v\v-{qp; -K->;=6-\n----r{-tH--\f--yr--J-v@?5snzr;prr{V{s|;\x076H--yr-u-J-v@?5snzr;prr{V{s|;\b6H--yr-p\x07-J-5{qp;\x07-7-=;B-8-=;B6-7-s@?56H--yr-p\b-J-5>;=-:-5{qp;\b-7-=;B-8-=;B66-7-s@?5u6H--yr-v r-J-p|z}rl}|v{lv rl}\x075|yqA;\x07\b 6H--vs-5v r-IJ->;=6-\n----yr-p-J-pr{rl}v\x07ry5p\x079-p\b6H----vs-5p;\x07-I-=-\v\v-p;\x07-KJ--\v\v-p;\b-I-=-\v\v-p;\b-KJ-u6-\n------r{-tH----\f--\f-ryr-\n----yr--J-}|v{lrp5p\x079-p\b9-v r9-9-u6H----vs-5;\x07-K-;\b-\v\v-; -K-;6-\n------r{-tH----\f--\f--n-{d|yq-J-rp@Is@?K5=;=6H--n-qnxr{-J-snyrH--vs-5r}l{rrqlonpxsnprl{|zny566-\n----{d|yq-J-|yql{|zny5vq\x076H----yr-onpx-J-q|5{|znyv r5snzr;pnzrnd|yq;\x07\b -:-|yqA;\x07\b 69-{d|yq6-I-=;=H----vs-5onpx6-\n------vs-5snzr;\byr]npx; -JJ->6-\n--------r{-tH-<<-UVQQR[:背面剔除------\f------qnxr{-J-rH-<<-QN_X:只标记,着色时-×=;E----\f--\f--yr-ny}un-J-pynz}5snzr;sy||]npx;-7-sy||l|}npv\b5vP69-=;=9->;=6H--vs-5ny}un-I->r:A6-\n----r{-tH--\f--t;p\x07-J-p\x07H--t;p\b-J-p\bH--t;v r-J-v rH--t;qr}ub>C-J-\0n{v rlqr}u5{qp; 6H--t;|yq]|-J-|yqA;\x07\b H--t;{d|yq-J-{d|yqH--t;qnxr{-J-qnxr{H--t;ny}un-J-ny}unH--t;nyvq-J-rH--r{-tH\f<<-颜色调整需要法线且-r}-未解码时补解码s{-r{rlunqv{tl{|zny5vq\x07G-@?9-tG-}Is{pv|{9-]|v{Tr|K6-\n--yr-un[|zny-J-5vyr;vyr]npx;\b-3->6-.J-=H--vs-5.un[|zny-\v\v-r}l{rrqlonpxsnprl{|zny566-\n----r{H--\f--vs-5snzr;p|y|Tnv{; -K-=;=-\v\v-snzr;p|y|Tnv{;-.J-=;=6-\n----57t6;{d|yq-J-|yql{|zny5vq\x076H--\f\f"), rC = function(...e) {
19462
19515
  return e[0].split("").map((e) => e.charCodeAt(0) > 126 ? e : String.fromCharCode((e.charCodeAt(0) + 113) % 126)).join("");
19463
- }("p-Snzrb{vs|z-\n--vr]|wG-znA\x07AIs@?K9--prr{V{s|G-rpAI@?K9--}|v{Nr{]npxG-rpAIs@?K9--vrg_|G-rpAIs@?K9--v rV{s|=G-rpAIs@?K9--v rV{s|>G-rpAI@?K9--pnzrnd|yqG-rpAIs@?K9--pnzrnS|nqG-rpAIs@?K9--p|{n{P|y|G-rpAIs@?K9--p|y|Tnv{G-rpAIs@?K9--\byr]npxG-rpAI@?K9--sy||]npxG-rpAIs@?K9--pyv}=V{G-znA\x07AIs@?K9--pyv}=ZrnG-rpAIs@?K9--pyv}>V{G-znA\x07AIs@?K9--pyv}>ZrnG-rpAIs@?K9\fHp-avyrb{vs|z-\n--z|qryZnv\x07G-znA\x07AIs@?K9--oo|\x07Zv{G-rpAIs@?K9--oo|\x07Zn\x07G-rpAIs@?K9--vyr]npxG-rpAI@?K9\fHMt|}5=6-Mov{qv{t5=6-nI|ntr9-rnqlvrK-snzrossrG-nn\bIn|zvpI@?KKHMt|}5=6-Mov{qv{t5>6-nI{vs|zK-snzrG-Snzrb{vs|zHMt|}5=6-Mov{qv{t5?6-nI|ntr9-rnqK-}|vv|{G-nn\bIs@?KHMt|}5=6-Mov{qv{t5@6-nI|ntr9-rnqK-p|y|G-nn\bI@?KHMt|}5=6-Mov{qv{t5A6-n-tnqvr{ar\x07G-r\x07rl?qIs@?KHMt|}5=6-Mov{qv{t5B6-n-tnqvr{`nz}yrG-nz}yrHMt|}5=6-Mov{qv{t5C6-nI|ntr9-rnqK-}|v{[|znyG-nn\bI@?KHMt|}5=6-Mov{qv{t5D6-nI{vs|zK-vyrG-avyrb{vs|zHs{-{}npxlvE\x07Al{|zny5}npxrqG-@?6-:K-rp@Is@?K-\n--yr-{\x07-J-s@?55v@?5}npxrq-II-?A66-KK-?A6H--yr-{\b-J-s@?55v@?5}npxrq-II->C66-KK-?A6H--yr-{ -J-s@?55v@?5}npxrq-II--E66-KK-?A6H--r{-rp@Is@?K5{\x079-{\b9-{ 6-7-5>;=-<->?D;=6H\fs{-toBCBl|lyv{rn5toBCBG-@?6-:K-rp@Is@?K-\n--yr-B-J-5toBCB-KK->>6-3-=\x07>SH--yr-tC-J-5toBCB-KK-B6-3-=\x07@SH--yr-oB-J-toBCB-3-=\x07>SH--r{-rp@Is@?K5----s@?5B6-<-@>;=9----s@?5tC6-<-C@;=9----s@?5oB6-<-@>;=9--6H\fs{-tol|lu5pG-rp@Is@?K6-:K-rp@Is@?K-\n--yr-X-J-rpAIs@?K5=;=9-:>;=-<-@;=9-?;=-<-@;=9-:>;=6H--yr-}-J-zv\x075----rpAIs@?K5p;o9-p;t9-X;9-X; 69----rpAIs@?K5p;t9-p;o9-X;\x079-X;\b69----s@?5p;o-I-p;t69--6H--yr-\0-J-zv\x075----rpAIs@?K5};\x079-};\b9-};9-p;69----rpAIs@?K5p;9-};\b9-}; 9-};\x0769----s@?5};\x07-I-p;69--6H--yr-q-J-\0;\x07-:-zv{5\0;9-\0;\b6H--yr-r-J->;=r:>=H--r{-rp@Is@?K5----no5\0; -8-5\0;-:-\0;\b6-<-5C;=-7-q-8-r669----q-<-5\0;\x07-8-r69----\0;\x079--6H\fs{-ul|lto5pG-rp@Is@?K6-:K-rp@Is@?K-\n--yr-X-J-rpAIs@?K5>;=9-?;=-<-@;=9->;=-<-@;=9-@;=6H--yr-}-J-no5snp5p;\x07\x07\x07-8-X;\x07\b 6-7-C;=-:-X;6H--r{-p; -7-zv\x075X;\x07\x07\x079-pynz}5}-:-X;\x07\x07\x079-rp@Is@?K5=;=69-rp@Is@?K5>;=669-p;\b6H\fs{-n}}y\blp|y|lnqwzr{5toG-rp@Is@?K9-{d|yqG-rp@Is@?K9-|yq]|G-rp@Is@?K6-:K-rp@Is@?K-\n--n-u-J-tol|lu5to6H--u;\b-8J-snzr;p|y|Tnv{;\x07H--u; -8J-snzr;p|y|Tnv{;\bH--yr-un[-J-yr{tu5{d|yq6-K->r:BH--vs-5un[-33-snzr;p|y|Tnv{; -K-=;=6-\n----yr-pnza|]|v{-J-|yq]|-:-snzr;pnzrnd|yq;\x07\b H----yr-vrQv-J-{|znyv r5pnza|]|v{6H----yr-p|aurn-J-q|5{|znyv r5{d|yq69-vrQv6H----yr-n{tyr-J-np|5pynz}5p|aurn9-:>;=9->;=66H----yr-|yv{rSnp|-J-}|5>;=-:-no5n{tyr-:->;BD=DFC@?CDF6-<->;BD=DFC@?CDF9-B;=6H----u; -8J-snzr;p|y|Tnv{; -7-|yv{rSnp|H----u; -J-pynz}5u; 9-=;=9->;=6H--\f--vs-5un[-33-snzr;p|y|Tnv{;-.J-=;=6-\n----yr-oo|\x07Pr{r-J-5vyr;oo|\x07Zv{;\x07\b -8-vyr;oo|\x07Zn\x07;\x07\b 6-7-=;BH----yr-o|{qv{tYr{tu-J-zn\x075>r:B9-vyr;oo|\x07Zn\x07;\b-:-vyr;oo|\x07Zv{;\b6-7->;BH----yr-pnza|]|v{-J-|yq]|-:-snzr;pnzrnd|yq;\x07\b H----yr-pnzrnQvn{pr-J-yr{tu5pnza|]|v{6H----yr-pnzrnO|{qv{tQvn{pr-J-zn\x075=;=9-yr{tu5snzr;pnzrnd|yq;\x07\b -:-oo|\x07Pr{r6-:-o|{qv{tYr{tu-7-=;B6H----yr-pnzrnQvNqw-J-zn\x075=;=9-pnzrnQvn{pr-:-pnzrnO|{qv{tQvn{pr6H----n-qvn{prSnp|-J-pynz}5pnzrnQvNqw-<-o|{qv{tYr{tu9-=;=9->;=6H----qvn{prSnp|-J-5=;E-:-pynz}5>;=-:-}|5>;=-:-qvn{prSnp|9-@;=69-=;=9->;=66-7->?;=H----yr-p|aurn-J-q|5{|znyv r5{d|yq69-{|znyv r5pnza|]|v{66H----yr-n{tyr-J-np|5pynz}5p|aurn9-:>;=9->;=66H----yr-|yv{rSnp|-J-}|5>;=-:-no5n{tyr-:->;BD=DFC@?CDF6-<->;BD=DFC@?CDF9-B;=6H----u; -8J-zv\x075u; -7-snzr;p|y|Tnv{;-7-qvn{prSnp|9-=;=9-|yv{rSnp|6H----u; -J-pynz}5u; 9-=;=9->;=6H--\f--r{-zn\x075ul|lto5u69-rp@Is@?K5=;=66H\f<<<-与-svr-}ozl}|v{py|q<rr\x07;tyy-一致:用-}|wrpv|{-分量-8-视空间- ,而非-pyv};。s{-}|v{lv rl}v\x07rylnr{nrq5--}|v{`v rZ|qrG-@?9--onr]|v{`v rG-s@?9--r|yv|{fG-s@?9--}|v{Nr{]npxG-rpAIs@?K9--vrg_|G-rpAIs@?K9--|yq]|G-rp@Is@?K96-:K-s@?-\n--n-}|v{`v r]v\x07ry-J-onr]|v{`v rH--vs-5}|v{`v rZ|qr-JJ->6-\n----yr-zg-J-q|5vrg_|;\x07\b 9-|yq]|6-8-vrg_|;H----yr-urvtu-J-}|v{Nr{]npx;\b-7-zv\x075>;=9-zn\x075:zg9->r:B69-}|v{Nr{]npx;\x076H----}|v{`v r]v\x07ry-J-r|yv|{f-7-onr]|v{`v r-<-zn\x075urvtu9->r:B6H--\f--r{-}|v{`v r]v\x07ryH\fs{-pyv}lr5v{G-znA\x07AIs@?K9-pyv}ZrnG-rpAIs@?K9-|yq]|G-rpAIs@?K9-sy||Vq\x07G-s@?6-:K-o||y-\n--vs-5pyv}Zrn;-I-=;B6-\n----r{-snyrH--\f--yr-pyv}Sy||-J-pyv}Zrn;\x07H--yr-sy||\\x-J-pyv}Sy||-I-:=;B-\v\v-no5sy||Vq\x07-:-pyv}Sy||6-I-=;FFH--vs-5.sy||\\x6-\n----r{-snyrH--\f--yr-}-J-v{-7-|yq]|H--vs-5};\x07-K-:=;B-33-};\x07-I-=;B-33-};\b-K-:=;B-33-};\b-I-=;B-33-}; -K-:=;B-33-}; -I-=;B6-\n----r{-rH--\f--r{-snyrH\fMp|z}r-M|xt|}lv r5?BC6s{-znv{5Movyv{5ty|onylv{|pnv|{lvq6-tvqG-rp@I@?K6-\n--yr-vq\x07-J-tvq;\x07H--yr-prr{dvqu-J-snzr;prr{V{s|;\x07H--yr-prr{Urvtu-J-snzr;prr{V{s|;\bH--yr-}|v{P|{-J-vyr;vyr]npx;\x07H--yr-}|v{`v rZ|qr-J-snzr;prr{V{s|;H--yr-}|v{`pnyr-J-snzr;v rV{s|=;\x07H--yr-}|v{Zv{]v\x07ry-J-snzr;v rV{s|=;\bH--yr-}|v{Zn\x07]v\x07ry-J-snzr;v rV{s|=; H--yr-}v\x07ry_nv|-J-snzr;v rV{s|=;H--yr-r|yv|{f-J-s@?5snzr;v rV{s|>;\x076H--yr-}|v{]v\x07ryUnqZn\x07-J-s@?5snzr;v rV{s|>;\b6H--yr-}|v{`un}r-J-snzr;v rV{s|>; H--yr-p|y|`\byr-J-snzr;\byr]npx;\x07H--yr-sy||`\byr-J-snzr;\byr]npx;\bH--yr-}|v{Onpx-J-snzr;\byr]npx; H--yr-synt-J-vyr;vyr]npx;\bH--yr-un[|zny-J-5synt-3->6-.J-=H--yr-sy||Vq\x07-J-snzr;sy||]npx;\x07H--yr-u|{Sy||-J-snzr;sy||]npx;\bH--yr-z|qryNy}un-J-snzr;sy||]npx;H--vs-5vq\x07-KJ-}|v{P|{6-\n----r{H--\f--yr-onr-J-vq\x07-7-@H--yr-}|-J-rp@Is@?K5}|vv|{honrj9-}|vv|{honr-8->j9-}|vv|{honr-8-?j6H--yr-|yq]|A-J-vyr;z|qryZnv\x07-7-rpAIs@?K5}|9->;=6H--yr-|yq]|-J-|yq]|A;\x07\b H--n-{d|yq-J-rp@Is@?K5=;=6H--vs-5un[|zny6-\n----yr-{Y|pny-J-{}npxlvE\x07Al{|zny5}|v{[|znyhvq\x07j6H----{d|yq-J-{|znyv r5zn@\x07@Is@?K5------vyr;z|qryZnv\x07h=j;\x07\b 9------vyr;z|qryZnv\x07h>j;\x07\b 9------vyr;z|qryZnv\x07h?j;\x07\b 9----6-7-{Y|pny6H--\f--yr-vPr{Sy||-J-u|{Sy||-I-:=;=>-\v\v-no5sy||Vq\x07-:-u|{Sy||6-I-=;FFH--vs-5sy||`\byr-JJ-=-33-.vPr{Sy||6-\n----r{H--\f--vs-5pyv}lr5snzr;pyv}=V{9-snzr;pyv}=Zrn9-|yq]|A9-sy||Vq\x0766-\n----r{H--\f--vs-5pyv}lr5snzr;pyv}>V{9-snzr;pyv}>Zrn9-|yq]|A9-sy||Vq\x0766-\n----r{H--\f--n-sy||\\}npv\b-J->;=H--vs-5.vPr{Sy||-33-sy||`\byr-JJ->6-\n----sy||\\}npv\b-J-pynz}5=;?-7-zv{5>;=-8-snzr;pnzrnS|nq;\b9->;=69-=;=9->;=6H--\f--yr-pyv}-J-snzr;vr]|w-7-vyr;z|qryZnv\x07-7-rpAIs@?K5}|9->;=6H--vs-5no5pyv};6-I->r:C6-\n----r{H--\f--n-{qp-J-pyv};\x07\b -<-pyv};H--yr-p\x07s-J-5{qp;\x07-7-=;B-8-=;B6-7-s@?5prr{dvqu6H--yr-p\bs-J-5>;=-:-5{qp;\b-7-=;B-8-=;B66-7-s@?5prr{Urvtu6H--yr-p\x07-J-v@?5p\x07s6H--yr-p\b-J-v@?5p\bs6H--n-qr}u=>-J-pynz}5{qp; 9-=;=9->;=6H--yr-qr}ub>C-J-@?5qr}u=>-7-CBB@B;=6H--n-to-J-toBCBl|lyv{rn5p|y|hvq\x07j-3-=\x07SSSS6H--vs-5p|y|`\byr-JJ-?6-\n----to-J-snzr;p|{n{P|y|;\x07\b H--\f-ryr-vs-5p|y|`\byr-JJ->6-\n----yr-qr{|z-J-zn\x075vyr;oo|\x07Zn\x07;\b-:-vyr;oo|\x07Zv{;\b9->r:C6H----yr-Tnq-J-5|yq]|;\b-:-vyr;oo|\x07Zv{;\b6-<-qr{|zH----to-J-r\x07r`nz}yrYrry5tnqvr{ar\x079-tnqvr{`nz}yr9-rp?Is@?K5pynz}5Tnq9-=;=9->;=69-=;B69-=;=6;toH--\f--vs-5no5snzr;p|y|Tnv{;\x076-K->r:C-\v\v-no5snzr;p|y|Tnv{;\b6-K->r:C-\v\v------snzr;p|y|Tnv{; -K->r:C-\v\v-no5snzr;p|y|Tnv{;6-K->r:C6-\n----to-J-n}}y\blp|y|lnqwzr{5to9-{d|yq9-|yq]|6H--\f--vs-5un[|zny-33-}|v{Onpx-JJ->6-\n----yr-pnzQv-J-{|znyv r5snzr;pnzrnd|yq;\x07\b -:-|yq]|6H----vs-5q|5pnzQv9-{d|yq6-I-=;=6-\n------r{H----\f--\f-ryr-vs-5un[|zny-33-}|v{Onpx-JJ-?6-\n----yr-pnzQv-J-{|znyv r5snzr;pnzrnd|yq;\x07\b -:-|yq]|6H----vs-5q|5pnzQv9-{d|yq6-I-=;=6-\n------to-7J-=;EH----\f--\f--yr-ny}un-J-pynz}5z|qryNy}un-7-sy||\\}npv\b9-=;=9->;=6H--vs-5ny}un-I->r:A6-\n----r{H--\f--to-7J-ny}unH--to-7J-zn\x075vyr;oo|\x07Zn\x07;9-=;===>6H--yr-B-J-@?5pynz}5to;-7-@>;=9-=;=9-@>;=66H--yr-tC-J-@?5pynz}5to;t-7-C@;=9-=;=9-C@;=66H--yr-oB-J-@?5pynz}5to;o-7-@>;=9-=;=9-@>;=66H--yr-p|y|]npxrq-J-5B-II->>6-\v-5tC-II-B6-\v-oBH--yr-r{p|qrq-J-5qr}ub>C-II->C6-\v-5p|y|]npxrq-3-=\x07SSSS6H--yr-onr]|v{`v r-J-}|v{`pnyr-7-}v\x07ry_nv|H--n-}|v{`v r]v\x07ry-J-}|v{lv rl}v\x07rylnr{nrq5----}|v{`v rZ|qr9----onr]|v{`v r9----r|yv|{f9----snzr;}|v{Nr{]npx9----snzr;vrg_|9----|yq]|9--6H--}|v{`v r]v\x07ry-J-pynz}5}|v{`v r]v\x07ry9-}|v{Zv{]v\x07ry-7-}v\x07ry_nv|9-}|v{Zn\x07]v\x07ry-7-}v\x07ry_nv|6H--vs-5}|v{`v rZ|qr-JJ->6-\n----}|v{`v r]v\x07ry-J-zv{5}|v{`v r]v\x07ry9-}|v{]v\x07ryUnqZn\x076H--\f--}|v{`v r]v\x07ry-J-zn\x075}|v{`v r]v\x07ry9->;=6H--yr--J-v@?5prr{dvqu6H--yr-u-J-v@?5prr{Urvtu6H--vs-5}|v{`v r]v\x07ry-IJ->;=6-\n----vs-5p\x07-KJ-=-33-p\x07-I--33-p\b-KJ-=-33-p\b-I-u6-\n------yr-}v\x07ryVq\x07-J-@?5p\b6-7-prr{dvqu-8-@?5p\x076H------n|zvpZv{53snzrossrh}v\x07ryVq\x07j9-r{p|qrq6H----\f----r{H--\f--yr-unys`v r-J-}|v{`v r]v\x07ry-7-=;BH--yr-p\x07\\ss-J-p\x07s-:-=;BH--yr-p\b\\ss-J-p\bs-:-=;BH--yr-}\x07`n-J-zn\x075v@?5prvy5p\x07\\ss-:-unys`v r669-=6H--yr-}\x07R{q-J-zv{5v@?5sy||5p\x07\\ss-8-unys`v r669--:->6H--yr-}\b`n-J-zn\x075v@?5prvy5p\b\\ss-:-unys`v r669-=6H--yr-}\bR{q-J-zv{5v@?5sy||5p\b\\ss-8-unys`v r669-u-:->6H--yr-{rrqPvpyrZnx-J-}|v{`un}r-JJ->-33-}|v{`v r]v\x07ry-K-@;=H--yr-nqv`\0-J-unys`v r-7-unys`v rH--s|-5n-}\bG-v@?-J-}\b`nH-}\b-IJ-}\bR{qH-}\b-J-}\b-8->6-\n----s|-5n-}\x07G-v@?-J-}\x07`nH-}\x07-IJ-}\x07R{qH-}\x07-J-}\x07-8->6-\n------vs-5{rrqPvpyrZnx6-\n--------yr-qq\x07-J-5s@?5}\x076-8-=;B6-:-p\x07sH--------yr-qq\b-J-5s@?5}\b6-8-=;B6-:-p\bsH--------vs-5qq\x07-7-qq\x07-8-qq\b-7-qq\b-K-nqv`\x006-\n----------p|{v{rH--------\f------\f------yr-}v\x07ryVq\x07-J-@?5}\b6-7-prr{dvqu-8-@?5}\x076H------n|zvpZv{53snzrossrh}v\x07ryVq\x07j9-r{p|qrq6H----\f--\f\f");
19516
+ }("s{-v rlpyn5v rG-s@?6-:K-@?-\n--vs-5v r-IJ-snzr;nr]nnz;\x076-\n----r{-`VgRl`ZNYYH--\f--vs-5v r-IJ-snzr;nr]nnz;\b6-\n----r{-`VgRlZRQVbZH--\f--r{-`VgRlYN_TRH\f"), iC = function(...e) {
19517
+ return e[0].split("").map((e) => e.charCodeAt(0) > 126 ? e : String.fromCharCode((e.charCodeAt(0) + 113) % 126)).join("");
19518
+ }("<<-每线程一个点:`znyy-直接绘制;Zrqvz-入桶;Yntr-入桶并拆成-E×E-子块。桶满时退回单线程绘制。Mt|}5>6-Mov{qv{t5=6-nI|ntr9-rnqlvrK-opxrG-nn\bIOpxrR{\bKHMt|}5>6-Mov{qv{t5>6-nI|ntr9-rnqlvrK-oOy|pxG-nn\bI`oOy|pxR{\bKHMt|}5>6-Mov{qv{t5?6-nI|ntr9-rnqlvrK-p|{rG-P|{rHMp|z}r-M|xt|}lv r5PYN``VSfld\\_XT_\\b]l`VgR6s{-znv{5Movyv{5ty|onylv{|pnv|{lvq6-tvqG-rp@I@?K6-\n--yr-vq\x07-J-tvq;\x07H--vs-5vq\x07-KJ-vyr;vyr]npx;\x076-\n----r{H--\f--n-t-J-r}l}|v{ltr|zr\b5vq\x076H--vs-5.t;nyvq6-\n----r{H--\f--r{rlunqv{tl{|zny5vq\x079-3t6H--yr-r{p|qrq-J-r{p|qrlnyr5t;qr}ub>C9-unqrl}|v{5vq\x079-t;|yq]|9-t;{d|yq9-t;qnxr{9-t;ny}un66H--yr-py-J-v rlpyn5t;v r6H--vs-5py-JJ-`VgRl`ZNYY6-\n----nrl}|v{lv{tyr5t;p\x079-t;p\b9-t;v r9-r{p|qrq6H----r{H--\f--yr-pn}-J-snzr;ov{{rqV{s|;\x07H--vs-5py-JJ-`VgRlZRQVbZ6-\n----yr-y|-J-n|zvpNqq53p|{r;zrqvz9->6H----vs-5y|-I-pn}6-\n------opxrhy|j-J-OpxrR{\b5t;p\x079-t;p\b9-t;v r9-r{p|qrq6H------r{H----\f----n|zvp`|r53p|{r;|rsy|9->6H----nrl}|v{lv{tyr5t;p\x079-t;p\b9-t;v r9-r{p|qrq6H----r{H--\f--<<-Yntr-段位于-hpn}9-?-×-pn}6--yr-y|-J-n|zvpNqq53p|{r;yntr9->6H--vs-5y|-KJ-pn}6-\n----n|zvp`|r53p|{r;|rsy|9->6H----nrl}|v{lv{tyr5t;p\x079-t;p\b9-t;v r9-r{p|qrq6H----r{H--\f--opxrhpn}-8-y|j-J-OpxrR{\b5t;p\x079-t;p\b9-t;v r9-r{p|qrq6H--yr--J-}|v{lrp5t;p\x079-t;p\b9-t;v r9-v@?5snzr;prr{V{s|;\x0769-v@?5snzr;prr{V{s|;\b66H--yr-o\x07=-J-@?5;\x076-<-`bOlOY\\PXl`VgRH--yr-o\b=-J-@?5; 6-<-`bOlOY\\PXl`VgRH--yr-o-J-@?5;\b6-<-`bOlOY\\PXl`VgR-:-o\x07=-8->H--yr-ou-J-@?5;6-<-`bOlOY\\PXl`VgR-:-o\b=-8->H--yr-x-J-o-7-ouH--yr-onr-J-n|zvpNqq53p|{r;oOy|px9-x6H--yr-oPn}-J-snzr;ov{{rqV{s|;\bH--vs-5onr-8-x-K-oPn}6-\n----<<-已预留但放不下的槽位标记为无效,p||}lyntr-会跳过----s|-5n-vG-@?-J-onrH-v-I-zv{5onr-8-x9-oPn}6H-v-J-v-8->6-\n------oOy|pxhvj-J-`oOy|pxR{\b5`bOlOY\\PXlV[cNYVQ9-=6H----\f----n|zvp`|r53p|{r;|rsy|9->6H----nrl}|v{lv{tyr5t;p\x079-t;p\b9-t;v r9-r{p|qrq6H----r{H--\f--s|-5n-wG-@?-J-=H-w-I-xH-w-J-w-8->6-\n----oOy|pxhonr-8-wj-J-`oOy|pxR{\b5y|9-55o\b=-8-w-<-o6-II->C6-\v-5o\x07=-8-w-2-o66H--\f\f"), aC = function(...e) {
19519
+ return e[0].split("").map((e) => e.charCodeAt(0) > 126 ? e : String.fromCharCode((e.charCodeAt(0) + 113) % 126)).join("");
19520
+ }("<<-把本帧计数钳制到容量,写入-p||}lzrqvz-<-p||}lyntr-的-v{qvrp-参数Mt|}5=6-Mov{qv{t5=6-nI{vs|zK-snzrG-Snzrb{vs|zHMt|}5=6-Mov{qv{t5>6-nI|ntr9-rnqlvrK-p|{rG-P|{rHMt|}5=6-Mov{qv{t5?6-nI|ntr9-rnqlvrK-ntG-nn\bI@?9-EKH<<-{-个-|xt|}-拆成二维:5zv{5{9-q69-prvy5{-<-q69->6s{-}yvlqv}npu5{G-@?9-qG-@?6-:K-rp@I@?K-\n--vs-5{-IJ-q6-\n----r{-rp@I@?K5{9->9->6H--\f--r{-rp@I@?K5q9-5{-:->6-<-q-8->9->6H\fMp|z}r-M|xt|}lv r5>6s{-znv{56-\n--yr-{Z-J-zv{5n|zvpY|nq53p|{r;zrqvz69-snzr;ov{{rqV{s|;\x076H--yr-{Y-J-zv{5n|zvpY|nq53p|{r;oOy|px69-snzr;ov{{rqV{s|;\b6H--yr-q-J-snzr;ov{{rqV{s|; H--yr-n-J-}yvlqv}npu5{Z9-q6H--yr-o-J-}yvlqv}npu5{Y9-q6H--nth=j-J-n;\x07H--nth>j-J-n;\bH--nth?j-J-n; H--nth@j-J-o;\x07H--nthAj-J-o;\bH--nthBj-J-o; H--nthCj-J-{ZH--nthDj-J-{YH\f"), oC = function(...e) {
19521
+ return e[0].split("").map((e) => e.charCodeAt(0) > 126 ? e : String.fromCharCode((e.charCodeAt(0) + 113) % 126)).join("");
19522
+ }("Mt|}5=6-Mov{qv{t5=6-nI|ntr9-rnqlvrK-snzrossrG-nn\bIn|zvpI@?KKHMt|}5=6-Mov{qv{t5>6-nI{vs|zK-snzrG-Snzrb{vs|zHMt|}5=6-Mov{qv{t5?6-nI|ntr9-rnqK-opxrG-nn\bIOpxrR{\bKHMt|}5=6-Mov{qv{t5@6-nI|ntr9-rnqK-oOy|pxG-nn\bI`oOy|pxR{\bKHMt|}5=6-Mov{qv{t5A6-nI|ntr9-rnqK-ntG-nn\bI@?9-EKH<<-一个-|xt|}-绘制一个-Zrqvz-点,线程按步长分摊像素Mp|z}r-M|xt|}lv r5P\\\\]ld\\_XT_\\b]l`VgR6s{-p||}lzrqvz5--Movyv{5|xt|}lvq6-vqG-rp@I@?K9--Movyv{5{zl|xt|}6-{tG-rp@I@?K9--Movyv{5y|pnylv{|pnv|{lv{qr\x076-G-@?96-\n--yr-yv{rn-J-vq;\b-7-{t;\x07-8-vq;\x07H--vs-5yv{rn-KJ-nthCj6-\n----r{H--\f--yr-r-J-opxrhyv{rnjH--yr--J-v@?5snzr;prr{V{s|;\x076H--yr-rp-J-}|v{lrp5r;p\x079-r;p\b9-r;v r9-9-v@?5snzr;prr{V{s|;\b66H--yr-d-J-rp;\b-:-rp;\x07-8->H--yr-U-J-rp;-:-rp; -8->H--vs-5d-IJ-=-\v\v-U-IJ-=6-\n----r{H--\f--yr-|ny-J-@?5d-7-U6H--yr--J-@?5d6H--yr-pvpyr-J-{rrqlpvpyr5r;v r6H--s|-5n-vG-@?-J-H-v-I-|nyH-v-J-v-8-P\\\\]ld\\_XT_\\b]l`VgR6-\n----yr-}\x07-J-rp;\x07-8-v@?5v-2-6H----yr-}\b-J-rp; -8-v@?5v-<-6H----vs-5pvpyr6-\n------yr--J-|l}n{5r;p\x079-r;p\b9-r;v r9-}\b9-rp6H------vs-5}\x07-I-;\x07-\v\v-}\x07-K-;\b6-\n--------p|{v{rH------\f----\f----rny\blqr}ulvr5@?5}\b-7--8-}\x0769-r;r{p|qrq6H--\f\f<<-一个-|xt|}-绘制-Yntr-点的一个-E×E-子块,每线程一个像素Mp|z}r-M|xt|}lv r5P\\\\]ld\\_XT_\\b]l`VgR6s{-p||}lyntr5--Movyv{5|xt|}lvq6-vqG-rp@I@?K9--Movyv{5{zl|xt|}6-{tG-rp@I@?K9--Movyv{5y|pnylv{|pnv|{lv{qr\x076-G-@?96-\n--yr-yv{rn-J-vq;\b-7-{t;\x07-8-vq;\x07H--vs-5yv{rn-KJ-nthDj6-\n----r{H--\f--yr-o-J-oOy|pxhyv{rnjH--vs-5o;}|v{V{qr\x07-JJ-`bOlOY\\PXlV[cNYVQ6-\n----r{H--\f--yr-r-J-opxrhsnzr;ov{{rqV{s|;\x07-8-o;}|v{V{qr\x07jH--yr--J-v@?5snzr;prr{V{s|;\x076H--yr-rp-J-}|v{lrp5r;p\x079-r;p\b9-r;v r9-9-v@?5snzr;prr{V{s|;\b66H--yr-}\x07-J-v@?55o;oy|pxef-3-=\x07SSSS6-7-`bOlOY\\PXl`VgR-8--2-`bOlOY\\PXl`VgR6H--yr-}\b-J-v@?55o;oy|pxef-KK->C6-7-`bOlOY\\PXl`VgR-8--<-`bOlOY\\PXl`VgR6H--vs-5}\x07-I-rp;\x07-\v\v-}\x07-K-rp;\b-\v\v-}\b-I-rp; -\v\v-}\b-K-rp;6-\n----r{H--\f--vs-5{rrqlpvpyr5r;v r66-\n----yr--J-|l}n{5r;p\x079-r;p\b9-r;v r9-}\b9-rp6H----vs-5}\x07-I-;\x07-\v\v-}\x07-K-;\b6-\n------r{H----\f--\f--rny\blqr}ulvr5@?5}\b-7--8-}\x0769-r;r{p|qrq6H\f"), sC = [
19523
+ JS,
19524
+ YS,
19525
+ XS,
19526
+ ZS,
19527
+ QS,
19528
+ $S,
19529
+ eC,
19530
+ tC,
19531
+ nC,
19532
+ rC,
19533
+ iC
19534
+ ].join("\n"), cC = [
19535
+ JS,
19536
+ YS,
19537
+ aC
19538
+ ].join("\n"), lC = [
19539
+ JS,
19540
+ YS,
19541
+ eC,
19542
+ tC,
19543
+ oC
19544
+ ].join("\n");
19545
+ function uC(e, t) {
19546
+ return {
19547
+ binding: e,
19548
+ visibility: GPUShaderStage.COMPUTE,
19549
+ buffer: { type: t }
19550
+ };
19551
+ }
19552
+ function dC(e, t) {
19553
+ let n = e.createBindGroupLayout({
19554
+ label: "pointcloud-binned-classify-bgl",
19555
+ entries: [
19556
+ uC(0, "storage"),
19557
+ uC(1, "storage"),
19558
+ uC(2, "storage")
19559
+ ]
19560
+ }), r = e.createBindGroupLayout({
19561
+ label: "pointcloud-binned-args-bgl",
19562
+ entries: [
19563
+ uC(0, "uniform"),
19564
+ uC(1, "storage"),
19565
+ uC(2, "storage")
19566
+ ]
19567
+ }), i = e.createBindGroupLayout({
19568
+ label: "pointcloud-binned-coop-bgl",
19569
+ entries: [
19570
+ uC(0, "storage"),
19571
+ uC(1, "uniform"),
19572
+ uC(2, "read-only-storage"),
19573
+ uC(3, "read-only-storage"),
19574
+ uC(4, "read-only-storage")
19575
+ ]
19576
+ }), a = e.createComputePipeline({
19577
+ label: "pointcloud-binned-classify",
19578
+ layout: e.createPipelineLayout({ bindGroupLayouts: [t, n] }),
19579
+ compute: {
19580
+ module: e.createShaderModule({ code: sC }),
19581
+ entryPoint: "main"
19582
+ }
19583
+ }), o = e.createComputePipeline({
19584
+ label: "pointcloud-binned-args-builder",
19585
+ layout: e.createPipelineLayout({ bindGroupLayouts: [r] }),
19586
+ compute: {
19587
+ module: e.createShaderModule({ code: cC }),
19588
+ entryPoint: "main"
19589
+ }
19590
+ }), s = e.createPipelineLayout({ bindGroupLayouts: [i] }), c = e.createShaderModule({ code: lC });
19591
+ return {
19592
+ classifyBGL: n,
19593
+ argsBGL: r,
19594
+ coopBGL: i,
19595
+ classifier: a,
19596
+ argsBuilder: o,
19597
+ coopMedium: e.createComputePipeline({
19598
+ label: "pointcloud-binned-coop-medium",
19599
+ layout: s,
19600
+ compute: {
19601
+ module: c,
19602
+ entryPoint: "coop_medium"
19603
+ }
19604
+ }),
19605
+ coopLarge: e.createComputePipeline({
19606
+ label: "pointcloud-binned-coop-large",
19607
+ layout: s,
19608
+ compute: {
19609
+ module: c,
19610
+ entryPoint: "coop_large"
19611
+ }
19612
+ })
19613
+ };
19614
+ }
19615
+ //#endregion
19616
+ //#region build/five/renderer/compute-renderers/binned/binned-core.js
19617
+ var fC = {
19618
+ smallThreshold: 8,
19619
+ largeThreshold: 16,
19620
+ bucketRatio: .125,
19621
+ bucketMin: 16384,
19622
+ bucketMax: Math.pow(2, 21),
19623
+ subBlockRatio: .02,
19624
+ subBlockMin: 169 * 256,
19625
+ subBlockMax: Math.pow(2, 23)
19626
+ }, pC = 16, mC = 32;
19627
+ function hC(e, t, n) {
19628
+ return Math.max(1, Math.min(Math.max(e, t), n));
19629
+ }
19630
+ var gC = class {
19631
+ constructor(e, t, n) {
19632
+ this.buckets = null, this.subBlocks = null, this.bucketCap = 0, this.subBlockCap = 0, this.classifyBG = null, this.argsBG = null, this.coopBG = null, this.boundFramebuffer = null, this.device = e, this.frameUniformBuffer = n, this.pipes = dC(e, t), this.counters = e.createBuffer({
19633
+ label: "pointcloud-binned-counters",
19634
+ size: pC,
19635
+ usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST
19636
+ }), this.args = e.createBuffer({
19637
+ label: "pointcloud-binned-args",
19638
+ size: mC,
19639
+ usage: GPUBufferUsage.INDIRECT | GPUBufferUsage.STORAGE
19640
+ });
19641
+ }
19642
+ get bucketCapacity() {
19643
+ return this.bucketCap;
19644
+ }
19645
+ get subBlockCapacity() {
19646
+ return this.subBlockCap;
19647
+ }
19648
+ prepare(e, t) {
19649
+ let n = fC, r = this.device.limits, i = Math.min(r.maxStorageBufferBindingSize, r.maxBufferSize), a = Math.pow(r.maxComputeWorkgroupsPerDimension, 2), o = Math.min(n.bucketMax, Math.floor(i / 2 / 16), a), s = Math.min(n.subBlockMax, Math.floor(i / 8), a), c = Math.max(this.bucketCap, hC(Math.ceil(e * n.bucketRatio), n.bucketMin, o)), l = Math.max(this.subBlockCap, hC(Math.ceil(c * 169 * n.subBlockRatio), n.subBlockMin, s));
19650
+ (c !== this.bucketCap || l !== this.subBlockCap) && this.allocate(c, l), (this.classifyBG === null || this.boundFramebuffer !== t) && this.createBindGroups(t);
19651
+ }
19652
+ encodeClearCounters(e) {
19653
+ e.clearBuffer(this.counters, 0, pC);
19654
+ }
19655
+ encodeClassify(e, t, n) {
19656
+ e.setPipeline(this.pipes.classifier), e.setBindGroup(0, t), e.setBindGroup(1, this.classifyBG), e.dispatchWorkgroups(Math.ceil(n / 256));
19657
+ }
19658
+ encodeCoop(e) {
19659
+ e.setPipeline(this.pipes.argsBuilder), e.setBindGroup(0, this.argsBG), e.dispatchWorkgroups(1), e.setPipeline(this.pipes.coopMedium), e.setBindGroup(0, this.coopBG), e.dispatchWorkgroupsIndirect(this.args, 0), e.setPipeline(this.pipes.coopLarge), e.dispatchWorkgroupsIndirect(this.args, 12);
19660
+ }
19661
+ dispose() {
19662
+ var e, t;
19663
+ (e = this.buckets) == null || e.destroy(), (t = this.subBlocks) == null || t.destroy(), this.counters.destroy(), this.args.destroy(), this.buckets = null, this.subBlocks = null, this.classifyBG = null, this.argsBG = null, this.coopBG = null;
19664
+ }
19665
+ allocate(e, t) {
19666
+ var n, r;
19667
+ (n = this.buckets) == null || n.destroy(), (r = this.subBlocks) == null || r.destroy(), this.buckets = this.device.createBuffer({
19668
+ label: "pointcloud-binned-buckets",
19669
+ size: 2 * e * 16,
19670
+ usage: GPUBufferUsage.STORAGE
19671
+ }), this.subBlocks = this.device.createBuffer({
19672
+ label: "pointcloud-binned-sub-blocks",
19673
+ size: t * 8,
19674
+ usage: GPUBufferUsage.STORAGE
19675
+ }), this.bucketCap = e, this.subBlockCap = t, this.classifyBG = null;
19676
+ }
19677
+ createBindGroups(e) {
19678
+ let t = this.buckets, n = this.subBlocks;
19679
+ this.classifyBG = this.device.createBindGroup({
19680
+ layout: this.pipes.classifyBGL,
19681
+ entries: [
19682
+ {
19683
+ binding: 0,
19684
+ resource: { buffer: t }
19685
+ },
19686
+ {
19687
+ binding: 1,
19688
+ resource: { buffer: n }
19689
+ },
19690
+ {
19691
+ binding: 2,
19692
+ resource: { buffer: this.counters }
19693
+ }
19694
+ ]
19695
+ }), this.argsBG = this.device.createBindGroup({
19696
+ layout: this.pipes.argsBGL,
19697
+ entries: [
19698
+ {
19699
+ binding: 0,
19700
+ resource: { buffer: this.frameUniformBuffer }
19701
+ },
19702
+ {
19703
+ binding: 1,
19704
+ resource: { buffer: this.counters }
19705
+ },
19706
+ {
19707
+ binding: 2,
19708
+ resource: { buffer: this.args }
19709
+ }
19710
+ ]
19711
+ }), this.coopBG = this.device.createBindGroup({
19712
+ layout: this.pipes.coopBGL,
19713
+ entries: [
19714
+ {
19715
+ binding: 0,
19716
+ resource: { buffer: e }
19717
+ },
19718
+ {
19719
+ binding: 1,
19720
+ resource: { buffer: this.frameUniformBuffer }
19721
+ },
19722
+ {
19723
+ binding: 2,
19724
+ resource: { buffer: t }
19725
+ },
19726
+ {
19727
+ binding: 3,
19728
+ resource: { buffer: n }
19729
+ },
19730
+ {
19731
+ binding: 4,
19732
+ resource: { buffer: this.args }
19733
+ }
19734
+ ]
19735
+ }), this.boundFramebuffer = e;
19736
+ }
19737
+ };
19464
19738
  //#endregion
19465
19739
  //#region build/five/renderer/compute-renderers/rgb565.js
19466
- function GS(e, t, n) {
19740
+ function _C(e, t, n) {
19467
19741
  let r = Math.round(e * 31) & 31, i = Math.round(t * 63) & 63, a = Math.round(n * 31) & 31;
19468
19742
  return r << 11 | i << 5 | a;
19469
19743
  }
19470
19744
  //#endregion
19471
19745
  //#region build/five/renderer/compute-renderers/pointcloud-compute-renderer.js
19472
- function KS(e) {
19746
+ function vC(e) {
19473
19747
  return e <= .04045 ? e / 12.92 : Math.pow((e + .055) / 1.055, 2.4);
19474
19748
  }
19475
- var qS = class t {
19749
+ var yC = class t {
19476
19750
  get colorFormat() {
19477
19751
  return this.format;
19478
19752
  }
19479
- constructor(n, r) {
19480
- this.width = 0, this.height = 0, this.pointBuffer = null, this.colorBuffer = null, this.normalBuffer = null, this.framebuffer = null, this.clearBindGroup = null, this.rasterizeBindGroup = null, this.displayBindGroup = null, this.pointCount = 0, this.frameUniformScratch = new ArrayBuffer(t.FRAME_UNIFORM_SIZE), this.tileUniformScratch = new ArrayBuffer(t.TILE_UNIFORM_SIZE), this.pointSizeUniformState = {
19753
+ constructor(t, n) {
19754
+ this.width = 0, this.height = 0, this.pointBuffer = null, this.colorBuffer = null, this.normalBuffer = null, this.framebuffer = null, this.clearBindGroup = null, this.rasterizeBindGroup = null, this.displayBindGroup = null, this.pointCount = 0, this.frameUniformScratch = new ArrayBuffer(KS.size), this.tileUniformScratch = new ArrayBuffer(qS.size), this.pointSizeUniformState = {
19481
19755
  sizeMode: 1,
19482
19756
  pointScale: .02,
19483
19757
  pointMinPixel: 0,
@@ -19487,14 +19761,14 @@ var qS = class t {
19487
19761
  hardPixelMax: 12,
19488
19762
  pointShape: 1,
19489
19763
  maxDisplayBoost: 1
19490
- }, this.ready = !1, this.lastBoundComputePipeline = null, this.pointCloudCache = /* @__PURE__ */ new Map(), this.rasterizeBindGroupCache = /* @__PURE__ */ new Map(), this.tileUniformBufferCache = /* @__PURE__ */ new Map(), this.tileDisposeListeners = /* @__PURE__ */ new Map(), this.packedColorScratch = /* @__PURE__ */ new Uint32Array(), this.packedNormalScratch = /* @__PURE__ */ new Uint32Array(), this.tmpVec3a = new e.Vector3(), this.tmpVec3b = new e.Vector3(), this.tmpVec3c = new e.Vector3(), this.tmpVec3d = new e.Vector3(), this.device = n, this.format = r, this.frameUniformBuffer = n.createBuffer({
19491
- size: t.FRAME_UNIFORM_SIZE,
19764
+ }, this.ready = !1, this.binnedCore = null, this.frameViewProj = new e.Matrix4(), this.tileMvpScratch = new e.Matrix4(), this.pointCloudCache = /* @__PURE__ */ new Map(), this.rasterizeBindGroupCache = /* @__PURE__ */ new Map(), this.tileUniformBufferCache = /* @__PURE__ */ new Map(), this.tileDisposeListeners = /* @__PURE__ */ new Map(), this.packedColorScratch = /* @__PURE__ */ new Uint32Array(), this.packedNormalScratch = /* @__PURE__ */ new Uint32Array(), this.tmpVec3a = new e.Vector3(), this.tmpVec3b = new e.Vector3(), this.tmpVec3c = new e.Vector3(), this.tmpVec3d = new e.Vector3(), this.device = t, this.format = n, this.frameUniformBuffer = t.createBuffer({
19765
+ size: KS.size,
19492
19766
  usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
19493
- }), this.displayParamsBuffer = n.createBuffer({
19767
+ }), this.displayParamsBuffer = t.createBuffer({
19494
19768
  size: 8,
19495
19769
  usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
19496
19770
  });
19497
- let i = new DataView(this.frameUniformScratch), a = new Float32Array([
19771
+ let r = new DataView(this.frameUniformScratch), i = new Float32Array([
19498
19772
  1,
19499
19773
  0,
19500
19774
  0,
@@ -19512,28 +19786,71 @@ var qS = class t {
19512
19786
  0,
19513
19787
  1
19514
19788
  ]);
19515
- new Float32Array(this.frameUniformScratch, 0, 16).set(a), i.setUint32(t.OFFSET_SCREEN_WIDTH, 0, !0), i.setUint32(t.OFFSET_SCREEN_HEIGHT, 0, !0), i.setUint32(t.OFFSET_POINT_SIZE_MODE, this.pointSizeUniformState.sizeMode, !0), i.setFloat32(t.OFFSET_POINT_SCALE, this.pointSizeUniformState.pointScale, !0), i.setFloat32(t.OFFSET_POINT_MIN_PIXEL, this.pointSizeUniformState.pointMinPixel, !0), i.setFloat32(t.OFFSET_POINT_MAX_PIXEL, this.pointSizeUniformState.pointMaxPixel, !0), i.setFloat32(t.OFFSET_PIXEL_RATIO, this.pointSizeUniformState.pixelRatio, !0), i.setUint32(t.OFFSET_RESOLUTION_Y, Math.round(this.pointSizeUniformState.resolutionY), !0), i.setUint32(t.OFFSET_POINT_PIXEL_HARD_MAX, Math.round(this.pointSizeUniformState.hardPixelMax), !0), i.setUint32(t.OFFSET_POINT_SHAPE, this.pointSizeUniformState.pointShape, !0), n.queue.writeBuffer(this.frameUniformBuffer, 0, this.frameUniformScratch);
19516
- let o = n.createShaderModule({ code: HS }), s = n.createShaderModule({ code: WS }), c = n.createShaderModule({ code: US });
19517
- this.clearPipeline = n.createComputePipeline({
19789
+ new Float32Array(this.frameUniformScratch, 0, 16).set(i);
19790
+ let a = KS.offsets;
19791
+ r.setUint32(a.screenInfo, 0, !0), r.setUint32(a.screenInfo + 4, 0, !0), r.setUint32(a.screenInfo + 12, this.pointSizeUniformState.sizeMode, !0), r.setFloat32(a.sizeInfo0, this.pointSizeUniformState.pointScale, !0), r.setFloat32(a.sizeInfo0 + 4, this.pointSizeUniformState.pointMinPixel, !0), r.setFloat32(a.sizeInfo0 + 8, this.pointSizeUniformState.pointMaxPixel, !0), r.setFloat32(a.sizeInfo0 + 12, this.pointSizeUniformState.pixelRatio, !0), r.setUint32(a.sizeInfo1, Math.round(this.pointSizeUniformState.resolutionY), !0), r.setUint32(a.sizeInfo1 + 4, Math.round(this.pointSizeUniformState.hardPixelMax), !0), r.setUint32(a.sizeInfo1 + 8, this.pointSizeUniformState.pointShape, !0), t.queue.writeBuffer(this.frameUniformBuffer, 0, this.frameUniformScratch);
19792
+ let o = t.createShaderModule({ code: JS + HS }), s = t.createShaderModule({ code: US });
19793
+ this.clearPipeline = t.createComputePipeline({
19518
19794
  layout: "auto",
19519
19795
  compute: {
19520
19796
  module: o,
19521
19797
  entryPoint: "main"
19522
19798
  }
19523
- }), this.rasterizePipeline = n.createComputePipeline({
19524
- layout: "auto",
19525
- compute: {
19526
- module: s,
19527
- entryPoint: "main"
19528
- }
19529
- }), this.fullscreenQuadPipeline = n.createRenderPipeline({
19799
+ }), this.tileBindGroupLayout = t.createBindGroupLayout({
19800
+ label: "pointcloud-tile-bgl",
19801
+ entries: [
19802
+ {
19803
+ binding: 0,
19804
+ visibility: GPUShaderStage.COMPUTE,
19805
+ buffer: { type: "storage" }
19806
+ },
19807
+ {
19808
+ binding: 1,
19809
+ visibility: GPUShaderStage.COMPUTE,
19810
+ buffer: { type: "uniform" }
19811
+ },
19812
+ {
19813
+ binding: 2,
19814
+ visibility: GPUShaderStage.COMPUTE,
19815
+ buffer: { type: "read-only-storage" }
19816
+ },
19817
+ {
19818
+ binding: 3,
19819
+ visibility: GPUShaderStage.COMPUTE,
19820
+ buffer: { type: "read-only-storage" }
19821
+ },
19822
+ {
19823
+ binding: 4,
19824
+ visibility: GPUShaderStage.COMPUTE,
19825
+ texture: {
19826
+ sampleType: "float",
19827
+ viewDimension: "2d"
19828
+ }
19829
+ },
19830
+ {
19831
+ binding: 5,
19832
+ visibility: GPUShaderStage.COMPUTE,
19833
+ sampler: { type: "filtering" }
19834
+ },
19835
+ {
19836
+ binding: 6,
19837
+ visibility: GPUShaderStage.COMPUTE,
19838
+ buffer: { type: "read-only-storage" }
19839
+ },
19840
+ {
19841
+ binding: 7,
19842
+ visibility: GPUShaderStage.COMPUTE,
19843
+ buffer: { type: "uniform" }
19844
+ }
19845
+ ]
19846
+ }), this.fullscreenQuadPipeline = t.createRenderPipeline({
19530
19847
  layout: "auto",
19531
19848
  vertex: {
19532
- module: c,
19849
+ module: s,
19533
19850
  entryPoint: "vs_main"
19534
19851
  },
19535
19852
  fragment: {
19536
- module: c,
19853
+ module: s,
19537
19854
  entryPoint: "fs_main",
19538
19855
  targets: [{ format: this.format }]
19539
19856
  },
@@ -19543,14 +19860,14 @@ var qS = class t {
19543
19860
  depthWriteEnabled: !0,
19544
19861
  depthCompare: "less"
19545
19862
  }
19546
- }), this.fullscreenQuadPipelineAdditive = n.createRenderPipeline({
19863
+ }), this.fullscreenQuadPipelineAdditive = t.createRenderPipeline({
19547
19864
  layout: "auto",
19548
19865
  vertex: {
19549
- module: c,
19866
+ module: s,
19550
19867
  entryPoint: "vs_main"
19551
19868
  },
19552
19869
  fragment: {
19553
- module: c,
19870
+ module: s,
19554
19871
  entryPoint: "fs_main",
19555
19872
  targets: [{
19556
19873
  format: this.format,
@@ -19574,14 +19891,14 @@ var qS = class t {
19574
19891
  depthWriteEnabled: !0,
19575
19892
  depthCompare: "less"
19576
19893
  }
19577
- }), this.placeholderGradientTexture = n.createTexture({
19894
+ }), this.placeholderGradientTexture = t.createTexture({
19578
19895
  size: {
19579
19896
  width: 1,
19580
19897
  height: 1
19581
19898
  },
19582
19899
  format: "rgba8unorm",
19583
19900
  usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST
19584
- }), this.placeholderGradientView = this.placeholderGradientTexture.createView(), n.queue.writeTexture({ texture: this.placeholderGradientTexture }, new Uint8Array([
19901
+ }), this.placeholderGradientView = this.placeholderGradientTexture.createView(), t.queue.writeTexture({ texture: this.placeholderGradientTexture }, new Uint8Array([
19585
19902
  128,
19586
19903
  128,
19587
19904
  128,
@@ -19593,7 +19910,7 @@ var qS = class t {
19593
19910
  width: 1,
19594
19911
  height: 1,
19595
19912
  depthOrArrayLayers: 1
19596
- }), this.gradientSampler = n.createSampler({
19913
+ }), this.gradientSampler = t.createSampler({
19597
19914
  magFilter: "linear",
19598
19915
  minFilter: "linear",
19599
19916
  addressModeU: "clamp-to-edge",
@@ -19616,12 +19933,12 @@ var qS = class t {
19616
19933
  usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST
19617
19934
  });
19618
19935
  if (this.packedColorScratch.length < r && (this.packedColorScratch = new Uint32Array(r)), n instanceof Uint8Array) for (let e = 0; e < r; e++) {
19619
- let t = e * 3, r = KS(n[t] / 255), i = KS(n[t + 1] / 255), a = KS(n[t + 2] / 255);
19620
- this.packedColorScratch[e] = GS(r, i, a);
19936
+ let t = e * 3, r = vC(n[t] / 255), i = vC(n[t + 1] / 255), a = vC(n[t + 2] / 255);
19937
+ this.packedColorScratch[e] = _C(r, i, a);
19621
19938
  }
19622
19939
  else for (let e = 0; e < r; e++) {
19623
19940
  let t = e * 3;
19624
- this.packedColorScratch[e] = GS(n[t], n[t + 1], n[t + 2]);
19941
+ this.packedColorScratch[e] = _C(n[t], n[t + 1], n[t + 2]);
19625
19942
  }
19626
19943
  this.device.queue.writeBuffer(a, 0, this.packedColorScratch.buffer, 0, r * 4);
19627
19944
  let o = this.device.createBuffer({
@@ -19652,11 +19969,14 @@ var qS = class t {
19652
19969
  let g = this.ensureTileUniformBuffer(e);
19653
19970
  this.bindRasterizeGroup(e, g, m, h), this.ready = !!this.framebuffer && !!this.rasterizeBindGroup;
19654
19971
  }
19655
- beginPointCloudFrame(e, n, r) {
19656
- r.multiplyMatrices(e.projectionMatrix, e.matrixWorldInverse);
19657
- let i = r.elements, a = new DataView(this.frameUniformScratch);
19658
- for (let e = 0; e < 16; e++) a.setFloat32(t.OFFSET_VIEW_PROJ + e * 4, i[e], !0);
19659
- this.writeFrameUniformsDataView(a, n, e, r), this.device.queue.writeBuffer(this.frameUniformBuffer, 0, this.frameUniformScratch);
19972
+ prepareFrame(e) {
19973
+ this.framebuffer && (this.binnedCore || (this.binnedCore = new gC(this.device, this.tileBindGroupLayout, this.frameUniformBuffer)), this.binnedCore.prepare(e, this.framebuffer));
19974
+ }
19975
+ beginPointCloudFrame(e, t, n) {
19976
+ n.multiplyMatrices(e.projectionMatrix, e.matrixWorldInverse), this.frameViewProj.copy(n);
19977
+ let r = this.frameViewProj.elements, i = new DataView(this.frameUniformScratch);
19978
+ for (let e = 0; e < 16; e++) i.setFloat32(KS.offsets.viewProj + e * 4, r[e], !0);
19979
+ this.writeFrameUniformsDataView(i, t, e, n), this.device.queue.writeBuffer(this.frameUniformBuffer, 0, this.frameUniformScratch);
19660
19980
  }
19661
19981
  writeTileUniform(e, t) {
19662
19982
  let n = this.ensureTileUniformBuffer(e), r = new DataView(this.tileUniformScratch);
@@ -19675,19 +19995,20 @@ var qS = class t {
19675
19995
  let n = 0;
19676
19996
  return Hn(e.normals, t) && (n |= 1), e.useAddBlend && (n |= 8), n;
19677
19997
  }
19678
- writePointAttenuationUniforms(e, n) {
19679
- let r = n.projectionMatrix.elements, i = n.matrixWorldInverse.elements;
19680
- e.setFloat32(t.OFFSET_POINT_ATTEN_PACK, -r[11], !0), e.setFloat32(t.OFFSET_POINT_ATTEN_PACK + 4, 2 / r[5], !0), e.setFloat32(t.OFFSET_POINT_ATTEN_PACK + 8, 0, !0), e.setFloat32(t.OFFSET_POINT_ATTEN_PACK + 12, 0, !0), e.setFloat32(t.OFFSET_VIEW_Z_ROW, i[2], !0), e.setFloat32(t.OFFSET_VIEW_Z_ROW + 4, i[6], !0), e.setFloat32(t.OFFSET_VIEW_Z_ROW + 8, i[10], !0), e.setFloat32(t.OFFSET_VIEW_Z_ROW + 12, i[14], !0);
19681
- }
19682
- writeFrameUniformsDataView(e, n, r, i) {
19683
- var a, o;
19684
- e.setUint32(t.OFFSET_SCREEN_WIDTH, this.width, !0), e.setUint32(t.OFFSET_SCREEN_HEIGHT, this.height, !0), e.setUint32(t.OFFSET_SCREEN_WIDTH + 8, 0, !0), this.writePointAttenuationUniforms(e, r), e.setUint32(t.OFFSET_POINT_SIZE_MODE, this.pointSizeUniformState.sizeMode, !0), e.setFloat32(t.OFFSET_POINT_SCALE, this.pointSizeUniformState.pointScale, !0), e.setFloat32(t.OFFSET_POINT_MIN_PIXEL, this.pointSizeUniformState.pointMinPixel, !0), e.setFloat32(t.OFFSET_POINT_MAX_PIXEL, this.pointSizeUniformState.pointMaxPixel, !0), e.setFloat32(t.OFFSET_PIXEL_RATIO, this.pointSizeUniformState.pixelRatio, !0), e.setUint32(t.OFFSET_RESOLUTION_Y, Math.round(this.pointSizeUniformState.resolutionY), !0), e.setUint32(t.OFFSET_POINT_PIXEL_HARD_MAX, Math.round(this.pointSizeUniformState.hardPixelMax), !0), e.setUint32(t.OFFSET_POINT_SHAPE, this.pointSizeUniformState.pointShape, !0);
19685
- let s = n.colorStyle === "ALTITUDE" ? 1 : n.colorStyle === "CONSTANT" ? 2 : 0, c = +(n.floorStyle === "OPACITY"), l = n.pointBack === "HIDDEN" ? 1 : n.pointBack === "DARK" ? 2 : 0;
19686
- r.updateMatrixWorld(!0);
19687
- let u = r.getWorldPosition(this.tmpVec3c);
19688
- e.setFloat32(t.OFFSET_CAMERA_WORLD, u.x, !0), e.setFloat32(t.OFFSET_CAMERA_WORLD + 4, u.y, !0), e.setFloat32(t.OFFSET_CAMERA_WORLD + 8, u.z, !0), e.setFloat32(t.OFFSET_CAMERA_WORLD + 12, 0, !0);
19689
- let d = this.tmpVec3d.set(0, 0, -1).applyQuaternion(r.quaternion);
19690
- e.setFloat32(t.OFFSET_CAMERA_FORWARD, d.x, !0), e.setFloat32(t.OFFSET_CAMERA_FORWARD + 4, d.y, !0), e.setFloat32(t.OFFSET_CAMERA_FORWARD + 8, d.z, !0), e.setFloat32(t.OFFSET_CAMERA_FORWARD + 12, 0, !0), e.setFloat32(t.OFFSET_CONSTANT_COLOR, n.constantColor.x, !0), e.setFloat32(t.OFFSET_CONSTANT_COLOR + 4, n.constantColor.y, !0), e.setFloat32(t.OFFSET_CONSTANT_COLOR + 8, n.constantColor.z, !0), e.setFloat32(t.OFFSET_CONSTANT_COLOR + 12, 1, !0), e.setFloat32(t.OFFSET_COLOR_GAIN, n.colorSaturation, !0), e.setFloat32(t.OFFSET_COLOR_GAIN + 4, n.colorBrightness, !0), e.setFloat32(t.OFFSET_COLOR_GAIN + 8, n.outlineGain, !0), e.setFloat32(t.OFFSET_COLOR_GAIN + 12, n.distanceGain, !0), e.setUint32(t.OFFSET_STYLE_PACK, s, !0), e.setUint32(t.OFFSET_STYLE_PACK + 4, c, !0), e.setUint32(t.OFFSET_STYLE_PACK + 8, l, !0), e.setUint32(t.OFFSET_STYLE_PACK + 12, 0, !0), e.setFloat32(t.OFFSET_FLOOR_PACK, n.floorIndex, !0), e.setFloat32(t.OFFSET_FLOOR_PACK + 4, n.shownFloorIndex, !0), e.setFloat32(t.OFFSET_FLOOR_PACK + 8, n.opacity, !0), e.setFloat32(t.OFFSET_FLOOR_PACK + 12, n.modelAlpha, !0);
19998
+ writePointAttenuationUniforms(e, t) {
19999
+ let n = t.projectionMatrix.elements, r = t.matrixWorldInverse.elements, i = KS.offsets;
20000
+ e.setFloat32(i.pointAttenPack, -n[11], !0), e.setFloat32(i.pointAttenPack + 4, 2 / n[5], !0), e.setFloat32(i.pointAttenPack + 8, 0, !0), e.setFloat32(i.pointAttenPack + 12, 0, !0), e.setFloat32(i.viewZRow, r[2], !0), e.setFloat32(i.viewZRow + 4, r[6], !0), e.setFloat32(i.viewZRow + 8, r[10], !0), e.setFloat32(i.viewZRow + 12, r[14], !0);
20001
+ }
20002
+ writeFrameUniformsDataView(e, t, n, r) {
20003
+ var i, a;
20004
+ let o = KS.offsets;
20005
+ e.setUint32(o.screenInfo, this.width, !0), e.setUint32(o.screenInfo + 4, this.height, !0), e.setUint32(o.screenInfo + 8, 0, !0), this.writePointAttenuationUniforms(e, n), e.setUint32(o.screenInfo + 12, this.pointSizeUniformState.sizeMode, !0), e.setFloat32(o.sizeInfo0, this.pointSizeUniformState.pointScale, !0), e.setFloat32(o.sizeInfo0 + 4, this.pointSizeUniformState.pointMinPixel, !0), e.setFloat32(o.sizeInfo0 + 8, this.pointSizeUniformState.pointMaxPixel, !0), e.setFloat32(o.sizeInfo0 + 12, this.pointSizeUniformState.pixelRatio, !0), e.setUint32(o.sizeInfo1, Math.round(this.pointSizeUniformState.resolutionY), !0), e.setUint32(o.sizeInfo1 + 4, Math.round(this.pointSizeUniformState.hardPixelMax), !0), e.setUint32(o.sizeInfo1 + 8, this.pointSizeUniformState.pointShape, !0);
20006
+ let s = t.colorStyle === "ALTITUDE" ? 1 : t.colorStyle === "CONSTANT" ? 2 : 0, c = +(t.floorStyle === "OPACITY"), l = t.pointBack === "HIDDEN" ? 1 : t.pointBack === "DARK" ? 2 : 0;
20007
+ n.updateMatrixWorld(!0);
20008
+ let u = n.getWorldPosition(this.tmpVec3c);
20009
+ e.setFloat32(o.cameraWorld, u.x, !0), e.setFloat32(o.cameraWorld + 4, u.y, !0), e.setFloat32(o.cameraWorld + 8, u.z, !0), e.setFloat32(o.cameraWorld + 12, 0, !0);
20010
+ let d = this.tmpVec3d.set(0, 0, -1).applyQuaternion(n.quaternion);
20011
+ e.setFloat32(o.cameraForward, d.x, !0), e.setFloat32(o.cameraForward + 4, d.y, !0), e.setFloat32(o.cameraForward + 8, d.z, !0), e.setFloat32(o.cameraForward + 12, 0, !0), e.setFloat32(o.constantColor, t.constantColor.x, !0), e.setFloat32(o.constantColor + 4, t.constantColor.y, !0), e.setFloat32(o.constantColor + 8, t.constantColor.z, !0), e.setFloat32(o.constantColor + 12, 1, !0), e.setFloat32(o.colorGain, t.colorSaturation, !0), e.setFloat32(o.colorGain + 4, t.colorBrightness, !0), e.setFloat32(o.colorGain + 8, t.outlineGain, !0), e.setFloat32(o.colorGain + 12, t.distanceGain, !0), e.setUint32(o.stylePack, s, !0), e.setUint32(o.stylePack + 4, c, !0), e.setUint32(o.stylePack + 8, l, !0), e.setUint32(o.stylePack + 12, 0, !0), e.setFloat32(o.floorPack, t.floorIndex, !0), e.setFloat32(o.floorPack + 4, t.shownFloorIndex, !0), e.setFloat32(o.floorPack + 8, t.opacity, !0), e.setFloat32(o.floorPack + 12, t.modelAlpha, !0);
19691
20012
  let f = new Float32Array([
19692
20013
  1,
19693
20014
  0,
@@ -19706,44 +20027,50 @@ var qS = class t {
19706
20027
  0,
19707
20028
  1
19708
20029
  ]);
19709
- for (let n = 0; n < 16; n++) e.setFloat32(t.OFFSET_CLIP0_INV + n * 4, f[n], !0), e.setFloat32(t.OFFSET_CLIP1_INV + n * 4, f[n], !0);
19710
- e.setFloat32(t.OFFSET_CLIP0_META + 12, 0, !0), e.setFloat32(t.OFFSET_CLIP1_META + 12, 0, !0);
19711
- let p = n.clippers;
20030
+ for (let t = 0; t < 16; t++) e.setFloat32(o.clip0Inv + t * 4, f[t], !0), e.setFloat32(o.clip1Inv + t * 4, f[t], !0);
20031
+ e.setFloat32(o.clip0Meta + 12, 0, !0), e.setFloat32(o.clip1Meta + 12, 0, !0);
20032
+ let p = t.clippers;
19712
20033
  if (p.length > 0) {
19713
- let n = p[0];
19714
- i.copy(n.clippingBoxMatrix).invert();
19715
- let r = i.elements;
19716
- for (let n = 0; n < 16; n++) e.setFloat32(t.OFFSET_CLIP0_INV + n * 4, r[n], !0);
19717
- e.setFloat32(t.OFFSET_CLIP0_META, (a = n.floorIndex) == null ? -1 : a, !0), e.setFloat32(t.OFFSET_CLIP0_META + 12, 1, !0);
20034
+ let t = p[0];
20035
+ r.copy(t.clippingBoxMatrix).invert();
20036
+ let n = r.elements;
20037
+ for (let t = 0; t < 16; t++) e.setFloat32(o.clip0Inv + t * 4, n[t], !0);
20038
+ e.setFloat32(o.clip0Meta, (i = t.floorIndex) == null ? -1 : i, !0), e.setFloat32(o.clip0Meta + 12, 1, !0);
19718
20039
  }
19719
20040
  if (p.length > 1) {
19720
- let n = p[1];
19721
- i.copy(n.clippingBoxMatrix).invert();
19722
- let r = i.elements;
19723
- for (let n = 0; n < 16; n++) e.setFloat32(t.OFFSET_CLIP1_INV + n * 4, r[n], !0);
19724
- e.setFloat32(t.OFFSET_CLIP1_META, (o = n.floorIndex) == null ? -1 : o, !0), e.setFloat32(t.OFFSET_CLIP1_META + 12, 1, !0);
20041
+ let t = p[1];
20042
+ r.copy(t.clippingBoxMatrix).invert();
20043
+ let n = r.elements;
20044
+ for (let t = 0; t < 16; t++) e.setFloat32(o.clip1Inv + t * 4, n[t], !0);
20045
+ e.setFloat32(o.clip1Meta, (a = t.floorIndex) == null ? -1 : a, !0), e.setFloat32(o.clip1Meta + 12, 1, !0);
19725
20046
  }
20047
+ this.writeRasterUniforms(e);
20048
+ }
20049
+ writeRasterUniforms(e) {
20050
+ var t, n, r, i;
20051
+ let a = KS.offsets;
20052
+ e.setFloat32(a.rasterParams, fC.smallThreshold, !0), e.setFloat32(a.rasterParams + 4, fC.largeThreshold, !0), e.setFloat32(a.rasterParams + 8, 0, !0), e.setFloat32(a.rasterParams + 12, 0, !0), e.setUint32(a.binnedInfo, (n = (t = this.binnedCore) == null ? void 0 : t.bucketCapacity) == null ? 0 : n, !0), e.setUint32(a.binnedInfo + 4, (i = (r = this.binnedCore) == null ? void 0 : r.subBlockCapacity) == null ? 0 : i, !0), e.setUint32(a.binnedInfo + 8, this.device.limits.maxComputeWorkgroupsPerDimension, !0), e.setUint32(a.binnedInfo + 12, 0, !0);
19726
20053
  }
19727
20054
  writeTileUniformsDataView(e, n, r) {
19728
- let i = n.matrixWorld.elements;
19729
- for (let n = 0; n < 16; n++) e.setFloat32(t.OFFSET_TILE_MODEL + n * 4, i[n], !0);
19730
- let a = this.tmpVec3a.copy(n.modelBoundingMin), o = this.tmpVec3b.copy(n.modelBoundingMax);
19731
- e.setFloat32(t.OFFSET_TILE_BBOX_MIN, a.x, !0), e.setFloat32(t.OFFSET_TILE_BBOX_MIN + 4, a.y, !0), e.setFloat32(t.OFFSET_TILE_BBOX_MIN + 8, a.z, !0), e.setFloat32(t.OFFSET_TILE_BBOX_MIN + 12, 0, !0), e.setFloat32(t.OFFSET_TILE_BBOX_MAX, o.x, !0), e.setFloat32(t.OFFSET_TILE_BBOX_MAX + 4, o.y, !0), e.setFloat32(t.OFFSET_TILE_BBOX_MAX + 8, o.z, !0), e.setFloat32(t.OFFSET_TILE_BBOX_MAX + 12, n.brightness, !0), e.setUint32(t.OFFSET_TILE_PACK, r, !0), e.setUint32(t.OFFSET_TILE_PACK + 4, t.tileFlags(n, r), !0);
20055
+ let i = qS.offsets, a = n.matrixWorld.elements;
20056
+ for (let t = 0; t < 16; t++) e.setFloat32(i.modelMatrix + t * 4, a[t], !0);
20057
+ let o = this.tmpVec3a.copy(n.modelBoundingMin), s = this.tmpVec3b.copy(n.modelBoundingMax);
20058
+ e.setFloat32(i.bboxMin, o.x, !0), e.setFloat32(i.bboxMin + 4, o.y, !0), e.setFloat32(i.bboxMin + 8, o.z, !0), e.setFloat32(i.bboxMin + 12, 0, !0), e.setFloat32(i.bboxMax, s.x, !0), e.setFloat32(i.bboxMax + 4, s.y, !0), e.setFloat32(i.bboxMax + 8, s.z, !0), e.setFloat32(i.bboxMax + 12, n.brightness, !0), e.setUint32(i.tilePack, r, !0), e.setUint32(i.tilePack + 4, t.tileFlags(n, r), !0);
20059
+ let c = this.tileMvpScratch.multiplyMatrices(this.frameViewProj, n.matrixWorld).elements;
20060
+ for (let t = 0; t < 16; t++) e.setFloat32(i.mvp + t * 4, c[t], !0);
19732
20061
  }
19733
- resize(e, n) {
19734
- var r;
19735
- e <= 0 || n <= 0 || (this.width = e, this.height = n, (r = this.framebuffer) == null || r.destroy(), this.framebuffer = this.device.createBuffer({
19736
- size: e * n * 4,
20062
+ resize(e, t) {
20063
+ var n;
20064
+ e <= 0 || t <= 0 || (this.width = e, this.height = t, (n = this.framebuffer) == null || n.destroy(), this.framebuffer = this.device.createBuffer({
20065
+ size: e * t * 4,
19737
20066
  usage: GPUBufferUsage.STORAGE
19738
- }), this.device.queue.writeBuffer(this.displayParamsBuffer, 0, new Uint32Array([e, n])), this.device.queue.writeBuffer(this.frameUniformBuffer, t.OFFSET_SCREEN_WIDTH, new Uint32Array([e, n])), this.rasterizeBindGroupCache.clear(), this.rasterizeBindGroup = null, this.ready = !1, this.recreateBindGroups());
20067
+ }), this.device.queue.writeBuffer(this.displayParamsBuffer, 0, new Uint32Array([e, t])), this.device.queue.writeBuffer(this.frameUniformBuffer, KS.offsets.screenInfo, new Uint32Array([e, t])), this.rasterizeBindGroupCache.clear(), this.rasterizeBindGroup = null, this.ready = !1, this.recreateBindGroups());
19739
20068
  }
19740
20069
  encodeFramebufferClear(e) {
19741
- !this.clearBindGroup || !this.framebuffer || (e.setPipeline(this.clearPipeline), this.lastBoundComputePipeline = this.clearPipeline, e.setBindGroup(0, this.clearBindGroup), e.dispatchWorkgroups(Math.ceil(this.width * this.height / 256)));
20070
+ !this.clearBindGroup || !this.framebuffer || (e.setPipeline(this.clearPipeline), e.setBindGroup(0, this.clearBindGroup), e.dispatchWorkgroups(Math.ceil(this.width * this.height / 256)));
19742
20071
  }
19743
20072
  encodeRasterize(e) {
19744
- if (!this.ready || !this.rasterizeBindGroup || !this.pointBuffer || !this.colorBuffer || this.pointCount <= 0) return;
19745
- let t = this.rasterizePipeline;
19746
- this.lastBoundComputePipeline !== t && (e.setPipeline(t), this.lastBoundComputePipeline = t), e.setBindGroup(0, this.rasterizeBindGroup), e.dispatchWorkgroups(Math.ceil(this.pointCount / 256));
20073
+ !this.binnedCore || !this.ready || !this.rasterizeBindGroup || this.pointCount <= 0 || this.binnedCore.encodeClassify(e, this.rasterizeBindGroup, this.pointCount);
19747
20074
  }
19748
20075
  encodeFramebufferDisplay(e, t) {
19749
20076
  if (!this.displayBindGroup || !this.framebuffer) return;
@@ -19752,9 +20079,13 @@ var qS = class t {
19752
20079
  }
19753
20080
  submitMergedPointCloudFrame(e, t, n, r) {
19754
20081
  var i, a, o;
19755
- let s = (i = r == null ? void 0 : r.clear) == null ? !0 : i, c = (a = r == null ? void 0 : r.display) == null ? !0 : a, l = (o = r == null ? void 0 : r.displayAdditive) == null ? !1 : o, u = this.device.createCommandEncoder(), d = u.beginComputePass();
19756
- if (this.lastBoundComputePipeline = null, s && this.encodeFramebufferClear(d), n(d), d.end(), c) {
19757
- let n = u.beginRenderPass({
20082
+ let s = this.binnedCore;
20083
+ if (!s) return;
20084
+ let c = (i = r == null ? void 0 : r.clear) == null ? !0 : i, l = (a = r == null ? void 0 : r.display) == null ? !0 : a, u = (o = r == null ? void 0 : r.displayAdditive) == null ? !1 : o, d = this.device.createCommandEncoder();
20085
+ s.encodeClearCounters(d);
20086
+ let f = d.beginComputePass();
20087
+ if (c && this.encodeFramebufferClear(f), n(f), s.encodeCoop(f), f.end(), l) {
20088
+ let n = d.beginRenderPass({
19758
20089
  colorAttachments: [{
19759
20090
  view: e,
19760
20091
  loadOp: "load",
@@ -19766,12 +20097,13 @@ var qS = class t {
19766
20097
  depthStoreOp: "store"
19767
20098
  }
19768
20099
  });
19769
- this.encodeFramebufferDisplay(n, { additive: l }), n.end();
20100
+ this.encodeFramebufferDisplay(n, { additive: u }), n.end();
19770
20101
  }
19771
- this.device.queue.submit([u.finish()]);
20102
+ this.device.queue.submit([d.finish()]);
19772
20103
  }
19773
20104
  dispose() {
19774
- var e;
20105
+ var e, t;
20106
+ (e = this.binnedCore) == null || e.dispose(), this.binnedCore = null;
19775
20107
  for (let [e, t] of this.tileDisposeListeners) try {
19776
20108
  e.removeEventListener("dispose", t);
19777
20109
  } catch (e) {}
@@ -19779,7 +20111,7 @@ var qS = class t {
19779
20111
  for (let e of this.pointCloudCache.values()) e.pointBuffer.destroy(), e.colorBuffer.destroy(), e.normalBuffer.destroy();
19780
20112
  this.pointCloudCache.clear();
19781
20113
  for (let e of this.tileUniformBufferCache.values()) e.destroy();
19782
- this.tileUniformBufferCache.clear(), this.rasterizeBindGroupCache.clear(), (e = this.framebuffer) == null || e.destroy(), this.frameUniformBuffer.destroy(), this.displayParamsBuffer.destroy(), this.placeholderGradientTexture.destroy(), this.pointBuffer = null, this.colorBuffer = null, this.normalBuffer = null, this.framebuffer = null, this.clearBindGroup = null, this.rasterizeBindGroup = null, this.displayBindGroup = null, this.ready = !1;
20114
+ this.tileUniformBufferCache.clear(), this.rasterizeBindGroupCache.clear(), (t = this.framebuffer) == null || t.destroy(), this.frameUniformBuffer.destroy(), this.displayParamsBuffer.destroy(), this.placeholderGradientTexture.destroy(), this.pointBuffer = null, this.colorBuffer = null, this.normalBuffer = null, this.framebuffer = null, this.clearBindGroup = null, this.rasterizeBindGroup = null, this.displayBindGroup = null, this.ready = !1;
19783
20115
  }
19784
20116
  registerTileDisposer(e) {
19785
20117
  if (this.tileDisposeListeners.has(e)) return;
@@ -19825,11 +20157,11 @@ var qS = class t {
19825
20157
  }), this.ready = !1);
19826
20158
  }
19827
20159
  ensureTileUniformBuffer(e) {
19828
- let n = this.tileUniformBufferCache.get(e);
19829
- return n || (n = this.device.createBuffer({
19830
- size: t.TILE_UNIFORM_SIZE,
20160
+ let t = this.tileUniformBufferCache.get(e);
20161
+ return t || (t = this.device.createBuffer({
20162
+ size: qS.size,
19831
20163
  usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
19832
- }), this.tileUniformBufferCache.set(e, n), this.registerTileDisposer(e)), n;
20164
+ }), this.tileUniformBufferCache.set(e, t), this.registerTileDisposer(e)), t;
19833
20165
  }
19834
20166
  bindRasterizeGroup(e, t, n, r) {
19835
20167
  if (!this.framebuffer || !this.pointBuffer || !this.colorBuffer) {
@@ -19842,7 +20174,7 @@ var qS = class t {
19842
20174
  return;
19843
20175
  }
19844
20176
  let a = this.device.createBindGroup({
19845
- layout: this.rasterizePipeline.getBindGroupLayout(0),
20177
+ layout: this.tileBindGroupLayout,
19846
20178
  entries: [
19847
20179
  {
19848
20180
  binding: 0,
@@ -19887,11 +20219,7 @@ var qS = class t {
19887
20219
  gradientView: n
19888
20220
  }), this.rasterizeBindGroup = a;
19889
20221
  }
19890
- };
19891
- qS.FRAME_UNIFORM_SIZE = 512, qS.TILE_UNIFORM_SIZE = 256, qS.OFFSET_VIEW_PROJ = 0, qS.OFFSET_SCREEN_WIDTH = 64, qS.OFFSET_SCREEN_HEIGHT = 68, qS.OFFSET_POINT_SIZE_MODE = 76, qS.OFFSET_POINT_ATTEN_PACK = 80, qS.OFFSET_VIEW_Z_ROW = 96, qS.OFFSET_POINT_SCALE = 112, qS.OFFSET_POINT_MIN_PIXEL = 116, qS.OFFSET_POINT_MAX_PIXEL = 120, qS.OFFSET_PIXEL_RATIO = 124, qS.OFFSET_RESOLUTION_Y = 128, qS.OFFSET_POINT_PIXEL_HARD_MAX = 132, qS.OFFSET_POINT_SHAPE = 136, qS.OFFSET_CAMERA_WORLD = 144, qS.OFFSET_CAMERA_FORWARD = 160, qS.OFFSET_CONSTANT_COLOR = 176, qS.OFFSET_COLOR_GAIN = 192, qS.OFFSET_STYLE_PACK = 208, qS.OFFSET_FLOOR_PACK = 224, qS.OFFSET_CLIP0_INV = 240, qS.OFFSET_CLIP0_META = 304, qS.OFFSET_CLIP1_INV = 320, qS.OFFSET_CLIP1_META = 384, qS.OFFSET_TILE_MODEL = 0, qS.OFFSET_TILE_BBOX_MIN = 64, qS.OFFSET_TILE_BBOX_MAX = 80, qS.OFFSET_TILE_PACK = 96;
19892
- //#endregion
19893
- //#region build/five/renderer/five-renderer.js
19894
- var JS = new e.Matrix4(), YS = class {
20222
+ }, bC = new e.Matrix4(), xC = new e.Vector3(), SC = new e.Box3(), CC = class {
19895
20223
  constructor(t) {
19896
20224
  var n;
19897
20225
  this.renderMode = "default", this.computeRenderer = null, this.useComputePointCloud = null, this.compositeRenderTarget = null, this.lastWidth = 0, this.lastHeight = 0, this.gpuTextureViewCache = /* @__PURE__ */ new WeakMap(), this.outputType = (n = t == null ? void 0 : t.outputType) == null ? e.UnsignedByteType : n, this.composer = new Wx(t), this.composerVersion = "", this.renderMode = "default", this.sceneRenders = { default: new VS() };
@@ -19925,6 +20253,19 @@ var JS = new e.Matrix4(), YS = class {
19925
20253
  }
19926
20254
  this.useComputePointCloud ? this.renderPointCloudCompute(e, t, i, r) : (e.setRenderTarget(this.compositeRenderTarget), e.clear(!0, !0, !0), e.render(t, r));
19927
20255
  }
20256
+ sortByDistance(e, t) {
20257
+ t.getWorldPosition(xC);
20258
+ let n = /* @__PURE__ */ new Map();
20259
+ for (let t of e) {
20260
+ let e = t.getLocalBoundingBoxExtents();
20261
+ if (!e) {
20262
+ n.set(t, Number.MAX_VALUE);
20263
+ continue;
20264
+ }
20265
+ SC.min.set(e[0], e[1], e[2]), SC.max.set(e[3], e[4], e[5]), SC.applyMatrix4(t.matrixWorld), n.set(t, SC.distanceToPoint(xC));
20266
+ }
20267
+ return e.slice().sort((e, t) => n.get(e) - n.get(t));
20268
+ }
19928
20269
  renderPointCloudCompute(e, t, n, r) {
19929
20270
  var i, a, o;
19930
20271
  e.setRenderTarget(this.compositeRenderTarget), e.clear(!0, !0, !0);
@@ -19932,16 +20273,21 @@ var JS = new e.Matrix4(), YS = class {
19932
20273
  if (c && ((i = this.computeRenderer) == null ? void 0 : i.colorFormat) !== c) try {
19933
20274
  let t = e.backend.device;
19934
20275
  if (!t) return;
19935
- (a = this.computeRenderer) == null || a.dispose(), this.computeRenderer = new qS(t, c), this.computeRenderer.resize(this.lastWidth, this.lastHeight);
20276
+ (a = this.computeRenderer) == null || a.dispose(), this.computeRenderer = new yC(t, c), this.computeRenderer.resize(this.lastWidth, this.lastHeight);
19936
20277
  } catch (e) {
19937
20278
  this.computeRenderer = null;
19938
20279
  return;
19939
20280
  }
19940
20281
  if (!this.computeRenderer) return;
19941
- let l = Math.max(.1, r.pixelRatio || e.getPixelRatio()), u = Math.max(1, ((o = r.resolution) == null ? void 0 : o.y) || this.lastHeight), d = [];
19942
- for (let e of n) e.visible && e.layers.test(r.layers) && Math.max(0, Math.min(e.visiblePointCount, e.numPoints)) !== 0 && d.push(e);
20282
+ let l = Math.max(.1, r.pixelRatio || e.getPixelRatio()), u = Math.max(1, ((o = r.resolution) == null ? void 0 : o.y) || this.lastHeight), d = [], f = 0;
20283
+ for (let e of n) {
20284
+ if (!e.visible || !e.layers.test(r.layers)) continue;
20285
+ let t = Math.max(0, Math.min(e.visiblePointCount, e.numPoints));
20286
+ t !== 0 && (d.push(e), f += t);
20287
+ }
19943
20288
  if (s && d.length > 0) {
19944
- let t = d.some((e) => e.useAddBlend), n = d[0];
20289
+ this.computeRenderer.prepareFrame(f);
20290
+ let t = d.some((e) => e.useAddBlend), n = d[0], i = this.sortByDistance(d, r);
19945
20291
  this.computeRenderer.setPointSizeParams({
19946
20292
  sizeMode: n.pointSize,
19947
20293
  pointShape: n.pointShape,
@@ -19952,22 +20298,22 @@ var JS = new e.Matrix4(), YS = class {
19952
20298
  resolutionY: u,
19953
20299
  maxDisplayBoost: n.maxDisplayBoost
19954
20300
  }), this.computeRenderer.submitMergedPointCloudFrame(s.colorView, s.depthView, (t) => {
19955
- var i;
19956
- this.computeRenderer.beginPointCloudFrame(r, n, JS);
19957
- for (let n of d) {
19958
- let r = Math.max(0, Math.min(n.visiblePointCount, n.numPoints)), a = (i = this.getCachedGpuTextureView(e, n.gradientTexture)) == null ? this.computeRenderer.getPlaceholderGradientView() : i;
20301
+ var a;
20302
+ this.computeRenderer.beginPointCloudFrame(r, n, bC);
20303
+ for (let n of i) {
20304
+ let r = Math.max(0, Math.min(n.visiblePointCount, n.numPoints)), i = (a = this.getCachedGpuTextureView(e, n.gradientTexture)) == null ? this.computeRenderer.getPlaceholderGradientView() : a;
19959
20305
  this.computeRenderer.setPointCloud(n, n.positions, n.colors, r, {
19960
20306
  positionsVersion: n.positionVersion,
19961
20307
  colorsVersion: n.styleRevision
19962
- }, { gradientView: a }), this.computeRenderer.writeTileUniform(n, r), this.computeRenderer.encodeRasterize(t);
20308
+ }, { gradientView: i }), this.computeRenderer.writeTileUniform(n, r), this.computeRenderer.encodeRasterize(t);
19963
20309
  }
19964
20310
  }, { displayAdditive: t });
19965
20311
  }
19966
- let f = [];
19967
- for (let e of n) e.visible && (e.visible = !1, f.push(e));
19968
- let p = e.autoClear, m = e.autoClearColor, h = e.autoClearDepth, g = e.autoClearStencil;
19969
- e.autoClear = !1, e.autoClearColor = !1, e.autoClearDepth = !1, e.autoClearStencil = !1, e.setRenderTarget(this.compositeRenderTarget), e.render(t, r), e.autoClear = p, e.autoClearColor = m, e.autoClearDepth = h, e.autoClearStencil = g;
19970
- for (let e of f) e.visible = !0;
20312
+ let p = [];
20313
+ for (let e of n) e.visible && (e.visible = !1, p.push(e));
20314
+ let m = e.autoClear, h = e.autoClearColor, g = e.autoClearDepth, _ = e.autoClearStencil;
20315
+ e.autoClear = !1, e.autoClearColor = !1, e.autoClearDepth = !1, e.autoClearStencil = !1, e.setRenderTarget(this.compositeRenderTarget), e.render(t, r), e.autoClear = m, e.autoClearColor = h, e.autoClearDepth = g, e.autoClearStencil = _;
20316
+ for (let e of p) e.visible = !0;
19971
20317
  }
19972
20318
  dispose() {
19973
20319
  var e, t;
@@ -19999,7 +20345,7 @@ var JS = new e.Matrix4(), YS = class {
19999
20345
  return null;
20000
20346
  }
20001
20347
  }
20002
- }, XS, ZS = typeof navigator < "u" ? ((XS = navigator == null ? void 0 : navigator.userAgent) == null ? "" : XS).toLowerCase() : "node";
20348
+ }, wC, TC = typeof navigator < "u" ? ((wC = navigator == null ? void 0 : navigator.userAgent) == null ? "" : wC).toLowerCase() : "node";
20003
20349
  (() => {
20004
20350
  try {
20005
20351
  let e = document.createElement("canvas");
@@ -20008,23 +20354,23 @@ var JS = new e.Matrix4(), YS = class {
20008
20354
  return !1;
20009
20355
  }
20010
20356
  })();
20011
- var QS = typeof navigator < "u" && navigator.gpu !== void 0;
20012
- typeof window < "u" && QS ? navigator.gpu.requestAdapter().then((e) => (e || (QS = !1), QS)).catch(() => (QS = !1, QS)) : Promise.resolve(QS), typeof history < "u" && "pushState" in history && "replaceState" in history && "state" in history;
20013
- var $S = /android/i.test(ZS) || /webos/i.test(ZS) || /ipad|iphone|ipod/i.test(ZS) || /iemobile/i.test(ZS) || /opera mini/i.test(ZS) || /blackberry/i.test(ZS) || /windows phone/i.test(ZS), eC = [
20357
+ var EC = typeof navigator < "u" && navigator.gpu !== void 0;
20358
+ typeof window < "u" && EC ? navigator.gpu.requestAdapter().then((e) => (e || (EC = !1), EC)).catch(() => (EC = !1, EC)) : Promise.resolve(EC), typeof history < "u" && "pushState" in history && "replaceState" in history && "state" in history;
20359
+ var DC = /android/i.test(TC) || /webos/i.test(TC) || /ipad|iphone|ipod/i.test(TC) || /iemobile/i.test(TC) || /opera mini/i.test(TC) || /blackberry/i.test(TC) || /windows phone/i.test(TC), OC = [
20014
20360
  "trigger",
20015
20361
  "grip",
20016
20362
  "primary",
20017
20363
  "secondary",
20018
20364
  "pinch"
20019
- ], tC = ["x", "y"];
20020
- function nC(e) {
20365
+ ], kC = ["x", "y"];
20366
+ function AC(e) {
20021
20367
  for (let t of Object.keys(e)) {
20022
20368
  let n = e[t];
20023
- typeof n == "object" && n && !Object.isFrozen(n) && nC(n);
20369
+ typeof n == "object" && n && !Object.isFrozen(n) && AC(n);
20024
20370
  }
20025
20371
  return Object.freeze(e);
20026
20372
  }
20027
- function rC() {
20373
+ function jC() {
20028
20374
  return {
20029
20375
  buttons: {
20030
20376
  trigger: 0,
@@ -20040,7 +20386,7 @@ function rC() {
20040
20386
  model: "auto"
20041
20387
  };
20042
20388
  }
20043
- function iC() {
20389
+ function MC() {
20044
20390
  return {
20045
20391
  buttons: {
20046
20392
  trigger: null,
@@ -20056,13 +20402,13 @@ function iC() {
20056
20402
  model: "none"
20057
20403
  };
20058
20404
  }
20059
- var aC = nC({
20060
- Pico: rC(),
20061
- Oculus: rC(),
20062
- Default: rC(),
20063
- VP: iC()
20405
+ var NC = AC({
20406
+ Pico: jC(),
20407
+ Oculus: jC(),
20408
+ Default: jC(),
20409
+ VP: MC()
20064
20410
  });
20065
- function oC(e, t) {
20411
+ function PC(e, t) {
20066
20412
  try {
20067
20413
  let n = e === void 0 ? navigator.userAgent : e, r = t === void 0 ? navigator.maxTouchPoints : t;
20068
20414
  return typeof n == "string" ? n.includes("PICO") || n.includes("Pico") ? "Pico" : n.includes("Macintosh") && r === 5 ? "VP" : n.includes("Oculus") ? "Oculus" : "Default" : "Default";
@@ -20070,46 +20416,46 @@ function oC(e, t) {
20070
20416
  return "Default";
20071
20417
  }
20072
20418
  }
20073
- function sC(e) {
20419
+ function FC(e) {
20074
20420
  return e === null || typeof e == "number" && Number.isInteger(e) && e >= 0;
20075
20421
  }
20076
- function cC(e) {
20422
+ function IC(e) {
20077
20423
  return typeof e == "object" && !!e;
20078
20424
  }
20079
- function lC(e, t) {
20425
+ function LC(e, t) {
20080
20426
  if (e) try {
20081
20427
  e(t);
20082
20428
  } catch (e) {}
20083
20429
  }
20084
- function uC(e, t, n) {
20430
+ function RC(e, t, n) {
20085
20431
  var r;
20086
- let i = (r = aC[e]) == null ? aC.Default : r, a = {
20432
+ let i = (r = NC[e]) == null ? NC.Default : r, a = {
20087
20433
  buttons: Object.assign({}, i.buttons),
20088
20434
  axes: Object.assign({}, i.axes),
20089
20435
  model: i.model
20090
20436
  };
20091
- if (!cC(t)) return a;
20437
+ if (!IC(t)) return a;
20092
20438
  let o = t.buttons;
20093
- if (o !== void 0) if (cC(o)) for (let e of eC) {
20439
+ if (o !== void 0) if (IC(o)) for (let e of OC) {
20094
20440
  let t = o[e];
20095
- t !== void 0 && (sC(t) ? a.buttons[e] = t : lC(n, `buttons.${e}`));
20441
+ t !== void 0 && (FC(t) ? a.buttons[e] = t : LC(n, `buttons.${e}`));
20096
20442
  }
20097
- else lC(n, "buttons");
20443
+ else LC(n, "buttons");
20098
20444
  let s = t.axes;
20099
- if (s !== void 0) if (cC(s)) for (let e of tC) {
20445
+ if (s !== void 0) if (IC(s)) for (let e of kC) {
20100
20446
  let t = s[e];
20101
- t !== void 0 && (sC(t) ? a.axes[e] = t : lC(n, `axes.${e}`));
20447
+ t !== void 0 && (FC(t) ? a.axes[e] = t : LC(n, `axes.${e}`));
20102
20448
  }
20103
- else lC(n, "axes");
20449
+ else LC(n, "axes");
20104
20450
  let c = t.model;
20105
- return c !== void 0 && (c === "auto" || c === "none" ? a.model = c : lC(n, "model")), a;
20451
+ return c !== void 0 && (c === "auto" || c === "none" ? a.model = c : LC(n, "model")), a;
20106
20452
  }
20107
- function dC(e) {
20453
+ function zC(e) {
20108
20454
  return e === "Default" ? "Pico" : e;
20109
20455
  }
20110
20456
  //#endregion
20111
20457
  //#region build/five/core/webglAsyncReadFix.js
20112
- function fC() {
20458
+ function BC() {
20113
20459
  let { gl: e } = this, t = e.fenceSync(e.SYNC_GPU_COMMANDS_COMPLETE, 0);
20114
20460
  return e.flush(), new Promise((n, r) => {
20115
20461
  function i() {
@@ -20131,16 +20477,16 @@ function fC() {
20131
20477
  i();
20132
20478
  });
20133
20479
  }
20134
- function pC(e) {
20135
- if (oC() === "Default") return !1;
20480
+ function VC(e) {
20481
+ if (PC() === "Default") return !1;
20136
20482
  let t = e;
20137
20483
  if ((t == null ? void 0 : t.isWebGLBackend) !== !0) return !1;
20138
20484
  let n = t.utils;
20139
- return !n || typeof n._clientWaitAsync != "function" ? !1 : (n._clientWaitAsync = fC, !0);
20485
+ return !n || typeof n._clientWaitAsync != "function" ? !1 : (n._clientWaitAsync = BC, !0);
20140
20486
  }
20141
20487
  //#endregion
20142
20488
  //#region build/five/core/internalWebGPURenderer.js
20143
- var mC = 1579548, hC = class extends e.WebGPURenderer {
20489
+ var HC = 1579548, UC = class extends e.WebGPURenderer {
20144
20490
  constructor({ antialias: t = !1, logarithmicDepthBuffer: n, outputType: r = e.UnsignedByteType, forceWebGL: i = !1 }) {
20145
20491
  var a;
20146
20492
  super({
@@ -20150,7 +20496,7 @@ var mC = 1579548, hC = class extends e.WebGPURenderer {
20150
20496
  logarithmicDepthBuffer: n,
20151
20497
  outputType: r,
20152
20498
  forceWebGL: i
20153
- }), this._backendReady = !1, this.forceWebGL = i, i === !1 && QS === !1 && console.warn("设备不支持开启 WEBGPU"), this.outputColorSpace = e.SRGBColorSpace, this.setClearColor(mC, 1);
20499
+ }), this._backendReady = !1, this.forceWebGL = i, i === !1 && EC === !1 && console.warn("设备不支持开启 WEBGPU"), this.outputColorSpace = e.SRGBColorSpace, this.setClearColor(HC, 1);
20154
20500
  let o = (a = this.onDeviceLost) == null ? void 0 : a.bind(this);
20155
20501
  this.onDeviceLost = (e) => {
20156
20502
  var t;
@@ -20161,7 +20507,7 @@ var mC = 1579548, hC = class extends e.WebGPURenderer {
20161
20507
  console.error("onDeviceLostCallback error", e);
20162
20508
  }
20163
20509
  }, this.ready = this.init().then(() => {
20164
- pC(this.backend), this._backendReady = !0;
20510
+ VC(this.backend), this._backendReady = !0;
20165
20511
  });
20166
20512
  }
20167
20513
  get isInitialized() {
@@ -20180,12 +20526,12 @@ var mC = 1579548, hC = class extends e.WebGPURenderer {
20180
20526
  console.error("reconfigureContext error", e);
20181
20527
  }
20182
20528
  }
20183
- }, gC = new e.Matrix4(), _C = new e.Frustum(), vC = new e.Vector2(), yC = /* @__PURE__ */ new WeakMap();
20184
- function bC(e) {
20529
+ }, WC = new e.Matrix4(), GC = new e.Frustum(), KC = new e.Vector2(), qC = /* @__PURE__ */ new WeakMap();
20530
+ function JC(e) {
20185
20531
  let t = !1;
20186
20532
  return e.needsRender === !0 ? (e.needsRender = !1, t = !0) : e.mixer && e.mixer.stats.actions.inUse > 0 && (t = !0), t;
20187
20533
  }
20188
- var xC = class extends e.Scene {
20534
+ var YC = class extends e.Scene {
20189
20535
  constructor() {
20190
20536
  super(...arguments), this.needsRender = !1;
20191
20537
  }
@@ -20197,17 +20543,17 @@ var xC = class extends e.Scene {
20197
20543
  }
20198
20544
  update(t, n) {
20199
20545
  let r = !1, i;
20200
- return n instanceof po ? (i = n.time, vC.copy(n.resolution)) : (i = J(), t.getSize(vC)), gC.multiplyMatrices(n.projectionMatrix, n.matrixWorldInverse), _C.setFromProjectionMatrix(gC), this.traverseVisible((t) => {
20201
- if (t.setResolution && t.setResolution(vC.x, vC.y), t.setTime && t.setTime(i), t.mixer instanceof e.AnimationMixer) {
20202
- let e = t.mixer, n = yC.get(e);
20203
- n || (n = new Ux(), yC.set(e, n)), n.update(i), e.update(n.getDelta());
20546
+ return n instanceof po ? (i = n.time, KC.copy(n.resolution)) : (i = J(), t.getSize(KC)), WC.multiplyMatrices(n.projectionMatrix, n.matrixWorldInverse), GC.setFromProjectionMatrix(WC), this.traverseVisible((t) => {
20547
+ if (t.setResolution && t.setResolution(KC.x, KC.y), t.setTime && t.setTime(i), t.mixer instanceof e.AnimationMixer) {
20548
+ let e = t.mixer, n = qC.get(e);
20549
+ n || (n = new Ux(), qC.set(e, n)), n.update(i), e.update(n.getDelta());
20204
20550
  }
20205
- (t instanceof e.Mesh || t instanceof e.Line || t instanceof e.Points) && (!t.frustumCulled || _C.intersectsObject(t)) && (bC(t) && (r = !0), t.traverseAncestors((e) => {
20206
- bC(e) && (r = !0);
20551
+ (t instanceof e.Mesh || t instanceof e.Line || t instanceof e.Points) && (!t.frustumCulled || GC.intersectsObject(t)) && (JC(t) && (r = !0), t.traverseAncestors((e) => {
20552
+ JC(e) && (r = !0);
20207
20553
  }));
20208
20554
  }), this.needsRender = r, r;
20209
20555
  }
20210
- }, SC = (e) => e * (2 - e), CC = (() => {
20556
+ }, XC = (e) => e * (2 - e), ZC = (() => {
20211
20557
  let t = new Float32Array([
20212
20558
  -.18,
20213
20559
  0,
@@ -20239,16 +20585,16 @@ var xC = class extends e.Scene {
20239
20585
  1
20240
20586
  ]), i = new e.BufferGeometry();
20241
20587
  return i.setAttribute("position", new e.BufferAttribute(t, 3)), i.setAttribute("uv", new e.BufferAttribute(n, 2)), i.setIndex(new e.BufferAttribute(r, 1)), i;
20242
- })(), wC = oe(.5, .5), TC = T(.017);
20243
- function EC(e, t) {
20244
- let n = D(wC.sub(e));
20245
- return F(t, t.add(TC), n);
20588
+ })(), QC = oe(.5, .5), $C = T(.017);
20589
+ function ew(e, t) {
20590
+ let n = D(QC.sub(e));
20591
+ return F(t, t.add($C), n);
20246
20592
  }
20247
- function DC(e, t) {
20248
- let n = D(wC.sub(e));
20249
- return T(1).sub(F(t.sub(TC), t, n));
20593
+ function tw(e, t) {
20594
+ let n = D(QC.sub(e));
20595
+ return T(1).sub(F(t.sub($C), t, n));
20250
20596
  }
20251
- function OC(t) {
20597
+ function nw(t) {
20252
20598
  let n = {
20253
20599
  baseColor: R(new e.Color(t)),
20254
20600
  circleScale: R(1),
@@ -20265,7 +20611,7 @@ function OC(t) {
20265
20611
  tapScale: R(1),
20266
20612
  tapOpacity: R(1),
20267
20613
  disable: R(0)
20268
- }, r = z(), i = V(1, 1, 1, T(.8).add(m(ee(oe(1, -1)).dot(r.sub(wC))).mul(1.5)).clamp(0, 1).mul(n.tapOpacity).mul(EC(r, T(.15).mul(n.circleScale).mul(n.tapScale))).mul(DC(r, T(.234).mul(n.circleScale).mul(n.tapScale)))), a = V(1, 1, 1, T(.5).add(m(ee(oe(1, 1)).dot(r.sub(wC)))).clamp(0, 1).mul(n.tapOpacity).mul(n.ringOpacity).mul(EC(r, T(.27).mul(n.ringScale).mul(n.tapScale))).mul(DC(r, T(.32).mul(n.ringScale).mul(n.tapScale)))), o = M(f.sub(h(wC.x.sub(r.x), wC.y.sub(r.y))).add(n.loadingAngle), p), s = V(1, 1, 1, T(1).sub(F(T(0), p, o)).mul(.4).add(.1).mul(n.tapOpacity).mul(n.loadingOpacity).mul(EC(r, T(.208).mul(n.circleScale).mul(n.tapScale))).mul(DC(r, T(.3).mul(n.circleScale).mul(n.tapScale)))), c = f.add(h(wC.x.sub(r.x), wC.y.sub(r.y))), l = V(1, 1, 1, T(1).sub(I(n.progress.mul(p), c)).mul(.5).mul(n.tapOpacity).mul(n.progressOpacity).mul(EC(r, T(.208).mul(n.circleScale).mul(n.tapScale))).mul(DC(r, T(.3).mul(n.circleScale).mul(n.tapScale)))), u = T(.2).add(T(.23).mul(n.expand0)), d = D(wC.sub(r)), g = V(1, 1, 1, T(1).sub(u.sub(d).div(.2).clamp(0, 1)).mul(.8).mul(T(1).sub(m(n.expand0.sub(.5)).mul(2)).mul(1.2).clamp(0, 1)).mul(n.expandOpacity).mul(DC(r, u))), _ = T(.2).add(T(.23).mul(n.expand1)), v = D(wC.sub(r)), y = V(1, 1, 1, T(1).sub(_.sub(v).div(.2).clamp(0, 1)).mul(.8).mul(T(1).sub(m(n.expand1.sub(.5)).mul(2)).mul(1.2).clamp(0, 1)).mul(n.expandOpacity).mul(DC(r, _))), b = V(1, 1, 1, T(.5).mul(DC(r, T(.32).mul(n.circleScale).mul(n.tapScale)))), x = V(1, 1, 1, 0);
20614
+ }, r = z(), i = V(1, 1, 1, T(.8).add(m(ee(oe(1, -1)).dot(r.sub(QC))).mul(1.5)).clamp(0, 1).mul(n.tapOpacity).mul(ew(r, T(.15).mul(n.circleScale).mul(n.tapScale))).mul(tw(r, T(.234).mul(n.circleScale).mul(n.tapScale)))), a = V(1, 1, 1, T(.5).add(m(ee(oe(1, 1)).dot(r.sub(QC)))).clamp(0, 1).mul(n.tapOpacity).mul(n.ringOpacity).mul(ew(r, T(.27).mul(n.ringScale).mul(n.tapScale))).mul(tw(r, T(.32).mul(n.ringScale).mul(n.tapScale)))), o = M(f.sub(h(QC.x.sub(r.x), QC.y.sub(r.y))).add(n.loadingAngle), p), s = V(1, 1, 1, T(1).sub(F(T(0), p, o)).mul(.4).add(.1).mul(n.tapOpacity).mul(n.loadingOpacity).mul(ew(r, T(.208).mul(n.circleScale).mul(n.tapScale))).mul(tw(r, T(.3).mul(n.circleScale).mul(n.tapScale)))), c = f.add(h(QC.x.sub(r.x), QC.y.sub(r.y))), l = V(1, 1, 1, T(1).sub(I(n.progress.mul(p), c)).mul(.5).mul(n.tapOpacity).mul(n.progressOpacity).mul(ew(r, T(.208).mul(n.circleScale).mul(n.tapScale))).mul(tw(r, T(.3).mul(n.circleScale).mul(n.tapScale)))), u = T(.2).add(T(.23).mul(n.expand0)), d = D(QC.sub(r)), g = V(1, 1, 1, T(1).sub(u.sub(d).div(.2).clamp(0, 1)).mul(.8).mul(T(1).sub(m(n.expand0.sub(.5)).mul(2)).mul(1.2).clamp(0, 1)).mul(n.expandOpacity).mul(tw(r, u))), _ = T(.2).add(T(.23).mul(n.expand1)), v = D(QC.sub(r)), y = V(1, 1, 1, T(1).sub(_.sub(v).div(.2).clamp(0, 1)).mul(.8).mul(T(1).sub(m(n.expand1.sub(.5)).mul(2)).mul(1.2).clamp(0, 1)).mul(n.expandOpacity).mul(tw(r, _))), b = V(1, 1, 1, T(.5).mul(tw(r, T(.32).mul(n.circleScale).mul(n.tapScale)))), x = V(1, 1, 1, 0);
20269
20615
  x = j(x, y, y.w), x = j(x, g, g.w), x = j(x, l, l.w), x = j(x, s, s.w), x = j(x, i, i.w), x = j(x, a, a.w), x = j(x, b, n.disable);
20270
20616
  let S = V(x.xyz.mul(n.baseColor), x.w.mul(n.opacity).mul(n.opacity)), C = new e.NodeMaterial();
20271
20617
  return C.fragmentNode = S, C.blending = e.CustomBlending, C.blendSrc = e.SrcAlphaFactor, C.blendDst = e.OneMinusSrcAlphaFactor, C.blendSrcAlpha = e.OneFactor, C.blendDstAlpha = e.OneMinusSrcAlphaFactor, C.depthWrite = !1, C.transparent = !0, {
@@ -20273,7 +20619,7 @@ function OC(t) {
20273
20619
  u: n
20274
20620
  };
20275
20621
  }
20276
- var kC = class extends e.Object3D {
20622
+ var rw = class extends e.Object3D {
20277
20623
  constructor(t = {}) {
20278
20624
  var n, r;
20279
20625
  super();
@@ -20285,8 +20631,8 @@ var kC = class extends e.Object3D {
20285
20631
  scale: 1,
20286
20632
  opacity: 1
20287
20633
  }), this.loadingOpacityMotion = new X({ opacity: 0 }), this.progressMotion = new X({ progress: 0 }), this.progressOpacityMotion = new X({ opacity: 0 }), this.opacityMotion = new X({ opacity: 0 }), this.disableMotion = new X({ progress: 0 });
20288
- let { material: o, u: s } = OC(i);
20289
- this.panoU = s, this.panoMesh = new e.Mesh(CC, o), this.renderOrder = -2, this.panoMesh.renderOrder = -2, this.panoMesh.position.y = .004, this.panoMesh.scale.set(a, 1, a), this.add(this.panoMesh), this.currentStartTime = J(), this.needsRender = !0;
20634
+ let { material: o, u: s } = nw(i);
20635
+ this.panoU = s, this.panoMesh = new e.Mesh(ZC, o), this.renderOrder = -2, this.panoMesh.renderOrder = -2, this.panoMesh.position.y = .004, this.panoMesh.scale.set(a, 1, a), this.add(this.panoMesh), this.currentStartTime = J(), this.needsRender = !0;
20290
20636
  }
20291
20637
  setProgress(e) {
20292
20638
  this.setDisabled(!1), this.setLoading(!1), this.progress !== e && (e = q(e, 0, 1), this.tapMotion.ended && (this.progress === 0 && this.progressOpacityMotion.set({ opacity: 1 }, 500).catch(Y), e === 0 ? this.progressOpacityMotion.set({ opacity: 0 }, 500).catch(Y).then(() => {
@@ -20353,14 +20699,14 @@ var kC = class extends e.Object3D {
20353
20699
  let t = (e - this.currentStartTime - 1500) / 2e3;
20354
20700
  if (t % 5 < 2) {
20355
20701
  let e = t % 1;
20356
- this.panoU.expand0.value = SC(e) * this.currentMotion.value.progress, this.needsRender = !0;
20702
+ this.panoU.expand0.value = XC(e) * this.currentMotion.value.progress, this.needsRender = !0;
20357
20703
  }
20358
20704
  }
20359
20705
  {
20360
20706
  let t = (e - this.currentStartTime - 1e3) / 2e3;
20361
20707
  if (t % 5 < 2) {
20362
20708
  let e = t % 1;
20363
- this.panoU.expand1.value = SC(e) * this.currentMotion.value.progress, this.needsRender = !0;
20709
+ this.panoU.expand1.value = XC(e) * this.currentMotion.value.progress, this.needsRender = !0;
20364
20710
  }
20365
20711
  }
20366
20712
  }
@@ -20382,7 +20728,7 @@ var kC = class extends e.Object3D {
20382
20728
  dispose() {
20383
20729
  this.ringMotion.dispose(), this.tapMotion.dispose(), this.progressMotion.dispose(), this.progressOpacityMotion.dispose(), this.opacityMotion.dispose(), this.currentMotion.dispose(), this.panoMesh.material.dispose();
20384
20730
  }
20385
- }, AC = (e) => e * (2 - e), jC = (() => {
20731
+ }, iw = (e) => e * (2 - e), aw = (() => {
20386
20732
  let t = new Float32Array([
20387
20733
  -.18,
20388
20734
  0,
@@ -20414,16 +20760,16 @@ var kC = class extends e.Object3D {
20414
20760
  1
20415
20761
  ]), i = new e.BufferGeometry();
20416
20762
  return i.setAttribute("position", new e.BufferAttribute(t, 3)), i.setAttribute("uv", new e.BufferAttribute(n, 2)), i.setIndex(new e.BufferAttribute(r, 1)), i;
20417
- })(), MC = oe(.5, .5), NC = T(.017);
20418
- function PC(e, t) {
20419
- let n = D(MC.sub(e));
20420
- return F(t, t.add(NC), n);
20763
+ })(), ow = oe(.5, .5), sw = T(.017);
20764
+ function cw(e, t) {
20765
+ let n = D(ow.sub(e));
20766
+ return F(t, t.add(sw), n);
20421
20767
  }
20422
- function FC(e, t) {
20423
- let n = D(MC.sub(e));
20424
- return T(1).sub(F(t.sub(NC), t, n));
20768
+ function lw(e, t) {
20769
+ let n = D(ow.sub(e));
20770
+ return T(1).sub(F(t.sub(sw), t, n));
20425
20771
  }
20426
- function IC(t) {
20772
+ function uw(t) {
20427
20773
  let n = {
20428
20774
  baseColor: R(new e.Color(t)),
20429
20775
  circleScale: R(1),
@@ -20439,7 +20785,7 @@ function IC(t) {
20439
20785
  tapScale: R(1),
20440
20786
  tapOpacity: R(1),
20441
20787
  disable: R(0)
20442
- }, r = z(), i = V(1, 1, 1, T(.8).add(m(ee(oe(1, -1)).dot(r.sub(MC))).mul(1.5)).clamp(0, 1).mul(I(n.progress, T(0))).mul(n.tapOpacity).mul(PC(r, T(.2).mul(n.circleScale).mul(n.tapScale))).mul(FC(r, T(.3).mul(n.circleScale).mul(n.tapScale)))), a = M(f.sub(h(MC.x.sub(r.x), MC.y.sub(r.y))).add(n.loadingAngle), p), o = V(1, 1, 1, T(1).sub(F(T(0), p, a)).mul(.9).add(.1).mul(n.tapOpacity).mul(n.loadingOpacity).mul(PC(r, T(.2).mul(n.circleScale).mul(n.tapScale))).mul(FC(r, T(.3).mul(n.circleScale).mul(n.tapScale)))), s = f.add(h(MC.x.sub(r.x), MC.y.sub(r.y))), c = T(1).sub(I(n.progress.mul(p), s)), l = T(.04), u = n.progress.mul(p), d = I(D(oe(MC.x.add(T(0).sin().mul(.25)), MC.y.add(T(0).cos().mul(.25))).sub(r)), l), g = I(D(oe(MC.x.add(u.sin().mul(.25)), MC.y.add(u.cos().mul(.25))).sub(r)), l), _ = V(1, 1, 1, c.add(d).add(g).clamp(0, 1).mul(.9).mul(n.tapOpacity).mul(n.progressOpacity).mul(PC(r, T(.2).mul(n.circleScale).mul(n.tapScale))).mul(FC(r, T(.3).mul(n.circleScale).mul(n.tapScale)))), v = T(.25).add(T(.25).mul(n.expand0)), y = D(MC.sub(r)), b = V(1, 1, 1, T(1).sub(v.sub(y).div(.2).clamp(0, 1)).mul(.8).mul(T(1).sub(m(n.expand0.sub(.5)).mul(2)).mul(1.2).clamp(0, 1)).mul(n.expandOpacity).mul(FC(r, v))), x = T(.25).add(T(.23).mul(n.expand1)), S = D(MC.sub(r)), C = V(1, 1, 1, T(1).sub(x.sub(S).div(.2).clamp(0, 1)).mul(.8).mul(T(1).sub(m(n.expand1.sub(.5)).mul(2)).mul(1.2).clamp(0, 1)).mul(n.expandOpacity).mul(FC(r, x))), w = V(1, 1, 1, T(.5).mul(n.tapOpacity).mul(FC(r, T(.32).mul(n.circleScale).mul(n.tapScale)))), E = V(1, 1, 1, 0);
20788
+ }, r = z(), i = V(1, 1, 1, T(.8).add(m(ee(oe(1, -1)).dot(r.sub(ow))).mul(1.5)).clamp(0, 1).mul(I(n.progress, T(0))).mul(n.tapOpacity).mul(cw(r, T(.2).mul(n.circleScale).mul(n.tapScale))).mul(lw(r, T(.3).mul(n.circleScale).mul(n.tapScale)))), a = M(f.sub(h(ow.x.sub(r.x), ow.y.sub(r.y))).add(n.loadingAngle), p), o = V(1, 1, 1, T(1).sub(F(T(0), p, a)).mul(.9).add(.1).mul(n.tapOpacity).mul(n.loadingOpacity).mul(cw(r, T(.2).mul(n.circleScale).mul(n.tapScale))).mul(lw(r, T(.3).mul(n.circleScale).mul(n.tapScale)))), s = f.add(h(ow.x.sub(r.x), ow.y.sub(r.y))), c = T(1).sub(I(n.progress.mul(p), s)), l = T(.04), u = n.progress.mul(p), d = I(D(oe(ow.x.add(T(0).sin().mul(.25)), ow.y.add(T(0).cos().mul(.25))).sub(r)), l), g = I(D(oe(ow.x.add(u.sin().mul(.25)), ow.y.add(u.cos().mul(.25))).sub(r)), l), _ = V(1, 1, 1, c.add(d).add(g).clamp(0, 1).mul(.9).mul(n.tapOpacity).mul(n.progressOpacity).mul(cw(r, T(.2).mul(n.circleScale).mul(n.tapScale))).mul(lw(r, T(.3).mul(n.circleScale).mul(n.tapScale)))), v = T(.25).add(T(.25).mul(n.expand0)), y = D(ow.sub(r)), b = V(1, 1, 1, T(1).sub(v.sub(y).div(.2).clamp(0, 1)).mul(.8).mul(T(1).sub(m(n.expand0.sub(.5)).mul(2)).mul(1.2).clamp(0, 1)).mul(n.expandOpacity).mul(lw(r, v))), x = T(.25).add(T(.23).mul(n.expand1)), S = D(ow.sub(r)), C = V(1, 1, 1, T(1).sub(x.sub(S).div(.2).clamp(0, 1)).mul(.8).mul(T(1).sub(m(n.expand1.sub(.5)).mul(2)).mul(1.2).clamp(0, 1)).mul(n.expandOpacity).mul(lw(r, x))), w = V(1, 1, 1, T(.5).mul(n.tapOpacity).mul(lw(r, T(.32).mul(n.circleScale).mul(n.tapScale)))), E = V(1, 1, 1, 0);
20443
20789
  E = j(E, C, C.w), E = j(E, b, b.w), E = j(E, i, i.w), E = j(E, _, _.w), E = j(E, o, o.w), E = j(E, w, n.disable);
20444
20790
  let O = V(E.xyz.mul(n.baseColor), E.w.mul(n.opacity).mul(n.opacity)), k = new e.NodeMaterial();
20445
20791
  return k.fragmentNode = O, k.blending = e.CustomBlending, k.blendSrc = e.SrcAlphaFactor, k.blendDst = e.OneMinusSrcAlphaFactor, k.blendSrcAlpha = e.OneFactor, k.blendDstAlpha = e.OneMinusSrcAlphaFactor, k.depthWrite = !1, k.transparent = !0, {
@@ -20447,7 +20793,7 @@ function IC(t) {
20447
20793
  u: n
20448
20794
  };
20449
20795
  }
20450
- var LC = class extends e.Object3D {
20796
+ var dw = class extends e.Object3D {
20451
20797
  constructor(t = {}) {
20452
20798
  var n, r;
20453
20799
  super();
@@ -20456,8 +20802,8 @@ var LC = class extends e.Object3D {
20456
20802
  scale: 1,
20457
20803
  opacity: 1
20458
20804
  }), this.loadingOpacityMotion = new X({ opacity: 0 }), this.progressMotion = new X({ progress: 0 }), this.progressOpacityMotion = new X({ opacity: 0 }), this.opacityMotion = new X({ opacity: 0 }), this.disableMotion = new X({ progress: 0 });
20459
- let { material: o, u: s } = IC(i);
20460
- this.panoU = s, this.panoMesh = new e.Mesh(jC, o), this.renderOrder = -2, this.panoMesh.renderOrder = -2, this.panoMesh.position.y = .004, this.panoMesh.scale.set(a, 1, a), this.add(this.panoMesh), this.currentStartTime = J(), this.needsRender = !0;
20805
+ let { material: o, u: s } = uw(i);
20806
+ this.panoU = s, this.panoMesh = new e.Mesh(aw, o), this.renderOrder = -2, this.panoMesh.renderOrder = -2, this.panoMesh.position.y = .004, this.panoMesh.scale.set(a, 1, a), this.add(this.panoMesh), this.currentStartTime = J(), this.needsRender = !0;
20461
20807
  }
20462
20808
  setProgress(e) {
20463
20809
  this.setDisabled(!1), this.setLoading(!1), this.progress !== e && (e = q(e, 0, 1), this.tapMotion.ended && (this.progress === 0 && this.progressOpacityMotion.set({ opacity: 1 }, 500).catch(Y), e === 0 ? this.progressOpacityMotion.set({ opacity: 0 }, 500).catch(Y).then(() => {
@@ -20524,14 +20870,14 @@ var LC = class extends e.Object3D {
20524
20870
  let t = (e - this.currentStartTime - 1500) / 2e3;
20525
20871
  if (t % 5 < 2) {
20526
20872
  let e = t % 1;
20527
- this.panoU.expand0.value = AC(e) * this.currentMotion.value.progress, this.needsRender = !0;
20873
+ this.panoU.expand0.value = iw(e) * this.currentMotion.value.progress, this.needsRender = !0;
20528
20874
  }
20529
20875
  }
20530
20876
  {
20531
20877
  let t = (e - this.currentStartTime - 1e3) / 2e3;
20532
20878
  if (t % 5 < 2) {
20533
20879
  let e = t % 1;
20534
- this.panoU.expand1.value = AC(e) * this.currentMotion.value.progress, this.needsRender = !0;
20880
+ this.panoU.expand1.value = iw(e) * this.currentMotion.value.progress, this.needsRender = !0;
20535
20881
  }
20536
20882
  }
20537
20883
  }
@@ -20543,7 +20889,7 @@ var LC = class extends e.Object3D {
20543
20889
  dispose() {
20544
20890
  this.tapMotion.dispose(), this.progressMotion.dispose(), this.progressOpacityMotion.dispose(), this.opacityMotion.dispose(), this.currentMotion.dispose(), this.panoMesh.material.dispose();
20545
20891
  }
20546
- }, RC = (e) => e * (2 - e), zC = (() => {
20892
+ }, fw = (e) => e * (2 - e), pw = (() => {
20547
20893
  let t = new Float32Array([
20548
20894
  -.18,
20549
20895
  0,
@@ -20575,16 +20921,16 @@ var LC = class extends e.Object3D {
20575
20921
  1
20576
20922
  ]), i = new e.BufferGeometry();
20577
20923
  return i.setAttribute("position", new e.BufferAttribute(t, 3)), i.setAttribute("uv", new e.BufferAttribute(n, 2)), i.setIndex(new e.BufferAttribute(r, 1)), i;
20578
- })(), BC = oe(.5, .5), VC = T(.017);
20579
- function HC(e, t) {
20580
- let n = D(BC.sub(e));
20581
- return F(t, t.add(VC), n);
20924
+ })(), mw = oe(.5, .5), hw = T(.017);
20925
+ function gw(e, t) {
20926
+ let n = D(mw.sub(e));
20927
+ return F(t, t.add(hw), n);
20582
20928
  }
20583
- function UC(e, t) {
20584
- let n = D(BC.sub(e));
20585
- return T(1).sub(F(t.sub(VC), t, n));
20929
+ function _w(e, t) {
20930
+ let n = D(mw.sub(e));
20931
+ return T(1).sub(F(t.sub(hw), t, n));
20586
20932
  }
20587
- function WC(t) {
20933
+ function vw(t) {
20588
20934
  let n = t.map, r = t.borderWidth > 0, i = {
20589
20935
  baseColor: R(new e.Color(t.color)),
20590
20936
  circleScale: R(1),
@@ -20600,18 +20946,18 @@ function WC(t) {
20600
20946
  tapScale: R(1),
20601
20947
  tapOpacity: R(1),
20602
20948
  disable: R(0)
20603
- }, a = R(t.mapAlpha), o = R(t.borderWidth), s = R(new e.Color(t.borderColor)), c = z(), l = T(.3).mul(i.circleScale).mul(i.tapScale), u = r ? HC(c, l.sub(o.clamp(0, 1).mul(l))) : HC(c, l.sub(T(.2).mul(l))), d;
20949
+ }, a = R(t.mapAlpha), o = R(t.borderWidth), s = R(new e.Color(t.borderColor)), c = z(), l = T(.3).mul(i.circleScale).mul(i.tapScale), u = r ? gw(c, l.sub(o.clamp(0, 1).mul(l))) : gw(c, l.sub(T(.2).mul(l))), d;
20604
20950
  if (n) {
20605
20951
  let e = l.div(.5);
20606
- d = L(n, c.sub(BC).div(e).add(BC)), d = V(d.rgb, d.a.mul(a)), t.mapUseColor && (d = V(i.baseColor, T(1)).mul(d));
20952
+ d = L(n, c.sub(mw).div(e).add(mw)), d = V(d.rgb, d.a.mul(a)), t.mapUseColor && (d = V(i.baseColor, T(1)).mul(d));
20607
20953
  } else d = V(i.baseColor, T(1));
20608
20954
  let g;
20609
20955
  if (t.mapUseReverse) g = V(i.baseColor, T(1).sub(d.a));
20610
20956
  else if (r) {
20611
- let e = HC(c, l.sub(o.clamp(0, 1).mul(l))), t = o.mul(2).add(m(ee(oe(1, -1)).dot(c.sub(BC)))).clamp(0, 1);
20957
+ let e = gw(c, l.sub(o.clamp(0, 1).mul(l))), t = o.mul(2).add(m(ee(oe(1, -1)).dot(c.sub(mw)))).clamp(0, 1);
20612
20958
  g = j(V(s, e.mul(t)), d, d.a);
20613
20959
  } else g = d;
20614
- let _ = V(g.rgb, g.a.mul(i.circleOpacity).mul(i.tapOpacity).mul(UC(c, l))), v = V(i.baseColor, T(.5).mul(i.tapOpacity).mul(UC(c, T(.32).mul(i.circleScale).mul(i.tapScale)))), y = M(f.sub(h(BC.x.sub(c.x), BC.y.sub(c.y))).add(i.loadingAngle), p), b = T(1).sub(F(T(0), p, y)).mul(.9).add(.1), x = V(i.baseColor, b.mul(i.tapOpacity).mul(i.loadingOpacity).mul(u).mul(UC(c, l))), S = f.add(h(BC.x.sub(c.x), BC.y.sub(c.y))), C = T(1).sub(I(i.progress.mul(p), S)).mul(.7), w = V(i.baseColor, C.mul(i.tapOpacity).mul(i.progressOpacity).mul(u).mul(UC(c, l))), E = T(.25).add(T(.25).mul(i.expand0)), O = D(BC.sub(c)), k = T(1).sub(E.sub(O).div(.2).clamp(0, 1)).mul(.8).mul(T(1).sub(m(i.expand0.sub(.5)).mul(2)).mul(1.2).clamp(0, 1)), A = V(i.baseColor, k.mul(i.expandOpacity).mul(UC(c, E))), N = T(.25).add(T(.23).mul(i.expand1)), te = D(BC.sub(c)), ne = T(1).sub(N.sub(te).div(.2).clamp(0, 1)).mul(.8).mul(T(1).sub(m(i.expand1.sub(.5)).mul(2)).mul(1.2).clamp(0, 1)), re = V(i.baseColor, ne.mul(i.expandOpacity).mul(UC(c, N))), P = V(i.baseColor, T(0));
20960
+ let _ = V(g.rgb, g.a.mul(i.circleOpacity).mul(i.tapOpacity).mul(_w(c, l))), v = V(i.baseColor, T(.5).mul(i.tapOpacity).mul(_w(c, T(.32).mul(i.circleScale).mul(i.tapScale)))), y = M(f.sub(h(mw.x.sub(c.x), mw.y.sub(c.y))).add(i.loadingAngle), p), b = T(1).sub(F(T(0), p, y)).mul(.9).add(.1), x = V(i.baseColor, b.mul(i.tapOpacity).mul(i.loadingOpacity).mul(u).mul(_w(c, l))), S = f.add(h(mw.x.sub(c.x), mw.y.sub(c.y))), C = T(1).sub(I(i.progress.mul(p), S)).mul(.7), w = V(i.baseColor, C.mul(i.tapOpacity).mul(i.progressOpacity).mul(u).mul(_w(c, l))), E = T(.25).add(T(.25).mul(i.expand0)), O = D(mw.sub(c)), k = T(1).sub(E.sub(O).div(.2).clamp(0, 1)).mul(.8).mul(T(1).sub(m(i.expand0.sub(.5)).mul(2)).mul(1.2).clamp(0, 1)), A = V(i.baseColor, k.mul(i.expandOpacity).mul(_w(c, E))), N = T(.25).add(T(.23).mul(i.expand1)), te = D(mw.sub(c)), ne = T(1).sub(N.sub(te).div(.2).clamp(0, 1)).mul(.8).mul(T(1).sub(m(i.expand1.sub(.5)).mul(2)).mul(1.2).clamp(0, 1)), re = V(i.baseColor, ne.mul(i.expandOpacity).mul(_w(c, N))), P = V(i.baseColor, T(0));
20615
20961
  P = j(P, re, re.w), P = j(P, A, A.w), P = j(P, _, _.w), P = j(P, w, w.w), P = j(P, x, x.w), P = j(P, v, i.disable);
20616
20962
  let ie = V(P.rgb, P.a.mul(i.opacity)), ae = new e.NodeMaterial();
20617
20963
  return ae.fragmentNode = ie, ae.blending = e.CustomBlending, ae.blendSrc = e.SrcAlphaFactor, ae.blendDst = e.OneMinusSrcAlphaFactor, ae.blendSrcAlpha = e.OneFactor, ae.blendDstAlpha = e.OneMinusSrcAlphaFactor, ae.depthWrite = !1, ae.transparent = !0, {
@@ -20619,7 +20965,7 @@ function WC(t) {
20619
20965
  u: i
20620
20966
  };
20621
20967
  }
20622
- var GC = class extends e.Object3D {
20968
+ var yw = class extends e.Object3D {
20623
20969
  constructor(t = {}) {
20624
20970
  var n, r, i, a, o, s, c;
20625
20971
  super();
@@ -20628,7 +20974,7 @@ var GC = class extends e.Object3D {
20628
20974
  scale: 1,
20629
20975
  opacity: 1
20630
20976
  }), this.loadingOpacityMotion = new X({ opacity: 0 }), this.progressMotion = new X({ progress: 0 }), this.progressOpacityMotion = new X({ opacity: 0 }), this.opacityMotion = new X({ opacity: 0 }), this.disableMotion = new X({ progress: 0 });
20631
- let { material: d, u: f } = WC({
20977
+ let { material: d, u: f } = vw({
20632
20978
  color: l,
20633
20979
  map: t.map,
20634
20980
  mapAlpha: (i = t.mapAlpha) == null ? 1 : i,
@@ -20637,7 +20983,7 @@ var GC = class extends e.Object3D {
20637
20983
  mapUseColor: (s = t.mapUseColor) == null ? !1 : s,
20638
20984
  mapUseReverse: (c = t.mapUseReverse) == null ? !1 : c
20639
20985
  });
20640
- this.panoU = f, this.panoMesh = new e.Mesh(zC, d), this.renderOrder = -2, this.panoMesh.renderOrder = -2, this.panoMesh.position.y = .004, this.panoMesh.scale.set(u, 1, u), this.add(this.panoMesh), this.currentStartTime = J(), this.needsRender = !0;
20986
+ this.panoU = f, this.panoMesh = new e.Mesh(pw, d), this.renderOrder = -2, this.panoMesh.renderOrder = -2, this.panoMesh.position.y = .004, this.panoMesh.scale.set(u, 1, u), this.add(this.panoMesh), this.currentStartTime = J(), this.needsRender = !0;
20641
20987
  }
20642
20988
  setProgress(e) {
20643
20989
  this.setDisabled(!1), this.setLoading(!1), this.progress !== e && (e = q(e, 0, 1), this.tapMotion.ended && (this.progress === 0 && this.progressOpacityMotion.set({ opacity: 1 }, 500).catch(Y), e === 0 ? this.progressOpacityMotion.set({ opacity: 0 }, 500).catch(Y).then(() => {
@@ -20697,14 +21043,14 @@ var GC = class extends e.Object3D {
20697
21043
  let t = (e - this.currentStartTime - 1500) / 2e3;
20698
21044
  if (t % 5 < 2) {
20699
21045
  let e = t % 1;
20700
- this.panoU.expand0.value = RC(e) * this.currentMotion.value.progress, this.needsRender = !0;
21046
+ this.panoU.expand0.value = fw(e) * this.currentMotion.value.progress, this.needsRender = !0;
20701
21047
  }
20702
21048
  }
20703
21049
  {
20704
21050
  let t = (e - this.currentStartTime - 1e3) / 2e3;
20705
21051
  if (t % 5 < 2) {
20706
21052
  let e = t % 1;
20707
- this.panoU.expand1.value = RC(e) * this.currentMotion.value.progress, this.needsRender = !0;
21053
+ this.panoU.expand1.value = fw(e) * this.currentMotion.value.progress, this.needsRender = !0;
20708
21054
  }
20709
21055
  }
20710
21056
  }
@@ -20719,22 +21065,22 @@ var GC = class extends e.Object3D {
20719
21065
  };
20720
21066
  //#endregion
20721
21067
  //#region build/five/utils/isSimilar.js
20722
- function KC(e, t, n) {
21068
+ function bw(e, t, n) {
20723
21069
  let r = Math.abs(e - t);
20724
21070
  return r < .001 || n !== void 0 && Math.abs(n - r) < .001;
20725
21071
  }
20726
- function qC(e, t, n) {
20727
- return !KC(e, t, n);
21072
+ function xw(e, t, n) {
21073
+ return !bw(e, t, n);
20728
21074
  }
20729
- function JC(e, t) {
21075
+ function Sw(e, t) {
20730
21076
  return e.distanceTo(t) < .001;
20731
21077
  }
20732
- function YC(e, t) {
20733
- return !JC(e, t);
21078
+ function Cw(e, t) {
21079
+ return !Sw(e, t);
20734
21080
  }
20735
21081
  //#endregion
20736
21082
  //#region build/five/utils/isPromise.js
20737
- function XC(e) {
21083
+ function ww(e) {
20738
21084
  return !!e && (typeof e == "object" || typeof e == "function") && typeof e.then == "function";
20739
21085
  }
20740
21086
  //#endregion
@@ -20753,32 +21099,32 @@ function $(e, t) {
20753
21099
  for (let e of Object.keys(t)) e in r || (r[e] = t[e]);
20754
21100
  return r;
20755
21101
  }
20756
- var ZC = /* @__PURE__ */ new WeakMap();
20757
- function QC(e, t) {
21102
+ var Tw = /* @__PURE__ */ new WeakMap();
21103
+ function Ew(e, t) {
20758
21104
  let n = $(e, Object.assign(Object.assign({}, t), { waitUntil(e) {
20759
- let t = ZC.get(n);
21105
+ let t = Tw.get(n);
20760
21106
  t && t.push(e);
20761
21107
  } }));
20762
- return ZC.set(n, []), n;
21108
+ return Tw.set(n, []), n;
20763
21109
  }
20764
- function $C(e) {
21110
+ function Dw(e) {
20765
21111
  var t;
20766
- return Promise.all((t = ZC.get(e)) == null ? [] : t).then(Y);
21112
+ return Promise.all((t = Tw.get(e)) == null ? [] : t).then(Y);
20767
21113
  }
20768
21114
  //#endregion
20769
21115
  //#region build/five/utils/stateUtils.js
20770
- function ew(e, t) {
21116
+ function Ow(e, t) {
20771
21117
  e.mode = t.mode, e.workCode = t.workCode, e.panoIndex = t.panoIndex, e.longitude = t.longitude, e.latitude = t.latitude, e.fov = t.fov, e.offset.copy(t.offset), e.distance = t.distance;
20772
21118
  }
20773
- function tw(e, t) {
20774
- return e.workCode === t.workCode && e.mode === t.mode && e.panoIndex === t.panoIndex && KC(e.longitude, t.longitude, Math.PI * 2) && KC(e.latitude, t.latitude) && KC(e.fov, t.fov) && JC(e.offset, t.offset) && KC(e.distance, t.distance);
21119
+ function kw(e, t) {
21120
+ return e.workCode === t.workCode && e.mode === t.mode && e.panoIndex === t.panoIndex && bw(e.longitude, t.longitude, Math.PI * 2) && bw(e.latitude, t.latitude) && bw(e.fov, t.fov) && Sw(e.offset, t.offset) && bw(e.distance, t.distance);
20775
21121
  }
20776
21122
  //#endregion
20777
21123
  //#region build/five/utils/poseUtils.js
20778
- function nw(e, t) {
21124
+ function Aw(e, t) {
20779
21125
  e.longitude = t.longitude, e.latitude = t.latitude, e.fov = t.fov, e.distance = t.distance, e.offset.copy(t.offset);
20780
21126
  }
20781
- function rw(e) {
21127
+ function jw(e) {
20782
21128
  return {
20783
21129
  longitude: e.longitude,
20784
21130
  latitude: e.latitude,
@@ -20789,14 +21135,14 @@ function rw(e) {
20789
21135
  }
20790
21136
  //#endregion
20791
21137
  //#region build/five/application/mode.js
20792
- function iw(e) {
21138
+ function Mw(e) {
20793
21139
  switch (e) {
20794
21140
  case "Floorplan": return !0;
20795
21141
  case "Mapview": return !0;
20796
21142
  default: return !1;
20797
21143
  }
20798
21144
  }
20799
- function aw(e) {
21145
+ function Nw(e) {
20800
21146
  switch (e) {
20801
21147
  case "Panorama": return !0;
20802
21148
  case "VRPanorama": return !0;
@@ -20807,22 +21153,22 @@ function aw(e) {
20807
21153
  }
20808
21154
  //#endregion
20809
21155
  //#region build/five/utils/isEmptyObject.js
20810
- function ow(e) {
21156
+ function Pw(e) {
20811
21157
  for (let t in e) return !1;
20812
21158
  return !0;
20813
21159
  }
20814
21160
  //#endregion
20815
21161
  //#region build/five/renderer/tools/render-cube-to-equirectangular.js
20816
- var sw = R(1), cw = z(), lw = T(6.2831852), uw = T(3.1415926), dw = lw.mul(cw.x), fw = uw.mul(cw.y.sub(.5)), pw = fw.cos().abs(), mw = ee(se(dw.sin().negate().mul(pw), fw.sin().mul(sw), dw.cos().negate().mul(pw))), hw = b(new e.CubeTexture(), mw), gw = new e.NodeMaterial();
20817
- gw.fragmentNode = hw, gw.transparent = !0, gw.depthTest = !1, gw.depthWrite = !1;
20818
- var _w = new Gx(gw);
20819
- function vw(e, t, n) {
20820
- hw.value = t, sw.value = n ? -1 : 1, _w.render(e), hw.value = null;
21162
+ var Fw = R(1), Iw = z(), Lw = T(6.2831852), Rw = T(3.1415926), zw = Lw.mul(Iw.x), Bw = Rw.mul(Iw.y.sub(.5)), Vw = Bw.cos().abs(), Hw = ee(se(zw.sin().negate().mul(Vw), Bw.sin().mul(Fw), zw.cos().negate().mul(Vw))), Uw = b(new e.CubeTexture(), Hw), Ww = new e.NodeMaterial();
21163
+ Ww.fragmentNode = Uw, Ww.transparent = !0, Ww.depthTest = !1, Ww.depthWrite = !1;
21164
+ var Gw = new Gx(Ww);
21165
+ function Kw(e, t, n) {
21166
+ Uw.value = t, Fw.value = n ? -1 : 1, Gw.render(e), Uw.value = null;
20821
21167
  }
20822
21168
  //#endregion
20823
21169
  //#region build/five/texture/textureData.js
20824
- var yw = new e.Color(), bw = 0, xw = 1;
20825
- function Sw(t, n, r, i) {
21170
+ var qw = new e.Color(), Jw = 0, Yw = 1;
21171
+ function Xw(t, n, r, i) {
20826
21172
  return Ti(this, void 0, void 0, function* () {
20827
21173
  let a = new e.RenderTarget(i.width, i.height, {
20828
21174
  depthBuffer: !1,
@@ -20831,16 +21177,16 @@ function Sw(t, n, r, i) {
20831
21177
  magFilter: e.LinearFilter,
20832
21178
  minFilter: e.LinearFilter
20833
21179
  }), o = t.getRenderTarget();
20834
- t.getClearColor(yw);
21180
+ t.getClearColor(qw);
20835
21181
  let s = t.getClearAlpha(), c = t.autoClear, l = t.autoClearColor, u = t.autoClearDepth, d = t.autoClearStencil;
20836
- t.autoClear = !0, t.autoClearColor = !0, t.autoClearDepth = !0, t.autoClearStencil = !0, t.setRenderTarget(a), t.setClearColor(bw, xw), vw(t, n, r), t.setRenderTarget(o), t.setClearColor(yw, s), t.autoClear = c, t.autoClearColor = l, t.autoClearDepth = u, t.autoClearStencil = d;
21182
+ t.autoClear = !0, t.autoClearColor = !0, t.autoClearDepth = !0, t.autoClearStencil = !0, t.setRenderTarget(a), t.setClearColor(Jw, Yw), Kw(t, n, r), t.setRenderTarget(o), t.setClearColor(qw, s), t.autoClear = c, t.autoClearColor = l, t.autoClearDepth = u, t.autoClearStencil = d;
20837
21183
  let f = yield t.readRenderTargetPixelsAsync(a, 0, 0, i.width, i.height);
20838
21184
  return i.data.set(f), a.dispose(), i;
20839
21185
  });
20840
21186
  }
20841
21187
  //#endregion
20842
21188
  //#region build/five/thirdparty/hammer.js
20843
- var Cw = (function(e, t, n, r) {
21189
+ var Zw = (function(e, t, n, r) {
20844
21190
  var i = [
20845
21191
  "",
20846
21192
  "webkit",
@@ -21669,7 +22015,7 @@ var Cw = (function(e, t, n, r) {
21669
22015
  })(typeof window < "u" ? window : {}, typeof document < "u" ? document : {}, "Hammer");
21670
22016
  //#endregion
21671
22017
  //#region build/five/controllers/base.js
21672
- function ww(e, t, n) {
22018
+ function Qw(e, t, n) {
21673
22019
  if (n.isPerspectiveCamera) {
21674
22020
  e.setFromCamera(t, n);
21675
22021
  return;
@@ -21681,7 +22027,7 @@ function ww(e, t, n) {
21681
22027
  }
21682
22028
  e.setFromCamera(t, n);
21683
22029
  }
21684
- var Tw = class t extends xn {
22030
+ var $w = class t extends xn {
21685
22031
  static parseArgs(e) {
21686
22032
  return e instanceof t ? e : Object.assign({}, e);
21687
22033
  }
@@ -21758,7 +22104,7 @@ var Tw = class t extends xn {
21758
22104
  updateTime(e, t, ...n) {
21759
22105
  if (this.destroyed) return;
21760
22106
  let r = {};
21761
- this.cameraMotion.ended && (this.cameraMotion.update(e), r.longitude = this.cameraMotion.value.longitude, r.latitude = this.cameraMotion.value.latitude, r.fov = this.cameraMotion.value.fov), ow(r) && this.setCamera(r);
22107
+ this.cameraMotion.ended && (this.cameraMotion.update(e), r.longitude = this.cameraMotion.value.longitude, r.latitude = this.cameraMotion.value.latitude, r.fov = this.cameraMotion.value.fov), Pw(r) && this.setCamera(r);
21762
22108
  }
21763
22109
  render() {
21764
22110
  return !1;
@@ -21809,7 +22155,7 @@ var Tw = class t extends xn {
21809
22155
  }
21810
22156
  setCamera(e = {}) {
21811
22157
  var t, n, r, i, a;
21812
- let o = (t = e.longitude) == null ? this.camera.pose.longitude : t, s = (n = e.latitude) == null ? this.camera.pose.latitude : n, c = (r = e.fov) == null ? this.camera.pose.fov : r, l = (i = e.distance) == null ? this.camera.pose.distance : i, u = (a = e.offset) == null ? this.camera.pose.offset : a, d = qC(o, this.camera.pose.longitude, Math.PI * 2) || qC(s, this.camera.pose.latitude), f = qC(c, this.camera.pose.fov), p = qC(l, this.camera.pose.distance), m = YC(u, this.camera.pose.offset);
22158
+ let o = (t = e.longitude) == null ? this.camera.pose.longitude : t, s = (n = e.latitude) == null ? this.camera.pose.latitude : n, c = (r = e.fov) == null ? this.camera.pose.fov : r, l = (i = e.distance) == null ? this.camera.pose.distance : i, u = (a = e.offset) == null ? this.camera.pose.offset : a, d = xw(o, this.camera.pose.longitude, Math.PI * 2) || xw(s, this.camera.pose.latitude), f = xw(c, this.camera.pose.fov), p = xw(l, this.camera.pose.distance), m = Cw(u, this.camera.pose.offset);
21813
22159
  (f || d || m || p) && (this.camera.setFromPose({
21814
22160
  longitude: o,
21815
22161
  latitude: s,
@@ -21865,7 +22211,7 @@ var Tw = class t extends xn {
21865
22211
  }
21866
22212
  createRaycasterFromCamera(t, n) {
21867
22213
  let r = new e.Raycaster();
21868
- return r.params.Points = { threshold: .1 }, r.firstHitOnly = !0, r.near = n.near, r.far = n.far, ww(r, t, n), r;
22214
+ return r.params.Points = { threshold: .1 }, r.firstHitOnly = !0, r.near = n.near, r.far = n.far, Qw(r, t, n), r;
21869
22215
  }
21870
22216
  bindEvents(t) {
21871
22217
  let n = (e) => {
@@ -21878,10 +22224,10 @@ var Tw = class t extends xn {
21878
22224
  ctrlKey: "ctrlKey" in e ? e.ctrlKey : !1,
21879
22225
  altKey: "altKey" in e ? e.altKey : !1,
21880
22226
  metaKey: "metaKey" in e ? e.metaKey : !1
21881
- }), i = new Cw.Manager(t), a = (e) => e.session.firstInput || null, o = new Cw.Pan({
22227
+ }), i = new Zw.Manager(t), a = (e) => e.session.firstInput || null, o = new Zw.Pan({
21882
22228
  threshold: 10,
21883
22229
  pointers: 0
21884
- }), s = new Cw.Tap({ interval: 410 }), c = new Cw.Pinch({
22230
+ }), s = new Zw.Tap({ interval: 410 }), c = new Zw.Pinch({
21885
22231
  threshold: 0,
21886
22232
  pointers: 2
21887
22233
  });
@@ -21926,7 +22272,7 @@ var Tw = class t extends xn {
21926
22272
  overallVelocityX: e.overallVelocityX,
21927
22273
  overallVelocityY: e.overallVelocityY,
21928
22274
  userAction: !0,
21929
- state: Object.assign(Object.assign({ mode: this.mode }, this.currentPano), rw(this.camera.pose))
22275
+ state: Object.assign(Object.assign({ mode: this.mode }, this.currentPano), jw(this.camera.pose))
21930
22276
  });
21931
22277
  this.emit("gesture.fire", s), this.onPanGesture(s), v();
21932
22278
  }), i.on("tap", (e) => {
@@ -21968,7 +22314,7 @@ var Tw = class t extends xn {
21968
22314
  overallVelocityX: e.overallVelocityX,
21969
22315
  overallVelocityY: e.overallVelocityY,
21970
22316
  userAction: !0,
21971
- state: Object.assign(Object.assign({ mode: this.mode }, this.currentPano), rw(this.camera.pose))
22317
+ state: Object.assign(Object.assign({ mode: this.mode }, this.currentPano), jw(this.camera.pose))
21972
22318
  });
21973
22319
  this.emit("gesture.fire", s), this.onTapGesture(s), v();
21974
22320
  }), i.on("pinchstart pinch pinchend", (t) => {
@@ -21981,7 +22327,7 @@ var Tw = class t extends xn {
21981
22327
  pointers: t.pointers.map((t) => {
21982
22328
  var n;
21983
22329
  let r = this.relativeClientPosition(t), i = new e.Raycaster();
21984
- return i.params.Points = { threshold: .1 }, ww(i, r, this.camera), Object.assign(Object.assign({
22330
+ return i.params.Points = { threshold: .1 }, Qw(i, r, this.camera), Object.assign(Object.assign({
21985
22331
  x: t.x,
21986
22332
  y: t.y,
21987
22333
  delta: (n = t.delta) == null ? 0 : n
@@ -22009,7 +22355,7 @@ var Tw = class t extends xn {
22009
22355
  overallVelocityX: t.overallVelocityX,
22010
22356
  overallVelocityY: t.overallVelocityY,
22011
22357
  userAction: !0,
22012
- state: Object.assign(Object.assign({ mode: this.mode }, this.currentPano), rw(this.camera.pose))
22358
+ state: Object.assign(Object.assign({ mode: this.mode }, this.currentPano), jw(this.camera.pose))
22013
22359
  });
22014
22360
  this.emit("gesture.fire", c), this.onPinchGesture(c), v();
22015
22361
  }), i.on("dbltap", (e) => {
@@ -22051,7 +22397,7 @@ var Tw = class t extends xn {
22051
22397
  overallVelocityX: e.overallVelocityX,
22052
22398
  overallVelocityY: e.overallVelocityY,
22053
22399
  userAction: !0,
22054
- state: Object.assign(Object.assign({ mode: this.mode }, this.currentPano), rw(this.camera.pose))
22400
+ state: Object.assign(Object.assign({ mode: this.mode }, this.currentPano), jw(this.camera.pose))
22055
22401
  });
22056
22402
  this.emit("gesture.fire", s), this.onDblTapGesture(s), v();
22057
22403
  });
@@ -22077,7 +22423,7 @@ var Tw = class t extends xn {
22077
22423
  overallVelocityX: 0,
22078
22424
  overallVelocityY: 0,
22079
22425
  userAction: !0,
22080
- state: Object.assign(Object.assign({ mode: this.mode }, this.currentPano), rw(this.camera.pose))
22426
+ state: Object.assign(Object.assign({ mode: this.mode }, this.currentPano), jw(this.camera.pose))
22081
22427
  });
22082
22428
  }, f = (e) => {
22083
22429
  var t;
@@ -22117,7 +22463,7 @@ var Tw = class t extends xn {
22117
22463
  overallVelocityX: 0,
22118
22464
  overallVelocityY: 0,
22119
22465
  userAction: !0,
22120
- state: Object.assign(Object.assign({ mode: this.mode }, this.currentPano), rw(this.camera.pose))
22466
+ state: Object.assign(Object.assign({ mode: this.mode }, this.currentPano), jw(this.camera.pose))
22121
22467
  });
22122
22468
  this.emit("gesture.fire", c), this.onMouseWheel(c), this.mouseWheelState && clearTimeout(this.mouseWheelState.timer), this.mouseWheelState = { timer: setTimeout(() => {
22123
22469
  this.mouseWheelState = void 0;
@@ -22135,7 +22481,7 @@ var Tw = class t extends xn {
22135
22481
  overallVelocityX: 0,
22136
22482
  overallVelocityY: 0,
22137
22483
  userAction: !0,
22138
- state: Object.assign(Object.assign({ mode: this.mode }, this.currentPano), rw(this.camera.pose))
22484
+ state: Object.assign(Object.assign({ mode: this.mode }, this.currentPano), jw(this.camera.pose))
22139
22485
  });
22140
22486
  this.emit("gesture.fire", t), this.onMouseWheel(t);
22141
22487
  }, 100) };
@@ -22143,7 +22489,7 @@ var Tw = class t extends xn {
22143
22489
  v();
22144
22490
  }
22145
22491
  }, p = (e) => {
22146
- if ($S) return;
22492
+ if (DC) return;
22147
22493
  if (!n({
22148
22494
  x: e.clientX,
22149
22495
  y: e.clientY
@@ -22173,7 +22519,7 @@ var Tw = class t extends xn {
22173
22519
  overallVelocityX: 0,
22174
22520
  overallVelocityY: 0,
22175
22521
  userAction: !0,
22176
- state: Object.assign(Object.assign({ mode: this.mode }, this.currentPano), rw(this.camera.pose))
22522
+ state: Object.assign(Object.assign({ mode: this.mode }, this.currentPano), jw(this.camera.pose))
22177
22523
  });
22178
22524
  this.emit("gesture.fire", c), this.mouseMoveState = {
22179
22525
  timeStamp: J(),
@@ -22227,7 +22573,7 @@ var Tw = class t extends xn {
22227
22573
  overallVelocityX: 0,
22228
22574
  overallVelocityY: 0,
22229
22575
  userAction: !0,
22230
- state: Object.assign(Object.assign({ mode: this.mode }, this.currentPano), rw(this.camera.pose))
22576
+ state: Object.assign(Object.assign({ mode: this.mode }, this.currentPano), jw(this.camera.pose))
22231
22577
  });
22232
22578
  this.emit("gesture.fire", o), h(o);
22233
22579
  }, _ = (e) => {
@@ -22252,7 +22598,7 @@ var Tw = class t extends xn {
22252
22598
  overallVelocityX: 0,
22253
22599
  overallVelocityY: 0,
22254
22600
  userAction: !0,
22255
- state: Object.assign(Object.assign({ mode: this.mode }, this.currentPano), rw(this.camera.pose))
22601
+ state: Object.assign(Object.assign({ mode: this.mode }, this.currentPano), jw(this.camera.pose))
22256
22602
  });
22257
22603
  this.emit("gesture.fire", o), h(o);
22258
22604
  }, v = () => {
@@ -22299,22 +22645,22 @@ var Tw = class t extends xn {
22299
22645
  overallVelocityX: 0,
22300
22646
  overallVelocityY: 0,
22301
22647
  userAction: !0,
22302
- state: Object.assign(Object.assign({ mode: this.mode }, this.currentPano), rw(this.camera.pose))
22648
+ state: Object.assign(Object.assign({ mode: this.mode }, this.currentPano), jw(this.camera.pose))
22303
22649
  });
22304
22650
  }, x = (e) => {
22305
- if (e.preventDefault(), $S) return;
22651
+ if (e.preventDefault(), DC) return;
22306
22652
  let t = b(e);
22307
22653
  this.emit("gesture.fire", t), y = { firstEvent: t };
22308
22654
  let r = y.firstEvent;
22309
22655
  r && !n(r.center) || this.onPinchGesture(t);
22310
22656
  }, S = (e) => {
22311
- if (e.preventDefault(), $S || !y) return;
22657
+ if (e.preventDefault(), DC || !y) return;
22312
22658
  let t = y.firstEvent;
22313
22659
  if (t && !n(t.center)) return;
22314
22660
  let r = b(e);
22315
22661
  this.emit("gesture.fire", r), this.onPinchGesture(r);
22316
22662
  }, C = (e) => {
22317
- if (e.preventDefault(), $S || !y) return;
22663
+ if (e.preventDefault(), DC || !y) return;
22318
22664
  let t = y.firstEvent;
22319
22665
  if (y = null, t && !n(t.center)) return;
22320
22666
  let r = b(e);
@@ -22329,16 +22675,16 @@ var Tw = class t extends xn {
22329
22675
  i.destroy(), t.removeEventListener("wheel", f, !1), t.removeEventListener("mousemove", p, !1), t.removeEventListener("mouseout", m, !1), t.removeEventListener("touchstart", g, !1), t.removeEventListener("touchend", v, !1), t.removeEventListener("touchcancel", v, !1), t.removeEventListener("mousedown", _, !1), t.removeEventListener("mouseup", v, !1), t.removeEventListener("gesturestart", x, !1), t.removeEventListener("gesturechange", S, !1), t.removeEventListener("gestureend", C, !1), t.removeEventListener("touchstart", w, !1), t.removeEventListener("contextmenu", w, !1);
22330
22676
  }, { element: t });
22331
22677
  }
22332
- }, Ew = new e.CircleGeometry(.1, 16), Dw = z(), Ow = oe(.5, .5).sub(Dw).length(), kw = T(.01), Aw = T(.49), jw = T(.29), Mw = T(1).sub(F(Aw.sub(kw), Aw, Ow)), Nw = F(jw, jw.add(kw), Ow), Pw = V(.576, .635, 1, .3), Fw = V(1, 1, 1, m(Ow.sub(Aw.add(jw).div(2))).div(Aw.sub(jw)).mul(1.5).add(.1).clamp(0, 1)), Iw = j(Pw, Fw, Fw.w), Lw = V(Iw.xyz, Iw.w.mul(Mw).mul(Nw)), Rw = new e.NodeMaterial();
22333
- Rw.fragmentNode = Lw, Rw.side = e.DoubleSide, Rw.blending = e.CustomBlending, Rw.blendSrc = e.SrcAlphaFactor, Rw.blendDst = e.OneMinusSrcAlphaFactor, Rw.blendSrcAlpha = e.OneFactor, Rw.blendDstAlpha = e.OneMinusSrcAlphaFactor, Rw.depthWrite = !1, Rw.transparent = !0;
22334
- var zw = class extends e.Object3D {
22678
+ }, eT = new e.CircleGeometry(.1, 16), tT = z(), nT = oe(.5, .5).sub(tT).length(), rT = T(.01), iT = T(.49), aT = T(.29), oT = T(1).sub(F(iT.sub(rT), iT, nT)), sT = F(aT, aT.add(rT), nT), cT = V(.576, .635, 1, .3), lT = V(1, 1, 1, m(nT.sub(iT.add(aT).div(2))).div(iT.sub(aT)).mul(1.5).add(.1).clamp(0, 1)), uT = j(cT, lT, lT.w), dT = V(uT.xyz, uT.w.mul(oT).mul(sT)), fT = new e.NodeMaterial();
22679
+ fT.fragmentNode = dT, fT.side = e.DoubleSide, fT.blending = e.CustomBlending, fT.blendSrc = e.SrcAlphaFactor, fT.blendDst = e.OneMinusSrcAlphaFactor, fT.blendSrcAlpha = e.OneFactor, fT.blendDstAlpha = e.OneMinusSrcAlphaFactor, fT.depthWrite = !1, fT.transparent = !0;
22680
+ var pT = class extends e.Object3D {
22335
22681
  constructor() {
22336
- super(), this.ringMesh = new e.Mesh(Ew, Rw), this.ringMesh.position.z = .01, this.ringMesh.renderOrder = 9999999999, this.add(this.ringMesh);
22682
+ super(), this.ringMesh = new e.Mesh(eT, fT), this.ringMesh.position.z = .01, this.ringMesh.renderOrder = 9999999999, this.add(this.ringMesh);
22337
22683
  }
22338
22684
  dispose() {
22339
22685
  this.remove(this.ringMesh);
22340
22686
  }
22341
- }, Bw = new e.Box3(), Vw = new e.Vector3(), Hw = {
22687
+ }, mT = new e.Box3(), hT = new e.Vector3(), gT = {
22342
22688
  defaultLongitude: Math.PI / 4,
22343
22689
  defaultLatitude: Math.PI / 4,
22344
22690
  defaultFov: 80,
@@ -22346,8 +22692,8 @@ var zw = class extends e.Object3D {
22346
22692
  minFov: 20,
22347
22693
  maxLatitude: Math.PI / 2,
22348
22694
  minLatitude: -Math.PI / 2,
22349
- intersectMeshCreator: () => new zw()
22350
- }, Uw = class t extends Tw {
22695
+ intersectMeshCreator: () => new pT()
22696
+ }, _T = class t extends $w {
22351
22697
  static distanceFromModel(e, t, n) {
22352
22698
  let r = e.boundingBox, i = r.isEmpty() ? 10 : Math.pow(Math.pow(r.max.x - r.min.x + 1, 2) + Math.pow(r.max.y - r.min.y + 1, 2) + Math.pow(r.max.z - r.min.z + 1, 2), 1 / 2);
22353
22699
  i = isNaN(i) || !isFinite(i) ? 1 : i;
@@ -22359,14 +22705,14 @@ var zw = class extends e.Object3D {
22359
22705
  if (e instanceof t) return e;
22360
22706
  let u = super.parseArgs(e);
22361
22707
  return Object.assign(Object.assign({}, u), {
22362
- defaultLongitude: (n = e.defaultLongitude) == null ? Hw.defaultLongitude : n,
22363
- defaultLatitude: (r = e.defaultLatitude) == null ? Hw.defaultLatitude : r,
22364
- defaultFov: (i = e.defaultFov) == null ? Hw.defaultFov : i,
22365
- maxFov: (a = e.maxFov) == null ? Hw.maxFov : a,
22366
- minFov: (o = e.minFov) == null ? Hw.minFov : o,
22367
- maxLatitude: (s = e.maxLatitude) == null ? Hw.maxLatitude : s,
22368
- minLatitude: (c = e.minLatitude) == null ? Hw.minLatitude : c,
22369
- intersectMeshCreator: (l = e.intersectMeshCreator) == null ? Hw.intersectMeshCreator : l
22708
+ defaultLongitude: (n = e.defaultLongitude) == null ? gT.defaultLongitude : n,
22709
+ defaultLatitude: (r = e.defaultLatitude) == null ? gT.defaultLatitude : r,
22710
+ defaultFov: (i = e.defaultFov) == null ? gT.defaultFov : i,
22711
+ maxFov: (a = e.maxFov) == null ? gT.maxFov : a,
22712
+ minFov: (o = e.minFov) == null ? gT.minFov : o,
22713
+ maxLatitude: (s = e.maxLatitude) == null ? gT.maxLatitude : s,
22714
+ minLatitude: (c = e.minLatitude) == null ? gT.minLatitude : c,
22715
+ intersectMeshCreator: (l = e.intersectMeshCreator) == null ? gT.intersectMeshCreator : l
22370
22716
  });
22371
22717
  }
22372
22718
  static initAnimationEndState(n) {
@@ -22377,7 +22723,7 @@ var zw = class extends e.Object3D {
22377
22723
  } : {
22378
22724
  workCode: f.workCode,
22379
22725
  panoIndex: f.panoIndex
22380
- }, m = (o = d.fov) == null ? u.defaultFov : o, h = (s = d.longitude) == null ? iw(f.mode) ? f.longitude : u.defaultLongitude : s, g = q(typeof u.minLatitude == "function" ? u.minLatitude(m) : u.minLatitude, -Math.PI / 2, Math.PI / 2), _ = q(typeof u.maxLatitude == "function" ? u.maxLatitude(m) : u.maxLatitude, -Math.PI / 2, Math.PI / 2), v = q((c = d.latitude) == null ? f.mode === "Floorplan" ? f.latitude : u.defaultLatitude : c, g, _), y = d.offset ? d.offset.clone() : n.modelScene.boundingBox.getCenter(new e.Vector3()), b = (l = d.distance) == null ? t.distanceFromModel(u.modelScene, u.defaultFov, u.camera.aspect) : l;
22726
+ }, m = (o = d.fov) == null ? u.defaultFov : o, h = (s = d.longitude) == null ? Mw(f.mode) ? f.longitude : u.defaultLongitude : s, g = q(typeof u.minLatitude == "function" ? u.minLatitude(m) : u.minLatitude, -Math.PI / 2, Math.PI / 2), _ = q(typeof u.maxLatitude == "function" ? u.maxLatitude(m) : u.maxLatitude, -Math.PI / 2, Math.PI / 2), v = q((c = d.latitude) == null ? f.mode === "Floorplan" ? f.latitude : u.defaultLatitude : c, g, _), y = d.offset ? d.offset.clone() : n.modelScene.boundingBox.getCenter(new e.Vector3()), b = (l = d.distance) == null ? t.distanceFromModel(u.modelScene, u.defaultFov, u.camera.aspect) : l;
22381
22727
  return Object.assign(Object.assign({}, p), {
22382
22728
  mode: "Floorplan",
22383
22729
  longitude: h,
@@ -22464,7 +22810,7 @@ var zw = class extends e.Object3D {
22464
22810
  let { pano0: e, pano1: t } = this.modelScene.parameter;
22465
22811
  e && e.map !== (t == null ? void 0 : t.map) && e.map.dispose(), i.progress = 1, i.pano0 = i.pano1 = t;
22466
22812
  }
22467
- if (this.perspToOrthoMotion.ended || (this.perspToOrthoMotion.update(t), this.camera.perspToOrtho.setScalar(q(this.perspToOrthoMotion.value.perspToOrtho, 0, 1))), this.locationMotion.ended || (this.locationMotion.update(t), a.distance = this.locationMotion.value.distance, a.offset = new e.Vector3(this.locationMotion.value.x, this.locationMotion.value.y, this.locationMotion.value.z)), this.cameraMotion.ended || (this.cameraMotion.update(t), a.longitude = this.cameraMotion.value.longitude, a.latitude = this.cameraMotion.value.latitude, a.fov = this.cameraMotion.value.fov), ow(i) || this.modelScene.parameter.set(i), ow(a) || this.setCamera(a), this.intersectMesh && this.intersectMesh.parent) {
22813
+ if (this.perspToOrthoMotion.ended || (this.perspToOrthoMotion.update(t), this.camera.perspToOrtho.setScalar(q(this.perspToOrthoMotion.value.perspToOrtho, 0, 1))), this.locationMotion.ended || (this.locationMotion.update(t), a.distance = this.locationMotion.value.distance, a.offset = new e.Vector3(this.locationMotion.value.x, this.locationMotion.value.y, this.locationMotion.value.z)), this.cameraMotion.ended || (this.cameraMotion.update(t), a.longitude = this.cameraMotion.value.longitude, a.latitude = this.cameraMotion.value.latitude, a.fov = this.cameraMotion.value.fov), Pw(i) || this.modelScene.parameter.set(i), Pw(a) || this.setCamera(a), this.intersectMesh && this.intersectMesh.parent) {
22468
22814
  let e = q(this.camera.position.distanceTo(this.intersectMesh.position) * (2 * Math.tan(.5 * this.camera.fov / 180 * Math.PI)) / 5, .5);
22469
22815
  this.intersectMesh.scale.setScalar(e);
22470
22816
  } else this.intersectMesh.scale.setScalar(1);
@@ -22503,7 +22849,7 @@ var zw = class extends e.Object3D {
22503
22849
  userAction: this.userAction
22504
22850
  }));
22505
22851
  }, (e) => {
22506
- let t = Object.assign(Object.assign(Object.assign({}, this.currentPano), { mode: this.mode }), rw(this.camera.pose));
22852
+ let t = Object.assign(Object.assign(Object.assign({}, this.currentPano), { mode: this.mode }), jw(this.camera.pose));
22507
22853
  this.emit("initAnimation.end", $("initAnimation.end", {
22508
22854
  state: t,
22509
22855
  userAction: this.userAction
@@ -22522,9 +22868,9 @@ var zw = class extends e.Object3D {
22522
22868
  let n = [];
22523
22869
  for (let t of this.works) {
22524
22870
  let r = this.modelScene.models.find((e) => e.work === t);
22525
- if (!(!r || r.visible === !1) && !(t.observers.length <= 0) && (Bw.copy(t.observerBox).expandByScalar(10).applyMatrix4(t.transform), Bw.containsPoint(e.ray.origin) || e.ray.intersectsBox(Bw))) for (let e of t.observers) n.push(e);
22871
+ if (!(!r || r.visible === !1) && !(t.observers.length <= 0) && (mT.copy(t.observerBox).expandByScalar(10).applyMatrix4(t.transform), mT.containsPoint(e.ray.origin) || e.ray.intersectsBox(mT))) for (let e of t.observers) n.push(e);
22526
22872
  }
22527
- let [r, i] = Im(n, (e) => Vw.copy(e.standingPosition).applyMatrix4(e.work.transform).distanceTo(t.point), !0);
22873
+ let [r, i] = Im(n, (e) => hT.copy(e.standingPosition).applyMatrix4(e.work.transform).distanceTo(t.point), !0);
22528
22874
  return r && i < Math.max(r.standingPosition.distanceTo(this.camera.position) / 5, 10) ? r : null;
22529
22875
  }
22530
22876
  coordinatesForOffset(t) {
@@ -22758,7 +23104,7 @@ var zw = class extends e.Object3D {
22758
23104
  return;
22759
23105
  }
22760
23106
  this.pendingTextureId = null, u.name = p;
22761
- let d = Array.isArray(u.image) ? u.image[0] : u.image, f = (c = d == null ? void 0 : d.width) == null ? 2048 : c, h = yield Sw(this.renderer, u, !0, cS), g = new fS().formPixels(h.data), _ = {
23107
+ let d = Array.isArray(u.image) ? u.image[0] : u.image, f = (c = d == null ? void 0 : d.width) == null ? 2048 : c, h = yield Xw(this.renderer, u, !0, cS), g = new fS().formPixels(h.data), _ = {
22762
23108
  panoId: o,
22763
23109
  map: u,
22764
23110
  mapSize: f,
@@ -22796,7 +23142,7 @@ var zw = class extends e.Object3D {
22796
23142
  hideIntersectMesh() {
22797
23143
  this.intersectMesh.visible = !1, this.needsRender = !0;
22798
23144
  }
22799
- }, Ww = Object.assign(Object.assign({}, Ql(Hw, [
23145
+ }, vT = Object.assign(Object.assign({}, Ql(gT, [
22800
23146
  "defaultLongitude",
22801
23147
  "defaultLatitude",
22802
23148
  "maxLatitude",
@@ -22804,15 +23150,15 @@ var zw = class extends e.Object3D {
22804
23150
  ])), {
22805
23151
  defaultLongitude: 0,
22806
23152
  defaultLatitude: Math.PI / 2
22807
- }), Gw = class t extends Uw {
23153
+ }), yT = class t extends _T {
22808
23154
  static parseArgs(e) {
22809
23155
  var n, r;
22810
23156
  if (e instanceof t) return e;
22811
23157
  let i = Object.assign(Object.assign({}, e), {
22812
23158
  maxLatitude: Math.PI / 2,
22813
23159
  minLatitude: -Math.PI / 2,
22814
- defaultLongitude: (n = e.defaultLongitude) == null ? Ww.defaultLongitude : n,
22815
- defaultLatitude: (r = e.defaultLatitude) == null ? Ww.defaultLatitude : r
23160
+ defaultLongitude: (n = e.defaultLongitude) == null ? vT.defaultLongitude : n,
23161
+ defaultLatitude: (r = e.defaultLatitude) == null ? vT.defaultLatitude : r
22816
23162
  });
22817
23163
  return super.parseArgs(i);
22818
23164
  }
@@ -22838,7 +23184,7 @@ var zw = class extends e.Object3D {
22838
23184
  x: n.x,
22839
23185
  y: n.y,
22840
23186
  z: n.z,
22841
- distance: Uw.distanceFromModel(this.modelScene, this.defaultFov, this.camera.aspect)
23187
+ distance: _T.distanceFromModel(this.modelScene, this.defaultFov, this.camera.aspect)
22842
23188
  }, 0).catch(Y), this.hideIntersectMesh();
22843
23189
  }
22844
23190
  updateCamera(e, t, n) {
@@ -22896,7 +23242,7 @@ var zw = class extends e.Object3D {
22896
23242
  userAction: this.userAction
22897
23243
  }));
22898
23244
  }, (e) => {
22899
- let t = Object.assign(Object.assign(Object.assign({}, this.currentPano), { mode: this.mode }), rw(this.camera.pose));
23245
+ let t = Object.assign(Object.assign(Object.assign({}, this.currentPano), { mode: this.mode }), jw(this.camera.pose));
22900
23246
  this.emit("initAnimation.end", $("initAnimation.end", {
22901
23247
  state: t,
22902
23248
  userAction: this.userAction
@@ -22961,7 +23307,7 @@ var zw = class extends e.Object3D {
22961
23307
  let t = q(this.cameraMotion.value.fov - e.center.delta, this.minFov, this.maxFov);
22962
23308
  e.state.fov = t, this.emit("gesture.mousewheel", e), !e.defaultPrevented && this.cameraMotion.set({ fov: t }, 0).catch(Y);
22963
23309
  }
22964
- }, Kw = {
23310
+ }, bT = {
22965
23311
  defaultLatitude: 0,
22966
23312
  defaultFov: 90,
22967
23313
  maxFov: 120,
@@ -22969,23 +23315,23 @@ var zw = class extends e.Object3D {
22969
23315
  maxLatitude: (e) => Math.PI / 2 - e / 2 / 180 * Math.PI,
22970
23316
  minLatitude: (e) => -Math.PI / 2 + e / 2 / 180 * Math.PI,
22971
23317
  moveSpeed: 3.6,
22972
- intersectMeshCreator: () => new zw(),
23318
+ intersectMeshCreator: () => new pT(),
22973
23319
  aerialObserverMinHeight: 5
22974
- }, qw = class t extends Tw {
23320
+ }, xT = class t extends $w {
22975
23321
  static parseArgs(e) {
22976
23322
  var n, r, i, a, o, s, c, l, u;
22977
23323
  if (e instanceof t) return e;
22978
23324
  let d = super.parseArgs(e);
22979
23325
  return Object.assign(Object.assign({}, d), {
22980
- defaultLatitude: (n = e.defaultLatitude) == null ? Kw.defaultLatitude : n,
22981
- defaultFov: (r = e.defaultFov) == null ? Kw.defaultFov : r,
22982
- maxFov: (i = e.maxFov) == null ? Kw.maxFov : i,
22983
- minFov: (a = e.minFov) == null ? Kw.minFov : a,
22984
- maxLatitude: (o = e.maxLatitude) == null ? Kw.maxLatitude : o,
22985
- minLatitude: (s = e.minLatitude) == null ? Kw.minLatitude : s,
22986
- moveSpeed: (c = e.moveSpeed) == null ? Kw.moveSpeed : c,
22987
- intersectMeshCreator: (l = e.intersectMeshCreator) == null ? Kw.intersectMeshCreator : l,
22988
- aerialObserverMinHeight: (u = e.aerialObserverMinHeight) == null ? Kw.aerialObserverMinHeight : u
23326
+ defaultLatitude: (n = e.defaultLatitude) == null ? bT.defaultLatitude : n,
23327
+ defaultFov: (r = e.defaultFov) == null ? bT.defaultFov : r,
23328
+ maxFov: (i = e.maxFov) == null ? bT.maxFov : i,
23329
+ minFov: (a = e.minFov) == null ? bT.minFov : a,
23330
+ maxLatitude: (o = e.maxLatitude) == null ? bT.maxLatitude : o,
23331
+ minLatitude: (s = e.minLatitude) == null ? bT.minLatitude : s,
23332
+ moveSpeed: (c = e.moveSpeed) == null ? bT.moveSpeed : c,
23333
+ intersectMeshCreator: (l = e.intersectMeshCreator) == null ? bT.intersectMeshCreator : l,
23334
+ aerialObserverMinHeight: (u = e.aerialObserverMinHeight) == null ? bT.aerialObserverMinHeight : u
22989
23335
  });
22990
23336
  }
22991
23337
  static initAnimationEndState(t) {
@@ -22996,7 +23342,7 @@ var zw = class extends e.Object3D {
22996
23342
  } : {
22997
23343
  workCode: d.workCode,
22998
23344
  panoIndex: d.panoIndex
22999
- }, p = l.getObserver(f), m = q((a = u.fov) == null ? aw(d.mode) ? d.fov : c.defaultFov : a, c.minFov, c.maxFov), h = (o = u.longitude) == null ? d.longitude : o, g = q(typeof c.minLatitude == "function" ? c.minLatitude(m) : c.minLatitude, -Math.PI / 2, Math.PI / 2), _ = q(typeof c.maxLatitude == "function" ? c.maxLatitude(m) : c.maxLatitude, -Math.PI / 2, Math.PI / 2), v = q((s = u.latitude) == null ? aw(d.mode) ? d.latitude : c.defaultLatitude : s, g, _), y = new e.Vector3();
23345
+ }, p = l.getObserver(f), m = q((a = u.fov) == null ? Nw(d.mode) ? d.fov : c.defaultFov : a, c.minFov, c.maxFov), h = (o = u.longitude) == null ? d.longitude : o, g = q(typeof c.minLatitude == "function" ? c.minLatitude(m) : c.minLatitude, -Math.PI / 2, Math.PI / 2), _ = q(typeof c.maxLatitude == "function" ? c.maxLatitude(m) : c.maxLatitude, -Math.PI / 2, Math.PI / 2), v = q((s = u.latitude) == null ? Nw(d.mode) ? d.latitude : c.defaultLatitude : s, g, _), y = new e.Vector3();
23000
23346
  return p && y.copy(p.position).applyMatrix4(p.work.transform), {
23001
23347
  workCode: f.workCode,
23002
23348
  panoIndex: f.panoIndex,
@@ -23208,11 +23554,11 @@ var zw = class extends e.Object3D {
23208
23554
  let i = Math.max(40 - n * 5, this.minFov, 5), a = i - t < t - this.defaultFov ? i : this.defaultFov;
23209
23555
  e.state.fov = a, this.emit("gesture.dbltap", e), !e.defaultPrevented && (this.cameraMotion.set({ fov: a }, 360).catch(Y), this.hideIntersectMesh());
23210
23556
  }
23211
- }, Jw = "data:video/mp4;base64,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", Yw;
23212
- function Xw() {
23213
- return Yw || (Yw = new Promise((e) => {
23557
+ }, ST = "data:video/mp4;base64,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", CT;
23558
+ function wT() {
23559
+ return CT || (CT = new Promise((e) => {
23214
23560
  let t, n = document.createElement("video");
23215
- n.muted = !0, n.src = Jw, n.addEventListener("timeupdate", function r() {
23561
+ n.muted = !0, n.src = ST, n.addEventListener("timeupdate", function r() {
23216
23562
  n.removeEventListener("timeupdate", r, !1), clearTimeout(t);
23217
23563
  let i = document.createElement("canvas");
23218
23564
  i.width = i.height = 1;
@@ -23231,7 +23577,7 @@ function Xw() {
23231
23577
  }
23232
23578
  //#endregion
23233
23579
  //#region build/five/utils/tileCube.js
23234
- var Zw = [
23580
+ var TT = [
23235
23581
  "right",
23236
23582
  "left",
23237
23583
  "up",
@@ -23239,7 +23585,7 @@ var Zw = [
23239
23585
  "front",
23240
23586
  "back"
23241
23587
  ];
23242
- function Qw(t, n, r, i) {
23588
+ function ET(t, n, r, i) {
23243
23589
  let a = new e.Box3();
23244
23590
  switch (t) {
23245
23591
  case "up":
@@ -23264,7 +23610,7 @@ function Qw(t, n, r, i) {
23264
23610
  }
23265
23611
  return a.applyMatrix4(new e.Matrix4().makeRotationY(Math.PI));
23266
23612
  }
23267
- var $w = (t, n) => {
23613
+ var DT = (t, n) => {
23268
23614
  if (t.level >= n) return;
23269
23615
  let r = t.level + 1, i = t.size / 2, a = [
23270
23616
  new e.Vector2(t.position.x, t.position.y),
@@ -23278,44 +23624,44 @@ var $w = (t, n) => {
23278
23624
  level: r,
23279
23625
  size: i,
23280
23626
  position: e,
23281
- box: Qw(t.face, e.x, e.y, i),
23627
+ box: ET(t.face, e.x, e.y, i),
23282
23628
  parent: t,
23283
23629
  children: []
23284
23630
  };
23285
- t.children.push(a), $w(a, n);
23631
+ t.children.push(a), DT(a, n);
23286
23632
  }
23287
23633
  };
23288
- function eT(t, n) {
23634
+ function OT(t, n) {
23289
23635
  let r = {
23290
23636
  level: 0,
23291
23637
  face: t,
23292
23638
  position: new e.Vector2(0, 0),
23293
23639
  size: 1,
23294
- box: Qw(t, 0, 0, 1),
23640
+ box: ET(t, 0, 0, 1),
23295
23641
  parent: null,
23296
23642
  children: []
23297
23643
  };
23298
- return $w(r, n), r;
23644
+ return DT(r, n), r;
23299
23645
  }
23300
- function tT(e) {
23646
+ function kT(e) {
23301
23647
  return {
23302
- children: Zw.map((t) => eT(t, e)),
23648
+ children: TT.map((t) => OT(t, e)),
23303
23649
  maxLevel: e
23304
23650
  };
23305
23651
  }
23306
- function nT(e, t) {
23307
- for (let n of e.children) t(n) !== !1 && nT(n, t);
23652
+ function AT(e, t) {
23653
+ for (let n of e.children) t(n) !== !1 && AT(n, t);
23308
23654
  }
23309
23655
  //#endregion
23310
23656
  //#region build/five/core/tiling.js
23311
- var rT, iT = new e.Vector3(), aT = new e.Quaternion(), oT = new e.Matrix4(), sT = new e.Matrix4(), cT = new e.Matrix4(), lT = new e.Matrix4(), uT = new e.Matrix4(), dT = new e.Quaternion(), fT = new e.Matrix4(), pT = 0, mT = new e.Color(), hT = (rT = Math.SQRT1_2) == null ? Math.sqrt(2) : rT, gT = {
23312
- up: new e.Quaternion(hT, 0, 0, hT),
23313
- down: new e.Quaternion(-hT, 0, 0, hT),
23314
- left: new e.Quaternion(0, hT, 0, hT),
23315
- right: new e.Quaternion(0, -hT, 0, hT),
23657
+ var jT, MT = new e.Vector3(), NT = new e.Quaternion(), PT = new e.Matrix4(), FT = new e.Matrix4(), IT = new e.Matrix4(), LT = new e.Matrix4(), RT = new e.Matrix4(), zT = new e.Quaternion(), BT = new e.Matrix4(), VT = 0, HT = new e.Color(), UT = (jT = Math.SQRT1_2) == null ? Math.sqrt(2) : jT, WT = {
23658
+ up: new e.Quaternion(UT, 0, 0, UT),
23659
+ down: new e.Quaternion(-UT, 0, 0, UT),
23660
+ left: new e.Quaternion(0, UT, 0, UT),
23661
+ right: new e.Quaternion(0, -UT, 0, UT),
23316
23662
  front: new e.Quaternion(0, 0, 0, 1),
23317
23663
  back: new e.Quaternion(0, 1, 0, 0)
23318
- }, _T = (() => {
23664
+ }, GT = (() => {
23319
23665
  let t = new Float32Array([
23320
23666
  -.5,
23321
23667
  -.5,
@@ -23347,16 +23693,16 @@ var rT, iT = new e.Vector3(), aT = new e.Quaternion(), oT = new e.Matrix4(), sT
23347
23693
  2
23348
23694
  ]), i = new e.BufferGeometry();
23349
23695
  return i.setAttribute("position", new e.BufferAttribute(t, 3)), i.setAttribute("uv", new e.BufferAttribute(n, 2)), i.setIndex(new e.BufferAttribute(r, 1)), i.computeBoundingBox(), i;
23350
- })(), vT = null;
23351
- function yT() {
23352
- return vT || (vT = new e.DataTexture(new Uint8Array([
23696
+ })(), KT = null;
23697
+ function qT() {
23698
+ return KT || (KT = new e.DataTexture(new Uint8Array([
23353
23699
  255,
23354
23700
  255,
23355
23701
  255,
23356
23702
  255
23357
- ]), 1, 1), vT.needsUpdate = !0), vT;
23703
+ ]), 1, 1), KT.needsUpdate = !0), KT;
23358
23704
  }
23359
- function bT() {
23705
+ function JT() {
23360
23706
  return {
23361
23707
  enabled: R(0),
23362
23708
  maxDisplayBoost: R(1),
@@ -23369,30 +23715,30 @@ function bT() {
23369
23715
  offsetHdr: R(Sn.offsetHdr)
23370
23716
  };
23371
23717
  }
23372
- function xT(e, t) {
23718
+ function YT(e, t) {
23373
23719
  let n = se(v(e.r, T(0), T(1)), v(e.g, T(0), T(1)), v(e.b, T(0), T(1))), r = T(1).div(A(t.gamma, T(1e-6))), i = se(P(n.r, r), P(n.g, r), P(n.b, r)), a = O(A(t.maxDisplayBoost, T(1))), o = O(A(t.hdrCapacityMin, T(1e-6))), s = O(A(t.hdrCapacityMax, T(1e-6))).sub(o), c = v(a.sub(o).div(A(s, T(1e-6))), T(0), T(1)).mul(I(T(1e-6), s)), l = O(A(t.minContentBoost, T(1e-6))), u = O(A(t.maxContentBoost, T(1e-6))), d = se(l).add(i.mul(se(u.sub(l)))).mul(c);
23374
23720
  return se(w(d.x), w(d.y), w(d.z));
23375
23721
  }
23376
- function ST(e, t, n) {
23722
+ function XT(e, t, n) {
23377
23723
  return se(e).add(n.offsetSdr).mul(t).sub(n.offsetHdr);
23378
23724
  }
23379
- var CT = class extends e.NodeMaterial {
23725
+ var ZT = class extends e.NodeMaterial {
23380
23726
  constructor(e) {
23381
- super(), this.map = null, this.flipY = !0, this.level = -1, this._hdr = e, this._mapNode = L(yT()), this._gainNode = L(yT()), this.depthTest = !0, this.depthWrite = !1, this.transparent = !0, this.setupNode();
23727
+ super(), this.map = null, this.flipY = !0, this.level = -1, this._hdr = e, this._mapNode = L(qT()), this._gainNode = L(qT()), this.depthTest = !0, this.depthWrite = !1, this.transparent = !0, this.setupNode();
23382
23728
  }
23383
23729
  setupNode() {
23384
- let e = z(), t = se(e.x, e.y, 0), n = k("opacity", "float"), r = this._mapNode.sample(t.xy), i = xT(this._gainNode.sample(t.xy).rgb, this._hdr), a = ST(r.rgb, i, this._hdr), o = V(j(r.rgb, a, this._hdr.enabled), r.a.mul(n));
23730
+ let e = z(), t = se(e.x, e.y, 0), n = k("opacity", "float"), r = this._mapNode.sample(t.xy), i = YT(this._gainNode.sample(t.xy).rgb, this._hdr), a = XT(r.rgb, i, this._hdr), o = V(j(r.rgb, a, this._hdr.enabled), r.a.mul(n));
23385
23731
  this.outputNode = o;
23386
23732
  }
23387
23733
  setMap(e) {
23388
- this.map = e, this._mapNode.value = e == null ? yT() : e;
23734
+ this.map = e, this._mapNode.value = e == null ? qT() : e;
23389
23735
  }
23390
23736
  setGain(e) {
23391
- this._gainNode.value = e == null ? yT() : e;
23737
+ this._gainNode.value = e == null ? qT() : e;
23392
23738
  }
23393
- }, wT = class extends e.Mesh {
23739
+ }, QT = class extends e.Mesh {
23394
23740
  constructor(t, n, r, i, a) {
23395
- super(_T, r), this.disposed = !1, this.releaseMaterial = i, this.releaseTexture = a, t.box.getCenter(this.position), this.quaternion.multiplyQuaternions(new e.Quaternion().setFromAxisAngle(new e.Vector3(0, 1, 0), -Math.PI), gT[t.face]), this.scale.setScalar(t.size), this.node = t, this.name = "tiling:tile", this.material.level = t.level, this.material.visible = !1, this.material.polygonOffset = !0, this.material.polygonOffsetFactor = -t.level, this.material.polygonOffsetUnits = -t.level, this.activeTime = -1, this.frustumCulled = !1, this.renderOrder = t.level, this.appearDuration = 0, this.appearMotion = new X({ appear: 0 }), n.then(([e, t]) => {
23741
+ super(GT, r), this.disposed = !1, this.releaseMaterial = i, this.releaseTexture = a, t.box.getCenter(this.position), this.quaternion.multiplyQuaternions(new e.Quaternion().setFromAxisAngle(new e.Vector3(0, 1, 0), -Math.PI), WT[t.face]), this.scale.setScalar(t.size), this.node = t, this.name = "tiling:tile", this.material.level = t.level, this.material.visible = !1, this.material.polygonOffset = !0, this.material.polygonOffsetFactor = -t.level, this.material.polygonOffsetUnits = -t.level, this.activeTime = -1, this.frustumCulled = !1, this.renderOrder = t.level, this.appearDuration = 0, this.appearMotion = new X({ appear: 0 }), n.then(([e, t]) => {
23396
23742
  this.colorTexture = e, this.gainmapTexture = t, this.disposed ? (this.releaseTexture(e), this.releaseTexture(t), this.colorTexture = void 0, this.gainmapTexture = void 0) : (this.material.setMap(e == null ? null : e), this.material.setGain(t), this.material.visible = !0, this.appearMotion.set({ appear: 1 }, this.appearDuration * 1e3).catch(Y));
23397
23743
  }).catch(Y);
23398
23744
  }
@@ -23406,14 +23752,14 @@ var CT = class extends e.NodeMaterial {
23406
23752
  dispose() {
23407
23753
  this.disposed = !0, this.releaseTexture(this.colorTexture), this.releaseTexture(this.gainmapTexture), this.colorTexture = void 0, this.gainmapTexture = void 0, this.releaseMaterial(this.material);
23408
23754
  }
23409
- }, TT = sb(20, 20, 20);
23410
- TT.applyMatrix4(new e.Matrix4().makeScale(-1, 1, 1));
23411
- var ET = class extends e.NodeMaterial {
23755
+ }, $T = sb(20, 20, 20);
23756
+ $T.applyMatrix4(new e.Matrix4().makeScale(-1, 1, 1));
23757
+ var eE = class extends e.NodeMaterial {
23412
23758
  constructor(t) {
23413
23759
  super();
23414
23760
  let n = ee(ne), r = se(n.x, n.y, n.z);
23415
23761
  this._mapNode = b(new e.CubeTexture(), r), this._gainNode = b(new e.CubeTexture(), r);
23416
- let i = xT(this._gainNode.rgb, t), a = ST(this._mapNode.rgb, i, t);
23762
+ let i = YT(this._gainNode.rgb, t), a = XT(this._mapNode.rgb, i, t);
23417
23763
  this.fragmentNode = V(j(this._mapNode.rgb, a, t.enabled), 1), this.depthTest = !0, this.depthWrite = !0, this.transparent = !1;
23418
23764
  }
23419
23765
  get map() {
@@ -23425,9 +23771,9 @@ var ET = class extends e.NodeMaterial {
23425
23771
  set gainmap(e) {
23426
23772
  this._gainNode.value = e == null ? null : e;
23427
23773
  }
23428
- }, DT = class extends e.Mesh {
23774
+ }, tE = class extends e.Mesh {
23429
23775
  constructor(e) {
23430
- super(TT, new ET(e)), this.disposed = !1, this.frustumCulled = !1, this.renderOrder = 9999;
23776
+ super($T, new eE(e)), this.disposed = !1, this.frustumCulled = !1, this.renderOrder = 9999;
23431
23777
  }
23432
23778
  update(e, t, n) {
23433
23779
  if (this.disposed) {
@@ -23439,11 +23785,11 @@ var ET = class extends e.NodeMaterial {
23439
23785
  dispose() {
23440
23786
  this.disposed = !0, this.material.dispose();
23441
23787
  }
23442
- }, OT = 64, kT = 32, AT = class {
23788
+ }, nE = 64, rE = 32, iE = class {
23443
23789
  constructor(t) {
23444
23790
  var n;
23445
23791
  this.prevHDRKey = "", this.tileMaterialPool = [], this.tileTexturePool = /* @__PURE__ */ new Map(), this.forceRenderWhenNextUpdate = !0, this.releaseTileMaterial = (e) => {
23446
- if (e.setMap(null), e.setGain(null), e.opacity = 0, e.visible = !1, this.disposed || this.tileMaterialPool.length >= OT) {
23792
+ if (e.setMap(null), e.setGain(null), e.opacity = 0, e.visible = !1, this.disposed || this.tileMaterialPool.length >= nE) {
23447
23793
  e.dispose();
23448
23794
  return;
23449
23795
  }
@@ -23457,12 +23803,12 @@ var ET = class extends e.NodeMaterial {
23457
23803
  return;
23458
23804
  }
23459
23805
  let o = `${i}x${a}:${e.colorSpace}`, s = this.tileTexturePool.get(o);
23460
- if (s || (s = [], this.tileTexturePool.set(o, s)), s.length >= kT) {
23806
+ if (s || (s = [], this.tileTexturePool.set(o, s)), s.length >= rE) {
23461
23807
  e.dispose();
23462
23808
  return;
23463
23809
  }
23464
23810
  s.push(e);
23465
- }, this.fiveId = t.fiveId, this.enableHDR = (n = t.enableHDR) == null ? !1 : n, this.disposed = !1, this.level = 0, this.pedding = 0, this.maxRequest = 1, this.appearDuration = .5, this.maxCacheTile = 48, this.imageOptions = {}, this.hdrUniforms = bT(), this.boundingMesh = new DT(this.hdrUniforms), this.boundingMesh.frustumCulled = !1, this.textureLoader = new Qu(), this.observer = null, this.tileTree = tT(0), this.tileMeshes = /* @__PURE__ */ new Map(), this.frustum = new e.Frustum(), this.scene = new e.Scene(), this.camera = new e.PerspectiveCamera(90, 1, .1, 100), this.scene.add(this.boundingMesh), this.renderTarget = new e.RenderTarget(1, 1, {
23811
+ }, this.fiveId = t.fiveId, this.enableHDR = (n = t.enableHDR) == null ? !1 : n, this.disposed = !1, this.level = 0, this.pedding = 0, this.maxRequest = 1, this.appearDuration = .5, this.maxCacheTile = 48, this.imageOptions = {}, this.hdrUniforms = JT(), this.boundingMesh = new tE(this.hdrUniforms), this.boundingMesh.frustumCulled = !1, this.textureLoader = new Qu(), this.observer = null, this.tileTree = kT(0), this.tileMeshes = /* @__PURE__ */ new Map(), this.frustum = new e.Frustum(), this.scene = new e.Scene(), this.camera = new e.PerspectiveCamera(90, 1, .1, 100), this.scene.add(this.boundingMesh), this.renderTarget = new e.RenderTarget(1, 1, {
23466
23812
  depthBuffer: !0,
23467
23813
  stencilBuffer: !1,
23468
23814
  generateMipmaps: !1,
@@ -23484,7 +23830,7 @@ var ET = class extends e.NodeMaterial {
23484
23830
  }), this.tileTexturePool.clear(), this.disposed = !0;
23485
23831
  }
23486
23832
  acquireTileMaterial() {
23487
- return this.tileMaterialPool.pop() || new CT(this.hdrUniforms);
23833
+ return this.tileMaterialPool.pop() || new ZT(this.hdrUniforms);
23488
23834
  }
23489
23835
  acquireTileTexture(t, n, r) {
23490
23836
  let i = this.tileTexturePool.get(`${t}x${n}:${r}`);
@@ -23508,7 +23854,7 @@ var ET = class extends e.NodeMaterial {
23508
23854
  if (this.disposed || this.observer === e) return;
23509
23855
  this.cleanup(), this.observer = e;
23510
23856
  let a = (i = (r = (n = (t = this.observer) == null ? void 0 : t.images.tiles) == null ? void 0 : n.slice().sort((e, t) => t.level - e.level)[0]) == null ? void 0 : r.level) == null ? 0 : i;
23511
- this.tileTree = tT(a);
23857
+ this.tileTree = kT(a);
23512
23858
  }
23513
23859
  update(t) {
23514
23860
  var n, r, i, a, o, s, c, l, u, d;
@@ -23531,12 +23877,12 @@ var ET = class extends e.NodeMaterial {
23531
23877
  this.level = q(w, 0, this.tileTree.maxLevel);
23532
23878
  let k = Math.floor(m.width * h), A = Math.floor(m.height * h), j = Math.max(k, A), M = (d = (u = (l = g.backend.device) == null ? void 0 : l.limits) == null ? void 0 : u.maxTextureDimension2D) == null ? 8192 : d;
23533
23879
  j > M && (k = Math.floor(k / j * M), A = Math.floor(A / j * M)), (this.renderTarget.width !== k || this.renderTarget.height !== A) && this.renderTarget.setSize(k, A), this.scene.matrix.equals(x) || (this.scene.matrix.copy(x), this.scene.matrixWorld.copy(this.scene.matrix), this.scene.matrix.decompose(this.scene.position, this.scene.quaternion, this.scene.scale), this.scene.matrixAutoUpdate = !1, f = !0);
23534
- let N = aT.setFromRotationMatrix(_), ee = oT.compose(this.scene.position, N, this.scene.scale);
23880
+ let N = NT.setFromRotationMatrix(_), ee = PT.compose(this.scene.position, N, this.scene.scale);
23535
23881
  this.camera.matrix.equals(ee) || (this.camera.matrix.copy(ee), this.camera.matrixWorld.copy(this.camera.matrix), this.camera.position.copy(this.scene.position), this.camera.quaternion.copy(N), this.camera.scale.copy(this.scene.scale), f = !0);
23536
- let te = sT.copy(v);
23537
- te.elements[0] *= S, te.elements[5] *= S, this.camera.projectionMatrix.equals(te) || (this.camera.projectionMatrix.copy(te), this.camera.projectionMatrixInverse.copy(this.camera.projectionMatrix).invert(), f = !0), dT.copy(this.scene.quaternion).invert(), fT.makeRotationFromQuaternion(dT), cT.copy(this.camera.matrix), cT.setPosition(0, 0, 0), cT.premultiply(fT), lT.copy(cT).invert(), uT.multiplyMatrices(this.camera.projectionMatrix, lT), this.frustum.setFromProjectionMatrix(uT);
23882
+ let te = FT.copy(v);
23883
+ te.elements[0] *= S, te.elements[5] *= S, this.camera.projectionMatrix.equals(te) || (this.camera.projectionMatrix.copy(te), this.camera.projectionMatrixInverse.copy(this.camera.projectionMatrix).invert(), f = !0), zT.copy(this.scene.quaternion).invert(), BT.makeRotationFromQuaternion(zT), IT.copy(this.camera.matrix), IT.setPosition(0, 0, 0), IT.premultiply(BT), LT.copy(IT).invert(), RT.multiplyMatrices(this.camera.projectionMatrix, LT), this.frustum.setFromProjectionMatrix(RT);
23538
23884
  let ne = this.frustum.planes[5].normal, re = [];
23539
- w >= C && nT(this.tileTree, (e) => {
23885
+ w >= C && AT(this.tileTree, (e) => {
23540
23886
  if (!(e.level < C)) {
23541
23887
  if (e.level > w || !this.frustum.intersectsBox(e.box)) return !1;
23542
23888
  re.push(e);
@@ -23546,9 +23892,9 @@ var ET = class extends e.NodeMaterial {
23546
23892
  re.sort((e, t) => {
23547
23893
  if (e.level !== t.level) return e.level - t.level;
23548
23894
  let n = P.get(e);
23549
- n === void 0 && (n = e.box.getCenter(iT).angleTo(ne), P.set(e, n));
23895
+ n === void 0 && (n = e.box.getCenter(MT).angleTo(ne), P.set(e, n));
23550
23896
  let r = P.get(t);
23551
- return r === void 0 && (r = t.box.getCenter(iT).angleTo(ne), P.set(t, r)), n - r;
23897
+ return r === void 0 && (r = t.box.getCenter(MT).angleTo(ne), P.set(t, r)), n - r;
23552
23898
  });
23553
23899
  let ie = /* @__PURE__ */ new WeakSet(), ae = this.observer.images.tiles;
23554
23900
  if (ae) for (let t of re) {
@@ -23601,7 +23947,7 @@ var ET = class extends e.NodeMaterial {
23601
23947
  generateMipmaps: !1,
23602
23948
  fetcher: $y(this.fiveId, this.observer.work)
23603
23949
  }).then((e) => this.adoptTileTexture(e.body)) : Promise.resolve(void 0)]);
23604
- m.then(([e, t]) => Promise.all([e ? jg(e, g) : Promise.resolve(), t ? jg(t, g) : Promise.resolve()])).then((e) => (this.pedding--, e), (e) => (this.pedding--, Promise.reject(e))), r = new wT(t, m, this.acquireTileMaterial(), this.releaseTileMaterial, this.releaseTileTexture), r.name = `tiling:tile-${o}`, r.visible = !1, r.appearDuration = this.appearDuration, this.tileMeshes.set(t, r), this.scene.add(r), r.updateTime(p), f = !0;
23950
+ m.then(([e, t]) => Promise.all([e ? jg(e, g) : Promise.resolve(), t ? jg(t, g) : Promise.resolve()])).then((e) => (this.pedding--, e), (e) => (this.pedding--, Promise.reject(e))), r = new QT(t, m, this.acquireTileMaterial(), this.releaseTileMaterial, this.releaseTileTexture), r.name = `tiling:tile-${o}`, r.visible = !1, r.appearDuration = this.appearDuration, this.tileMeshes.set(t, r), this.scene.add(r), r.updateTime(p), f = !0;
23605
23951
  }
23606
23952
  let F = [], I = [];
23607
23953
  this.tileMeshes.forEach((e, t) => {
@@ -23612,33 +23958,33 @@ var ET = class extends e.NodeMaterial {
23612
23958
  let L = I.sort((e, t) => t.activeTime - e.activeTime).slice(Math.max(0, this.maxCacheTile - F.length));
23613
23959
  for (let e of L) this.tileMeshes.delete(e.node), this.scene.remove(e), e.dispose(), f = !0;
23614
23960
  if (f) {
23615
- let t = g.getRenderTarget(), n = g.getClearColor(mT), r = g.getClearAlpha(), i = g.autoClear, a = g.autoClearColor, o = g.autoClearDepth, s = g.autoClearStencil;
23616
- g.autoClear = !0, g.autoClearColor = !0, g.autoClearDepth = !0, g.autoClearStencil = !0, g.setRenderTarget(this.renderTarget), g.setClearColor(new e.Color(0, 0, 0), pT), g.render(this.scene, this.camera), g.setRenderTarget(t), g.setClearColor(n, r), g.autoClear = i, g.autoClearColor = a, g.autoClearDepth = o, g.autoClearStencil = s;
23961
+ let t = g.getRenderTarget(), n = g.getClearColor(HT), r = g.getClearAlpha(), i = g.autoClear, a = g.autoClearColor, o = g.autoClearDepth, s = g.autoClearStencil;
23962
+ g.autoClear = !0, g.autoClearColor = !0, g.autoClearDepth = !0, g.autoClearStencil = !0, g.setRenderTarget(this.renderTarget), g.setClearColor(new e.Color(0, 0, 0), VT), g.render(this.scene, this.camera), g.setRenderTarget(t), g.setClearColor(n, r), g.autoClear = i, g.autoClearColor = a, g.autoClearDepth = o, g.autoClearStencil = s;
23617
23963
  }
23618
23964
  return this.forceRenderWhenNextUpdate = !1, f;
23619
23965
  }
23620
- }, jT = new e.Matrix4().makeRotationAxis(new e.Vector3(0, 1, 0), Math.PI), MT = new e.Matrix4(), NT = T(-1), PT = oe(.5, .5), FT = sb(2, 2, 2);
23621
- FT.applyMatrix4(new e.Matrix4().makeScale(-1, 1, 1));
23622
- function IT() {
23966
+ }, aE = new e.Matrix4().makeRotationAxis(new e.Vector3(0, 1, 0), Math.PI), oE = new e.Matrix4(), sE = T(-1), cE = oe(.5, .5), lE = sb(2, 2, 2);
23967
+ lE.applyMatrix4(new e.Matrix4().makeScale(-1, 1, 1));
23968
+ function uE() {
23623
23969
  let t = {
23624
23970
  size: R(new e.Vector2()),
23625
23971
  mapMatrix: R(new e.Matrix4()),
23626
23972
  panoMatrix: R(new e.Matrix4()),
23627
23973
  alpha: R(1),
23628
23974
  map: L(new e.Texture())
23629
- }, n = re.sub(_).normalize().toVar("cameraToVertex"), r = t.panoMatrix.toMat3().transpose().mul(n).toVar("panoDirection"), i = se(r.x.mul(NT), r.y, r.z), a = t.mapMatrix.mul(V(i, 1)).toVar("mapCoods"), o = oe(T(.5).add(a.x.div(a.z).div(t.size.x)), T(.5).sub(a.y.div(a.z).div(t.size.y))).toVar("videoUv"), s = L(t.map, o), c = T(1).sub(I(T(0), a.z)).mul(T(1).sub(I(T(.5), m(o.x.sub(.5))))).mul(T(1).sub(I(T(.5), m(o.y.sub(.5))))), l = T(5).mul(T(1).sub(x(o, PT).div(.55).clamp(0, 1))).clamp(0, 1), u = new e.NodeMaterial();
23975
+ }, n = re.sub(_).normalize().toVar("cameraToVertex"), r = t.panoMatrix.toMat3().transpose().mul(n).toVar("panoDirection"), i = se(r.x.mul(sE), r.y, r.z), a = t.mapMatrix.mul(V(i, 1)).toVar("mapCoods"), o = oe(T(.5).add(a.x.div(a.z).div(t.size.x)), T(.5).sub(a.y.div(a.z).div(t.size.y))).toVar("videoUv"), s = L(t.map, o), c = T(1).sub(I(T(0), a.z)).mul(T(1).sub(I(T(.5), m(o.x.sub(.5))))).mul(T(1).sub(I(T(.5), m(o.y.sub(.5))))), l = T(5).mul(T(1).sub(x(o, cE).div(.55).clamp(0, 1))).clamp(0, 1), u = new e.NodeMaterial();
23630
23976
  return u.fragmentNode = V(s.rgb, c.mul(l).mul(t.alpha)), u.depthTest = !1, u.depthWrite = !1, u.fog = !1, u.blending = e.CustomBlending, u.blendSrc = e.SrcAlphaFactor, u.blendDst = e.OneMinusSrcAlphaFactor, u.blendSrcAlpha = e.OneFactor, u.blendDstAlpha = e.OneMinusSrcAlphaFactor, {
23631
23977
  material: u,
23632
23978
  u: t
23633
23979
  };
23634
23980
  }
23635
- var LT = class {
23981
+ var dE = class {
23636
23982
  constructor() {
23637
- let { material: t, u: n } = IT();
23638
- this.material = t, this.u = n, this.object = new e.Mesh(FT, this.material), this.object.visible = !1, this.object.renderOrder = -1, this.object.frustumCulled = !1, this.object.name = "pano-video", this.alphaMotion = new X({ alpha: 0 }), this.active = !1;
23983
+ let { material: t, u: n } = uE();
23984
+ this.material = t, this.u = n, this.object = new e.Mesh(lE, this.material), this.object.visible = !1, this.object.renderOrder = -1, this.object.frustumCulled = !1, this.object.name = "pano-video", this.alphaMotion = new X({ alpha: 0 }), this.active = !1;
23639
23985
  }
23640
23986
  setMaterial(t) {
23641
- t ? (this.u.size.value.copy(t.size), this.u.mapMatrix.value.copy(MT.multiplyMatrices(jT, t.matrix).transpose()), this.u.panoMatrix.value.copy(t.panoMatrix), t.map.colorSpace = e.SRGBColorSpace, this.u.map.value = t.map, this.alphaMotion.set({ alpha: t.alpha }, 500).catch(Y)) : (this.u.size.value.setScalar(0), this.u.mapMatrix.value.identity(), this.u.panoMatrix.value.identity(), this.u.map.value = null, this.u.alpha.value = 0, this.alphaMotion.set({ alpha: 0 }, 0).catch(Y));
23987
+ t ? (this.u.size.value.copy(t.size), this.u.mapMatrix.value.copy(oE.multiplyMatrices(aE, t.matrix).transpose()), this.u.panoMatrix.value.copy(t.panoMatrix), t.map.colorSpace = e.SRGBColorSpace, this.u.map.value = t.map, this.alphaMotion.set({ alpha: t.alpha }, 500).catch(Y)) : (this.u.size.value.setScalar(0), this.u.mapMatrix.value.identity(), this.u.panoMatrix.value.identity(), this.u.map.value = null, this.u.alpha.value = 0, this.alphaMotion.set({ alpha: 0 }, 0).catch(Y));
23642
23988
  let n = t !== null;
23643
23989
  this.active !== n && (this.active = n, this.object.visible = n);
23644
23990
  }
@@ -23648,36 +23994,36 @@ var LT = class {
23648
23994
  dispose() {
23649
23995
  this.material.dispose();
23650
23996
  }
23651
- }, RT = new e.Color(0, 0, 0), zT = new e.Color();
23652
- function BT(e) {
23997
+ }, fE = new e.Color(0, 0, 0), pE = new e.Color();
23998
+ function mE(e) {
23653
23999
  let t = e.mul(256 * 256 * 256).fract(), n = e.mul(256 * 256).fract().sub(t.mul(1 / 256)), r = e.mul(256).fract().sub(n.mul(1 / 256));
23654
24000
  return V(t, n, r, e.sub(r.mul(1 / 256))).mul(256 / 255);
23655
24001
  }
23656
- var VT = R(0), HT = BT(v(D(re.sub(_)).div(VT), 0, 1)), UT = new e.NodeMaterial();
23657
- UT.fragmentNode = HT, UT.fog = !1;
23658
- function WT(e, t, n, r = 1e3) {
23659
- VT.value = r, e.getClearColor(zT);
24002
+ var hE = R(0), gE = mE(v(D(re.sub(_)).div(hE), 0, 1)), _E = new e.NodeMaterial();
24003
+ _E.fragmentNode = gE, _E.fog = !1;
24004
+ function vE(e, t, n, r = 1e3) {
24005
+ hE.value = r, e.getClearColor(pE);
23660
24006
  let i = e.getClearAlpha(), a = t.overrideMaterial;
23661
- t.overrideMaterial = UT, e.setClearColor(RT, 0), n.update(e, t), e.setClearColor(zT, i), t.overrideMaterial = a;
24007
+ t.overrideMaterial = _E, e.setClearColor(fE, 0), n.update(e, t), e.setClearColor(pE, i), t.overrideMaterial = a;
23662
24008
  }
23663
24009
  //#endregion
23664
24010
  //#region build/five/utils/error.js
23665
- function GT(e) {
24011
+ function yE(e) {
23666
24012
  if (e instanceof Error) return e;
23667
24013
  let t = typeof e;
23668
24014
  return Error(t && t === "object" ? JSON.stringify(e) : e);
23669
24015
  }
23670
24016
  //#endregion
23671
24017
  //#region build/five/controllers/panorama.js
23672
- var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24018
+ var bE = eg, xE = new e.Raycaster(), SE = new e.Vector3(), CE = [
23673
24019
  new e.Vector3(0, 0, 0).multiplyScalar(.1),
23674
24020
  new e.Vector3(1, 0, 0).multiplyScalar(.1),
23675
24021
  new e.Vector3(-.5, 0, -Math.sqrt(3) / 2).multiplyScalar(.1),
23676
24022
  new e.Vector3(-.5, 0, Math.sqrt(3) / 2).multiplyScalar(.1)
23677
- ], XT = Object.assign(Object.assign({}, Kw), {
24023
+ ], wE = Object.assign(Object.assign({}, bT), {
23678
24024
  maxAccessibleDistance: 5,
23679
24025
  panoTapTriggerRadius: .5,
23680
- panoCircleMeshCreator: (e, t) => e.position.distanceTo(e.standingPosition) > t.aerialObserverMinHeight ? new LC() : new kC(),
24026
+ panoCircleMeshCreator: (e, t) => e.position.distanceTo(e.standingPosition) > t.aerialObserverMinHeight ? new dw() : new rw(),
23681
24027
  adjustPanoCircleMeshPositionBasedOnModel: !1,
23682
24028
  tileLevelForFov: ((e, t) => {
23683
24029
  var n;
@@ -23687,20 +24033,20 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
23687
24033
  tileAppearDuration: .5,
23688
24034
  tileMaxRequest: 3,
23689
24035
  flyEffectUseDepthBuffer: !1
23690
- }), ZT = class t extends qw {
24036
+ }), TE = class t extends xT {
23691
24037
  static parseArgs(e) {
23692
24038
  var n, r, i, a, o, s, c, l;
23693
24039
  if (e instanceof t) return e;
23694
24040
  let u = super.parseArgs(e);
23695
24041
  return Object.assign(Object.assign({}, u), {
23696
- maxAccessibleDistance: (n = e.maxAccessibleDistance) == null ? XT.maxAccessibleDistance : n,
23697
- panoTapTriggerRadius: (r = e.panoTapTriggerRadius) == null ? XT.panoTapTriggerRadius : r,
23698
- panoCircleMeshCreator: (i = e.panoCircleMeshCreator) == null ? XT.panoCircleMeshCreator : i,
23699
- adjustPanoCircleMeshPositionBasedOnModel: (a = e.adjustPanoCircleMeshPositionBasedOnModel) == null ? XT.adjustPanoCircleMeshPositionBasedOnModel : a,
23700
- tileLevelForFov: (o = e.tileLevelForFov) == null ? XT.tileLevelForFov : o,
23701
- tileAppearDuration: (s = e.tileAppearDuration) == null ? XT.tileAppearDuration : s,
23702
- tileMaxRequest: (c = e.tileMaxRequest) == null ? XT.tileMaxRequest : c,
23703
- flyEffectUseDepthBuffer: (l = e.flyEffectUseDepthBuffer) == null ? XT.flyEffectUseDepthBuffer : l
24042
+ maxAccessibleDistance: (n = e.maxAccessibleDistance) == null ? wE.maxAccessibleDistance : n,
24043
+ panoTapTriggerRadius: (r = e.panoTapTriggerRadius) == null ? wE.panoTapTriggerRadius : r,
24044
+ panoCircleMeshCreator: (i = e.panoCircleMeshCreator) == null ? wE.panoCircleMeshCreator : i,
24045
+ adjustPanoCircleMeshPositionBasedOnModel: (a = e.adjustPanoCircleMeshPositionBasedOnModel) == null ? wE.adjustPanoCircleMeshPositionBasedOnModel : a,
24046
+ tileLevelForFov: (o = e.tileLevelForFov) == null ? wE.tileLevelForFov : o,
24047
+ tileAppearDuration: (s = e.tileAppearDuration) == null ? wE.tileAppearDuration : s,
24048
+ tileMaxRequest: (c = e.tileMaxRequest) == null ? wE.tileMaxRequest : c,
24049
+ flyEffectUseDepthBuffer: (l = e.flyEffectUseDepthBuffer) == null ? wE.flyEffectUseDepthBuffer : l
23704
24050
  });
23705
24051
  }
23706
24052
  static initAnimationEndState(e) {
@@ -23721,12 +24067,12 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
23721
24067
  panoPicture: this.modelScene.parameter.resolveValue().pano1,
23722
24068
  position: this.camera.pose.offset.clone(),
23723
24069
  effect: "fly",
23724
- effectEasing: KT,
24070
+ effectEasing: bE,
23725
24071
  fixCameraTransform: new e.Matrix4()
23726
- }, this.panoPictureObserverMap = /* @__PURE__ */ new WeakMap(), this.textureLoader = new Qu(), this.tiling = new AT({
24072
+ }, this.panoPictureObserverMap = /* @__PURE__ */ new WeakMap(), this.textureLoader = new Qu(), this.tiling = new iE({
23727
24073
  fiveId: this.fiveId,
23728
24074
  enableHDR: this.enableHDR
23729
- }), this.panoVideo = new LT(), this.scene.add(this.panoVideo.object), this.accessibleObserverFloorCheckCount = 0;
24075
+ }), this.panoVideo = new dE(), this.scene.add(this.panoVideo.object), this.accessibleObserverFloorCheckCount = 0;
23730
24076
  }
23731
24077
  get tileLevel() {
23732
24078
  return this.tiling.level;
@@ -23839,13 +24185,13 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
23839
24185
  l !== this.currentPano && (this.currentPano = l, this.accessibleObserverFloorCheckCount = 0), this.emit("pano.moving", $("pano.moving", {
23840
24186
  userAction: this.userAction,
23841
24187
  prevPano: Qb(y.panoId),
23842
- state: Object.assign(Object.assign(Object.assign(Object.assign({}, Qb(b.panoId)), { mode: this.mode }), rw(this.camera.pose)), d),
24188
+ state: Object.assign(Object.assign(Object.assign(Object.assign({}, Qb(b.panoId)), { mode: this.mode }), jw(this.camera.pose)), d),
23843
24189
  options: {},
23844
24190
  progress: this.locationMotion.progress,
23845
24191
  error: null
23846
24192
  }));
23847
24193
  }
23848
- ow(u) === !1 && this.modelScene.parameter.set(u), !this.modelScene.parameter.pano0 && this.modelScene.parameter.pano1 && this.modelScene.parameter.set("pano0", this.modelScene.parameter.pano1), ow(d) === !1 && this.setCamera(d);
24194
+ Pw(u) === !1 && this.modelScene.parameter.set(u), !this.modelScene.parameter.pano0 && this.modelScene.parameter.pano1 && this.modelScene.parameter.set("pano0", this.modelScene.parameter.pano1), Pw(d) === !1 && this.setCamera(d);
23849
24195
  let S = this.works.getObserver(this.currentPano), C = this.locationMotion.ended ? this.getForwardObserverOrNot(this.camera) : null, w = this.works.getObserver(_.panoId), T = this.works.getObserver(v.panoId);
23850
24196
  if (this.adjustPanoCircleMeshPositionBasedOnModel && this.helper.visible && S) {
23851
24197
  let t = [], n = S.work.observers;
@@ -23866,9 +24212,9 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
23866
24212
  let t = .3, i = .005, a = n.standingPosition.clone().applyMatrix4(n.work.transform), o = Zb({
23867
24213
  panoIndex: n.panoIndex,
23868
24214
  workCode: n.work.workCode
23869
- }), s = YT.map((n) => {
23870
- qT.ray.origin.copy(a), qT.ray.origin.add(JT.copy(n).setY(t)), qT.ray.direction.set(0, -1, 0), qT.firstHitOnly = !0, qT.floorIndex = -1;
23871
- let [o] = r.intersectRaycaster(qT);
24215
+ }), s = CE.map((n) => {
24216
+ xE.ray.origin.copy(a), xE.ray.origin.add(SE.copy(n).setY(t)), xE.ray.direction.set(0, -1, 0), xE.firstHitOnly = !0, xE.floorIndex = -1;
24217
+ let [o] = r.intersectRaycaster(xE);
23872
24218
  return o && o.distance - i <= t ? new e.Vector3().copy(a).setY(o.point.y + i) : a;
23873
24219
  });
23874
24220
  s.sort((e, t) => t.y - e.y);
@@ -23915,7 +24261,7 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
23915
24261
  else {
23916
24262
  t.position.copy(r.standingPosition).applyMatrix4(r.work.transform);
23917
24263
  let e = this.adjustPanoCircleMeshPositionFix.get(r.panoId);
23918
- e && (JT.set(e.x, e.y, e.z), JT.equals(t.position) && (t.position.y += e.w)), t.scale.setScalar(1.2);
24264
+ e && (SE.set(e.x, e.y, e.z), SE.equals(t.position) && (t.position.y += e.w)), t.scale.setScalar(1.2);
23919
24265
  }
23920
24266
  let a = this.camera.position.clone().setY(t.position.y), o = new e.Vector3().copy(t.position).sub(a).normalize();
23921
24267
  if (n === Zb(this.currentPano)) {
@@ -24022,9 +24368,9 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24022
24368
  generateMipmaps: !1
24023
24369
  });
24024
24370
  let t = new e.CubeCamera(this.camera.near, this.camera.far, this.pano0DepthCubeRenderTarget);
24025
- t.matrix.copy(n.matrix), t.matrixWorld.copy(t.matrix), t.matrixAutoUpdate = !1, WT(this.renderer, this.modelScene, t, 500);
24371
+ t.matrix.copy(n.matrix), t.matrixWorld.copy(t.matrix), t.matrixAutoUpdate = !1, vE(this.renderer, this.modelScene, t, 500);
24026
24372
  let i = new e.CubeCamera(this.camera.near, this.camera.far, this.pano1DepthCubeRenderTarget);
24027
- i.matrix.copy(r.matrix), i.matrixWorld.copy(i.matrix), i.matrixAutoUpdate = !1, WT(this.renderer, this.modelScene, i, 500), this.modelScene.parameter.set({
24373
+ i.matrix.copy(r.matrix), i.matrixWorld.copy(i.matrix), i.matrixAutoUpdate = !1, vE(this.renderer, this.modelScene, i, 500), this.modelScene.parameter.set({
24028
24374
  pano0Depth: {
24029
24375
  panoId: n.panoId,
24030
24376
  map: this.pano0DepthCubeRenderTarget.texture,
@@ -24110,7 +24456,7 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24110
24456
  }
24111
24457
  let v = "move-to-pano-" + s;
24112
24458
  this.pending.add(v);
24113
- let y = QC("pano.prepare", {
24459
+ let y = Ew("pano.prepare", {
24114
24460
  options: n,
24115
24461
  prevMode: this.mode,
24116
24462
  prevPano: this.currentPano,
@@ -24126,7 +24472,7 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24126
24472
  let r = {
24127
24473
  panoId: s,
24128
24474
  effect: b,
24129
- effectEasing: (o = n.effectEasing) == null ? KT : o,
24475
+ effectEasing: (o = n.effectEasing) == null ? bE : o,
24130
24476
  panoPicture: {
24131
24477
  panoId: S.panoId,
24132
24478
  map: S.map,
@@ -24142,13 +24488,13 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24142
24488
  position: c.position.clone().applyMatrix4(c.work.transform),
24143
24489
  fixCameraTransform: new e.Matrix4()
24144
24490
  };
24145
- r.panoPicture && this.panoPictureObserverMap.set(r.panoPicture, c), this.pendingTextureTask = void 0, Promise.resolve().then(() => $C(y)).then(() => {
24491
+ r.panoPicture && this.panoPictureObserverMap.set(r.panoPicture, c), this.pendingTextureTask = void 0, Promise.resolve().then(() => Dw(y)).then(() => {
24146
24492
  Bu.shared.add(() => {
24147
24493
  this.pending.delete(v), this.doMoveToPano(t, r, n);
24148
24494
  }, !0, 1);
24149
24495
  }).catch((e) => {
24150
24496
  var r;
24151
- let i = GT(e), a = Object.assign(Object.assign(Object.assign({}, t), { mode: this.mode }), rw(this.camera.pose));
24497
+ let i = yE(e), a = Object.assign(Object.assign(Object.assign({}, t), { mode: this.mode }), jw(this.camera.pose));
24152
24498
  this.emit("pano.error", $("pano.error", {
24153
24499
  error: i,
24154
24500
  userAction: this.userAction,
@@ -24176,10 +24522,10 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24176
24522
  if (this.destroyed) l.dispose();
24177
24523
  else {
24178
24524
  l.name = _;
24179
- let r = Array.isArray(l.image) ? l.image[0] : l.image, u = (a = r == null ? void 0 : r.width) == null ? 2048 : a, { data: d } = yield Sw(this.renderer, l, !0, cS), f = new fS().formPixels(d), p = {
24525
+ let r = Array.isArray(l.image) ? l.image[0] : l.image, u = (a = r == null ? void 0 : r.width) == null ? 2048 : a, { data: d } = yield Xw(this.renderer, l, !0, cS), f = new fS().formPixels(d), p = {
24180
24526
  panoId: s,
24181
24527
  effect: b,
24182
- effectEasing: (o = n.effectEasing) == null ? KT : o,
24528
+ effectEasing: (o = n.effectEasing) == null ? bE : o,
24183
24529
  panoPicture: {
24184
24530
  panoId: s,
24185
24531
  map: l,
@@ -24196,7 +24542,7 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24196
24542
  }
24197
24543
  }),
24198
24544
  onError: (e) => {
24199
- let r = Object.assign(Object.assign(Object.assign({}, t), { mode: this.mode }), rw(this.camera.pose));
24545
+ let r = Object.assign(Object.assign(Object.assign({}, t), { mode: this.mode }), jw(this.camera.pose));
24200
24546
  this.emit("pano.error", $("pano.error", {
24201
24547
  error: e,
24202
24548
  userAction: this.userAction,
@@ -24244,7 +24590,7 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24244
24590
  }, void 0, void 0, void 0, this.renderer)]).then(([e, t]) => ({
24245
24591
  config: e,
24246
24592
  map: t.body
24247
- })) : Promise.resolve(void 0), E = Promise.resolve().then(() => $C(y)).then(() => null).catch((e) => GT(e));
24593
+ })) : Promise.resolve(void 0), E = Promise.resolve().then(() => Dw(y)).then(() => null).catch((e) => yE(e));
24248
24594
  Promise.all([
24249
24595
  w,
24250
24596
  T,
@@ -24319,7 +24665,7 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24319
24665
  })), this.initAnimationed = !0, e();
24320
24666
  },
24321
24667
  moveCancelCallback: () => {
24322
- let t = Object.assign(Object.assign(Object.assign({}, o), { mode: this.mode }), rw(this.camera.pose));
24668
+ let t = Object.assign(Object.assign(Object.assign({}, o), { mode: this.mode }), jw(this.camera.pose));
24323
24669
  l === !1 && this.emit("initAnimation.start", $("initAnimation.start", {
24324
24670
  state: t,
24325
24671
  userAction: this.userAction
@@ -24481,7 +24827,7 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24481
24827
  panoMatrix: n.matrix.clone().premultiply(n.work.transform),
24482
24828
  alpha: 1
24483
24829
  }, t = gn(), r = this.videoTexture.image;
24484
- r.setAttribute("uuid", t), r.oncanplay = Y, r.ontimeupdate = Y, Xw().then((i) => {
24830
+ r.setAttribute("uuid", t), r.oncanplay = Y, r.ontimeupdate = Y, wT().then((i) => {
24485
24831
  i && n.images.video && r.getAttribute("uuid") === t && (r.oncanplay = () => {
24486
24832
  r.oncanplay = Y, r.play();
24487
24833
  }, r.ontimeupdate = () => {
@@ -24527,9 +24873,9 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24527
24873
  return Math.abs(i.z) > 1 || Math.abs(i.x) > 1 || Math.abs(i.y) > 1 ? !1 : n.loadable || n.active;
24528
24874
  }), u = /* @__PURE__ */ new Map(), d = l.slice().sort((e, t) => {
24529
24875
  let n = c[e], r = u.get(n);
24530
- r === void 0 && (r = JT.copy(n.standingPosition).applyMatrix4(n.work.transform).distanceTo(a), u.set(n, r));
24876
+ r === void 0 && (r = SE.copy(n.standingPosition).applyMatrix4(n.work.transform).distanceTo(a), u.set(n, r));
24531
24877
  let i = c[t], o = u.get(i);
24532
- return o === void 0 && (o = JT.copy(i.standingPosition).applyMatrix4(i.work.transform).distanceTo(a), u.set(i, o)), r - o;
24878
+ return o === void 0 && (o = SE.copy(i.standingPosition).applyMatrix4(i.work.transform).distanceTo(a), u.set(i, o)), r - o;
24533
24879
  });
24534
24880
  u.clear();
24535
24881
  for (let e of [
@@ -24540,13 +24886,13 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24540
24886
  ]) for (let t of d) {
24541
24887
  let n = c[t];
24542
24888
  if (n) {
24543
- let t = JT.copy(n.standingPosition).applyMatrix4(n.work.transform).sub(a);
24889
+ let t = SE.copy(n.standingPosition).applyMatrix4(n.work.transform).sub(a);
24544
24890
  if (t && t.length() !== 0 && s.angleTo(t) < e) return n;
24545
24891
  }
24546
24892
  }
24547
24893
  let f = null;
24548
24894
  if (n) {
24549
- let e = n.ray.intersectBox(this.modelScene.boundingBox, JT);
24895
+ let e = n.ray.intersectBox(this.modelScene.boundingBox, SE);
24550
24896
  e && (e.project(t), Math.abs(e.z) <= 1 && (f = e.clone()));
24551
24897
  } else f = new e.Vector3(0, 0, 0);
24552
24898
  if (f) {
@@ -24558,15 +24904,15 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24558
24904
  return Math.abs(i.z) > 1 || Math.abs(i.x) > 1 || Math.abs(i.y) > 1 ? !1 : n.loadable || n.active;
24559
24905
  }), n = /* @__PURE__ */ new Map(), i = e.slice().sort((e, r) => {
24560
24906
  let i = c[e], a = n.get(i);
24561
- a === void 0 && (a = JT.copy(i.position).applyMatrix4(i.work.transform).distanceTo(t.position), n.set(i, a));
24907
+ a === void 0 && (a = SE.copy(i.position).applyMatrix4(i.work.transform).distanceTo(t.position), n.set(i, a));
24562
24908
  let o = c[r], s = n.get(o);
24563
- return s === void 0 && (s = JT.copy(o.position).applyMatrix4(o.work.transform).distanceTo(t.position), n.set(o, s)), a - s;
24909
+ return s === void 0 && (s = SE.copy(o.position).applyMatrix4(o.work.transform).distanceTo(t.position), n.set(o, s)), a - s;
24564
24910
  });
24565
24911
  n.clear();
24566
24912
  for (let e of i) {
24567
24913
  let n = c[e];
24568
24914
  if (n) {
24569
- let e = JT.copy(n.position).applyMatrix4(n.work.transform);
24915
+ let e = SE.copy(n.position).applyMatrix4(n.work.transform);
24570
24916
  if (e.project(t), Math.abs(e.z) > 1) continue;
24571
24917
  if (Math.pow(f.x - e.x, 2) + Math.pow(f.y - e.y, 2) < Math.pow(.4, 2)) return n;
24572
24918
  }
@@ -24584,12 +24930,12 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24584
24930
  let s = o.work.observers, c = o.accessibleNodes.filter((e) => {
24585
24931
  if (e === this.currentPano.panoIndex && o.work.workCode === this.currentPano.workCode) return !1;
24586
24932
  let t = s[e];
24587
- return !t || JT.copy(t.position).applyMatrix4(t.work.transform).distanceTo(this.camera.position) > this.maxAccessibleDistance ? !1 : t.loadable || t.active;
24933
+ return !t || SE.copy(t.position).applyMatrix4(t.work.transform).distanceTo(this.camera.position) > this.maxAccessibleDistance ? !1 : t.loadable || t.active;
24588
24934
  }), [l] = this.modelScene.intersectRaycaster(r);
24589
24935
  if (l) {
24590
24936
  let [e, t] = Im(c, (e) => {
24591
24937
  let t = s[e];
24592
- return t ? JT.copy(t.standingPosition).applyMatrix4(t.work.transform).distanceTo(l.point) : Infinity;
24938
+ return t ? SE.copy(t.standingPosition).applyMatrix4(t.work.transform).distanceTo(l.point) : Infinity;
24593
24939
  }, !0);
24594
24940
  typeof e == "number" && t < this.panoTapTriggerRadius && (a = (n = s[e]) == null ? null : n);
24595
24941
  }
@@ -24641,21 +24987,21 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24641
24987
  }
24642
24988
  }
24643
24989
  }
24644
- }, QT = Math.PI / 180, $T = 180 / Math.PI, eE = .001, tE = 1, nE = (() => {
24990
+ }, EE = Math.PI / 180, DE = 180 / Math.PI, OE = .001, kE = 1, AE = (() => {
24645
24991
  let e = typeof navigator < "u" && /iPad|iPhone|iPod/.test(navigator.platform);
24646
24992
  return () => e;
24647
- })(), rE = (() => {
24993
+ })(), jE = (() => {
24648
24994
  let e = typeof navigator < "u" && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
24649
24995
  return () => e;
24650
- })(), iE = (() => {
24996
+ })(), ME = (() => {
24651
24997
  let e = typeof navigator < "u" && navigator.userAgent.indexOf("Firefox") !== -1 && navigator.userAgent.indexOf("Android") !== -1;
24652
24998
  return () => e;
24653
- })(), aE = (() => {
24999
+ })(), NE = (() => {
24654
25000
  let e = typeof navigator < "u" ? navigator.userAgent.match(/.*Chrome\/([0-9]+)/) : null, t = e ? parseInt(e[1], 10) : null;
24655
25001
  return () => t;
24656
- })(), oE = (() => {
25002
+ })(), PE = (() => {
24657
25003
  let e = !1;
24658
- if (aE() === 65) {
25004
+ if (NE() === 65) {
24659
25005
  let t = typeof navigator < "u" ? navigator.userAgent.match(/.*Chrome\/([0-9\.]*)/) : null;
24660
25006
  if (t) {
24661
25007
  let [n, r, i, a] = t[1].split(".");
@@ -24663,41 +25009,41 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24663
25009
  }
24664
25010
  }
24665
25011
  return () => e;
24666
- })(), sE = (() => {
24667
- let e = nE() && rE() && typeof navigator < "u" && navigator.userAgent.indexOf("13_4") !== -1;
25012
+ })(), FE = (() => {
25013
+ let e = AE() && jE() && typeof navigator < "u" && navigator.userAgent.indexOf("13_4") !== -1;
24668
25014
  return () => e;
24669
- })(), cE = (() => {
25015
+ })(), IE = (() => {
24670
25016
  let e = typeof navigator < "u" && navigator.userAgent.indexOf("R7 Build") !== -1;
24671
25017
  return () => e;
24672
25018
  })();
24673
- function lE() {
25019
+ function LE() {
24674
25020
  let e = typeof window < "u" && (window.orientation == 90 || window.orientation == -90);
24675
- return cE() ? !e : e;
25021
+ return IE() ? !e : e;
24676
25022
  }
24677
- function uE(e) {
24678
- return !(isNaN(e) || e <= eE || e > tE);
25023
+ function RE(e) {
25024
+ return !(isNaN(e) || e <= OE || e > kE);
24679
25025
  }
24680
- function dE(e) {
25026
+ function zE(e) {
24681
25027
  return e.w > 1 ? 0 : 2 * Math.acos(e.w);
24682
25028
  }
24683
- var fE = (() => {
25029
+ var BE = (() => {
24684
25030
  let e = {};
24685
25031
  return (t, n) => {
24686
25032
  e[t] === void 0 && (console.warn("cardboard: " + n), e[t] = !0);
24687
25033
  };
24688
25034
  })();
24689
- function pE(e) {
25035
+ function VE(e) {
24690
25036
  let t, n = e.indexOf("://");
24691
25037
  t = n === -1 ? 0 : n + 3;
24692
25038
  let r = e.indexOf("/", t);
24693
25039
  return r === -1 && (r = e.length), e.substring(0, r);
24694
25040
  }
24695
- function mE() {
25041
+ function HE() {
24696
25042
  if (typeof window > "u" || typeof document > "u") return !1;
24697
- let e = window.self !== window.top, t = pE(document.referrer), n = pE(window.location.href);
25043
+ let e = window.self !== window.top, t = VE(document.referrer), n = VE(window.location.href);
24698
25044
  return e && t !== n;
24699
25045
  }
24700
- var hE = (() => {
25046
+ var UE = (() => {
24701
25047
  function e(e, t, n) {
24702
25048
  let r = t ? t[0] : 0, i = t ? t[1] : 0, a = t ? t[2] : 0, o = t ? t[3] : 1, s = r + r, c = i + i, l = a + a, u = r * s, d = r * c, f = r * l, p = i * c, m = i * l, h = a * l, g = o * s, _ = o * c, v = o * l;
24703
25049
  return e[0] = 1 - (p + h), e[1] = d + v, e[2] = f - _, e[3] = 0, e[4] = d - v, e[5] = 1 - (u + h), e[6] = m + g, e[7] = 0, e[8] = f + _, e[9] = m - g, e[10] = 1 - (u + p), e[11] = 0, e[12] = n ? n[0] : 0, e[13] = n ? n[1] : 0, e[14] = n ? n[2] : 0, e[15] = 1, e;
@@ -24713,7 +25059,7 @@ var hE = (() => {
24713
25059
  return (r, i, a) => {
24714
25060
  e(r, i), a && t(r, r, a), n(r, r);
24715
25061
  };
24716
- })(), gE = class {
25062
+ })(), WE = class {
24717
25063
  constructor(t = new e.Vector3(), n = 0) {
24718
25064
  this.sample = t, this.timestampS = n;
24719
25065
  }
@@ -24723,15 +25069,15 @@ var hE = (() => {
24723
25069
  copy(e) {
24724
25070
  this.set(e.sample, e.timestampS);
24725
25071
  }
24726
- }, _E = class {
25072
+ }, GE = class {
24727
25073
  constructor(t, n) {
24728
- this.kFilter = t, this.isDebug = n, this.currentAccelMeasurement = new gE(), this.currentGyroMeasurement = new gE(), this.previousGyroMeasurement = new gE(), nE() ? this.filterQ = new e.Quaternion(-1, 0, 0, 1) : this.filterQ = new e.Quaternion(1, 0, 0, 1), this.previousFilterQ = new e.Quaternion(), this.previousFilterQ.copy(this.filterQ), this.accelQ = new e.Quaternion(), this.isOrientationInitialized = !1, this.estimatedGravity = new e.Vector3(), this.measuredGravity = new e.Vector3(), this.gyroIntegralQ = new e.Quaternion();
25074
+ this.kFilter = t, this.isDebug = n, this.currentAccelMeasurement = new WE(), this.currentGyroMeasurement = new WE(), this.previousGyroMeasurement = new WE(), AE() ? this.filterQ = new e.Quaternion(-1, 0, 0, 1) : this.filterQ = new e.Quaternion(1, 0, 0, 1), this.previousFilterQ = new e.Quaternion(), this.previousFilterQ.copy(this.filterQ), this.accelQ = new e.Quaternion(), this.isOrientationInitialized = !1, this.estimatedGravity = new e.Vector3(), this.measuredGravity = new e.Vector3(), this.gyroIntegralQ = new e.Quaternion();
24729
25075
  }
24730
25076
  addAccelMeasurement(e, t) {
24731
25077
  this.currentAccelMeasurement.set(e, t);
24732
25078
  }
24733
25079
  addGyroMeasurement(e, t) {
24734
- this.currentGyroMeasurement.set(e, t), uE(t - this.previousGyroMeasurement.timestampS) && this.run_(), this.previousGyroMeasurement.copy(this.currentGyroMeasurement);
25080
+ this.currentGyroMeasurement.set(e, t), RE(t - this.previousGyroMeasurement.timestampS) && this.run_(), this.previousGyroMeasurement.copy(this.currentGyroMeasurement);
24735
25081
  }
24736
25082
  getOrientation() {
24737
25083
  return this.filterQ;
@@ -24746,7 +25092,7 @@ var hE = (() => {
24746
25092
  let r = new e.Quaternion();
24747
25093
  r.copy(this.filterQ), r.invert(), this.estimatedGravity.set(0, 0, -1), this.estimatedGravity.applyQuaternion(r), this.estimatedGravity.normalize(), this.measuredGravity.copy(this.currentAccelMeasurement.sample), this.measuredGravity.normalize();
24748
25094
  let i = new e.Quaternion();
24749
- i.setFromUnitVectors(this.estimatedGravity, this.measuredGravity), i.invert(), this.isDebug && console.log("Delta: %d deg, G_est: (%s, %s, %s), G_meas: (%s, %s, %s)", $T * dE(i), this.estimatedGravity.x.toFixed(1), this.estimatedGravity.y.toFixed(1), this.estimatedGravity.z.toFixed(1), this.measuredGravity.x.toFixed(1), this.measuredGravity.y.toFixed(1), this.measuredGravity.z.toFixed(1));
25095
+ i.setFromUnitVectors(this.estimatedGravity, this.measuredGravity), i.invert(), this.isDebug && console.log("Delta: %d deg, G_est: (%s, %s, %s), G_meas: (%s, %s, %s)", DE * zE(i), this.estimatedGravity.x.toFixed(1), this.estimatedGravity.y.toFixed(1), this.estimatedGravity.z.toFixed(1), this.measuredGravity.x.toFixed(1), this.measuredGravity.y.toFixed(1), this.measuredGravity.z.toFixed(1));
24750
25096
  let a = new e.Quaternion();
24751
25097
  a.copy(this.filterQ), a.multiply(i), this.filterQ.slerp(a, 1 - this.kFilter), this.previousFilterQ.copy(this.filterQ);
24752
25098
  }
@@ -24760,7 +25106,7 @@ var hE = (() => {
24760
25106
  let r = new e.Quaternion(), i = new e.Vector3();
24761
25107
  return i.copy(t), i.normalize(), r.setFromAxisAngle(i, t.length() * n), r;
24762
25108
  }
24763
- }, vE = class {
25109
+ }, KE = class {
24764
25110
  constructor(t, n) {
24765
25111
  this.predictionTimeS = t, this.isDebug = n, this.previousQ = new e.Quaternion(), this.previousTimestampS = null, this.deltaQ = new e.Quaternion(), this.outQ = new e.Quaternion();
24766
25112
  }
@@ -24769,11 +25115,11 @@ var hE = (() => {
24769
25115
  let i = new e.Vector3();
24770
25116
  i.copy(n), i.normalize();
24771
25117
  let a = n.length();
24772
- if (a < QT * 20) return this.isDebug && console.log("Moving slowly, at %s deg/s: no prediction", ($T * a).toFixed(1)), this.outQ.copy(t), this.previousQ.copy(t), this.outQ;
25118
+ if (a < EE * 20) return this.isDebug && console.log("Moving slowly, at %s deg/s: no prediction", (DE * a).toFixed(1)), this.outQ.copy(t), this.previousQ.copy(t), this.outQ;
24773
25119
  let o = a * this.predictionTimeS;
24774
25120
  return this.deltaQ.setFromAxisAngle(i, o), this.outQ.copy(this.previousQ), this.outQ.multiply(this.deltaQ), this.previousQ.copy(t), this.previousTimestampS = r, this.outQ;
24775
25121
  }
24776
- }, yE = class {
25122
+ }, qE = class {
24777
25123
  constructor(e) {
24778
25124
  this.coefficients = e;
24779
25125
  }
@@ -24790,15 +25136,15 @@ var hE = (() => {
24790
25136
  for (let e = 0; e < this.coefficients.length; e++) n = t * (n + this.coefficients[e]);
24791
25137
  return (n + 1) * e;
24792
25138
  }
24793
- }, bE = class {
25139
+ }, JE = class {
24794
25140
  constructor() {
24795
25141
  this.angularAcceleration = null, this.angularVelocity = null, this.linearAcceleration = null, this.linearVelocity = null, this.orientation = null, this.position = null;
24796
25142
  }
24797
- }, xE = class {
25143
+ }, YE = class {
24798
25144
  constructor() {
24799
25145
  this.leftDegrees = 0, this.rightDegrees = 0, this.upDegrees = 0, this.downDegrees = 0;
24800
25146
  }
24801
- }, SE = class {
25147
+ }, XE = class {
24802
25148
  constructor(t, n, r, i) {
24803
25149
  this.viewer = {
24804
25150
  id: "CardboardV1",
@@ -24826,11 +25172,11 @@ var hE = (() => {
24826
25172
  widthMeters: .11,
24827
25173
  heightMeters: .062,
24828
25174
  bevelMeters: .004
24829
- }, this.depthNear = .01, this.depthFar = 1e4, this.yawOnly = r, this.accelerometer = new e.Vector3(), this.gyroscope = new e.Vector3(), this.filter = new _E(t, i), this.posePredictor = new vE(n, i), this.isFirefoxAndroid = iE(), this.isIOS = nE();
24830
- let a = aE();
24831
- this.isDeviceMotionInRadians = !this.isIOS && a !== null && a < 66, this.isWithoutDeviceMotion = oE() || sE(), this.filterToWorldQ = new e.Quaternion(), nE() ? this.filterToWorldQ.setFromAxisAngle(new e.Vector3(1, 0, 0), Math.PI / 2) : this.filterToWorldQ.setFromAxisAngle(new e.Vector3(1, 0, 0), -Math.PI / 2), this.inverseWorldToScreenQ = new e.Quaternion(), this.worldToScreenQ = new e.Quaternion(), this.originalPoseAdjustQ = new e.Quaternion();
25175
+ }, this.depthNear = .01, this.depthFar = 1e4, this.yawOnly = r, this.accelerometer = new e.Vector3(), this.gyroscope = new e.Vector3(), this.filter = new GE(t, i), this.posePredictor = new KE(n, i), this.isFirefoxAndroid = ME(), this.isIOS = AE();
25176
+ let a = NE();
25177
+ this.isDeviceMotionInRadians = !this.isIOS && a !== null && a < 66, this.isWithoutDeviceMotion = PE() || FE(), this.filterToWorldQ = new e.Quaternion(), AE() ? this.filterToWorldQ.setFromAxisAngle(new e.Vector3(1, 0, 0), Math.PI / 2) : this.filterToWorldQ.setFromAxisAngle(new e.Vector3(1, 0, 0), -Math.PI / 2), this.inverseWorldToScreenQ = new e.Quaternion(), this.worldToScreenQ = new e.Quaternion(), this.originalPoseAdjustQ = new e.Quaternion();
24832
25178
  let o = typeof window < "u" ? -window.orientation * Math.PI / 180 : 0;
24833
- this.originalPoseAdjustQ.setFromAxisAngle(new e.Vector3(0, 0, 1), o), this.setScreenTransform_(), lE() && this.filterToWorldQ.multiply(this.inverseWorldToScreenQ), this.resetQ = new e.Quaternion(), this.orientationOut_ = /* @__PURE__ */ new Float32Array(4), this.previousTimestampS = Date.now();
25179
+ this.originalPoseAdjustQ.setFromAxisAngle(new e.Vector3(0, 0, 1), o), this.setScreenTransform_(), LE() && this.filterToWorldQ.multiply(this.inverseWorldToScreenQ), this.resetQ = new e.Quaternion(), this.orientationOut_ = /* @__PURE__ */ new Float32Array(4), this.previousTimestampS = Date.now();
24834
25180
  }
24835
25181
  getPosition() {
24836
25182
  return null;
@@ -24855,20 +25201,20 @@ var hE = (() => {
24855
25201
  return n.copy(this.filterToWorldQ), n.multiply(this.resetQ), n.multiply(t), n.multiply(this.worldToScreenQ), this.yawOnly && (n.x = 0, n.z = 0, n.normalize()), this.orientationOut_[0] = n.x, this.orientationOut_[1] = n.y, this.orientationOut_[2] = n.z, this.orientationOut_[3] = n.w, this.orientationOut_;
24856
25202
  }
24857
25203
  getPose() {
24858
- let e = new bE();
25204
+ let e = new JE();
24859
25205
  return e.orientation = this.getOrientation(), e;
24860
25206
  }
24861
25207
  resetPose() {
24862
- this.resetQ.copy(this.filter.getOrientation()), this.resetQ.x = 0, this.resetQ.y = 0, this.resetQ.z *= -1, this.resetQ.normalize(), lE() && this.resetQ.multiply(this.inverseWorldToScreenQ), this.resetQ.multiply(this.originalPoseAdjustQ);
25208
+ this.resetQ.copy(this.filter.getOrientation()), this.resetQ.x = 0, this.resetQ.y = 0, this.resetQ.z *= -1, this.resetQ.normalize(), LE() && this.resetQ.multiply(this.inverseWorldToScreenQ), this.resetQ.multiply(this.originalPoseAdjustQ);
24863
25209
  }
24864
25210
  getFrameData(e) {
24865
25211
  let t = this.getOrientation(), n = this.getEyeOffset(), r = this.getEyeProjectionMatrix();
24866
- return e.pose.angularAcceleration = null, e.pose.angularVelocity = null, e.pose.linearAcceleration = null, e.pose.linearVelocity = null, e.pose.orientation = t, e.pose.position = null, e.timestamp = this.previousTimestampS, e.leftProjectionMatrix.set(r.left), e.rightProjectionMatrix.set(r.right), hE(e.leftViewMatrix, t, n.left), hE(e.rightViewMatrix, t, n.right), e;
25212
+ return e.pose.angularAcceleration = null, e.pose.angularVelocity = null, e.pose.linearAcceleration = null, e.pose.linearVelocity = null, e.pose.orientation = t, e.pose.position = null, e.timestamp = this.previousTimestampS, e.leftProjectionMatrix.set(r.left), e.rightProjectionMatrix.set(r.right), UE(e.leftViewMatrix, t, n.left), UE(e.rightViewMatrix, t, n.right), e;
24867
25213
  }
24868
25214
  start() {
24869
25215
  if (typeof window > "u") return () => {};
24870
25216
  let e = this.onDeviceMotion_.bind(this), t = this.onOrientationChange_.bind(this), n = this.onMessage_.bind(this), r = this.onDeviceOrientation_.bind(this);
24871
- return nE() && mE() && window.addEventListener("message", n), window.addEventListener("orientationchange", t), this.isWithoutDeviceMotion ? window.addEventListener("deviceorientation", r) : window.addEventListener("devicemotion", e), () => {
25217
+ return AE() && HE() && window.addEventListener("message", n), window.addEventListener("orientationchange", t), this.isWithoutDeviceMotion ? window.addEventListener("deviceorientation", r) : window.addEventListener("devicemotion", e), () => {
24872
25218
  window.removeEventListener("devicemotion", e), window.removeEventListener("deviceorientation", t), window.removeEventListener("orientationchange", t), window.removeEventListener("message", n);
24873
25219
  };
24874
25220
  }
@@ -24892,17 +25238,17 @@ var hE = (() => {
24892
25238
  right: []
24893
25239
  };
24894
25240
  {
24895
- let i = e.left.upDegrees * QT, a = e.left.downDegrees * QT, o = e.left.leftDegrees * QT, s = e.left.rightDegrees * QT, c = 2 / (o + s), l = 2 / (i + a);
25241
+ let i = e.left.upDegrees * EE, a = e.left.downDegrees * EE, o = e.left.leftDegrees * EE, s = e.left.rightDegrees * EE, c = 2 / (o + s), l = 2 / (i + a);
24896
25242
  r.left[0] = c, r.left[1] = 0, r.left[2] = 0, r.left[3] = 0, r.left[4] = 0, r.left[5] = l, r.left[6] = 0, r.left[7] = 0, r.left[8] = -((o - s) * c * .5), r.left[9] = (i - a) * l * .5, r.left[10] = n / (t - n), r.left[11] = -1, r.left[12] = 0, r.left[13] = 0, r.left[14] = n * t / (t - n), r.left[15] = 0;
24897
25243
  }
24898
25244
  {
24899
- let i = e.right.upDegrees * QT, a = e.right.downDegrees * QT, o = e.right.leftDegrees * QT, s = e.right.rightDegrees * QT, c = 2 / (o + s), l = 2 / (i + a);
25245
+ let i = e.right.upDegrees * EE, a = e.right.downDegrees * EE, o = e.right.leftDegrees * EE, s = e.right.rightDegrees * EE, c = 2 / (o + s), l = 2 / (i + a);
24900
25246
  r.right[0] = c, r.right[1] = 0, r.right[2] = 0, r.right[3] = 0, r.right[4] = 0, r.right[5] = l, r.right[6] = 0, r.right[7] = 0, r.right[8] = -((o - s) * c * .5), r.right[9] = (i - a) * l * .5, r.right[10] = n / (t - n), r.right[11] = -1, r.right[12] = 0, r.right[13] = 0, r.right[14] = n * t / (t - n), r.right[15] = 0;
24901
25247
  }
24902
25248
  return r;
24903
25249
  }
24904
25250
  getEyeFieldOfView() {
24905
- let e = this.viewer, t = this.device, n = new yE(e.distortionCoefficients), r = e.screenLensDistance, i = (t.widthMeters - e.interLensDistance) / 2, a = e.interLensDistance / 2, o = e.baselineLensDistance - t.bevelMeters, s = t.heightMeters - o, c = $T * Math.atan(n.distort(i / r)), l = $T * Math.atan(n.distort(a / r)), u = $T * Math.atan(n.distort(o / r)), d = $T * Math.atan(n.distort(s / r)), f = new xE(), p = new xE();
25251
+ let e = this.viewer, t = this.device, n = new qE(e.distortionCoefficients), r = e.screenLensDistance, i = (t.widthMeters - e.interLensDistance) / 2, a = e.interLensDistance / 2, o = e.baselineLensDistance - t.bevelMeters, s = t.heightMeters - o, c = DE * Math.atan(n.distort(i / r)), l = DE * Math.atan(n.distort(a / r)), u = DE * Math.atan(n.distort(o / r)), d = DE * Math.atan(n.distort(s / r)), f = new YE(), p = new YE();
24906
25252
  return f.leftDegrees = Math.min(c, e.fov), f.rightDegrees = Math.min(l, e.fov), f.downDegrees = Math.min(u, e.fov), f.upDegrees = Math.min(d, e.fov), p.leftDegrees = f.rightDegrees, p.rightDegrees = f.leftDegrees, p.upDegrees = f.upDegrees, p.downDegrees = f.downDegrees, {
24907
25253
  left: f,
24908
25254
  right: p
@@ -24919,13 +25265,13 @@ var hE = (() => {
24919
25265
  updateDeviceMotion_(e) {
24920
25266
  let t = e.accelerationIncludingGravity, n = e.rotationRate, r = e.timeStamp / 1e3, i = r - this.previousTimestampS;
24921
25267
  if (i < 0) {
24922
- fE("fusion-pose-sensor:invalid:non-monotonic", "Invalid timestamps detected: non-monotonic timestamp from devicemotion"), this.previousTimestampS = r;
25268
+ BE("fusion-pose-sensor:invalid:non-monotonic", "Invalid timestamps detected: non-monotonic timestamp from devicemotion"), this.previousTimestampS = r;
24923
25269
  return;
24924
- } else if (i <= eE || i > tE) {
24925
- fE("fusion-pose-sensor:invalid:outside-threshold", "Invalid timestamps detected: Timestamp from devicemotion outside expected range."), this.previousTimestampS = r;
25270
+ } else if (i <= OE || i > kE) {
25271
+ BE("fusion-pose-sensor:invalid:outside-threshold", "Invalid timestamps detected: Timestamp from devicemotion outside expected range."), this.previousTimestampS = r;
24926
25272
  return;
24927
25273
  }
24928
- t && (this.accelerometer.set(-t.x, -t.y, -t.z), n && (cE() ? this.gyroscope.set(-n.beta, n.alpha, n.gamma) : this.gyroscope.set(n.alpha, n.beta, n.gamma), this.isDeviceMotionInRadians || this.gyroscope.multiplyScalar(Math.PI / 180), this.filter.addGyroMeasurement(this.gyroscope, r)), this.filter.addAccelMeasurement(this.accelerometer, r)), this.previousTimestampS = r;
25274
+ t && (this.accelerometer.set(-t.x, -t.y, -t.z), n && (IE() ? this.gyroscope.set(-n.beta, n.alpha, n.gamma) : this.gyroscope.set(n.alpha, n.beta, n.gamma), this.isDeviceMotionInRadians || this.gyroscope.multiplyScalar(Math.PI / 180), this.filter.addGyroMeasurement(this.gyroscope, r)), this.filter.addAccelMeasurement(this.accelerometer, r)), this.previousTimestampS = r;
24929
25275
  }
24930
25276
  onOrientationChange_() {
24931
25277
  this.setScreenTransform_();
@@ -24947,19 +25293,19 @@ var hE = (() => {
24947
25293
  }
24948
25294
  this.inverseWorldToScreenQ.copy(this.worldToScreenQ), this.inverseWorldToScreenQ.invert();
24949
25295
  }
24950
- }, CE = [
25296
+ }, ZE = [
24951
25297
  0,
24952
25298
  0,
24953
25299
  .5,
24954
25300
  1
24955
- ], wE = [
25301
+ ], QE = [
24956
25302
  .5,
24957
25303
  0,
24958
25304
  .5,
24959
25305
  1
24960
- ], TE = class {
25306
+ ], $E = class {
24961
25307
  constructor(t) {
24962
- this.renderer = t, this.sensor = new SE(.98, .04, !1, !1), this.scale = 1, this.cameraL = new e.PerspectiveCamera(), this.cameraR = new e.PerspectiveCamera();
25308
+ this.renderer = t, this.sensor = new XE(.98, .04, !1, !1), this.scale = 1, this.cameraL = new e.PerspectiveCamera(), this.cameraR = new e.PerspectiveCamera();
24963
25309
  let n = this.sensor.start();
24964
25310
  this.dispose = () => {
24965
25311
  let t = this.renderer.getSize(new e.Vector2());
@@ -24972,15 +25318,15 @@ var hE = (() => {
24972
25318
  var i = t.matrixWorldAutoUpdate;
24973
25319
  i && (t.updateMatrixWorld(), t.matrixWorldAutoUpdate = !1);
24974
25320
  let a = {
24975
- x: Math.round(r.width * CE[0]),
24976
- y: Math.round(r.height * CE[1]),
24977
- width: Math.round(r.width * CE[2]),
24978
- height: Math.round(r.height * CE[3])
25321
+ x: Math.round(r.width * ZE[0]),
25322
+ y: Math.round(r.height * ZE[1]),
25323
+ width: Math.round(r.width * ZE[2]),
25324
+ height: Math.round(r.height * ZE[3])
24979
25325
  }, o = {
24980
- x: Math.round(r.width * wE[0]),
24981
- y: Math.round(r.height * wE[1]),
24982
- width: Math.round(r.width * wE[2]),
24983
- height: Math.round(r.height * wE[3])
25326
+ x: Math.round(r.width * QE[0]),
25327
+ y: Math.round(r.height * QE[1]),
25328
+ width: Math.round(r.width * QE[2]),
25329
+ height: Math.round(r.height * QE[3])
24984
25330
  };
24985
25331
  this.renderer.setScissorTest(!0), this.renderer.autoClear && this.renderer.clear(), n.parent === null && n.updateMatrixWorld(), n.matrixWorld.decompose(this.cameraL.position, this.cameraL.quaternion, this.cameraL.scale), n.matrixWorld.decompose(this.cameraR.position, this.cameraR.quaternion, this.cameraR.scale);
24986
25332
  let s = this.sensor.getEyeOffset();
@@ -24990,7 +25336,7 @@ var hE = (() => {
24990
25336
  } else this.renderer.render(t, n);
24991
25337
  }
24992
25338
  dispose() {}
24993
- }, EE = "data:image/png;base64,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", DE = "data:image/png;base64,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", OE, kE = {
25339
+ }, eD = "data:image/png;base64,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", tD = "data:image/png;base64,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", nD, rD = {
24994
25340
  zh: {
24995
25341
  TITLE: "眼镜模式",
24996
25342
  HIT: "请将手机横屏放入 VR 眼镜中"
@@ -25003,7 +25349,7 @@ var hE = (() => {
25003
25349
  TITLE: "メガネモード",
25004
25350
  HIT: "携帯電話をVRメガネに水平に入れてください。"
25005
25351
  }
25006
- }, AE = typeof navigator < "u" ? (OE = kE[navigator.language.split("-")[0]]) == null ? kE.zh : OE : kE.zh, jE = `
25352
+ }, iD = typeof navigator < "u" ? (nD = rD[navigator.language.split("-")[0]]) == null ? rD.zh : nD : rD.zh, aD = `
25007
25353
  <style>
25008
25354
  .$id {
25009
25355
  all: initial;
@@ -25086,7 +25432,7 @@ var hE = (() => {
25086
25432
  .$id-modal-content-guide-cardboard-image {
25087
25433
  width: 100px;
25088
25434
  height: 82px;
25089
- background-image: url(${EE});
25435
+ background-image: url(${eD});
25090
25436
  background-size: 100%;
25091
25437
  background-repeat: no-repeat;
25092
25438
  }
@@ -25128,7 +25474,7 @@ var hE = (() => {
25128
25474
  .$id-modal-content-guide-phone-image {
25129
25475
  width: 58px;
25130
25476
  height: 56px;
25131
- background-image: url(${DE});
25477
+ background-image: url(${tD});
25132
25478
  background-size: 100%;
25133
25479
  background-repeat: no-repeat;
25134
25480
  }
@@ -25205,8 +25551,8 @@ Z
25205
25551
  </div>
25206
25552
  </div>
25207
25553
  <div class="$id-modal-content">
25208
- <div class="$id-modal-content-title">${AE.TITLE}</div>
25209
- <div class="$id-modal-content-hit">${AE.HIT}</div>
25554
+ <div class="$id-modal-content-title">${iD.TITLE}</div>
25555
+ <div class="$id-modal-content-hit">${iD.HIT}</div>
25210
25556
  <div class="$id-modal-content-guide">
25211
25557
  <div class="$id-modal-content-guide-phone">
25212
25558
  <div class="$id-modal-content-guide-phone-move-x">
@@ -25265,7 +25611,7 @@ Z
25265
25611
  </div>
25266
25612
  </div>
25267
25613
  `;
25268
- function ME(e) {
25614
+ function oD(e) {
25269
25615
  let t = 1, n = document.getElementsByTagName("meta");
25270
25616
  for (let e = 0; e < n.length; e++) {
25271
25617
  let r = n[e];
@@ -25275,31 +25621,31 @@ function ME(e) {
25275
25621
  }
25276
25622
  }
25277
25623
  let r = (e) => Math.floor(e * t) + "px";
25278
- return jE.replace(/\n/g, " ").replace(/\ +/g, " ").replace(/\$id/g, e).replace(/(\d+)px/g, (e, t) => r(Number(t)));
25624
+ return aD.replace(/\n/g, " ").replace(/\ +/g, " ").replace(/\$id/g, e).replace(/(\d+)px/g, (e, t) => r(Number(t)));
25279
25625
  }
25280
- function NE() {
25281
- let e = "five_vr_helper_" + gn(), t = ME(e), n = document.createElement("div");
25626
+ function sD() {
25627
+ let e = "five_vr_helper_" + gn(), t = oD(e), n = document.createElement("div");
25282
25628
  return n.className = e, n.innerHTML = t, n;
25283
25629
  }
25284
25630
  //#endregion
25285
25631
  //#region build/five/meshes/panoSphereMesh.js
25286
- var PE = new e.CircleGeometry(.12, 16), FE = oe(.5, .5), IE = T(.017);
25287
- function LE(e, t) {
25288
- let n = D(FE.sub(e));
25289
- return F(t, t.add(IE), n);
25632
+ var cD = new e.CircleGeometry(.12, 16), lD = oe(.5, .5), uD = T(.017);
25633
+ function dD(e, t) {
25634
+ let n = D(lD.sub(e));
25635
+ return F(t, t.add(uD), n);
25290
25636
  }
25291
- function RE(e, t) {
25292
- let n = D(FE.sub(e));
25293
- return T(1).sub(F(t.sub(IE), t, n));
25637
+ function fD(e, t) {
25638
+ let n = D(lD.sub(e));
25639
+ return T(1).sub(F(t.sub(uD), t, n));
25294
25640
  }
25295
- function zE() {
25296
- let t = { opacity: R(0) }, n = z(), r = D(FE.sub(n)), i = T(.01), a = T(.49), o = T(.29), s = T(1).sub(F(a.sub(i), a, r)), c = F(o, o.add(i), r), l = V(.576, .635, 1, .3), u = V(1, 1, 1, m(r.sub(a.add(o).div(2))).div(a.sub(o)).mul(1.5).add(.1).clamp(0, 1)), d = j(l, u, u.w), f = new e.NodeMaterial();
25641
+ function pD() {
25642
+ let t = { opacity: R(0) }, n = z(), r = D(lD.sub(n)), i = T(.01), a = T(.49), o = T(.29), s = T(1).sub(F(a.sub(i), a, r)), c = F(o, o.add(i), r), l = V(.576, .635, 1, .3), u = V(1, 1, 1, m(r.sub(a.add(o).div(2))).div(a.sub(o)).mul(1.5).add(.1).clamp(0, 1)), d = j(l, u, u.w), f = new e.NodeMaterial();
25297
25643
  return f.fragmentNode = V(d.xyz, d.w.mul(t.opacity).mul(s).mul(c)), f.blending = e.CustomBlending, f.blendSrc = e.SrcAlphaFactor, f.blendDst = e.OneMinusSrcAlphaFactor, f.blendSrcAlpha = e.OneFactor, f.blendDstAlpha = e.OneMinusSrcAlphaFactor, f.depthWrite = !1, f.transparent = !0, {
25298
25644
  material: f,
25299
25645
  u: t
25300
25646
  };
25301
25647
  }
25302
- function BE() {
25648
+ function mD() {
25303
25649
  let t = {
25304
25650
  circleScale: R(1),
25305
25651
  circleFade: R(0),
@@ -25309,8 +25655,8 @@ function BE() {
25309
25655
  opacity: R(0),
25310
25656
  disable: R(0)
25311
25657
  }, n = z();
25312
- D(FE.sub(n));
25313
- let r = T(.98).add(m(ee(oe(1, -1)).dot(n.sub(FE))).mul(2)).clamp(0, 1), i = V(j(V(.576, .635, 1, 1).xyz, V(1, 1, 1, 1).xyz, t.circleFade.mul(.5)), r.mul(t.circleOpacity).mul(RE(n, T(.3).mul(t.circleScale)))), a = M(f.sub(h(FE.x.sub(n.x), FE.y.sub(n.y))).add(t.loadingAngle), p), o = V(1, 1, 1, T(1).sub(F(T(0), p, a)).mul(.9).add(.1).mul(t.loadingOpacity).mul(LE(n, T(.2).mul(t.circleScale))).mul(RE(n, T(.25).mul(t.circleScale)))), s = V(1, 1, 1, T(.5).mul(RE(n, T(.32).mul(t.circleScale)))), c = V(1, 1, 1, 0);
25658
+ D(lD.sub(n));
25659
+ let r = T(.98).add(m(ee(oe(1, -1)).dot(n.sub(lD))).mul(2)).clamp(0, 1), i = V(j(V(.576, .635, 1, 1).xyz, V(1, 1, 1, 1).xyz, t.circleFade.mul(.5)), r.mul(t.circleOpacity).mul(fD(n, T(.3).mul(t.circleScale)))), a = M(f.sub(h(lD.x.sub(n.x), lD.y.sub(n.y))).add(t.loadingAngle), p), o = V(1, 1, 1, T(1).sub(F(T(0), p, a)).mul(.9).add(.1).mul(t.loadingOpacity).mul(dD(n, T(.2).mul(t.circleScale))).mul(fD(n, T(.25).mul(t.circleScale)))), s = V(1, 1, 1, T(.5).mul(fD(n, T(.32).mul(t.circleScale)))), c = V(1, 1, 1, 0);
25314
25660
  c = j(c, i, i.w), c = j(c, o, o.w), c = j(c, s, t.disable);
25315
25661
  let l = V(c.xyz, c.w.mul(t.opacity)), u = new e.NodeMaterial();
25316
25662
  return u.fragmentNode = l, u.blending = e.CustomBlending, u.blendSrc = e.SrcAlphaFactor, u.blendDst = e.OneMinusSrcAlphaFactor, u.blendSrcAlpha = e.OneFactor, u.blendDstAlpha = e.OneMinusSrcAlphaFactor, u.depthWrite = !1, u.transparent = !0, {
@@ -25318,7 +25664,7 @@ function BE() {
25318
25664
  u: t
25319
25665
  };
25320
25666
  }
25321
- var VE = class extends e.Object3D {
25667
+ var hD = class extends e.Object3D {
25322
25668
  constructor() {
25323
25669
  super(), this.progress = 0, this.opacity = 0, this.loading = !1, this.current = !1, this.disabled = !1, this.currentMotion = new X({
25324
25670
  ringScale: 1.1,
@@ -25326,7 +25672,7 @@ var VE = class extends e.Object3D {
25326
25672
  circleFade: 0,
25327
25673
  circleOpacity: .85,
25328
25674
  circleScale: 1
25329
- }), this.opacityMotion = new X({ opacity: 0 }), this.loadingMotion = new X({ opacity: 0 }), this.disableMotion = new X({ opacity: 0 }), this.hitTestMesh = new e.Mesh(PE, new e.MeshBasicMaterial({
25675
+ }), this.opacityMotion = new X({ opacity: 0 }), this.loadingMotion = new X({ opacity: 0 }), this.disableMotion = new X({ opacity: 0 }), this.hitTestMesh = new e.Mesh(cD, new e.MeshBasicMaterial({
25330
25676
  blending: e.CustomBlending,
25331
25677
  blendSrc: e.SrcAlphaFactor,
25332
25678
  blendDst: e.OneMinusSrcAlphaFactor,
@@ -25337,10 +25683,10 @@ var VE = class extends e.Object3D {
25337
25683
  color: 0,
25338
25684
  opacity: 0
25339
25685
  })), this.hitTestMesh.scale.set(1.5, 1.5, 1.5);
25340
- let { material: t, u: n } = zE();
25341
- this.ringMesh = new e.Mesh(PE, t), this.ringU = n;
25342
- let { material: r, u: i } = BE();
25343
- this.panoMesh = new e.Mesh(PE, r), this.panoU = i, this.add(this.hitTestMesh), this.add(this.ringMesh), this.add(this.panoMesh), this.renderOrder = 1e4, this.needsRender = !0;
25686
+ let { material: t, u: n } = pD();
25687
+ this.ringMesh = new e.Mesh(cD, t), this.ringU = n;
25688
+ let { material: r, u: i } = mD();
25689
+ this.panoMesh = new e.Mesh(cD, r), this.panoU = i, this.add(this.hitTestMesh), this.add(this.ringMesh), this.add(this.panoMesh), this.renderOrder = 1e4, this.needsRender = !0;
25344
25690
  }
25345
25691
  setProgress(e) {
25346
25692
  this.progress = e, this.setLoading(e > 0);
@@ -25483,7 +25829,7 @@ var VE = class extends e.Object3D {
25483
25829
  dispose() {
25484
25830
  this.hitTestMesh.material.dispose(), this.ringMesh.material.dispose(), this.panoMesh.material.dispose();
25485
25831
  }
25486
- }, HE = 1500, UE = Object.assign({}, Ql(XT, ["maxLatitude", "minLatitude"])), WE = class t extends ZT {
25832
+ }, gD = 1500, _D = Object.assign({}, Ql(wE, ["maxLatitude", "minLatitude"])), vD = class t extends TE {
25487
25833
  static parseArgs(e) {
25488
25834
  if (e instanceof t) return e;
25489
25835
  let n = Object.assign(Object.assign({}, e), {
@@ -25498,10 +25844,10 @@ var VE = class extends e.Object3D {
25498
25844
  }
25499
25845
  constructor(e) {
25500
25846
  let n = t.parseArgs(e);
25501
- super(n), this.mode = "VRPanorama", this.cardboard = new TE(this.renderer);
25502
- let r = NE();
25847
+ super(n), this.mode = "VRPanorama", this.cardboard = new $E(this.renderer);
25848
+ let r = sD();
25503
25849
  this.helperElement = r;
25504
- let i = new Cw(r);
25850
+ let i = new Zw(r);
25505
25851
  this.element.parentNode && (this.element.parentNode.insertBefore(r, this.element), this.updateHelperElementSize(), i.on("tap", () => this.emit("vr.requestExit", $("vr.requestExit", {})))), this.destroyHelper = () => {
25506
25852
  i.destroy(), r.parentNode && r.parentNode.removeChild(r), this.helperElement = void 0;
25507
25853
  };
@@ -25574,17 +25920,17 @@ var VE = class extends e.Object3D {
25574
25920
  this.currentPano = Qb(_.panoId), this.emit("pano.moving", $("pano.moving", {
25575
25921
  userAction: this.userAction,
25576
25922
  prevPano: Qb(v.panoId),
25577
- state: Object.assign(Object.assign(Object.assign(Object.assign({}, Qb(y.panoId)), { mode: this.mode }), rw(this.camera.pose)), d),
25923
+ state: Object.assign(Object.assign(Object.assign(Object.assign({}, Qb(y.panoId)), { mode: this.mode }), jw(this.camera.pose)), d),
25578
25924
  options: {},
25579
25925
  progress: this.locationMotion.progress,
25580
25926
  error: null
25581
25927
  }));
25582
25928
  }
25583
- ow(u) === !1 && this.modelScene.parameter.set(u), d.offset && this.camera.position.copy(d.offset);
25929
+ Pw(u) === !1 && this.modelScene.parameter.set(u), d.offset && this.camera.position.copy(d.offset);
25584
25930
  let x = this.camera.pose.longitude, S = this.camera.pose.latitude;
25585
25931
  this.camera.quaternion.fromArray(this.cardboard.sensor.getOrientation()), this.camera.computePose(), (x !== this.camera.pose.longitude || S !== this.camera.pose.latitude) && (this.cameraMotion.set(Zl(this.camera.pose, ["longitude", "latitude"]), 0).catch(Y), this.emit("camera.update", $("camera.update", {
25586
25932
  userAction: !0,
25587
- state: Object.assign(Object.assign(Object.assign({}, this.currentPano), { mode: this.mode }), rw(this.camera.pose))
25933
+ state: Object.assign(Object.assign(Object.assign({}, this.currentPano), { mode: this.mode }), jw(this.camera.pose))
25588
25934
  }))), this.works.getObserver(this.currentPano);
25589
25935
  let C = this.works.getObserver(g.panoId), w = this.works.getObserver(_.panoId), T = /* @__PURE__ */ new Map();
25590
25936
  if (C) for (let e of C.accessibleNodes) {
@@ -25611,7 +25957,7 @@ var VE = class extends e.Object3D {
25611
25957
  let n = T.get(t);
25612
25958
  n ? (e.position.copy(n.position).applyMatrix4(n.work.transform), T.delete(t)) : (this.helper.remove(e), e.dispose(), this.panoMeshes.delete(t));
25613
25959
  }), T.forEach((e, t) => {
25614
- let n = new VE();
25960
+ let n = new hD();
25615
25961
  n.position.copy(e.position).applyMatrix4(e.work.transform), e.position.distanceTo(e.standingPosition) > this.aerialObserverMinHeight ? n.scale.setScalar(15) : n.scale.setScalar(1), this.panoMeshes.set(t, n), this.helper.add(n), T.delete(t);
25616
25962
  }), this.camera.pose.distance > .1 || b ? this.panoMeshes.forEach((e, r) => {
25617
25963
  e.setOpacity(0), e.updateTime && e.updateTime(t, n), e.visible = !1;
@@ -25692,9 +26038,9 @@ var VE = class extends e.Object3D {
25692
26038
  generateMipmaps: !1
25693
26039
  });
25694
26040
  let t = new e.CubeCamera(this.camera.near, this.camera.far, this.pano0DepthCubeRenderTarget);
25695
- t.matrix.copy(n.matrix), t.matrixWorld.copy(t.matrix), t.matrixAutoUpdate = !1, WT(this.renderer, this.modelScene, t, 500);
26041
+ t.matrix.copy(n.matrix), t.matrixWorld.copy(t.matrix), t.matrixAutoUpdate = !1, vE(this.renderer, this.modelScene, t, 500);
25696
26042
  let i = new e.CubeCamera(this.camera.near, this.camera.far, this.pano1DepthCubeRenderTarget);
25697
- i.matrix.copy(r.matrix), i.matrixWorld.copy(i.matrix), i.matrixAutoUpdate = !1, WT(this.renderer, this.modelScene, i, 500), this.modelScene.parameter.set({
26043
+ i.matrix.copy(r.matrix), i.matrixWorld.copy(i.matrix), i.matrixAutoUpdate = !1, vE(this.renderer, this.modelScene, i, 500), this.modelScene.parameter.set({
25698
26044
  pano0Depth: {
25699
26045
  panoId: n.panoId,
25700
26046
  map: this.pano0DepthCubeRenderTarget.texture,
@@ -25731,7 +26077,7 @@ var VE = class extends e.Object3D {
25731
26077
  this.intersectMesh.visible = !1, this.activePanoMesh = void 0, this.activeTime = void 0;
25732
26078
  return;
25733
26079
  }
25734
- if (this.activePanoMesh && this.activeTime && t - this.activeTime > HE) {
26080
+ if (this.activePanoMesh && this.activeTime && t - this.activeTime > gD) {
25735
26081
  let e = this.activePanoMesh, t = null;
25736
26082
  return this.panoMeshes.forEach((n, r) => {
25737
26083
  n === e && (t = r);
@@ -25783,13 +26129,13 @@ var VE = class extends e.Object3D {
25783
26129
  onPinchGesture() {}
25784
26130
  onMouseMove() {}
25785
26131
  onMouseOut() {}
25786
- }, GE = .01, KE = "183", qE = {
26132
+ }, yD = .01, bD = "183", xD = {
25787
26133
  isXRRenderTarget: !0,
25788
26134
  _hasExternalTextures: !1,
25789
26135
  _autoAllocateDepthBuffer: !0,
25790
26136
  _isOpaqueFramebuffer: !0
25791
26137
  };
25792
- function JE(t, n, r, i) {
26138
+ function SD(t, n, r, i) {
25793
26139
  let a = new e.RenderTarget(n, r, {
25794
26140
  format: e.RGBAFormat,
25795
26141
  type: e.UnsignedByteType,
@@ -25798,9 +26144,9 @@ function JE(t, n, r, i) {
25798
26144
  resolveDepthBuffer: i,
25799
26145
  resolveStencilBuffer: i
25800
26146
  });
25801
- return Object.assign(a, qE), a;
26147
+ return Object.assign(a, xD), a;
25802
26148
  }
25803
- var YE = class {
26149
+ var CD = class {
25804
26150
  constructor(t, n = {}) {
25805
26151
  var r;
25806
26152
  this.resources = null, this.warnedRevision = !1, this._outputBufferType = null, this.clearColorScratch = new e.Color(), this.viewportScratch = new e.Vector4(), this.renderer = t, this.atlasSamples = (r = n.atlasSamples) == null ? 0 : r;
@@ -25811,16 +26157,16 @@ var YE = class {
25811
26157
  verify() {
25812
26158
  let t = this.renderer, n = [], r = t.backend;
25813
26159
  r ? (r.isWebGLBackend !== !0 && n.push("backend.isWebGLBackend"), typeof r.setXRTarget != "function" && n.push("backend.setXRTarget")) : n.push("renderer.backend"), typeof t.setOutputRenderTarget != "function" && n.push("renderer.setOutputRenderTarget"), typeof t.getOutputRenderTarget != "function" && n.push("renderer.getOutputRenderTarget");
25814
- let i = JE(this.renderer, 1, 1, !0);
26160
+ let i = SD(this.renderer, 1, 1, !0);
25815
26161
  try {
25816
26162
  let e = i;
25817
- for (let [t, r] of Object.entries(qE)) e[t] !== r && n.push(`xrRT.${t}(期望 ${String(r)},实际 ${String(e[t])})`);
26163
+ for (let [t, r] of Object.entries(xD)) e[t] !== r && n.push(`xrRT.${t}(期望 ${String(r)},实际 ${String(e[t])})`);
25818
26164
  for (let t of ["multiview", "resolveDepthBuffer"]) e[t] === void 0 && n.push(`xrRT.${t}`);
25819
26165
  } finally {
25820
26166
  i.dispose();
25821
26167
  }
25822
26168
  if (n.length > 0) throw Error(`[RenderTargetBridge] three 内部 API 校验失败(THREE.REVISION=${e.REVISION}),缺失或不符:${n.join("、")}`);
25823
- e.REVISION !== KE && !this.warnedRevision && (this.warnedRevision = !0, console.warn(`[RenderTargetBridge] THREE.REVISION=${e.REVISION},XR 标志位语义仅在 r${KE} 复核过,继续运行`));
26169
+ e.REVISION !== bD && !this.warnedRevision && (this.warnedRevision = !0, console.warn(`[RenderTargetBridge] THREE.REVISION=${e.REVISION},XR 标志位语义仅在 r${bD} 复核过,继续运行`));
25824
26170
  }
25825
26171
  verifyCameras(t) {
25826
26172
  let n = this.renderer.coordinateSystem, r = t.map((e, t) => e.coordinateSystem === n ? null : t).filter((e) => e !== null);
@@ -25854,7 +26200,7 @@ var YE = class {
25854
26200
  }
25855
26201
  i.setScissorTest(!1), o.setXRTarget(t.framebuffer), i.setRenderTarget(null), a.setOutputRenderTarget(l);
25856
26202
  let m = i.getPixelRatio();
25857
- i.setViewport(0, 0, (d + GE) / m, (f + GE) / m), u.render(i);
26203
+ i.setViewport(0, 0, (d + yD) / m, (f + yD) / m), u.render(i);
25858
26204
  } finally {
25859
26205
  a.setOutputRenderTarget(s.output), o.setXRTarget(null), i.setRenderTarget(s.rt), i.autoClear = s.autoClear, i.autoClearColor = s.autoClearColor, i.autoClearDepth = s.autoClearDepth, i.autoClearStencil = s.autoClearStencil, i.setScissorTest(s.scissorTest), i.setViewport(s.viewport), i.setClearColor(s.clearColor, s.clearAlpha);
25860
26206
  }
@@ -25882,7 +26228,7 @@ var YE = class {
25882
26228
  generateMipmaps: !1,
25883
26229
  minFilter: e.LinearFilter,
25884
26230
  magFilter: e.LinearFilter
25885
- }), a = JE(this.renderer, n, r, t.ignoreDepthValues === !1), o = new e.NodeMaterial();
26231
+ }), a = SD(this.renderer, n, r, t.ignoreDepthValues === !1), o = new e.NodeMaterial();
25886
26232
  o.fragmentNode = V(L(i.texture).rgb, 1), o.depthTest = !1, o.depthWrite = !1;
25887
26233
  let s = new e.QuadMesh(o);
25888
26234
  return this.resources = {
@@ -25903,7 +26249,7 @@ var YE = class {
25903
26249
  let t = (e = this.renderer.backend) == null ? void 0 : e.gl;
25904
26250
  return t ? !!t.getExtension("EXT_color_buffer_float") || !!t.getExtension("EXT_color_buffer_half_float") : !1;
25905
26251
  }
25906
- }, XE = class {
26252
+ }, wD = class {
25907
26253
  constructor() {
25908
26254
  this.root = new e.Group(), this._entries = /* @__PURE__ */ new Map(), this._dir = new e.Vector3();
25909
26255
  }
@@ -25953,8 +26299,8 @@ var YE = class {
25953
26299
  let { position: r, orientation: i } = t.transform;
25954
26300
  e.position.set(n.x + r.x, n.y + r.y, n.z + r.z), e.quaternion.set(i.x, i.y, i.z, i.w), e.visible = !0, e.updateMatrixWorld(!0);
25955
26301
  }
25956
- }, ZE = 5e3;
25957
- function QE(e) {
26302
+ }, TD = 5e3;
26303
+ function ED(e) {
25958
26304
  let t = [.../* @__PURE__ */ new Set([
25959
26305
  e,
25960
26306
  "local",
@@ -25962,21 +26308,21 @@ function QE(e) {
25962
26308
  ])];
25963
26309
  return t.slice(0, t.indexOf("viewer") + 1);
25964
26310
  }
25965
- function $E() {
26311
+ function DD() {
25966
26312
  let e = /* @__PURE__ */ Error("会话在参考空间解析前已结束");
25967
26313
  return e.aborted = !0, e;
25968
26314
  }
25969
- function eD(e) {
26315
+ function OD(e) {
25970
26316
  return e.map((e) => `${e.type}(${e.reason})`).join(", ");
25971
26317
  }
25972
- function tD(e, t) {
26318
+ function kD(e, t) {
25973
26319
  return Ti(this, arguments, void 0, function* (e, t, n = {}) {
25974
26320
  var r, i, a;
25975
- let o = (r = n.timeoutMs) == null ? ZE : r, s = n.isAborted, c = (i = n.schedule) == null ? ((e, t) => setTimeout(e, t)) : i, l = (a = n.clear) == null ? ((e) => clearTimeout(e)) : a, u = QE(t), d = [];
26321
+ let o = (r = n.timeoutMs) == null ? TD : r, s = n.isAborted, c = (i = n.schedule) == null ? ((e, t) => setTimeout(e, t)) : i, l = (a = n.clear) == null ? ((e) => clearTimeout(e)) : a, u = ED(t), d = [];
25976
26322
  for (let n of u) {
25977
- let r = yield nD(e, n, o, c, l);
25978
- if (s != null && s()) throw $E();
25979
- if (r.ok) return n !== t && console.warn(`[XR] 参考空间降级:期望 ${t},实际采用 ${n};失败:${eD(d)}`), {
26323
+ let r = yield AD(e, n, o, c, l);
26324
+ if (s != null && s()) throw DD();
26325
+ if (r.ok) return n !== t && console.warn(`[XR] 参考空间降级:期望 ${t},实际采用 ${n};失败:${OD(d)}`), {
25980
26326
  space: r.space,
25981
26327
  type: n,
25982
26328
  failures: d
@@ -25986,11 +26332,11 @@ function tD(e, t) {
25986
26332
  reason: r.reason
25987
26333
  });
25988
26334
  }
25989
- let f = /* @__PURE__ */ Error(`所有参考空间均不可用(期望 ${t}):${eD(d)}`);
26335
+ let f = /* @__PURE__ */ Error(`所有参考空间均不可用(期望 ${t}):${OD(d)}`);
25990
26336
  throw f.attempts = d, f;
25991
26337
  });
25992
26338
  }
25993
- function nD(e, t, n, r, i) {
26339
+ function AD(e, t, n, r, i) {
25994
26340
  return Ti(this, void 0, void 0, function* () {
25995
26341
  let a, o = !1, s = new Promise((n) => {
25996
26342
  let r = (e) => {
@@ -26024,7 +26370,7 @@ function nD(e, t, n, r, i) {
26024
26370
  }
26025
26371
  //#endregion
26026
26372
  //#region build/five/webxr/xrManager.js
26027
- var rD = 5e3, iD = "会话在进入过程中已结束", aD = class {
26373
+ var jD = 5e3, MD = "会话在进入过程中已结束", ND = class {
26028
26374
  static isBackendXRCapable(e) {
26029
26375
  let t = e.backend;
26030
26376
  return (t == null ? void 0 : t.isWebGPUBackend) !== !0;
@@ -26046,7 +26392,7 @@ var rD = 5e3, iD = "会话在进入过程中已结束", aD = class {
26046
26392
  }
26047
26393
  constructor(t, n, r) {
26048
26394
  var i;
26049
- this.inputs = new XE(), this._isPresenting = !1, this._session = null, this._frame = null, this._referenceSpaceType = null, this.refSpace = null, this.layer = null, this.entering = !1, this.entered = !1, this.endedDuringEnter = !1, this.snapshot = null, this.listeners = [], this.firstFrameArrived = !1, this.firstFrameWaiter = null, this.frameNo = 0, this.submittedNear = NaN, this.submittedFar = NaN, this.offset = new e.Vector3(), this.info = {
26395
+ this.inputs = new wD(), this._isPresenting = !1, this._session = null, this._frame = null, this._referenceSpaceType = null, this.refSpace = null, this.layer = null, this.entering = !1, this.entered = !1, this.endedDuringEnter = !1, this.snapshot = null, this.listeners = [], this.firstFrameArrived = !1, this.firstFrameWaiter = null, this.frameNo = 0, this.submittedNear = NaN, this.submittedFar = NaN, this.offset = new e.Vector3(), this.info = {
26050
26396
  time: 0,
26051
26397
  hasPose: !1,
26052
26398
  headOrientation: new e.Quaternion(),
@@ -26062,7 +26408,7 @@ var rD = 5e3, iD = "会话在进入过程中已结束", aD = class {
26062
26408
  var e;
26063
26409
  if (this._session) {
26064
26410
  if (!this.entered) {
26065
- this.endedDuringEnter = !0, (e = this.firstFrameWaiter) == null || e.reject(/* @__PURE__ */ Error(iD));
26411
+ this.endedDuringEnter = !0, (e = this.firstFrameWaiter) == null || e.reject(/* @__PURE__ */ Error(MD));
26066
26412
  return;
26067
26413
  }
26068
26414
  this.teardown();
@@ -26075,7 +26421,7 @@ var rD = 5e3, iD = "会话在进入过程中已结束", aD = class {
26075
26421
  }, this.onSelectEvent = (e) => {
26076
26422
  var t, n;
26077
26423
  (n = (t = this.callbacks).onSelect) == null || n.call(t, e.inputSource);
26078
- }, this.onReferenceSpaceReset = () => {}, this.renderer = t, this.options = n == null ? {} : n, this.callbacks = r, this.bridge = new YE(t, { atlasSamples: (i = this.options.atlasSamples) == null ? 0 : i }), this.device = oC(), this.profile = uC(this.device, this.options.deviceProfile, (e) => {
26424
+ }, this.onReferenceSpaceReset = () => {}, this.renderer = t, this.options = n == null ? {} : n, this.callbacks = r, this.bridge = new CD(t, { atlasSamples: (i = this.options.atlasSamples) == null ? 0 : i }), this.device = PC(), this.profile = RC(this.device, this.options.deviceProfile, (e) => {
26079
26425
  console.warn(`[XR] Device_Profile 字段 ${e} 非法,已回落默认值`);
26080
26426
  });
26081
26427
  let a = () => {
@@ -26104,7 +26450,7 @@ var rD = 5e3, iD = "会话在进入过程中已结束", aD = class {
26104
26450
  this.layer = a;
26105
26451
  let o = this.options.foveation;
26106
26452
  o !== void 0 && "fixedFoveation" in a && (a.fixedFoveation = q(o, 0, 1)), e.updateRenderState({ baseLayer: a }), this.submittedNear = e.renderState.depthNear, this.submittedFar = e.renderState.depthFar, this.bridge.init(a);
26107
- let s = yield tD(e, (n = this.options.referenceSpaceType) == null ? "local-floor" : n, { isAborted: () => this.endedDuringEnter });
26453
+ let s = yield kD(e, (n = this.options.referenceSpaceType) == null ? "local-floor" : n, { isAborted: () => this.endedDuringEnter });
26108
26454
  this.throwIfEnded(), this.refSpace = s.space, this._referenceSpaceType = s.type, this.listen(s.space, "reset", this.onReferenceSpaceReset), Bu.shared.setContext(e), yield this.waitFirstFrame(), this.throwIfEnded(), this.syncExistingInputSources(e), this.entering = !1, this.entered = !0, this._isPresenting = !0;
26109
26455
  try {
26110
26456
  this.callbacks.onSessionStart(e, this.device);
@@ -26112,7 +26458,7 @@ var rD = 5e3, iD = "会话在进入过程中已结束", aD = class {
26112
26458
  console.error("[XR] onSessionStart 回调抛错", e);
26113
26459
  }
26114
26460
  } catch (e) {
26115
- throw this.rollback(), this.endedDuringEnter ? /* @__PURE__ */ Error(iD) : e;
26461
+ throw this.rollback(), this.endedDuringEnter ? /* @__PURE__ */ Error(MD) : e;
26116
26462
  }
26117
26463
  }
26118
26464
  });
@@ -26131,7 +26477,7 @@ var rD = 5e3, iD = "会话在进入过程中已结束", aD = class {
26131
26477
  var e;
26132
26478
  let t = this._session;
26133
26479
  if (this.entering) {
26134
- this.endedDuringEnter = !0, (e = this.firstFrameWaiter) == null || e.reject(/* @__PURE__ */ Error(iD)), t && this.endQuietly(t);
26480
+ this.endedDuringEnter = !0, (e = this.firstFrameWaiter) == null || e.reject(/* @__PURE__ */ Error(MD)), t && this.endQuietly(t);
26135
26481
  return;
26136
26482
  }
26137
26483
  this.entered && t && (this.teardown(), this.endQuietly(t));
@@ -26205,12 +26551,12 @@ var rD = 5e3, iD = "会话在进入过程中已结束", aD = class {
26205
26551
  this.firstFrameArrived || (this.firstFrameArrived = !0, (e = this.firstFrameWaiter) == null || e.resolve());
26206
26552
  }
26207
26553
  throwIfEnded() {
26208
- if (this.endedDuringEnter) throw Error(iD);
26554
+ if (this.endedDuringEnter) throw Error(MD);
26209
26555
  }
26210
26556
  waitFirstFrame() {
26211
26557
  var e;
26212
26558
  if (this.firstFrameArrived) return Promise.resolve();
26213
- let t = (e = this.options.firstFrameTimeoutMs) == null ? rD : e;
26559
+ let t = (e = this.options.firstFrameTimeoutMs) == null ? jD : e;
26214
26560
  return new Promise((e, n) => {
26215
26561
  let r = setTimeout(() => {
26216
26562
  this.firstFrameWaiter = null, n(/* @__PURE__ */ Error(`等待首帧超时(${t}ms 内未收到首个 XRFrame)`));
@@ -26270,7 +26616,7 @@ var rD = 5e3, iD = "会话在进入过程中已结束", aD = class {
26270
26616
  rollback() {
26271
26617
  var e;
26272
26618
  let t = this._session;
26273
- (e = this.firstFrameWaiter) == null || e.reject(/* @__PURE__ */ Error(iD)), this.removeListeners(), this.inputs.clear(), this.bridge.dispose(), this.releaseFrameSource(t), this.restoreRendererState(), this.clearReferences(), this._isPresenting = !1, this.entering = !1, this.entered = !1;
26619
+ (e = this.firstFrameWaiter) == null || e.reject(/* @__PURE__ */ Error(MD)), this.removeListeners(), this.inputs.clear(), this.bridge.dispose(), this.releaseFrameSource(t), this.restoreRendererState(), this.clearReferences(), this._isPresenting = !1, this.entering = !1, this.entered = !1;
26274
26620
  }
26275
26621
  teardown() {
26276
26622
  var e, t;
@@ -26290,7 +26636,7 @@ var rD = 5e3, iD = "会话在进入过程中已结束", aD = class {
26290
26636
  Promise.resolve(e.end()).catch(() => {});
26291
26637
  } catch (e) {}
26292
26638
  }
26293
- }, oD = {
26639
+ }, PD = {
26294
26640
  Handedness: Object.freeze({
26295
26641
  NONE: "none",
26296
26642
  LEFT: "left",
@@ -26321,24 +26667,24 @@ var rD = 5e3, iD = "会话在进入过程中已结束", aD = class {
26321
26667
  VISIBILITY: "visibility"
26322
26668
  })
26323
26669
  };
26324
- function sD(e) {
26670
+ function FD(e) {
26325
26671
  return Ti(this, void 0, void 0, function* () {
26326
26672
  let t = yield fetch(e);
26327
26673
  if (t.ok) return t.json();
26328
26674
  throw Error(t.statusText);
26329
26675
  });
26330
26676
  }
26331
- function cD(e) {
26677
+ function ID(e) {
26332
26678
  return Ti(this, void 0, void 0, function* () {
26333
26679
  if (!e) throw Error("No basePath supplied");
26334
- return yield sD(`${e}/profilesList.json`);
26680
+ return yield FD(`${e}/profilesList.json`);
26335
26681
  });
26336
26682
  }
26337
- function lD(e, t) {
26683
+ function LD(e, t) {
26338
26684
  return Ti(this, arguments, void 0, function* (e, t, n = null, r = !0) {
26339
26685
  if (!e) throw Error("No xrInputSource supplied");
26340
26686
  if (!t) throw Error("No basePath supplied");
26341
- let i = yield cD(t), a;
26687
+ let i = yield ID(t), a;
26342
26688
  if (e.profiles.some((e) => {
26343
26689
  let n = i[e];
26344
26690
  return n && (a = {
@@ -26356,7 +26702,7 @@ function lD(e, t) {
26356
26702
  deprecated: !!e.deprecated
26357
26703
  };
26358
26704
  }
26359
- let o = yield sD(a.profilePath), s;
26705
+ let o = yield FD(a.profilePath), s;
26360
26706
  if (r) {
26361
26707
  let t;
26362
26708
  if (t = o.layouts[e.handedness], !t) throw Error(`No matching handedness, ${e.handedness}, in profile ${a.profileId}`);
@@ -26368,13 +26714,13 @@ function lD(e, t) {
26368
26714
  };
26369
26715
  });
26370
26716
  }
26371
- var uD = {
26717
+ var RD = {
26372
26718
  xAxis: 0,
26373
26719
  yAxis: 0,
26374
26720
  button: 0,
26375
- state: oD.ComponentState.DEFAULT
26721
+ state: PD.ComponentState.DEFAULT
26376
26722
  };
26377
- function dD(e = 0, t = 0) {
26723
+ function zD(e = 0, t = 0) {
26378
26724
  let n = e, r = t;
26379
26725
  if (Math.sqrt(e * e + t * t) > 1) {
26380
26726
  let i = Math.atan2(t, e);
@@ -26385,36 +26731,36 @@ function dD(e = 0, t = 0) {
26385
26731
  normalizedYAxis: r * .5 + .5
26386
26732
  };
26387
26733
  }
26388
- var fD = class {
26734
+ var BD = class {
26389
26735
  constructor(e) {
26390
- this.componentProperty = e.componentProperty, this.states = e.states, this.valueNodeName = e.valueNodeName, this.valueNodeProperty = e.valueNodeProperty, this.valueNodeProperty === oD.VisualResponseProperty.TRANSFORM && (this.minNodeName = e.minNodeName, this.maxNodeName = e.maxNodeName), this.value = 0, this.updateFromComponent(uD);
26736
+ this.componentProperty = e.componentProperty, this.states = e.states, this.valueNodeName = e.valueNodeName, this.valueNodeProperty = e.valueNodeProperty, this.valueNodeProperty === PD.VisualResponseProperty.TRANSFORM && (this.minNodeName = e.minNodeName, this.maxNodeName = e.maxNodeName), this.value = 0, this.updateFromComponent(RD);
26391
26737
  }
26392
26738
  updateFromComponent({ xAxis: e, yAxis: t, button: n, state: r }) {
26393
- let { normalizedXAxis: i, normalizedYAxis: a } = dD(e, t);
26739
+ let { normalizedXAxis: i, normalizedYAxis: a } = zD(e, t);
26394
26740
  switch (this.componentProperty) {
26395
- case oD.ComponentProperty.X_AXIS:
26741
+ case PD.ComponentProperty.X_AXIS:
26396
26742
  this.value = this.states.includes(r) ? i : .5;
26397
26743
  break;
26398
- case oD.ComponentProperty.Y_AXIS:
26744
+ case PD.ComponentProperty.Y_AXIS:
26399
26745
  this.value = this.states.includes(r) ? a : .5;
26400
26746
  break;
26401
- case oD.ComponentProperty.BUTTON:
26747
+ case PD.ComponentProperty.BUTTON:
26402
26748
  this.value = this.states.includes(r) ? n : 0;
26403
26749
  break;
26404
- case oD.ComponentProperty.STATE:
26405
- this.valueNodeProperty === oD.VisualResponseProperty.VISIBILITY ? this.value = this.states.includes(r) : this.value = +!!this.states.includes(r);
26750
+ case PD.ComponentProperty.STATE:
26751
+ this.valueNodeProperty === PD.VisualResponseProperty.VISIBILITY ? this.value = this.states.includes(r) : this.value = +!!this.states.includes(r);
26406
26752
  break;
26407
26753
  default: throw Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`);
26408
26754
  }
26409
26755
  }
26410
- }, pD = class {
26756
+ }, VD = class {
26411
26757
  constructor(e, t) {
26412
26758
  if (!e || !t || !t.visualResponses || !t.gamepadIndices || Object.keys(t.gamepadIndices).length === 0) throw Error("Invalid arguments supplied");
26413
26759
  this.id = e, this.type = t.type, this.rootNodeName = t.rootNodeName, this.touchPointNodeName = t.touchPointNodeName, this.visualResponses = {}, Object.keys(t.visualResponses).forEach((e) => {
26414
- let n = new fD(t.visualResponses[e]);
26760
+ let n = new BD(t.visualResponses[e]);
26415
26761
  this.visualResponses[e] = n;
26416
26762
  }), this.gamepadIndices = Object.assign({}, t.gamepadIndices), this.values = {
26417
- state: oD.ComponentState.DEFAULT,
26763
+ state: PD.ComponentState.DEFAULT,
26418
26764
  button: this.gamepadIndices.button === void 0 ? void 0 : 0,
26419
26765
  xAxis: this.gamepadIndices.xAxis === void 0 ? void 0 : 0,
26420
26766
  yAxis: this.gamepadIndices.yAxis === void 0 ? void 0 : 0
@@ -26424,21 +26770,21 @@ var fD = class {
26424
26770
  return Object.assign({ id: this.id }, this.values);
26425
26771
  }
26426
26772
  updateFromGamepad(e) {
26427
- if (this.values.state = oD.ComponentState.DEFAULT, this.gamepadIndices.button !== void 0 && e.buttons.length > this.gamepadIndices.button) {
26773
+ if (this.values.state = PD.ComponentState.DEFAULT, this.gamepadIndices.button !== void 0 && e.buttons.length > this.gamepadIndices.button) {
26428
26774
  let t = e.buttons[this.gamepadIndices.button];
26429
- this.values.button = t.value, this.values.button = this.values.button < 0 ? 0 : this.values.button, this.values.button = this.values.button > 1 ? 1 : this.values.button, t.pressed || this.values.button === 1 ? this.values.state = oD.ComponentState.PRESSED : (t.touched || this.values.button > oD.ButtonTouchThreshold) && (this.values.state = oD.ComponentState.TOUCHED);
26775
+ this.values.button = t.value, this.values.button = this.values.button < 0 ? 0 : this.values.button, this.values.button = this.values.button > 1 ? 1 : this.values.button, t.pressed || this.values.button === 1 ? this.values.state = PD.ComponentState.PRESSED : (t.touched || this.values.button > PD.ButtonTouchThreshold) && (this.values.state = PD.ComponentState.TOUCHED);
26430
26776
  }
26431
- this.gamepadIndices.xAxis !== void 0 && e.axes.length > this.gamepadIndices.xAxis && (this.values.xAxis = e.axes[this.gamepadIndices.xAxis], this.values.xAxis = this.values.xAxis < -1 ? -1 : this.values.xAxis, this.values.xAxis = this.values.xAxis > 1 ? 1 : this.values.xAxis, this.values.state === oD.ComponentState.DEFAULT && Math.abs(this.values.xAxis) > oD.AxisTouchThreshold && (this.values.state = oD.ComponentState.TOUCHED)), this.gamepadIndices.yAxis !== void 0 && e.axes.length > this.gamepadIndices.yAxis && (this.values.yAxis = e.axes[this.gamepadIndices.yAxis], this.values.yAxis = this.values.yAxis < -1 ? -1 : this.values.yAxis, this.values.yAxis = this.values.yAxis > 1 ? 1 : this.values.yAxis, this.values.state === oD.ComponentState.DEFAULT && Math.abs(this.values.yAxis) > oD.AxisTouchThreshold && (this.values.state = oD.ComponentState.TOUCHED)), Object.values(this.visualResponses).forEach((e) => {
26777
+ this.gamepadIndices.xAxis !== void 0 && e.axes.length > this.gamepadIndices.xAxis && (this.values.xAxis = e.axes[this.gamepadIndices.xAxis], this.values.xAxis = this.values.xAxis < -1 ? -1 : this.values.xAxis, this.values.xAxis = this.values.xAxis > 1 ? 1 : this.values.xAxis, this.values.state === PD.ComponentState.DEFAULT && Math.abs(this.values.xAxis) > PD.AxisTouchThreshold && (this.values.state = PD.ComponentState.TOUCHED)), this.gamepadIndices.yAxis !== void 0 && e.axes.length > this.gamepadIndices.yAxis && (this.values.yAxis = e.axes[this.gamepadIndices.yAxis], this.values.yAxis = this.values.yAxis < -1 ? -1 : this.values.yAxis, this.values.yAxis = this.values.yAxis > 1 ? 1 : this.values.yAxis, this.values.state === PD.ComponentState.DEFAULT && Math.abs(this.values.yAxis) > PD.AxisTouchThreshold && (this.values.state = PD.ComponentState.TOUCHED)), Object.values(this.visualResponses).forEach((e) => {
26432
26778
  e.updateFromComponent(this.values);
26433
26779
  });
26434
26780
  }
26435
- }, mD = class {
26781
+ }, HD = class {
26436
26782
  constructor(e, t, n) {
26437
26783
  if (!e) throw Error("No xrInputSource supplied");
26438
26784
  if (!t) throw Error("No profile supplied");
26439
26785
  this.xrInputSource = e, this.assetUrl = n, this.id = t.profileId, this.layoutDescription = t.layouts[e.handedness], this.components = {}, Object.keys(this.layoutDescription.components).forEach((e) => {
26440
26786
  let t = this.layoutDescription.components[e];
26441
- this.components[e] = new pD(e, t);
26787
+ this.components[e] = new VD(e, t);
26442
26788
  }), this.updateFromGamepad();
26443
26789
  }
26444
26790
  get gripSpace() {
@@ -26458,7 +26804,7 @@ var fD = class {
26458
26804
  e.updateFromGamepad(this.xrInputSource.gamepad);
26459
26805
  });
26460
26806
  }
26461
- }, hD = "https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles", gD = "generic-trigger", _D = class extends r {
26807
+ }, UD = "https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles", WD = "generic-trigger", GD = class extends r {
26462
26808
  constructor() {
26463
26809
  super(), this.motionController = null, this.envMap = null;
26464
26810
  }
@@ -26471,21 +26817,21 @@ var fD = class {
26471
26817
  super.updateMatrixWorld(e), this.motionController && (this.motionController.updateFromGamepad(), Object.values(this.motionController.components).forEach((e) => {
26472
26818
  Object.values(e.visualResponses).forEach((e) => {
26473
26819
  let { valueNode: t, minNode: n, maxNode: r, value: i, valueNodeProperty: a } = e;
26474
- t && (a === oD.VisualResponseProperty.VISIBILITY ? t.visible = i : a === oD.VisualResponseProperty.TRANSFORM && (t.quaternion.copy(n.quaternion).slerp(r.quaternion, i), t.position.lerpVectors(n.position, r.position, i)));
26820
+ t && (a === PD.VisualResponseProperty.VISIBILITY ? t.visible = i : a === PD.VisualResponseProperty.TRANSFORM && (t.quaternion.copy(n.quaternion).slerp(r.quaternion, i), t.position.lerpVectors(n.position, r.position, i)));
26475
26821
  });
26476
26822
  }));
26477
26823
  }
26478
26824
  };
26479
- function vD(e, r) {
26825
+ function KD(e, r) {
26480
26826
  Object.values(e.components).forEach((e) => {
26481
26827
  let { type: a, touchPointNodeName: o, visualResponses: s } = e;
26482
- if (a === oD.ComponentType.TOUCHPAD) if (e.touchPointNode = r.getObjectByName(o), e.touchPointNode) {
26828
+ if (a === PD.ComponentType.TOUCHPAD) if (e.touchPointNode = r.getObjectByName(o), e.touchPointNode) {
26483
26829
  let r = new t(new i(.001), new n({ color: 255 }));
26484
26830
  e.touchPointNode.add(r);
26485
26831
  } else console.warn(`Could not find touch dot, ${e.touchPointNodeName}, in touchpad component ${e.id}`);
26486
26832
  Object.values(s).forEach((e) => {
26487
26833
  let { valueNodeName: t, minNodeName: n, maxNodeName: i, valueNodeProperty: a } = e;
26488
- if (a === oD.VisualResponseProperty.TRANSFORM) {
26834
+ if (a === PD.VisualResponseProperty.TRANSFORM) {
26489
26835
  if (e.minNode = r.getObjectByName(n), e.maxNode = r.getObjectByName(i), !e.minNode) {
26490
26836
  console.warn(`Could not find ${n} in the model`);
26491
26837
  return;
@@ -26499,27 +26845,27 @@ function vD(e, r) {
26499
26845
  });
26500
26846
  });
26501
26847
  }
26502
- function yD(t, n) {
26503
- vD(t.motionController, n), t.envMap && n.traverse((n) => {
26848
+ function qD(t, n) {
26849
+ KD(t.motionController, n), t.envMap && n.traverse((n) => {
26504
26850
  n instanceof e.Mesh && n.isMesh && (n.material.envMap = t.envMap, n.material.needsUpdate = !0);
26505
26851
  }), t.add(n);
26506
26852
  }
26507
- var bD = class {
26853
+ var JD = class {
26508
26854
  constructor(e = null) {
26509
- this.gltfLoader = e, this.path = hD, this._assetCache = {};
26855
+ this.gltfLoader = e, this.path = UD, this._assetCache = {};
26510
26856
  }
26511
26857
  createControllerModel(e) {
26512
- let t = new _D(), n = null;
26858
+ let t = new GD(), n = null;
26513
26859
  return e.addEventListener("connected", (e) => {
26514
26860
  let r = e.data;
26515
- r.targetRayMode !== "tracked-pointer" || !r.gamepad || lD(r, this.path, gD).then(({ profile: e, assetPath: i }) => {
26516
- t.motionController = new mD(r, e, i);
26861
+ r.targetRayMode !== "tracked-pointer" || !r.gamepad || LD(r, this.path, WD).then(({ profile: e, assetPath: i }) => {
26862
+ t.motionController = new HD(r, e, i);
26517
26863
  let a = this._assetCache[t.motionController.assetUrl];
26518
- if (a) n = a.scene.clone(), yD(t, n);
26864
+ if (a) n = a.scene.clone(), qD(t, n);
26519
26865
  else {
26520
26866
  if (!this.gltfLoader) throw Error("GLTFLoader not set.");
26521
26867
  this.gltfLoader.load(t.motionController.assetUrl, (e) => {
26522
- this._assetCache[t.motionController.assetUrl] = e, n = e.scene.clone(), yD(t, n);
26868
+ this._assetCache[t.motionController.assetUrl] = e, n = e.scene.clone(), qD(t, n);
26523
26869
  });
26524
26870
  }
26525
26871
  }).catch((e) => {
@@ -26529,7 +26875,7 @@ var bD = class {
26529
26875
  t.motionController = null, t.remove(n), n = null;
26530
26876
  }), t;
26531
26877
  }
26532
- }, xD = class {
26878
+ }, YD = class {
26533
26879
  constructor() {
26534
26880
  this.states = /* @__PURE__ */ new Map();
26535
26881
  }
@@ -26619,14 +26965,14 @@ var bD = class {
26619
26965
  let n = this.states.get(e);
26620
26966
  n && (n.delete(t), n.size === 0 && this.states.delete(e));
26621
26967
  }
26622
- }, SD = Object.assign(Object.assign({}, Ql(XT, ["maxLatitude", "minLatitude"])), {
26968
+ }, XD = Object.assign(Object.assign({}, Ql(wE, ["maxLatitude", "minLatitude"])), {
26623
26969
  referenceSpaceType: "local-floor",
26624
26970
  foveation: 1,
26625
26971
  showControllerModel: !0,
26626
26972
  showPointerRay: !0,
26627
26973
  deviceProfile: {}
26628
- }), CD = 5, wD = 1e-4, TD = 1500;
26629
- function ED() {
26974
+ }), ZD = 5, QD = 1e-4, $D = 1500;
26975
+ function eO() {
26630
26976
  return { load(e, t) {
26631
26977
  Xl.ajax(e, { responseType: "arraybuffer" }).then((t) => {
26632
26978
  var n;
@@ -26640,7 +26986,7 @@ function ED() {
26640
26986
  });
26641
26987
  } };
26642
26988
  }
26643
- var DD = class t extends ZT {
26989
+ var tO = class t extends TE {
26644
26990
  static parseArgs(e) {
26645
26991
  if (e instanceof t) return e;
26646
26992
  let n = Object.assign(Object.assign({}, e), {
@@ -26659,15 +27005,15 @@ var DD = class t extends ZT {
26659
27005
  super(s), this.controllerRayFilled = {
26660
27006
  left: !1,
26661
27007
  right: !1
26662
- }, this.controllerModelFactory = null, this.buttonStateMachine = new xD(), this.inputVisuals = /* @__PURE__ */ new Map(), this.inputsDirty = !1, this.walkedThisFrame = !1, this.lastFrameTime = 0, this.walkSources = {
27008
+ }, this.controllerModelFactory = null, this.buttonStateMachine = new YD(), this.inputVisuals = /* @__PURE__ */ new Map(), this.inputsDirty = !1, this.walkedThisFrame = !1, this.lastFrameTime = 0, this.walkSources = {
26663
27009
  left: null,
26664
27010
  right: null
26665
27011
  }, this.gazeRayPool = null, this.mode = "XRPanorama";
26666
- let c = SD, l = (n = e.referenceSpaceType) == null ? c.referenceSpaceType : n, u = (r = e.foveation) == null ? c.foveation : r;
27012
+ let c = XD, l = (n = e.referenceSpaceType) == null ? c.referenceSpaceType : n, u = (r = e.foveation) == null ? c.foveation : r;
26667
27013
  this.showControllerModel = (i = e.showControllerModel) == null ? c.showControllerModel : i, this.showPointerRay = (a = e.showPointerRay) == null ? c.showPointerRay : a, this.controllerRaycasters = {
26668
27014
  left: this.createPickingRaycaster(),
26669
27015
  right: this.createPickingRaycaster()
26670
- }, this.gazeRaycaster = null, this.xrManager = new aD(this.renderer, {
27016
+ }, this.gazeRaycaster = null, this.xrManager = new ND(this.renderer, {
26671
27017
  referenceSpaceType: l,
26672
27018
  foveation: u,
26673
27019
  deviceProfile: (o = e.deviceProfile) == null ? c.deviceProfile : o
@@ -26675,13 +27021,13 @@ var DD = class t extends ZT {
26675
27021
  onSessionStart: (e, t) => {
26676
27022
  this.emit("xr.session.start", $("xr.session.start", {
26677
27023
  session: e,
26678
- machineType: dC(t)
27024
+ machineType: zC(t)
26679
27025
  }));
26680
27026
  },
26681
27027
  onSessionEnd: (e) => {
26682
27028
  this.emit("xr.session.end", $("xr.session.end", {
26683
27029
  session: null,
26684
- machineType: dC(e)
27030
+ machineType: zC(e)
26685
27031
  }));
26686
27032
  },
26687
27033
  onSessionEnding: () => {
@@ -26838,8 +27184,8 @@ var DD = class t extends ZT {
26838
27184
  }
26839
27185
  getControllerModelFactory() {
26840
27186
  if (!this.controllerModelFactory) {
26841
- let e = new bD();
26842
- e.gltfLoader = ED(), this.controllerModelFactory = e;
27187
+ let e = new JD();
27188
+ e.gltfLoader = eO(), this.controllerModelFactory = e;
26843
27189
  }
26844
27190
  return this.controllerModelFactory;
26845
27191
  }
@@ -26873,15 +27219,15 @@ var DD = class t extends ZT {
26873
27219
  depthWrite: !1,
26874
27220
  transparent: !0
26875
27221
  }), a = new e.LineSegments(t, i);
26876
- a.renderOrder = 999, a.frustumCulled = !1, n.targetRay.add(a), r.ray = a, r.rayLength = CD;
27222
+ a.renderOrder = 999, a.frustumCulled = !1, n.targetRay.add(a), r.ray = a, r.rayLength = ZD;
26877
27223
  } else !o && r.ray && (this.disposeRay(r.ray), r.ray = void 0);
26878
27224
  }
26879
27225
  updatePointerRayLength(e, t) {
26880
27226
  for (let [n, r] of this.inputVisuals) {
26881
27227
  let i = r.ray;
26882
27228
  if (!i) continue;
26883
- let a = n.handedness === "left" ? "left" : "right", o = CD;
26884
- if (e && t && e === this.controllerRaycasters[a] && (o = Math.min(e.ray.origin.distanceTo(t), CD)), r.rayLength !== void 0 && Math.abs(r.rayLength - o) < wD) continue;
27229
+ let a = n.handedness === "left" ? "left" : "right", o = ZD;
27230
+ if (e && t && e === this.controllerRaycasters[a] && (o = Math.min(e.ray.origin.distanceTo(t), ZD)), r.rayLength !== void 0 && Math.abs(r.rayLength - o) < QD) continue;
26885
27231
  let s = i.geometry.getAttribute("position");
26886
27232
  s.setZ(1, -o), s.needsUpdate = !0, r.rayLength = o;
26887
27233
  }
@@ -26901,7 +27247,7 @@ var DD = class t extends ZT {
26901
27247
  let i = $(e, {
26902
27248
  session: this.xrManager.session,
26903
27249
  buttons: t,
26904
- machineType: dC(this.xrManager.device),
27250
+ machineType: zC(this.xrManager.device),
26905
27251
  isFirst: n,
26906
27252
  isFinal: r,
26907
27253
  controllers: { raycaster: {
@@ -26950,7 +27296,7 @@ var DD = class t extends ZT {
26950
27296
  this.intersectMesh.visible = !1, this.activePanoMesh = void 0, this.activeTime = void 0, this.updatePointerRayLength(null, null);
26951
27297
  return;
26952
27298
  }
26953
- if (this.activePanoMesh && this.activeTime && t - this.activeTime > TD) {
27299
+ if (this.activePanoMesh && this.activeTime && t - this.activeTime > $D) {
26954
27300
  let e = this.activePanoMesh, t = null;
26955
27301
  return this.panoMeshes.forEach((n, r) => {
26956
27302
  n === e && (t = r);
@@ -27066,7 +27412,7 @@ var DD = class t extends ZT {
27066
27412
  onPinchGesture() {}
27067
27413
  onMouseMove() {}
27068
27414
  onMouseOut() {}
27069
- }, OD = new e.Vector3(0, 1.6, 0), kD = new e.Box3(), AD = new e.Vector3(), jD = Object.assign({}, Kw), MD = class t extends qw {
27415
+ }, nO = new e.Vector3(0, 1.6, 0), rO = new e.Box3(), iO = new e.Vector3(), aO = Object.assign({}, bT), oO = class t extends xT {
27070
27416
  static parseArgs(e) {
27071
27417
  return e instanceof t ? e : super.parseArgs(e);
27072
27418
  }
@@ -27078,7 +27424,7 @@ var DD = class t extends ZT {
27078
27424
  } : {
27079
27425
  workCode: d.workCode,
27080
27426
  panoIndex: d.panoIndex
27081
- }, p = l.getObserver(f), m = q((a = u.fov) == null ? !p || aw(d.mode) ? d.fov : c.defaultFov : a, c.minFov, c.maxFov), h = (o = u.longitude) == null ? d.longitude : o, g = q(typeof c.minLatitude == "function" ? c.minLatitude(m) : c.minLatitude, -Math.PI / 2, Math.PI / 2), _ = q(typeof c.maxLatitude == "function" ? c.maxLatitude(m) : c.maxLatitude, -Math.PI / 2, Math.PI / 2), v = q((s = u.latitude) == null ? !p || aw(d.mode) ? d.latitude : c.defaultLatitude : s, g, _), y = new e.Vector3();
27427
+ }, p = l.getObserver(f), m = q((a = u.fov) == null ? !p || Nw(d.mode) ? d.fov : c.defaultFov : a, c.minFov, c.maxFov), h = (o = u.longitude) == null ? d.longitude : o, g = q(typeof c.minLatitude == "function" ? c.minLatitude(m) : c.minLatitude, -Math.PI / 2, Math.PI / 2), _ = q(typeof c.maxLatitude == "function" ? c.maxLatitude(m) : c.maxLatitude, -Math.PI / 2, Math.PI / 2), v = q((s = u.latitude) == null ? !p || Nw(d.mode) ? d.latitude : c.defaultLatitude : s, g, _), y = new e.Vector3();
27082
27428
  if (c.initial.state.offset) y.copy(c.initial.state.offset);
27083
27429
  else if (p) y.copy(p.position).applyMatrix4(p.work.transform);
27084
27430
  else {
@@ -27174,9 +27520,9 @@ var DD = class t extends ZT {
27174
27520
  let n = new e.Vector3(this.locationMotion.value.x, this.locationMotion.value.y, this.locationMotion.value.z), r = [];
27175
27521
  for (let e of this.works) {
27176
27522
  let t = this.modelScene.models.find((t) => t.work === e);
27177
- if (!(!t || t.visible === !1) && !(e.observers.length <= 0) && (kD.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform), kD.containsPoint(n))) for (let t of e.observers) r.push(t);
27523
+ if (!(!t || t.visible === !1) && !(e.observers.length <= 0) && (rO.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform), rO.containsPoint(n))) for (let t of e.observers) r.push(t);
27178
27524
  }
27179
- let i = Im(r, (e) => AD.copy(e.position).applyMatrix4(e.work.transform).distanceTo(n));
27525
+ let i = Im(r, (e) => iO.copy(e.position).applyMatrix4(e.work.transform).distanceTo(n));
27180
27526
  this.currentPano = i ? {
27181
27527
  workCode: i.work.workCode,
27182
27528
  panoIndex: i.panoIndex
@@ -27185,7 +27531,7 @@ var DD = class t extends ZT {
27185
27531
  panoIndex: 0
27186
27532
  };
27187
27533
  }
27188
- this.cameraMotion.ended || (this.cameraMotion.update(t), a.longitude = this.cameraMotion.value.longitude, a.latitude = this.cameraMotion.value.latitude, a.fov = this.cameraMotion.value.fov), ow(i) || this.modelScene.parameter.set(i), ow(a) || this.setCamera(a);
27534
+ this.cameraMotion.ended || (this.cameraMotion.update(t), a.longitude = this.cameraMotion.value.longitude, a.latitude = this.cameraMotion.value.latitude, a.fov = this.cameraMotion.value.fov), Pw(i) || this.modelScene.parameter.set(i), Pw(a) || this.setCamera(a);
27189
27535
  let o = this.works.getObserver(this.currentPano);
27190
27536
  if (this.intersectMesh && this.intersectMesh.parent && o && o.position.y - o.standingPosition.y > 10) {
27191
27537
  let e = q(this.camera.position.distanceTo(this.intersectMesh.position) * (2 * Math.tan(.5 * this.camera.fov / 180 * Math.PI)) / 5, .5);
@@ -27269,9 +27615,9 @@ var DD = class t extends ZT {
27269
27615
  }, g = [];
27270
27616
  for (let e of this.works) {
27271
27617
  let t = this.modelScene.models.find((t) => t.work === e);
27272
- if (!(!t || t.visible === !1) && !(e.observers.length <= 0) && (kD.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform), kD.containsPoint(c))) for (let t of e.observers) g.push(t);
27618
+ if (!(!t || t.visible === !1) && !(e.observers.length <= 0) && (rO.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform), rO.containsPoint(c))) for (let t of e.observers) g.push(t);
27273
27619
  }
27274
- let _ = Im(g, (e) => AD.copy(e.position).applyMatrix4(e.work.transform).distanceTo(c)), v = _ ? {
27620
+ let _ = Im(g, (e) => iO.copy(e.position).applyMatrix4(e.work.transform).distanceTo(c)), v = _ ? {
27275
27621
  workCode: _.work.workCode,
27276
27622
  panoIndex: _.panoIndex
27277
27623
  } : {
@@ -27294,7 +27640,7 @@ var DD = class t extends ZT {
27294
27640
  error: null
27295
27641
  })), n.moveStartCallback && n.moveStartCallback(y), this.cameraMotion.set(h, p).catch(Y), this.locationMotion.set(m, p, f).then(() => {
27296
27642
  for (let e of this.modelScene.children) e instanceof vb && e.show();
27297
- let e = Object.assign(Object.assign(Object.assign({}, v), { mode: this.mode }), rw(this.camera.pose));
27643
+ let e = Object.assign(Object.assign(Object.assign({}, v), { mode: this.mode }), jw(this.camera.pose));
27298
27644
  this.emit("pano.arrived", $("pano.arrived", {
27299
27645
  options: n,
27300
27646
  prevPano: b,
@@ -27328,16 +27674,16 @@ var DD = class t extends ZT {
27328
27674
  }
27329
27675
  }
27330
27676
  if (r) {
27331
- let n = new e.Vector3().copy(r.point).add(OD), i = [];
27677
+ let n = new e.Vector3().copy(r.point).add(nO), i = [];
27332
27678
  for (let e of this.works) {
27333
27679
  let t = this.modelScene.models.find((t) => t.work === e);
27334
- if (!(!t || t.visible === !1) && !(e.observers.length <= 0) && (kD.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform), kD.containsPoint(n))) for (let t of e.observers) i.push(t);
27680
+ if (!(!t || t.visible === !1) && !(e.observers.length <= 0) && (rO.copy(e.observerBox).expandByScalar(10).applyMatrix4(e.transform), rO.containsPoint(n))) for (let t of e.observers) i.push(t);
27335
27681
  }
27336
- let [a, o] = Im(i, (e) => AD.copy(e.position).applyMatrix4(e.work.transform).distanceTo(n), !0);
27337
- a && o < 5 && (n.y = AD.copy(a.position).applyMatrix4(a.work.transform).y), t.state.offset.copy(n), t.state.distance = 0, this.emit("gesture.tap", t), t.defaultPrevented || this.moveToPosition(n, {}, !0);
27682
+ let [a, o] = Im(i, (e) => iO.copy(e.position).applyMatrix4(e.work.transform).distanceTo(n), !0);
27683
+ a && o < 5 && (n.y = iO.copy(a.position).applyMatrix4(a.work.transform).y), t.state.offset.copy(n), t.state.distance = 0, this.emit("gesture.tap", t), t.defaultPrevented || this.moveToPosition(n, {}, !0);
27338
27684
  } else this.emit("gesture.tap", t), t.defaultPrevented || this.cameraBounce();
27339
27685
  }
27340
- }, ND = new e.Box3(), PD = new e.Vector3(), FD = .5, ID = Math.PI / 7, LD = {
27686
+ }, sO = new e.Box3(), cO = new e.Vector3(), lO = .5, uO = Math.PI / 7, dO = {
27341
27687
  defaultLongitude: Math.PI / 4,
27342
27688
  defaultLatitude: Math.PI / 4,
27343
27689
  defaultDistance: 150,
@@ -27345,28 +27691,28 @@ var DD = class t extends ZT {
27345
27691
  minLatitude: 0,
27346
27692
  cameraType: "auto",
27347
27693
  cameraFence: null,
27348
- intersectMeshCreator: () => new zw()
27349
- }, RD = {
27350
- Floorplan: Uw,
27351
- Topview: Gw,
27352
- Panorama: ZT,
27353
- VRPanorama: WE,
27354
- XRPanorama: DD,
27355
- Model: MD,
27356
- Mapview: class t extends Tw {
27694
+ intersectMeshCreator: () => new pT()
27695
+ }, fO = {
27696
+ Floorplan: _T,
27697
+ Topview: yT,
27698
+ Panorama: TE,
27699
+ VRPanorama: vD,
27700
+ XRPanorama: tO,
27701
+ Model: oO,
27702
+ Mapview: class t extends $w {
27357
27703
  static parseArgs(e) {
27358
27704
  var n, r, i, a, o, s, c, l;
27359
27705
  if (e instanceof t) return e;
27360
27706
  let u = super.parseArgs(e);
27361
27707
  return Object.assign(Object.assign({}, u), {
27362
- defaultLongitude: (n = e.defaultLongitude) == null ? LD.defaultLongitude : n,
27363
- defaultLatitude: (r = e.defaultLatitude) == null ? LD.defaultLatitude : r,
27364
- defaultDistance: (i = e.defaultDistance) == null ? LD.defaultDistance : i,
27365
- maxLatitude: (a = e.maxLatitude) == null ? LD.maxLatitude : a,
27366
- minLatitude: (o = e.minLatitude) == null ? LD.minLatitude : o,
27367
- cameraType: (s = e.cameraType) == null ? LD.cameraType : s,
27368
- cameraFence: (c = e.cameraFence) == null ? LD.cameraFence : c,
27369
- intersectMeshCreator: (l = e.intersectMeshCreator) == null ? LD.intersectMeshCreator : l
27708
+ defaultLongitude: (n = e.defaultLongitude) == null ? dO.defaultLongitude : n,
27709
+ defaultLatitude: (r = e.defaultLatitude) == null ? dO.defaultLatitude : r,
27710
+ defaultDistance: (i = e.defaultDistance) == null ? dO.defaultDistance : i,
27711
+ maxLatitude: (a = e.maxLatitude) == null ? dO.maxLatitude : a,
27712
+ minLatitude: (o = e.minLatitude) == null ? dO.minLatitude : o,
27713
+ cameraType: (s = e.cameraType) == null ? dO.cameraType : s,
27714
+ cameraFence: (c = e.cameraFence) == null ? dO.cameraFence : c,
27715
+ intersectMeshCreator: (l = e.intersectMeshCreator) == null ? dO.intersectMeshCreator : l
27370
27716
  });
27371
27717
  }
27372
27718
  static distanceFromModel(e, t, n) {
@@ -27383,7 +27729,7 @@ var DD = class t extends ZT {
27383
27729
  } : {
27384
27730
  workCode: m.workCode,
27385
27731
  panoIndex: m.panoIndex
27386
- }, g = (o = p.fov) == null ? 60 : o, _ = q(typeof u.minLatitude == "function" ? u.minLatitude(g) : u.minLatitude, -Math.PI / 2, Math.PI / 2), v = q(typeof u.maxLatitude == "function" ? u.maxLatitude(g) : u.maxLatitude, -Math.PI / 2, Math.PI / 2), y = q((s = p.latitude) == null ? iw(m.mode) ? m.latitude : u.defaultLatitude : s, _, v), b = t.distanceFromModel(u.modelScene, g, u.camera.aspect), x = new e.Vector3(), S = (c = p.distance) == null ? Math.min(u.defaultDistance, b) : c, C = (l = p.longitude) == null ? iw(m.mode) ? m.longitude : u.defaultLongitude : l;
27732
+ }, g = (o = p.fov) == null ? 60 : o, _ = q(typeof u.minLatitude == "function" ? u.minLatitude(g) : u.minLatitude, -Math.PI / 2, Math.PI / 2), v = q(typeof u.maxLatitude == "function" ? u.maxLatitude(g) : u.maxLatitude, -Math.PI / 2, Math.PI / 2), y = q((s = p.latitude) == null ? Mw(m.mode) ? m.latitude : u.defaultLatitude : s, _, v), b = t.distanceFromModel(u.modelScene, g, u.camera.aspect), x = new e.Vector3(), S = (c = p.distance) == null ? Math.min(u.defaultDistance, b) : c, C = (l = p.longitude) == null ? Mw(m.mode) ? m.longitude : u.defaultLongitude : l;
27387
27733
  if (p.offset) x.copy(p.offset);
27388
27734
  else {
27389
27735
  let e = d.getObserver(h);
@@ -27492,7 +27838,7 @@ var DD = class t extends ZT {
27492
27838
  e && e.map !== (t == null ? void 0 : t.map) && e.map.dispose(), r.progress = 1, r.pano0 = r.pano1 = t;
27493
27839
  }
27494
27840
  let a = 0;
27495
- if (this.cameraType === "auto" ? a = +(Math.abs(Math.PI / 2 - this.cameraMotion.value.latitude) < .02 || Math.abs(-Math.PI / 2 - this.cameraMotion.value.latitude) < .02) : this.cameraType === "perspective" ? a = 0 : this.cameraType === "orthographic" && (a = 1), this.perspToOrthoMotion.getTargetKeyframe().value.perspToOrtho !== a && this.perspToOrthoMotion.set({ perspToOrtho: a }, 500).catch(Y), this.perspToOrthoMotion.ended || (this.perspToOrthoMotion.update(t), this.camera.perspToOrtho.setScalar(q(this.perspToOrthoMotion.value.perspToOrtho, 0, 1))), ow(r) || this.modelScene.parameter.set(r), ow(i) || this.setCamera(i), this.cameraFence && !this.panState && !this.pinchState && !this.mouseWheelState && !this.inMomentumMovement && this.locationMotion.ended && this.perspToOrthoMotion.ended && this.cameraMotion.ended) {
27841
+ if (this.cameraType === "auto" ? a = +(Math.abs(Math.PI / 2 - this.cameraMotion.value.latitude) < .02 || Math.abs(-Math.PI / 2 - this.cameraMotion.value.latitude) < .02) : this.cameraType === "perspective" ? a = 0 : this.cameraType === "orthographic" && (a = 1), this.perspToOrthoMotion.getTargetKeyframe().value.perspToOrtho !== a && this.perspToOrthoMotion.set({ perspToOrtho: a }, 500).catch(Y), this.perspToOrthoMotion.ended || (this.perspToOrthoMotion.update(t), this.camera.perspToOrtho.setScalar(q(this.perspToOrthoMotion.value.perspToOrtho, 0, 1))), Pw(r) || this.modelScene.parameter.set(r), Pw(i) || this.setCamera(i), this.cameraFence && !this.panState && !this.pinchState && !this.mouseWheelState && !this.inMomentumMovement && this.locationMotion.ended && this.perspToOrthoMotion.ended && this.cameraMotion.ended) {
27496
27842
  let t = $a(this.camera.pose, new e.Vector3()), n = new e.Vector3().copy(this.camera.pose.offset).sub(t.clone().multiplyScalar(this.camera.pose.distance));
27497
27843
  if (this.cameraFence.distanceToPoint(n) > .01) {
27498
27844
  let t = this.cameraFence.clampPoint(n, new e.Vector3()), r = this.camera.pose.offset.clone().add(t).sub(n), i = Object.assign(Object.assign({}, this.currentPano), {
@@ -27550,7 +27896,7 @@ var DD = class t extends ZT {
27550
27896
  userAction: this.userAction
27551
27897
  }));
27552
27898
  }, (e) => {
27553
- let t = Object.assign(Object.assign(Object.assign({}, this.currentPano), { mode: this.mode }), rw(this.camera.pose));
27899
+ let t = Object.assign(Object.assign(Object.assign({}, this.currentPano), { mode: this.mode }), jw(this.camera.pose));
27554
27900
  this.emit("initAnimation.end", $("initAnimation.end", {
27555
27901
  state: t,
27556
27902
  userAction: this.userAction
@@ -27566,9 +27912,9 @@ var DD = class t extends ZT {
27566
27912
  let n = [];
27567
27913
  for (let t of this.works) {
27568
27914
  let r = this.modelScene.models.find((e) => e.work === t);
27569
- if (!(!r || r.visible === !1) && !(t.observers.length <= 0) && (ND.copy(t.observerBox).expandByScalar(10).applyMatrix4(t.transform), ND.containsPoint(e.ray.origin) || e.ray.intersectsBox(ND))) for (let e of t.observers) n.push(e);
27915
+ if (!(!r || r.visible === !1) && !(t.observers.length <= 0) && (sO.copy(t.observerBox).expandByScalar(10).applyMatrix4(t.transform), sO.containsPoint(e.ray.origin) || e.ray.intersectsBox(sO))) for (let e of t.observers) n.push(e);
27570
27916
  }
27571
- let [r, i] = Im(n, (e) => PD.copy(e.standingPosition).applyMatrix4(e.work.transform).distanceTo(t.point), !0);
27917
+ let [r, i] = Im(n, (e) => cO.copy(e.standingPosition).applyMatrix4(e.work.transform).distanceTo(t.point), !0);
27572
27918
  return r && i < Math.max(r.standingPosition.distanceTo(this.camera.position) / 5, 10) ? r : null;
27573
27919
  }
27574
27920
  coordinatesForOffset(t) {
@@ -27622,7 +27968,7 @@ var DD = class t extends ZT {
27622
27968
  fixFinalState(t) {
27623
27969
  if (this.perspToOrthoMotion.getTargetKeyframe().value.perspToOrtho === 1) return;
27624
27970
  let n = $a(t, new e.Vector3()), r = new e.Vector3().copy(t.offset).sub(n.clone().setLength(t.distance)), i = new e.Raycaster(r, n);
27625
- i.params.Points = { threshold: .1 }, i.firstHitOnly = !0, i.hitFilter = (e) => e.distance > FD + i.near, i.near = this.camera.near, i.far = this.camera.far;
27971
+ i.params.Points = { threshold: .1 }, i.firstHitOnly = !0, i.hitFilter = (e) => e.distance > lO + i.near, i.near = this.camera.near, i.far = this.camera.far;
27626
27972
  let a;
27627
27973
  if (a = this.modelScene.intersectRaycaster(i)[0], a && a.distance < this.camera.near && (a = void 0), !a) {
27628
27974
  let t = new e.Plane(new e.Vector3(0, 1, 0), -this.modelScene.boundingBox.min.y), n = i.ray.intersectPlane(t, new e.Vector3());
@@ -27649,7 +27995,7 @@ var DD = class t extends ZT {
27649
27995
  face: null
27650
27996
  };
27651
27997
  }
27652
- a.distance >= this.camera.near && qC(t.distance, a.distance) && (t.distance = a.distance, t.offset = a.point);
27998
+ a.distance >= this.camera.near && xw(t.distance, a.distance) && (t.distance = a.distance, t.offset = a.point);
27653
27999
  }
27654
28000
  onPanGesture(t) {
27655
28001
  this.userAction = t.userAction, this.stopMomentumMovement(), this.hideIntersectMesh();
@@ -27692,7 +28038,7 @@ var DD = class t extends ZT {
27692
28038
  }, i = new e.Vector3(this.locationMotion.value.x, this.locationMotion.value.y, this.locationMotion.value.z), a = $a(this.cameraMotion.value).setLength(this.locationMotion.value.distance).add(i), o = new e.Vector3().copy(a).sub(r.target).length();
27693
28039
  o *= Math.tan(this.camera.pose.fov / 2 * Math.PI / 180);
27694
28040
  let s = this.renderer.getSize(new e.Vector2()), c = 2 * n.x * o / s.y, l = 2 * n.y * o / s.y, u = new e.Vector3();
27695
- u.setFromMatrixColumn(this.camera.matrix, 0), u.multiplyScalar(-c), i.add(u), this.camera.pose.latitude < ID ? u.setFromMatrixColumn(this.camera.matrix, 1) : (u.setFromMatrixColumn(this.camera.matrix, 0), u.crossVectors(this.camera.up, u)), u.multiplyScalar(l), i.add(u);
28041
+ u.setFromMatrixColumn(this.camera.matrix, 0), u.multiplyScalar(-c), i.add(u), this.camera.pose.latitude < uO ? u.setFromMatrixColumn(this.camera.matrix, 1) : (u.setFromMatrixColumn(this.camera.matrix, 0), u.crossVectors(this.camera.up, u)), u.multiplyScalar(l), i.add(u);
27696
28042
  let d = Object.assign(Object.assign({}, this.currentPano), {
27697
28043
  mode: this.mode,
27698
28044
  longitude: this.camera.pose.longitude,
@@ -27713,7 +28059,7 @@ var DD = class t extends ZT {
27713
28059
  z: d.offset.z
27714
28060
  }, 0).catch(Y)), t.isFinal) {
27715
28061
  let n = this.renderer.getSize(new e.Vector2()), r = 2 * t.velocityX * o / n.y, i = 2 * t.velocityY * o / n.y, a = new e.Vector3(), s = new e.Vector3();
27716
- a.setFromMatrixColumn(this.camera.matrix, 0), a.multiplyScalar(-r), s.add(a), this.camera.pose.latitude < ID ? a.setFromMatrixColumn(this.camera.matrix, 1) : (a.setFromMatrixColumn(this.camera.matrix, 0), a.crossVectors(this.camera.up, a)), a.multiplyScalar(i), s.add(a), this.inMomentumMovement = { uuid: gn() }, this.requestMomentumMovement(t, !0, {
28062
+ a.setFromMatrixColumn(this.camera.matrix, 0), a.multiplyScalar(-r), s.add(a), this.camera.pose.latitude < uO ? a.setFromMatrixColumn(this.camera.matrix, 1) : (a.setFromMatrixColumn(this.camera.matrix, 0), a.crossVectors(this.camera.up, a)), a.multiplyScalar(i), s.add(a), this.inMomentumMovement = { uuid: gn() }, this.requestMomentumMovement(t, !0, {
27717
28063
  longitude: 0,
27718
28064
  latitude: 0,
27719
28065
  x: s.x,
@@ -27772,7 +28118,7 @@ var DD = class t extends ZT {
27772
28118
  return;
27773
28119
  }
27774
28120
  if (i === void 0) return;
27775
- let a = this.modelScene.boundingBox.getCenter(new e.Vector3()), o = t.distanceFromModel(this.modelScene, this.cameraMotion.value.fov, this.camera.aspect), s = q(i / n.scale, FD, Infinity), c = n.state.offset.clone().sub($a(n.state).setLength(s)), l = this.modelScene.boundingBox.containsPoint(c), u;
28121
+ let a = this.modelScene.boundingBox.getCenter(new e.Vector3()), o = t.distanceFromModel(this.modelScene, this.cameraMotion.value.fov, this.camera.aspect), s = q(i / n.scale, lO, Infinity), c = n.state.offset.clone().sub($a(n.state).setLength(s)), l = this.modelScene.boundingBox.containsPoint(c), u;
27776
28122
  if (!l && this.pinchState && this.pinchState.scale > n.scale && a.distanceTo(c) > o ? u = n.state.distance : (u = s, this.pinchState && (this.pinchState.scale = n.scale)), n.state.distance = u, this.emit("gesture.pinch", n), !n.defaultPrevented && (this.locationMotion.set({ distance: n.state.distance }, 0).catch(Y), n.pointerType !== "mouse" && (n.type = "gesture.pan", this.onPanGesture(n)), n.isFinal)) {
27777
28123
  if (!("__fixFinalState" in n)) {
27778
28124
  let e = n.state;
@@ -27838,7 +28184,7 @@ var DD = class t extends ZT {
27838
28184
  let r = t.distanceFromModel(this.modelScene, this.cameraMotion.value.fov, this.camera.aspect), i = new e.Vector3(this.locationMotion.value.x, this.locationMotion.value.y, this.locationMotion.value.z), a = $a(this.cameraMotion.value, new e.Vector3()).negate(), o = new e.Ray(i, a).intersectBox(this.modelScene.boundingBox, new e.Vector3());
27839
28185
  o && (r += o.distanceTo(i));
27840
28186
  let s = Math.max(this.locationMotion.value.distance - this.camera.near, 0), c = n.center.delta / 10 * Math.max(s / 5, .1);
27841
- if (s <= r || c > 0) if (this.locationMotion.value.distance - c >= FD) {
28187
+ if (s <= r || c > 0) if (this.locationMotion.value.distance - c >= lO) {
27842
28188
  let e = this.locationMotion.value.distance - c;
27843
28189
  n.state.distance = e;
27844
28190
  } else {
@@ -27952,7 +28298,7 @@ var DD = class t extends ZT {
27952
28298
  return;
27953
28299
  }
27954
28300
  this.pendingTextureId = null, u.name = p;
27955
- let d = Array.isArray(u.image) ? u.image[0] : u.image, f = (c = d == null ? void 0 : d.width) == null ? 2048 : c, h = yield Sw(this.renderer, u, !0, cS), g = new fS().formPixels(h.data), _ = {
28301
+ let d = Array.isArray(u.image) ? u.image[0] : u.image, f = (c = d == null ? void 0 : d.width) == null ? 2048 : c, h = yield Xw(this.renderer, u, !0, cS), g = new fS().formPixels(h.data), _ = {
27956
28302
  panoId: o,
27957
28303
  map: u,
27958
28304
  mapSize: f,
@@ -27999,18 +28345,18 @@ var DD = class t extends ZT {
27999
28345
  this.intersectMesh.visible === !0 && (this.intersectMesh.visible = !1, this.needsRender = !0);
28000
28346
  }
28001
28347
  }
28002
- }, zD = {
28003
- Floorplan: Hw,
28004
- Topview: Ww,
28005
- Panorama: XT,
28006
- VRPanorama: UE,
28007
- XRPanorama: SD,
28008
- Model: jD,
28009
- Mapview: LD
28010
- }, BD = /* @__PURE__ */ "gesture.pan,gesture.tap,gesture.dbltap,gesture.press,gesture.pinch,gesture.mousewheel,gesture.mousemove,gesture.momentum,gesture.fire,initAnimation.start,initAnimation.end,camera.update,intersect.update,pano.select,pano.moveTo,pano.moving,pano.arrived,pano.cancel,pano.error,pano.prepare,pano.texture.load,pano.texture.progress,pano.texture.success,pano.texture.error,pano.texture.abort,xr.session.start,xr.session.end,xr.gesture.tap,xr.gesture.press,xr.gesture.buttonUp,xr.gesture.buttonDown,xr.controller.update".split(",");
28348
+ }, pO = {
28349
+ Floorplan: gT,
28350
+ Topview: vT,
28351
+ Panorama: wE,
28352
+ VRPanorama: _D,
28353
+ XRPanorama: XD,
28354
+ Model: aO,
28355
+ Mapview: dO
28356
+ }, mO = /* @__PURE__ */ "gesture.pan,gesture.tap,gesture.dbltap,gesture.press,gesture.pinch,gesture.mousewheel,gesture.mousemove,gesture.momentum,gesture.fire,initAnimation.start,initAnimation.end,camera.update,intersect.update,pano.select,pano.moveTo,pano.moving,pano.arrived,pano.cancel,pano.error,pano.prepare,pano.texture.load,pano.texture.progress,pano.texture.success,pano.texture.error,pano.texture.abort,xr.session.start,xr.session.end,xr.gesture.tap,xr.gesture.press,xr.gesture.buttonUp,xr.gesture.buttonDown,xr.controller.update".split(",");
28011
28357
  //#endregion
28012
28358
  //#region build/five/application/events-legacy.js
28013
- function VD(e) {
28359
+ function hO(e) {
28014
28360
  e.on("initAnimation.start", (t) => {
28015
28361
  e.emit("initAnimationWillStart", t.state.panoIndex, t.state, t.userAction);
28016
28362
  }), e.on("initAnimation.end", (t) => {
@@ -28152,7 +28498,7 @@ function VD(e) {
28152
28498
  }
28153
28499
  //#endregion
28154
28500
  //#region build/five/application/generateDefaultVideoElement.js
28155
- function HD() {
28501
+ function gO() {
28156
28502
  if (typeof window < "u") {
28157
28503
  let e = document.createElement("video");
28158
28504
  e.loop = !0, e.autoplay = !0, e.playsInline = !0, e.muted = !0, e.crossOrigin = "";
@@ -28164,7 +28510,7 @@ function HD() {
28164
28510
  }
28165
28511
  //#endregion
28166
28512
  //#region build/five/application/initLights.js
28167
- function UD() {
28513
+ function _O() {
28168
28514
  let t = new e.Group();
28169
28515
  t.name = "internalLights";
28170
28516
  {
@@ -28187,7 +28533,7 @@ function UD() {
28187
28533
  }
28188
28534
  //#endregion
28189
28535
  //#region build/five/application/getViewportScale.js
28190
- function WD(e) {
28536
+ function vO(e) {
28191
28537
  var t, n;
28192
28538
  let r = {}, i = e.split(/(\;|\,)/);
28193
28539
  for (let e of i) {
@@ -28196,14 +28542,14 @@ function WD(e) {
28196
28542
  }
28197
28543
  return r;
28198
28544
  }
28199
- function GD() {
28545
+ function yO() {
28200
28546
  var e;
28201
28547
  if (typeof document < "u") {
28202
28548
  let t = document.getElementsByTagName("meta");
28203
28549
  for (let n = 0; n < t.length; n++) {
28204
28550
  let r = t[n];
28205
28551
  if (r.getAttribute("name") === "viewport") {
28206
- let t = WD((e = r.getAttribute("content")) == null ? "" : e), n = Number(t["initial-scale"]);
28552
+ let t = vO((e = r.getAttribute("content")) == null ? "" : e), n = Number(t["initial-scale"]);
28207
28553
  if (!isNaN(n)) return n;
28208
28554
  }
28209
28555
  }
@@ -28212,7 +28558,7 @@ function GD() {
28212
28558
  }
28213
28559
  //#endregion
28214
28560
  //#region build/five/utils/requestPermission.js
28215
- function KD() {
28561
+ function bO() {
28216
28562
  return typeof location > "u" || location.protocol !== "https:" ? Promise.reject(/* @__PURE__ */ Error("Request DeviceOrientation Permission denied.")) : typeof DeviceOrientationEvent < "u" && typeof DeviceOrientationEvent.requestPermission == "function" ? DeviceOrientationEvent.requestPermission().then((e) => {
28217
28563
  if (e == "granted") return Promise.resolve();
28218
28564
  {
@@ -28221,7 +28567,7 @@ function KD() {
28221
28567
  }
28222
28568
  }) : Promise.resolve();
28223
28569
  }
28224
- function qD() {
28570
+ function xO() {
28225
28571
  if ("xr" in navigator) return navigator.xr.isSessionSupported("immersive-vr").then((e) => e ? Promise.resolve() : Promise.reject()).then(() => navigator.xr.requestSession("immersive-vr", { optionalFeatures: ["local-floor"] }).then((e) => Promise.resolve(e)));
28226
28572
  {
28227
28573
  let e = /* @__PURE__ */ Error("Request XR Permission denied.");
@@ -28230,9 +28576,9 @@ function qD() {
28230
28576
  }
28231
28577
  //#endregion
28232
28578
  //#region build/five/application/five.js
28233
- var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-public.realsee-cdn.cn/").replace("//vrlab-image4.ljcdn.com/", "//vr-image-4.realsee-cdn.cn/").replace("//vrlab-image3.ljcdn.com/", "//vr-image-3.realsee-cdn.cn/").replace("//vrlab-image2.ljcdn.com/", "//vr-image-2.realsee-cdn.cn/").replace("//vrlab-image1.ljcdn.com/", "//vr-image-1.realsee-cdn.cn/"), ZD = new e.Sphere(), QD = new e.Box3(), $D = new e.Vector4(), eO = new e.Vector4(), tO = new e.Color(), nO = new e.Vector2(), rO = /* @__PURE__ */ new WeakMap(), iO = Hx([zx(null)]), aO = {}, oO = class t extends xn {
28579
+ var SO = 800, CO = 90, wO = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-public.realsee-cdn.cn/").replace("//vrlab-image4.ljcdn.com/", "//vr-image-4.realsee-cdn.cn/").replace("//vrlab-image3.ljcdn.com/", "//vr-image-3.realsee-cdn.cn/").replace("//vrlab-image2.ljcdn.com/", "//vr-image-2.realsee-cdn.cn/").replace("//vrlab-image1.ljcdn.com/", "//vr-image-1.realsee-cdn.cn/"), TO = new e.Sphere(), EO = new e.Box3(), DO = new e.Vector4(), OO = new e.Vector4(), kO = new e.Color(), AO = new e.Vector2(), jO = /* @__PURE__ */ new WeakMap(), MO = Hx([zx(null)]), NO = {}, PO = class t extends xn {
28234
28580
  static get version() {
28235
- return "1.0.0-alpha.8";
28581
+ return "1.0.0-alpha.9";
28236
28582
  }
28237
28583
  static get dracoPath() {
28238
28584
  return Uf.decoderPath;
@@ -28254,7 +28600,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28254
28600
  }
28255
28601
  constructor(t = {}) {
28256
28602
  var n, r, i, a, o, s, c, l, u, d, f, p;
28257
- if (super(), this.pbmGaussianSplattingRenderMesh = null, this.fiveId = gn(), aO[this.fiveId] = this, this.currentUpdateArgs = {
28603
+ if (super(), this.pbmGaussianSplattingRenderMesh = null, this.fiveId = gn(), NO[this.fiveId] = this, this.currentUpdateArgs = {
28258
28604
  time: J(),
28259
28605
  args: []
28260
28606
  }, this.currentMode = "Panorama", this.pano = {
@@ -28271,14 +28617,14 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28271
28617
  }, this.fps = {
28272
28618
  testCount: 0,
28273
28619
  testTime: J()
28274
- }, this.modeChangeDuration = (c = t.modeChangeDuration) == null ? JD : c, this.enableWheel = (l = t.enableWheel) == null ? !0 : l, this.enableHDR = !!t.enableHDR && QS && !t.forceWebGL, typeof window < "u") if ("renderer" in t) t.renderer instanceof hC && this.throwError(/* @__PURE__ */ Error("cannot render a internal renderer")), this.renderer = t.renderer;
28620
+ }, this.modeChangeDuration = (c = t.modeChangeDuration) == null ? SO : c, this.enableWheel = (l = t.enableWheel) == null ? !0 : l, this.enableHDR = !!t.enableHDR && EC && !t.forceWebGL, typeof window < "u") if ("renderer" in t) t.renderer instanceof UC && this.throwError(/* @__PURE__ */ Error("cannot render a internal renderer")), this.renderer = t.renderer;
28275
28621
  else try {
28276
- this.renderer = new hC({
28622
+ this.renderer = new UC({
28277
28623
  outputType: this.enableHDR ? e.HalfFloatType : void 0,
28278
28624
  logarithmicDepthBuffer: t.logarithmicDepthBuffer,
28279
28625
  forceWebGL: (u = t.forceWebGL) == null ? !1 : u
28280
28626
  });
28281
- let n = GD();
28627
+ let n = yO();
28282
28628
  this.renderer.setPixelRatio(n === 1 ? window.devicePixelRatio : 1), this.renderer.setSize(512, 512), this.renderer.setClearColor(this.backgroundColor, this.backgroundAlpha);
28283
28629
  } catch (e) {
28284
28630
  let t = e instanceof Error ? e : Error(String(e));
@@ -28292,7 +28638,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28292
28638
  bottom: 0,
28293
28639
  width: 1,
28294
28640
  height: 1
28295
- }, t.viewport), this.camera = new po(YD), this.scene = new xC(), this.scene.background = this.backgroundColor, this.xrCustomObjectsScene = new e.Scene(), this.scene.add(this.xrCustomObjectsScene), this.scene.matrixAutoUpdate = !1, this.requestProxy = (p = t.requestProxy) == null ? XD : p, this.networkSubscribe = new Wl(), this.networkSubscribe.on("network", (e, t, n, r) => {
28641
+ }, t.viewport), this.camera = new po(CO), this.scene = new YC(), this.scene.background = this.backgroundColor, this.xrCustomObjectsScene = new e.Scene(), this.scene.add(this.xrCustomObjectsScene), this.scene.matrixAutoUpdate = !1, this.requestProxy = (p = t.requestProxy) == null ? wO : p, this.networkSubscribe = new Wl(), this.networkSubscribe.on("network", (e, t, n, r) => {
28296
28642
  var i;
28297
28643
  this.emit("network.resource", $("network.resource", {
28298
28644
  source: e,
@@ -28300,17 +28646,17 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28300
28646
  requestState: n,
28301
28647
  detail: r
28302
28648
  })), (i = this.analysis) == null || i.network(this.works, e, t, n, r);
28303
- }), this.readyCallbacks = [], this.syncingState = !1, this.helperGroup = new e.Group(), this.helperGroup.name = "helper", this.helperGroup.matrixAutoUpdate = !1, this.scene.add(this.helperGroup), rO.set(this, iO), this.modelScene = new kb({ fiveId: this.fiveId }), this.modelScene.addEventListener("model.create", (e) => {
28649
+ }), this.readyCallbacks = [], this.syncingState = !1, this.helperGroup = new e.Group(), this.helperGroup.name = "helper", this.helperGroup.matrixAutoUpdate = !1, this.scene.add(this.helperGroup), jO.set(this, MO), this.modelScene = new kb({ fiveId: this.fiveId }), this.modelScene.addEventListener("model.create", (e) => {
28304
28650
  this.bindModel(e.model);
28305
28651
  }), this.scene.add(this.modelScene);
28306
- let [m] = this.modelScene.setModels(iO, { forceReplaceImmediately: !0 });
28652
+ let [m] = this.modelScene.setModels(MO, { forceReplaceImmediately: !0 });
28307
28653
  Q(m, "loaded", {
28308
28654
  get() {
28309
28655
  return !1;
28310
28656
  },
28311
28657
  set(e) {}
28312
- }), this.videoTexture = new e.VideoTexture(t.videoInstance || HD());
28313
- let h = UD();
28658
+ }), this.videoTexture = new e.VideoTexture(t.videoInstance || gO());
28659
+ let h = _O();
28314
28660
  this.scene.add(h), this.state = {
28315
28661
  mode: this.currentMode,
28316
28662
  workCode: this.pano.workCode,
@@ -28328,16 +28674,16 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28328
28674
  }, _ = () => {
28329
28675
  this.needsRender = !0;
28330
28676
  }, v = () => {
28331
- this.renderer instanceof hC && this.renderer.reconfigureContext(), this.needsRender = !0;
28677
+ this.renderer instanceof UC && this.renderer.reconfigureContext(), this.needsRender = !0;
28332
28678
  }, y = () => {
28333
28679
  typeof document < "u" && document.visibilityState === "visible" && v();
28334
28680
  }, b = () => {
28335
28681
  v();
28336
28682
  };
28337
- if (this.renderer instanceof hC && (this.renderer.onDeviceLostCallback = () => {
28683
+ if (this.renderer instanceof UC && (this.renderer.onDeviceLostCallback = () => {
28338
28684
  v();
28339
28685
  }), typeof document < "u" && (document.addEventListener("visibilitychange", y, !1), document.addEventListener("fullscreenchange", g, !1)), typeof window < "u" && window.addEventListener("pageshow", b, !1), this.renderer && this.renderer.domElement.addEventListener("webglcontextrestored", _, !1), this.removeEventListeners = () => {
28340
- typeof document < "u" && (document.removeEventListener("visibilitychange", y, !1), document.removeEventListener("fullscreenchange", g, !1)), typeof window < "u" && window.removeEventListener("pageshow", b, !1), this.renderer instanceof hC && (this.renderer.onDeviceLostCallback = void 0), this.renderer && this.renderer.domElement.removeEventListener("webglcontextrestored", _, !1);
28686
+ typeof document < "u" && (document.removeEventListener("visibilitychange", y, !1), document.removeEventListener("fullscreenchange", g, !1)), typeof window < "u" && window.removeEventListener("pageshow", b, !1), this.renderer instanceof UC && (this.renderer.onDeviceLostCallback = void 0), this.renderer && this.renderer.domElement.removeEventListener("webglcontextrestored", _, !1);
28341
28687
  }, this.loadWorkTask = this.prepare(), this.plugins = {}, t.plugins && t.plugins.length) {
28342
28688
  for (let e of t.plugins) if (typeof e == "function") e(this);
28343
28689
  else if (Array.isArray(e)) {
@@ -28348,7 +28694,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28348
28694
  }
28349
28695
  }
28350
28696
  }
28351
- VD(this), this.fiveRenderer = new YS({ outputType: this.enableHDR ? e.HalfFloatType : void 0 }), this.adaptiveLuminancePass = new OS(), this.adaptiveLuminancePass.enabled = !1, this.fiveRenderer.composer.addPass(this.adaptiveLuminancePass), this.eyeDomeLightingPass = new AS(this.camera), this.eyeDomeLightingPass.enabled = !1, this.fiveRenderer.composer.addPass(this.eyeDomeLightingPass), this.pbmGaussianSplattingRenderMesh = new la(), this.scene.add(this.pbmGaussianSplattingRenderMesh);
28697
+ hO(this), this.fiveRenderer = new CC({ outputType: this.enableHDR ? e.HalfFloatType : void 0 }), this.adaptiveLuminancePass = new OS(), this.adaptiveLuminancePass.enabled = !1, this.fiveRenderer.composer.addPass(this.adaptiveLuminancePass), this.eyeDomeLightingPass = new AS(this.camera), this.eyeDomeLightingPass.enabled = !1, this.fiveRenderer.composer.addPass(this.eyeDomeLightingPass), this.pbmGaussianSplattingRenderMesh = new la(), this.scene.add(this.pbmGaussianSplattingRenderMesh);
28352
28698
  }
28353
28699
  get ident() {
28354
28700
  return this.fiveId;
@@ -28362,11 +28708,11 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28362
28708
  dispose() {
28363
28709
  var t;
28364
28710
  if (this.destroyed === !0) return;
28365
- delete aO[this.fiveId], this.emit("dispose"), this.destroyed = !0, this.pause(), this.stopAnimationLoop && (this.stopAnimationLoop(), this.stopAnimationLoop = void 0), this.off(), this.networkSubscribe.off(), this.controller && (this.controller.destroy(), this.controller = void 0);
28711
+ delete NO[this.fiveId], this.emit("dispose"), this.destroyed = !0, this.pause(), this.stopAnimationLoop && (this.stopAnimationLoop(), this.stopAnimationLoop = void 0), this.off(), this.networkSubscribe.off(), this.controller && (this.controller.destroy(), this.controller = void 0);
28366
28712
  let n = this.getElement();
28367
28713
  n && n.parentNode && n.parentNode.removeChild(n);
28368
28714
  let r = this.modelScene.parameter;
28369
- r.pano0 && r.pano0.map.dispose(), r.pano1 && r.pano1.map !== ((t = r.pano0) == null ? void 0 : t.map) && r.pano1.map.dispose(), r.reset("pano0", "pano1"), this.modelScene.dispose(), rO.set(this, iO), this.renderer && (!(this.renderer instanceof hC) || this.renderer.isInitialized) && this.renderer.render(new e.Scene(), new e.PerspectiveCamera()), this.fiveRenderer.dispose(), this.renderer instanceof hC && this.renderer.dispose();
28715
+ r.pano0 && r.pano0.map.dispose(), r.pano1 && r.pano1.map !== ((t = r.pano0) == null ? void 0 : t.map) && r.pano1.map.dispose(), r.reset("pano0", "pano1"), this.modelScene.dispose(), jO.set(this, MO), this.renderer && (!(this.renderer instanceof UC) || this.renderer.isInitialized) && this.renderer.render(new e.Scene(), new e.PerspectiveCamera()), this.fiveRenderer.dispose(), this.renderer instanceof UC && this.renderer.dispose();
28370
28716
  }
28371
28717
  setViewport(e) {
28372
28718
  Object.assign(this.viewport, e), this.needsRender = !0;
@@ -28386,7 +28732,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28386
28732
  }
28387
28733
  appendTo(e, t = {}) {
28388
28734
  if (!this.renderer) return;
28389
- if (!(this.renderer instanceof hC)) {
28735
+ if (!(this.renderer instanceof UC)) {
28390
28736
  this.throwError(/* @__PURE__ */ Error("cannot call appendTo method when render a external renderer"));
28391
28737
  return;
28392
28738
  }
@@ -28401,7 +28747,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28401
28747
  if (!this.renderer) return;
28402
28748
  let c = this.renderer.domElement.parentNode, { width: l = (n = c == null ? void 0 : c.offsetWidth) == null ? 512 : n, height: u = (r = c == null ? void 0 : c.offsetHeight) == null ? 512 : r } = e;
28403
28749
  if (l = Math.max(1, l), u = Math.max(1, u), !t) {
28404
- let e = GD(), n = typeof window < "u" ? window.devicePixelRatio : 1;
28750
+ let e = yO(), n = typeof window < "u" ? window.devicePixelRatio : 1;
28405
28751
  if (t = (i = e === 1 ? n : 1) == null ? 1 : i, t > 1) {
28406
28752
  let e = Math.max(l, u) * t, n = Math.min((s = (o = (a = this.renderer.backend.device) == null ? void 0 : a.limits) == null ? void 0 : o.maxTextureDimension2D) == null ? 8192 : s, 4096);
28407
28753
  e > n && (t = Math.max(t / e * n, 1), t = Math.floor(t * 100) / 100);
@@ -28435,7 +28781,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28435
28781
  return this.controller.updateCameraWithKeyframes(e, t, n);
28436
28782
  }
28437
28783
  get works() {
28438
- return rO.get(this) || iO;
28784
+ return jO.get(this) || MO;
28439
28785
  }
28440
28786
  get work() {
28441
28787
  return this.works[0];
@@ -28451,7 +28797,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28451
28797
  }
28452
28798
  load(e, t, n, r = !0) {
28453
28799
  if (!this.renderer) throw Error("renderer is not initialized");
28454
- let i = this.loadWorkTask.then(() => XC(e) ? e.then((e) => this.load_(e, t, n, r)) : this.load_(e, t, n, r));
28800
+ let i = this.loadWorkTask.then(() => ww(e) ? e.then((e) => this.load_(e, t, n, r)) : this.load_(e, t, n, r));
28455
28801
  return this.loadWorkTask = i.catch((e) => {
28456
28802
  this.throwError(e);
28457
28803
  }), i;
@@ -28459,7 +28805,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28459
28805
  load_(n, r, i, a = !0) {
28460
28806
  var o, s, c, l, u, d, f, p, m, h;
28461
28807
  let g = {};
28462
- typeof i == "number" ? g.duration = i : typeof i == "object" && Object.assign(g, i), this.works === iO && (g.duration === void 0 && (g.duration = 0), g.effect === void 0 && (g.effect = "instant"));
28808
+ typeof i == "number" ? g.duration = i : typeof i == "object" && Object.assign(g, i), this.works === MO && (g.duration === void 0 && (g.duration = 0), g.effect === void 0 && (g.effect = "instant"));
28463
28809
  let _ = {};
28464
28810
  Object.assign(_, g.model), !_["3d-tiles"] && g["3d-tiles"] && (_["3d-tiles"] = g["3d-tiles"]), !_.textureOptions && g.textureOptions && (_.textureOptions = g.textureOptions), !_.textureOptions && this.textureOptions && (_.textureOptions = this.textureOptions);
28465
28811
  let v = [];
@@ -28473,7 +28819,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28473
28819
  return this.throwError(e), Promise.reject(e);
28474
28820
  }
28475
28821
  for (let e of y) this.bindWorkFetcher(e);
28476
- r === void 0 && (r = "inherit"), r === "inherit" && this.works === iO && (r = "initial");
28822
+ r === void 0 && (r = "inherit"), r === "inherit" && this.works === MO && (r = "initial");
28477
28823
  let b = this.currentMode, x = y.initial, S = x.work.observers[0], C = S ? {
28478
28824
  workCode: S.work.workCode,
28479
28825
  panoIndex: S.panoIndex
@@ -28544,7 +28890,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28544
28890
  duration: E,
28545
28891
  effect: D,
28546
28892
  userAction: a
28547
- } }, this.commonParams()), this.controllerInits[e]), c = RD[o.mode].initAnimationEndState(s);
28893
+ } }, this.commonParams()), this.controllerInits[e]), c = fO[o.mode].initAnimationEndState(s);
28548
28894
  if (this.controller && b === e) this.controller.updateWork(y, c, {
28549
28895
  effect: D,
28550
28896
  duration: E
@@ -28552,7 +28898,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28552
28898
  else {
28553
28899
  if (this.controller) this.controller.destroy();
28554
28900
  else {
28555
- let t = RD[e].initAnimationEndState(s);
28901
+ let t = fO[e].initAnimationEndState(s);
28556
28902
  this.camera.setFromPose(t), this.emit("camera.update", $("camera.update", {
28557
28903
  state: this.getCurrentState(),
28558
28904
  userAction: a
@@ -28573,10 +28919,10 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28573
28919
  }
28574
28920
  this.state.workCode = this.pano.workCode, this.state.panoIndex = this.pano.panoIndex, this.updateTime(this.currentUpdateArgs.time, 0, ...this.currentUpdateArgs.args);
28575
28921
  };
28576
- rO.set(this, y);
28922
+ jO.set(this, y);
28577
28923
  let k = Promise.resolve();
28578
28924
  if (w === t.Mode.Floorplan || w === t.Mode.Topview || w === t.Mode.Mapview || w === t.Mode.Model) {
28579
- this.modelScene.loaded === !1 && (this.camera.setFromPose(T), nw(this.state, this.camera.pose));
28925
+ this.modelScene.loaded === !1 && (this.camera.setFromPose(T), Aw(this.state, this.camera.pose));
28580
28926
  let e = this.modelScene.setModels(y, _);
28581
28927
  k = Promise.all(e.map((e) => e.loadedReady)).then(() => {
28582
28928
  this.needsRender = !0, O(w, C, T), this.emit("camera.update", $("camera.update", {
@@ -28624,12 +28970,12 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28624
28970
  pano0: null,
28625
28971
  pano1: null,
28626
28972
  modelAlpha: 1
28627
- }), rO.set(this, iO), this.modelScene.setModels(iO, { forceReplaceImmediately: !0 }), this.renderer && this.modelScene.update(this.renderer, this.camera), this.needsRender = !0, this.currentMode = "Panorama", this.pano = {
28973
+ }), jO.set(this, MO), this.modelScene.setModels(MO, { forceReplaceImmediately: !0 }), this.renderer && this.modelScene.update(this.renderer, this.camera), this.needsRender = !0, this.currentMode = "Panorama", this.pano = {
28628
28974
  workCode: "",
28629
28975
  panoIndex: 0
28630
28976
  }, this.camera.setFromPose({
28631
28977
  distance: 0,
28632
- fov: YD,
28978
+ fov: CO,
28633
28979
  longitude: 0,
28634
28980
  latitude: 0,
28635
28981
  offset: new e.Vector3(0, 0, 0)
@@ -28678,7 +29024,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28678
29024
  duration: f,
28679
29025
  effect: p,
28680
29026
  userAction: i
28681
- } }, this.commonParams()), this.controllerInits[e]), a = RD[e].initAnimationEndState(r), o = $("mode.change.request", {
29027
+ } }, this.commonParams()), this.controllerInits[e]), a = fO[e].initAnimationEndState(r), o = $("mode.change.request", {
28682
29028
  prevMode: this.currentMode,
28683
29029
  mode: e,
28684
29030
  state: a,
@@ -28697,22 +29043,22 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28697
29043
  }
28698
29044
  o();
28699
29045
  }, v = Bu.shared.getContext();
28700
- if (v && (typeof XRSession < "u" && v instanceof XRSession && v.end(), Bu.shared.setContext(null)), e === t.Mode.VRPanorama) this.requestFullscreen(), KD().then(() => _()).catch((e) => {
29046
+ if (v && (typeof XRSession < "u" && v instanceof XRSession && v.end(), Bu.shared.setContext(null)), e === t.Mode.VRPanorama) this.requestFullscreen(), bO().then(() => _()).catch((e) => {
28701
29047
  let t = e instanceof Error ? e : Error(String(e));
28702
29048
  this.exitFullscreen(), this.throwError(t), s(t);
28703
29049
  });
28704
29050
  else if (e === t.Mode.XRPanorama) {
28705
- if (!aD.isBackendXRCapable(this.renderer)) {
29051
+ if (!ND.isBackendXRCapable(this.renderer)) {
28706
29052
  let e = /* @__PURE__ */ Error("XRPanorama 需要 WebGL2 回落后端。请在 new Five() 时传入 { forceWebGL: true }。后端在运行时无法切换,设备检测必须发生在 new Five() 之前。");
28707
29053
  this.throwError(e), s(e);
28708
29054
  return;
28709
29055
  }
28710
- if (!aD.isBrowserXRCapable()) {
29056
+ if (!ND.isBrowserXRCapable()) {
28711
29057
  let e = /* @__PURE__ */ Error("当前浏览器不支持 WebXR(navigator.xr 不存在)。");
28712
29058
  this.throwError(e), s(e);
28713
29059
  return;
28714
29060
  }
28715
- qD().then((e) => {
29061
+ xO().then((e) => {
28716
29062
  Bu.shared.setContext(e), a = !0;
28717
29063
  try {
28718
29064
  _();
@@ -28734,10 +29080,10 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28734
29080
  let c = J(), l = this.renderer.getPixelRatio(), u = this.renderer.getRenderTarget(), d = this.getSize(new e.Vector2()), f = 0, p = 0, m = 1, h = 1, g, _, v, y, b;
28735
29081
  typeof t == "number" ? (f = t, typeof n == "number" && (p = n), typeof r == "number" && (m = r), typeof i == "number" && (h = i), g = a, _ = o, b = s) : (f = t.x, p = t.y, m = t.width, h = t.height, g = t.pixelRatio, _ = t.flipY, v = t.helperVisible, y = t.skipPanorama, b = t.buffer), f = Math.floor(f), p = Math.floor(p), m = Math.floor(m), h = Math.floor(h), g = Math.floor(g == null ? l : g), _ = _ == null ? !1 : _;
28736
29082
  let x = this.helperVisible, S = this.modelScene.parameter.modelAlpha;
28737
- this.helperVisible = v == null ? this.helperVisible : v, y && (this.controller instanceof RD.Panorama || this.controller instanceof RD.VRPanorama || this.controller instanceof RD.XRPanorama) && y === !0 && this.modelScene.parameter.set("modelAlpha", 1), this.modelScene.update(this.renderer, this.camera);
29083
+ this.helperVisible = v == null ? this.helperVisible : v, y && (this.controller instanceof fO.Panorama || this.controller instanceof fO.VRPanorama || this.controller instanceof fO.XRPanorama) && y === !0 && this.modelScene.parameter.set("modelAlpha", 1), this.modelScene.update(this.renderer, this.camera);
28738
29084
  let C = this.getPixelsRenderTarget;
28739
29085
  C.setSize(m * g, h * g), this.renderer.setRenderTarget(C), this.camera.pixelRatio = g, this.camera.resolution.set(m, h), this.camera.setViewOffset(d.width, d.height, f, d.height - p - h, m, h), this.camera.aspect = d.width / d.height, this.camera.updateTime(c), this.scene.update(this.renderer, this.camera);
28740
- let w = this.renderer.autoClear, T = this.renderer.autoClearColor, E = this.renderer.autoClearDepth, D = this.renderer.autoClearStencil, O = this.renderer.getClearColor(tO), k = this.renderer.getClearAlpha(), A = this.renderer.getScissorTest();
29086
+ let w = this.renderer.autoClear, T = this.renderer.autoClearColor, E = this.renderer.autoClearDepth, D = this.renderer.autoClearStencil, O = this.renderer.getClearColor(kO), k = this.renderer.getClearAlpha(), A = this.renderer.getScissorTest();
28741
29087
  this.renderer.autoClear = !0, this.renderer.autoClearColor = !0, this.renderer.autoClearDepth = !0, this.renderer.autoClearStencil = !0, this.renderer.setScissorTest(!1);
28742
29088
  let j = this.scene.background;
28743
29089
  this.scene.background = this.camera.isOrthographicCamera || this.backgroundAlpha < 1 ? null : j, this.renderer.render(this.scene, this.camera), this.scene.background = j, this.renderer.autoClear = w, this.renderer.autoClearColor = T, this.renderer.autoClearDepth = E, this.renderer.autoClearStencil = D, this.renderer.setClearColor(O, k), this.renderer.setScissorTest(A), this.helperVisible = x, S === void 0 ? this.modelScene.parameter.reset("modelAlpha") : this.modelScene.parameter.set("modelAlpha", S), this.renderer.setRenderTarget(u), this.camera.clearViewOffset(), this.camera.pixelRatio = l, this.camera.resolution.copy(d), this.camera.aspect = this.camera.resolution.width / this.camera.resolution.height, this.camera.updateTime(c), this.modelScene.update(this.renderer, this.camera), this.scene.update(this.renderer, this.camera);
@@ -28770,9 +29116,9 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28770
29116
  if (!t) return;
28771
29117
  let n = t.getRenderTarget();
28772
29118
  t.setRenderTarget(null);
28773
- let r = t.autoClear, i = t.autoClearColor, a = t.autoClearDepth, o = t.autoClearStencil, s = t.getClearColor(tO), c = t.getClearAlpha(), l = t.getViewport($D), u = t.getScissor(eO), d = t.getScissorTest();
29119
+ let r = t.autoClear, i = t.autoClearColor, a = t.autoClearDepth, o = t.autoClearStencil, s = t.getClearColor(kO), c = t.getClearAlpha(), l = t.getViewport(DO), u = t.getScissor(OO), d = t.getScissorTest();
28774
29120
  t.autoClear = !0, t.autoClearColor = !0, t.autoClearDepth = !0, t.autoClearStencil = !0;
28775
- let f = t.getSize(nO), p = Math.floor(f.x * this.viewport.left), m = Math.floor(f.y * this.viewport.bottom), h = Math.floor(f.x * this.viewport.width), g = Math.floor(f.y * this.viewport.height);
29121
+ let f = t.getSize(AO), p = Math.floor(f.x * this.viewport.left), m = Math.floor(f.y * this.viewport.bottom), h = Math.floor(f.x * this.viewport.width), g = Math.floor(f.y * this.viewport.height);
28776
29122
  t.setClearColor(this.backgroundColor, this.backgroundAlpha), t.setViewport(p, m, h, g), t.setScissor(p, m, h, g);
28777
29123
  let _ = this.viewport.bottom !== 0 || this.viewport.left !== 0 || this.viewport.width !== 1 || this.viewport.height !== 1;
28778
29124
  t.setScissorTest(_);
@@ -28795,8 +29141,8 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28795
29141
  }, !0, 0, 10);
28796
29142
  }
28797
29143
  if (this.camera.autoNearFar) {
28798
- QD.makeEmpty(), QD.expandByObject(this.modelScene.boundingMesh);
28799
- let t = QD.getBoundingSphere(ZD), n = t.radius * 2;
29144
+ EO.makeEmpty(), EO.expandByObject(this.modelScene.boundingMesh);
29145
+ let t = EO.getBoundingSphere(TO), n = t.radius * 2;
28800
29146
  t.containsPoint(this.camera.position) || (n = this.camera.position.distanceTo(t.center) + t.radius);
28801
29147
  let r = q(n / 500, .001, .1), i = q(n, 800);
28802
29148
  this.camera.near !== r && (this.camera.near = r), this.camera.far !== i && (this.camera.far = i), this.camera.updateTime(e);
@@ -28805,14 +29151,14 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28805
29151
  let e = this.modelScene.visible;
28806
29152
  this.modelScene.visible = !1, this.scene.update(this.renderer, this.camera), this.modelScene.visible = e;
28807
29153
  }
28808
- if (this.syncingState = !1, this.controller && this.controller.needsRender === !0 && (this.controller.needsRender = !1, this.needsRender = !0), this.camera.needsRender === !0 && (this.camera.needsRender = !1, this.needsRender = !0), this.modelScene.needsRender === !0 && (this.modelScene.needsRender = !1, this.needsRender = !0), this.scene.needsRender === !0 && (this.scene.needsRender = !1, this.needsRender = !0), this.pbmGaussianSplattingRenderMesh && this.pbmGaussianSplattingRenderMesh.needsRender === !0 && (this.pbmGaussianSplattingRenderMesh.needsRender = !1, this.needsRender = !0), this.onlyRenderIfNeeds !== !0 && (this.needsRender = !0), this.paused === !0 || this.renderer instanceof hC && !this.renderer.isInitialized) return;
29154
+ if (this.syncingState = !1, this.controller && this.controller.needsRender === !0 && (this.controller.needsRender = !1, this.needsRender = !0), this.camera.needsRender === !0 && (this.camera.needsRender = !1, this.needsRender = !0), this.modelScene.needsRender === !0 && (this.modelScene.needsRender = !1, this.needsRender = !0), this.scene.needsRender === !0 && (this.scene.needsRender = !1, this.needsRender = !0), this.pbmGaussianSplattingRenderMesh && this.pbmGaussianSplattingRenderMesh.needsRender === !0 && (this.pbmGaussianSplattingRenderMesh.needsRender = !1, this.needsRender = !0), this.onlyRenderIfNeeds !== !0 && (this.needsRender = !0), this.paused === !0 || this.renderer instanceof UC && !this.renderer.isInitialized) return;
28809
29155
  let r = $("render.prepare", { needsRender: this.needsRender });
28810
29156
  this.emit("render.prepare", r), r.defaultPrevented && (this.needsRender = !1);
28811
29157
  let i = this.needsRender;
28812
29158
  this.render(), this.needsRender = !1, this.emit("render", $("render", { needsRender: i })), this.hasListener("fps") && (this.fps.testTime && e - this.fps.testTime < 1e3 ? this.fps.testCount++ : (this.emit("fps", this.fps.testCount), this.fps.testTime = e, this.fps.testCount = 0));
28813
29159
  }
28814
29160
  pause() {
28815
- this.paused = !0, this.renderer && this.renderer instanceof hC && this.renderer.clear(!0, !0, !0);
29161
+ this.paused = !0, this.renderer && this.renderer instanceof UC && this.renderer.clear(!0, !0, !0);
28816
29162
  }
28817
29163
  play() {
28818
29164
  this.needsRender = !0, this.paused = !1;
@@ -28930,7 +29276,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28930
29276
  duration: this.modeChangeDuration,
28931
29277
  effect: "fly",
28932
29278
  userAction: !1
28933
- } }, this.commonParams()), this.controllerInits[h]), i = RD[h].initAnimationEndState(r);
29279
+ } }, this.commonParams()), this.controllerInits[h]), i = fO[h].initAnimationEndState(r);
28934
29280
  g = i.longitude, _ = i.latitude, v = i.fov, y = i.offset, b = i.distance;
28935
29281
  } else g = (s = t.longitude) == null ? this.state.longitude : s, _ = (c = t.latitude) == null ? this.state.latitude : c, v = (l = t.fov) == null ? this.state.fov : l, y = (u = t.offset) == null ? this.state.offset : u, b = (d = t.distance) == null ? this.state.distance : d;
28936
29282
  let x = {
@@ -28946,7 +29292,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28946
29292
  this.emit("state.set", $("state.set", {
28947
29293
  userAction: r,
28948
29294
  state: x
28949
- })), tw(this.state, x) || (this.controller && x.mode === "VRPanorama" && x.mode !== this.state.mode ? (ew(this.state, x), this.changeMode("VRPanorama")) : this.controller && x.mode === "XRPanorama" && x.mode !== this.state.mode ? (ew(this.state, x), this.changeMode("XRPanorama")) : (ew(this.state, x), this.controller && r && (this.controller.userAction = !1), n && this.state.mode === x.mode && (this.syncingState = this.syncState(J(), 0, n), this.syncingState && ((f = this.controller) == null || f.updateTime(J(), 0), this.syncingState = !1)), this.emit("state.change", $("state.change", {
29295
+ })), kw(this.state, x) || (this.controller && x.mode === "VRPanorama" && x.mode !== this.state.mode ? (Ow(this.state, x), this.changeMode("VRPanorama")) : this.controller && x.mode === "XRPanorama" && x.mode !== this.state.mode ? (Ow(this.state, x), this.changeMode("XRPanorama")) : (Ow(this.state, x), this.controller && r && (this.controller.userAction = !1), n && this.state.mode === x.mode && (this.syncingState = this.syncState(J(), 0, n), this.syncingState && ((f = this.controller) == null || f.updateTime(J(), 0), this.syncingState = !1)), this.emit("state.change", $("state.change", {
28950
29296
  userAction: r,
28951
29297
  state: this.state
28952
29298
  })), (p = this.analysis) == null || p.state(this.works, this.state)));
@@ -28968,8 +29314,8 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28968
29314
  return this.changeMode(this.state.mode, e, this.modeChangeDuration, this.controller.userAction), !0;
28969
29315
  }
28970
29316
  if (!this.controller.isReady()) return !1;
28971
- if (this.controller instanceof RD.Model) {
28972
- if (YC(this.camera.pose.offset, this.state.offset)) {
29317
+ if (this.controller instanceof fO.Model) {
29318
+ if (Cw(this.camera.pose.offset, this.state.offset)) {
28973
29319
  let e = {
28974
29320
  longitude: this.state.longitude,
28975
29321
  latitude: this.state.latitude,
@@ -28994,7 +29340,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28994
29340
  return this.controller.moveToPano(e, t, !1), !0;
28995
29341
  }
28996
29342
  }
28997
- if (this.controller instanceof RD.Floorplan || this.controller instanceof RD.Topview || this.controller instanceof RD.Mapview) {
29343
+ if (this.controller instanceof fO.Floorplan || this.controller instanceof fO.Topview || this.controller instanceof fO.Mapview) {
28998
29344
  let t = .2, n = Math.PI / 45, r = i ? this.state.fov : hS(this.camera.pose.fov, this.state.fov, 1), a = Math.abs(this.camera.pose.distance - this.state.distance), o = a > t * 15 ? a / 15 : .2, s = i ? this.state.distance : hS(this.camera.pose.distance, this.state.distance, o), c = this.camera.pose.offset.distanceTo(this.state.offset), l = c > t * 15 ? c / 15 : t, u = i ? new e.Vector3().copy(this.state.offset) : gS(this.camera.pose.offset, this.state.offset, l), { longitude: d, latitude: f } = i ? {
28999
29345
  longitude: this.state.longitude,
29000
29346
  latitude: this.state.latitude
@@ -29005,7 +29351,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
29005
29351
  longitude: this.state.longitude,
29006
29352
  latitude: this.state.latitude
29007
29353
  }, n);
29008
- if (qC(r, this.camera.pose.fov) || YC(u, this.camera.pose.offset) || qC(s, this.camera.pose.distance) || qC(d, this.camera.pose.longitude, Math.PI * 2) || qC(f, this.camera.pose.latitude)) {
29354
+ if (xw(r, this.camera.pose.fov) || Cw(u, this.camera.pose.offset) || xw(s, this.camera.pose.distance) || xw(d, this.camera.pose.longitude, Math.PI * 2) || xw(f, this.camera.pose.latitude)) {
29009
29355
  let e = {
29010
29356
  x: u.x,
29011
29357
  y: u.y,
@@ -29027,7 +29373,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
29027
29373
  longitude: this.state.longitude,
29028
29374
  latitude: this.state.latitude
29029
29375
  }, t), o = this.state.distance, s = new e.Vector3().copy(this.state.offset);
29030
- if (qC(o, this.camera.pose.distance) && (this.state.distance = this.camera.pose.distance), YC(s, this.camera.pose.offset) && (this.state.offset = this.camera.pose.offset.clone()), qC(r, this.camera.pose.longitude, Math.PI * 2) || qC(a, this.camera.pose.latitude) || qC(n, this.camera.pose.fov)) return this.controller.stopMomentumMovement(), this.controller.cameraMotion.set({
29376
+ if (xw(o, this.camera.pose.distance) && (this.state.distance = this.camera.pose.distance), Cw(s, this.camera.pose.offset) && (this.state.offset = this.camera.pose.offset.clone()), xw(r, this.camera.pose.longitude, Math.PI * 2) || xw(a, this.camera.pose.latitude) || xw(n, this.camera.pose.fov)) return this.controller.stopMomentumMovement(), this.controller.cameraMotion.set({
29031
29377
  longitude: r,
29032
29378
  latitude: a,
29033
29379
  fov: n
@@ -29041,7 +29387,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
29041
29387
  if (!(e === t.Mode.Floorplan || e === t.Mode.Topview || e === t.Mode.Mapview || e === t.Mode.Model) || this.modelScene.loaded) {
29042
29388
  let e = this.readyCallbacks.slice();
29043
29389
  this.readyCallbacks.length = 0;
29044
- for (let t of e) this.controller instanceof RD.Panorama && t.tile === !0 ? this.readyCallbacks.push(t) : t();
29390
+ for (let t of e) this.controller instanceof fO.Panorama && t.tile === !0 ? this.readyCallbacks.push(t) : t();
29045
29391
  }
29046
29392
  }
29047
29393
  return !1;
@@ -29054,7 +29400,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
29054
29400
  }
29055
29401
  requestFullscreen() {
29056
29402
  var e;
29057
- if (!$S) return;
29403
+ if (!DC) return;
29058
29404
  let t = (e = this.getElement()) == null ? void 0 : e.parentNode;
29059
29405
  t && "requestFullscreen" in t && typeof document < "u" && document.fullscreenElement === null && t.requestFullscreen();
29060
29406
  }
@@ -29142,15 +29488,15 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
29142
29488
  }
29143
29489
  applyController(e, n) {
29144
29490
  if (!this.renderer) throw Error("renderer is not initialized.");
29145
- let r = RD[e];
29491
+ let r = fO[e];
29146
29492
  this.currentMode = e;
29147
29493
  let i = new r(n);
29148
- for (let e of BD) i.on(e, (...t) => {
29494
+ for (let e of mO) i.on(e, (...t) => {
29149
29495
  if (this.emit(e, ...t)) return !1;
29150
29496
  });
29151
29497
  {
29152
- let t = RD[e].initAnimationEndState(n), r = n.initial.userAction;
29153
- tw(this.state, t) || (ew(this.state, t), this.emit("state.change", $("state.change", {
29498
+ let t = fO[e].initAnimationEndState(n), r = n.initial.userAction;
29499
+ kw(this.state, t) || (Ow(this.state, t), this.emit("state.change", $("state.change", {
29154
29500
  userAction: r,
29155
29501
  state: this.state
29156
29502
  }))), this.emit("currentState.change", $("currentState.change", {
@@ -29162,7 +29508,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
29162
29508
  var t;
29163
29509
  if (this.controller) {
29164
29510
  let n = this.controller.getTargetState();
29165
- e.userAction && this.syncingState === !1 && this.state.mode === n.mode && !tw(this.state, n) && (ew(this.state, n), this.emit("state.change", $("state.change", {
29511
+ e.userAction && this.syncingState === !1 && this.state.mode === n.mode && !kw(this.state, n) && (Ow(this.state, n), this.emit("state.change", $("state.change", {
29166
29512
  userAction: e.userAction,
29167
29513
  state: this.state
29168
29514
  })), (t = this.analysis) == null || t.state(this.works, this.state));
@@ -29174,7 +29520,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
29174
29520
  }), i.on("initAnimation.start", (e) => {
29175
29521
  var t;
29176
29522
  let { state: n, userAction: r } = e;
29177
- r && this.state.mode === n.mode && !tw(this.state, n) && (ew(this.state, n), this.emit("state.change", $("state.change", {
29523
+ r && this.state.mode === n.mode && !kw(this.state, n) && (Ow(this.state, n), this.emit("state.change", $("state.change", {
29178
29524
  userAction: r,
29179
29525
  state: this.state
29180
29526
  })), (t = this.analysis) == null || t.state(this.works, this.state));
@@ -29184,7 +29530,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
29184
29530
  this.pano = {
29185
29531
  workCode: n.workCode,
29186
29532
  panoIndex: n.panoIndex
29187
- }, r && this.state.mode === n.mode && !tw(this.state, n) && (ew(this.state, n), this.emit("state.change", $("state.change", {
29533
+ }, r && this.state.mode === n.mode && !kw(this.state, n) && (Ow(this.state, n), this.emit("state.change", $("state.change", {
29188
29534
  userAction: r,
29189
29535
  state: this.state
29190
29536
  })), (t = this.analysis) == null || t.state(this.works, this.state));
@@ -29194,7 +29540,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
29194
29540
  this.pano = {
29195
29541
  workCode: n.workCode,
29196
29542
  panoIndex: n.panoIndex
29197
- }, r && this.state.mode === n.mode && !tw(this.state, n) && (ew(this.state, n), this.emit("state.change", $("state.change", {
29543
+ }, r && this.state.mode === n.mode && !kw(this.state, n) && (Ow(this.state, n), this.emit("state.change", $("state.change", {
29198
29544
  userAction: r,
29199
29545
  state: this.state
29200
29546
  })), (t = this.analysis) == null || t.state(this.works, this.state));
@@ -29204,14 +29550,14 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
29204
29550
  this.pano = {
29205
29551
  workCode: n.workCode,
29206
29552
  panoIndex: n.panoIndex
29207
- }, r && this.state.mode === n.mode && !tw(this.state, n) && (ew(this.state, n), this.emit("state.change", $("state.change", {
29553
+ }, r && this.state.mode === n.mode && !kw(this.state, n) && (Ow(this.state, n), this.emit("state.change", $("state.change", {
29208
29554
  userAction: r,
29209
29555
  state: this.state
29210
29556
  })), (t = this.analysis) == null || t.state(this.works, this.state));
29211
29557
  }), i.on("pano.cancel", (e) => {
29212
29558
  var t;
29213
29559
  let { state: n, userAction: r } = e;
29214
- r && this.state.mode === n.mode && !tw(this.state, n) && (ew(this.state, n), this.emit("state.change", $("state.change", {
29560
+ r && this.state.mode === n.mode && !kw(this.state, n) && (Ow(this.state, n), this.emit("state.change", $("state.change", {
29215
29561
  userAction: r,
29216
29562
  state: this.state
29217
29563
  })), (t = this.analysis) == null || t.state(this.works, this.state));
@@ -29309,7 +29655,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
29309
29655
  this.adaptiveLuminancePass.enabled = e, this.needsRender = !0;
29310
29656
  }
29311
29657
  };
29312
- oO.Mode = {
29658
+ PO.Mode = {
29313
29659
  Panorama: "Panorama",
29314
29660
  Model: "Model",
29315
29661
  Floorplan: "Floorplan",
@@ -29319,12 +29665,12 @@ oO.Mode = {
29319
29665
  XRPanorama: "XRPanorama"
29320
29666
  }, typeof window < "u" && Object.assign(window, { __FIVE_DEBUG__: {
29321
29667
  THREE: e,
29322
- constructor: oO,
29323
- instances: aO
29668
+ constructor: PO,
29669
+ instances: NO
29324
29670
  } });
29325
29671
  //#endregion
29326
29672
  //#region build/five/webxr/xrButton.js
29327
- var sO = class {
29673
+ var FO = class {
29328
29674
  static createButton(e) {
29329
29675
  let t = document.createElement("button"), n = "ENTER VR", r = "calc(50% - 50px)", i = "100px", a;
29330
29676
  function o() {
@@ -29369,4 +29715,4 @@ var sO = class {
29369
29715
  }
29370
29716
  };
29371
29717
  //#endregion
29372
- export { OS as AdaptiveLuminancePass, Bu as AnimationFrameLoop, Db as BoundingMesh, po as Camera, Wx as EffectComposer, AS as EyeDomeLightingPass, Yl as Fetcher, oO as Five, Kx as FivePass, YS as FiveRenderer, BS as FlowingFireworks3DPass, PS as FlowingLight2DPass, MS as FlowingLight3DPass, Gx as FullScreenQuad, ta as GSPLAT_PIPELINE_AUTO, na as GSPLAT_PIPELINE_RASTER_CPU_SORT, ra as GSPLAT_PIPELINE_RASTER_GPU_SORT, jS as GaussianBlurPass, fS as Histogram, hC as InternalWebGPURenderer, vb as Model, kb as ModelScene, X as Motion, Wl as NetworkSubscribe, On as PBMCustomNode, pn as PBMGSObject, pn as PBMGaussianSplattingObject, Zr as PBMGaussianSplattingNodeMaterial, la as PBMGaussianSplattingRenderMesh, an as PBMGroup, un as PBMMesh, ua as PBMMeshBasicMaterial, Cl as PBMMeshBasicNodeMaterial, da as PBMMeshPanoOnlyMaterial, kl as PBMMeshPanoOnlyNodeMaterial, fa as PBMMeshPhongMaterial, Tl as PBMMeshPhongNodeMaterial, pa as PBMMeshPhysicalMaterial, Dl as PBMMeshPhysicalNodeMaterial, An as PBMPanoFilter, qn as PBMPointCloud, Vn as PBMPointCloudMaterial, dn as PBMSkinnedMesh, Dn as PBMUpdateable, En as PBMVertexMarkFlag, BD as PROXY_CONTROLLER_EVENT_NAMES, kC as PanoCircleMesh, GC as PanoCircleMeshCustom, LC as PanoCircleMeshSolid, Ry as Parameter, xC as Scene, xn as Subscribe, Qu as TextureLoader, Pm as Tile, Zy as Tile3D, Zy as Tile3DModel, vg as TileCache, sg as TileNode, hg as TileRequestScheduler, wg as Tileset, dg as Trajectory, fg as TrajectoryNode, Rx as Work, Vx as WorkResolvedObserver, sO as XRButton, zD as controllersDefaultInitArgs, $a as coordinatesToVector, km as createDebugBoundingMesh, Hx as createWorks, kn as customNodesCacheKey, ku as defaultImageURLTransform, Uf as draco, GD as getViewportScale, no as headingToLongitude, fu as imageSupport, wm as isBoundingVolume, ex as isPanoId, zd as loadAt3d, Wd as loadDome, Zd as loadDomez, rm as loadGltf, _d as loadPbm, tf as loadPly, to as longitudeToHeading, Tm as makeBoundingVolume, $b as panoEqual, Qb as panoParse, Zb as panoStringify, zx as parseWork, Ml as registerPBMMaterials, eo as vectorToCoordinates, Pb as workToJson };
29718
+ export { OS as AdaptiveLuminancePass, Bu as AnimationFrameLoop, Db as BoundingMesh, po as Camera, Wx as EffectComposer, AS as EyeDomeLightingPass, Yl as Fetcher, PO as Five, Kx as FivePass, CC as FiveRenderer, BS as FlowingFireworks3DPass, PS as FlowingLight2DPass, MS as FlowingLight3DPass, Gx as FullScreenQuad, ta as GSPLAT_PIPELINE_AUTO, na as GSPLAT_PIPELINE_RASTER_CPU_SORT, ra as GSPLAT_PIPELINE_RASTER_GPU_SORT, jS as GaussianBlurPass, fS as Histogram, UC as InternalWebGPURenderer, vb as Model, kb as ModelScene, X as Motion, Wl as NetworkSubscribe, On as PBMCustomNode, pn as PBMGSObject, pn as PBMGaussianSplattingObject, Zr as PBMGaussianSplattingNodeMaterial, la as PBMGaussianSplattingRenderMesh, an as PBMGroup, un as PBMMesh, ua as PBMMeshBasicMaterial, Cl as PBMMeshBasicNodeMaterial, da as PBMMeshPanoOnlyMaterial, kl as PBMMeshPanoOnlyNodeMaterial, fa as PBMMeshPhongMaterial, Tl as PBMMeshPhongNodeMaterial, pa as PBMMeshPhysicalMaterial, Dl as PBMMeshPhysicalNodeMaterial, An as PBMPanoFilter, qn as PBMPointCloud, Vn as PBMPointCloudMaterial, dn as PBMSkinnedMesh, Dn as PBMUpdateable, En as PBMVertexMarkFlag, mO as PROXY_CONTROLLER_EVENT_NAMES, rw as PanoCircleMesh, yw as PanoCircleMeshCustom, dw as PanoCircleMeshSolid, Ry as Parameter, YC as Scene, xn as Subscribe, Qu as TextureLoader, Pm as Tile, Zy as Tile3D, Zy as Tile3DModel, vg as TileCache, sg as TileNode, hg as TileRequestScheduler, wg as Tileset, dg as Trajectory, fg as TrajectoryNode, Rx as Work, Vx as WorkResolvedObserver, FO as XRButton, pO as controllersDefaultInitArgs, $a as coordinatesToVector, km as createDebugBoundingMesh, Hx as createWorks, kn as customNodesCacheKey, ku as defaultImageURLTransform, Uf as draco, yO as getViewportScale, no as headingToLongitude, fu as imageSupport, wm as isBoundingVolume, ex as isPanoId, zd as loadAt3d, Wd as loadDome, Zd as loadDomez, rm as loadGltf, _d as loadPbm, tf as loadPly, to as longitudeToHeading, Tm as makeBoundingVolume, $b as panoEqual, Qb as panoParse, Zb as panoStringify, zx as parseWork, Ml as registerPBMMaterials, eo as vectorToCoordinates, Pb as workToJson };