@realsee/five-webgpu 1.0.0-alpha.7 → 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 +1082 -729
  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 +14 -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: 10/14/2026
5
- * Version: 1.0.0-alpha.7
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,25 +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) {
19515
+ return e[0].split("").map((e) => e.charCodeAt(0) > 126 ? e : String.fromCharCode((e.charCodeAt(0) + 113) % 126)).join("");
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) {
19462
19517
  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");
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 {
19476
- constructor(n, r) {
19477
- 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 = {
19749
+ var yC = class t {
19750
+ get colorFormat() {
19751
+ return this.format;
19752
+ }
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 = {
19478
19755
  sizeMode: 1,
19479
19756
  pointScale: .02,
19480
19757
  pointMinPixel: 0,
@@ -19484,14 +19761,14 @@ var qS = class t {
19484
19761
  hardPixelMax: 12,
19485
19762
  pointShape: 1,
19486
19763
  maxDisplayBoost: 1
19487
- }, 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({
19488
- 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,
19489
19766
  usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
19490
- }), this.displayParamsBuffer = n.createBuffer({
19767
+ }), this.displayParamsBuffer = t.createBuffer({
19491
19768
  size: 8,
19492
19769
  usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
19493
19770
  });
19494
- let i = new DataView(this.frameUniformScratch), a = new Float32Array([
19771
+ let r = new DataView(this.frameUniformScratch), i = new Float32Array([
19495
19772
  1,
19496
19773
  0,
19497
19774
  0,
@@ -19509,28 +19786,71 @@ var qS = class t {
19509
19786
  0,
19510
19787
  1
19511
19788
  ]);
19512
- 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);
19513
- let o = n.createShaderModule({ code: HS }), s = n.createShaderModule({ code: WS }), c = n.createShaderModule({ code: US });
19514
- 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({
19515
19794
  layout: "auto",
19516
19795
  compute: {
19517
19796
  module: o,
19518
19797
  entryPoint: "main"
19519
19798
  }
19520
- }), this.rasterizePipeline = n.createComputePipeline({
19521
- layout: "auto",
19522
- compute: {
19523
- module: s,
19524
- entryPoint: "main"
19525
- }
19526
- }), 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({
19527
19847
  layout: "auto",
19528
19848
  vertex: {
19529
- module: c,
19849
+ module: s,
19530
19850
  entryPoint: "vs_main"
19531
19851
  },
19532
19852
  fragment: {
19533
- module: c,
19853
+ module: s,
19534
19854
  entryPoint: "fs_main",
19535
19855
  targets: [{ format: this.format }]
19536
19856
  },
@@ -19540,14 +19860,14 @@ var qS = class t {
19540
19860
  depthWriteEnabled: !0,
19541
19861
  depthCompare: "less"
19542
19862
  }
19543
- }), this.fullscreenQuadPipelineAdditive = n.createRenderPipeline({
19863
+ }), this.fullscreenQuadPipelineAdditive = t.createRenderPipeline({
19544
19864
  layout: "auto",
19545
19865
  vertex: {
19546
- module: c,
19866
+ module: s,
19547
19867
  entryPoint: "vs_main"
19548
19868
  },
19549
19869
  fragment: {
19550
- module: c,
19870
+ module: s,
19551
19871
  entryPoint: "fs_main",
19552
19872
  targets: [{
19553
19873
  format: this.format,
@@ -19571,14 +19891,14 @@ var qS = class t {
19571
19891
  depthWriteEnabled: !0,
19572
19892
  depthCompare: "less"
19573
19893
  }
19574
- }), this.placeholderGradientTexture = n.createTexture({
19894
+ }), this.placeholderGradientTexture = t.createTexture({
19575
19895
  size: {
19576
19896
  width: 1,
19577
19897
  height: 1
19578
19898
  },
19579
19899
  format: "rgba8unorm",
19580
19900
  usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST
19581
- }), 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([
19582
19902
  128,
19583
19903
  128,
19584
19904
  128,
@@ -19590,7 +19910,7 @@ var qS = class t {
19590
19910
  width: 1,
19591
19911
  height: 1,
19592
19912
  depthOrArrayLayers: 1
19593
- }), this.gradientSampler = n.createSampler({
19913
+ }), this.gradientSampler = t.createSampler({
19594
19914
  magFilter: "linear",
19595
19915
  minFilter: "linear",
19596
19916
  addressModeU: "clamp-to-edge",
@@ -19613,12 +19933,12 @@ var qS = class t {
19613
19933
  usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST
19614
19934
  });
19615
19935
  if (this.packedColorScratch.length < r && (this.packedColorScratch = new Uint32Array(r)), n instanceof Uint8Array) for (let e = 0; e < r; e++) {
19616
- let t = e * 3, r = KS(n[t] / 255), i = KS(n[t + 1] / 255), a = KS(n[t + 2] / 255);
19617
- 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);
19618
19938
  }
19619
19939
  else for (let e = 0; e < r; e++) {
19620
19940
  let t = e * 3;
19621
- 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]);
19622
19942
  }
19623
19943
  this.device.queue.writeBuffer(a, 0, this.packedColorScratch.buffer, 0, r * 4);
19624
19944
  let o = this.device.createBuffer({
@@ -19649,11 +19969,14 @@ var qS = class t {
19649
19969
  let g = this.ensureTileUniformBuffer(e);
19650
19970
  this.bindRasterizeGroup(e, g, m, h), this.ready = !!this.framebuffer && !!this.rasterizeBindGroup;
19651
19971
  }
19652
- beginPointCloudFrame(e, n, r) {
19653
- r.multiplyMatrices(e.projectionMatrix, e.matrixWorldInverse);
19654
- let i = r.elements, a = new DataView(this.frameUniformScratch);
19655
- for (let e = 0; e < 16; e++) a.setFloat32(t.OFFSET_VIEW_PROJ + e * 4, i[e], !0);
19656
- 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);
19657
19980
  }
19658
19981
  writeTileUniform(e, t) {
19659
19982
  let n = this.ensureTileUniformBuffer(e), r = new DataView(this.tileUniformScratch);
@@ -19672,19 +19995,20 @@ var qS = class t {
19672
19995
  let n = 0;
19673
19996
  return Hn(e.normals, t) && (n |= 1), e.useAddBlend && (n |= 8), n;
19674
19997
  }
19675
- writePointAttenuationUniforms(e, n) {
19676
- let r = n.projectionMatrix.elements, i = n.matrixWorldInverse.elements;
19677
- 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);
19678
- }
19679
- writeFrameUniformsDataView(e, n, r, i) {
19680
- var a, o;
19681
- 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);
19682
- 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;
19683
- r.updateMatrixWorld(!0);
19684
- let u = r.getWorldPosition(this.tmpVec3c);
19685
- 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);
19686
- let d = this.tmpVec3d.set(0, 0, -1).applyQuaternion(r.quaternion);
19687
- 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);
19688
20012
  let f = new Float32Array([
19689
20013
  1,
19690
20014
  0,
@@ -19703,44 +20027,50 @@ var qS = class t {
19703
20027
  0,
19704
20028
  1
19705
20029
  ]);
19706
- 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);
19707
- e.setFloat32(t.OFFSET_CLIP0_META + 12, 0, !0), e.setFloat32(t.OFFSET_CLIP1_META + 12, 0, !0);
19708
- 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;
19709
20033
  if (p.length > 0) {
19710
- let n = p[0];
19711
- i.copy(n.clippingBoxMatrix).invert();
19712
- let r = i.elements;
19713
- for (let n = 0; n < 16; n++) e.setFloat32(t.OFFSET_CLIP0_INV + n * 4, r[n], !0);
19714
- 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);
19715
20039
  }
19716
20040
  if (p.length > 1) {
19717
- let n = p[1];
19718
- i.copy(n.clippingBoxMatrix).invert();
19719
- let r = i.elements;
19720
- for (let n = 0; n < 16; n++) e.setFloat32(t.OFFSET_CLIP1_INV + n * 4, r[n], !0);
19721
- 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);
19722
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);
19723
20053
  }
19724
20054
  writeTileUniformsDataView(e, n, r) {
19725
- let i = n.matrixWorld.elements;
19726
- for (let n = 0; n < 16; n++) e.setFloat32(t.OFFSET_TILE_MODEL + n * 4, i[n], !0);
19727
- let a = this.tmpVec3a.copy(n.modelBoundingMin), o = this.tmpVec3b.copy(n.modelBoundingMax);
19728
- 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);
19729
20061
  }
19730
- resize(e, n) {
19731
- var r;
19732
- e <= 0 || n <= 0 || (this.width = e, this.height = n, (r = this.framebuffer) == null || r.destroy(), this.framebuffer = this.device.createBuffer({
19733
- 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,
19734
20066
  usage: GPUBufferUsage.STORAGE
19735
- }), 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());
19736
20068
  }
19737
20069
  encodeFramebufferClear(e) {
19738
- !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)));
19739
20071
  }
19740
20072
  encodeRasterize(e) {
19741
- if (!this.ready || !this.rasterizeBindGroup || !this.pointBuffer || !this.colorBuffer || this.pointCount <= 0) return;
19742
- let t = this.rasterizePipeline;
19743
- 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);
19744
20074
  }
19745
20075
  encodeFramebufferDisplay(e, t) {
19746
20076
  if (!this.displayBindGroup || !this.framebuffer) return;
@@ -19749,9 +20079,13 @@ var qS = class t {
19749
20079
  }
19750
20080
  submitMergedPointCloudFrame(e, t, n, r) {
19751
20081
  var i, a, o;
19752
- 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();
19753
- if (this.lastBoundComputePipeline = null, s && this.encodeFramebufferClear(d), n(d), d.end(), c) {
19754
- 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({
19755
20089
  colorAttachments: [{
19756
20090
  view: e,
19757
20091
  loadOp: "load",
@@ -19763,12 +20097,13 @@ var qS = class t {
19763
20097
  depthStoreOp: "store"
19764
20098
  }
19765
20099
  });
19766
- this.encodeFramebufferDisplay(n, { additive: l }), n.end();
20100
+ this.encodeFramebufferDisplay(n, { additive: u }), n.end();
19767
20101
  }
19768
- this.device.queue.submit([u.finish()]);
20102
+ this.device.queue.submit([d.finish()]);
19769
20103
  }
19770
20104
  dispose() {
19771
- var e;
20105
+ var e, t;
20106
+ (e = this.binnedCore) == null || e.dispose(), this.binnedCore = null;
19772
20107
  for (let [e, t] of this.tileDisposeListeners) try {
19773
20108
  e.removeEventListener("dispose", t);
19774
20109
  } catch (e) {}
@@ -19776,7 +20111,7 @@ var qS = class t {
19776
20111
  for (let e of this.pointCloudCache.values()) e.pointBuffer.destroy(), e.colorBuffer.destroy(), e.normalBuffer.destroy();
19777
20112
  this.pointCloudCache.clear();
19778
20113
  for (let e of this.tileUniformBufferCache.values()) e.destroy();
19779
- 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;
19780
20115
  }
19781
20116
  registerTileDisposer(e) {
19782
20117
  if (this.tileDisposeListeners.has(e)) return;
@@ -19822,11 +20157,11 @@ var qS = class t {
19822
20157
  }), this.ready = !1);
19823
20158
  }
19824
20159
  ensureTileUniformBuffer(e) {
19825
- let n = this.tileUniformBufferCache.get(e);
19826
- return n || (n = this.device.createBuffer({
19827
- size: t.TILE_UNIFORM_SIZE,
20160
+ let t = this.tileUniformBufferCache.get(e);
20161
+ return t || (t = this.device.createBuffer({
20162
+ size: qS.size,
19828
20163
  usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
19829
- }), this.tileUniformBufferCache.set(e, n), this.registerTileDisposer(e)), n;
20164
+ }), this.tileUniformBufferCache.set(e, t), this.registerTileDisposer(e)), t;
19830
20165
  }
19831
20166
  bindRasterizeGroup(e, t, n, r) {
19832
20167
  if (!this.framebuffer || !this.pointBuffer || !this.colorBuffer) {
@@ -19839,7 +20174,7 @@ var qS = class t {
19839
20174
  return;
19840
20175
  }
19841
20176
  let a = this.device.createBindGroup({
19842
- layout: this.rasterizePipeline.getBindGroupLayout(0),
20177
+ layout: this.tileBindGroupLayout,
19843
20178
  entries: [
19844
20179
  {
19845
20180
  binding: 0,
@@ -19884,11 +20219,7 @@ var qS = class t {
19884
20219
  gradientView: n
19885
20220
  }), this.rasterizeBindGroup = a;
19886
20221
  }
19887
- };
19888
- 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;
19889
- //#endregion
19890
- //#region build/five/renderer/five-renderer.js
19891
- var JS = new e.Matrix4(), YS = class {
20222
+ }, bC = new e.Matrix4(), xC = new e.Vector3(), SC = new e.Box3(), CC = class {
19892
20223
  constructor(t) {
19893
20224
  var n;
19894
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() };
@@ -19922,46 +20253,67 @@ var JS = new e.Matrix4(), YS = class {
19922
20253
  }
19923
20254
  this.useComputePointCloud ? this.renderPointCloudCompute(e, t, i, r) : (e.setRenderTarget(this.compositeRenderTarget), e.clear(!0, !0, !0), e.render(t, r));
19924
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
+ }
19925
20269
  renderPointCloudCompute(e, t, n, r) {
19926
- var i;
19927
- if (this.computeRenderer === null) try {
20270
+ var i, a, o;
20271
+ e.setRenderTarget(this.compositeRenderTarget), e.clear(!0, !0, !0);
20272
+ let s = this.getCompositeTargetViews(e), c = s == null ? void 0 : s.colorFormat;
20273
+ if (c && ((i = this.computeRenderer) == null ? void 0 : i.colorFormat) !== c) try {
19928
20274
  let t = e.backend.device;
19929
20275
  if (!t) return;
19930
- this.computeRenderer = new qS(t, "rgba8unorm"), 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);
19931
20277
  } catch (e) {
20278
+ this.computeRenderer = null;
19932
20279
  return;
19933
20280
  }
19934
- e.setRenderTarget(this.compositeRenderTarget), e.clear(!0, !0, !0);
19935
- let a = this.getCompositeTargetViews(e), o = Math.max(.1, r.pixelRatio || e.getPixelRatio()), s = Math.max(1, ((i = r.resolution) == null ? void 0 : i.y) || this.lastHeight), c = [];
19936
- for (let e of n) e.visible && e.layers.test(r.layers) && Math.max(0, Math.min(e.visiblePointCount, e.numPoints)) !== 0 && c.push(e);
19937
- if (a && c.length > 0) {
19938
- let t = c.some((e) => e.useAddBlend), n = c[0];
20281
+ if (!this.computeRenderer) return;
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
+ }
20288
+ if (s && d.length > 0) {
20289
+ this.computeRenderer.prepareFrame(f);
20290
+ let t = d.some((e) => e.useAddBlend), n = d[0], i = this.sortByDistance(d, r);
19939
20291
  this.computeRenderer.setPointSizeParams({
19940
20292
  sizeMode: n.pointSize,
19941
20293
  pointShape: n.pointShape,
19942
20294
  pointScale: n.pointScale,
19943
20295
  pointMinPixel: n.pointMinPixel,
19944
20296
  pointMaxPixel: n.pointMaxPixel,
19945
- pixelRatio: o,
19946
- resolutionY: s,
20297
+ pixelRatio: l,
20298
+ resolutionY: u,
19947
20299
  maxDisplayBoost: n.maxDisplayBoost
19948
- }), this.computeRenderer.submitMergedPointCloudFrame(a.colorView, a.depthView, (t) => {
19949
- var i;
19950
- this.computeRenderer.beginPointCloudFrame(r, n, JS);
19951
- for (let n of c) {
19952
- let r = Math.max(0, Math.min(n.visiblePointCount, n.numPoints)), a = (i = this.getCachedGpuTextureView(e, n.gradientTexture)) == null ? this.computeRenderer.getPlaceholderGradientView() : i;
20300
+ }), this.computeRenderer.submitMergedPointCloudFrame(s.colorView, s.depthView, (t) => {
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;
19953
20305
  this.computeRenderer.setPointCloud(n, n.positions, n.colors, r, {
19954
20306
  positionsVersion: n.positionVersion,
19955
20307
  colorsVersion: n.styleRevision
19956
- }, { gradientView: a }), this.computeRenderer.writeTileUniform(n, r), this.computeRenderer.encodeRasterize(t);
20308
+ }, { gradientView: i }), this.computeRenderer.writeTileUniform(n, r), this.computeRenderer.encodeRasterize(t);
19957
20309
  }
19958
20310
  }, { displayAdditive: t });
19959
20311
  }
19960
- let l = [];
19961
- for (let e of n) e.visible && (e.visible = !1, l.push(e));
19962
- let u = e.autoClear, d = e.autoClearColor, f = e.autoClearDepth, p = e.autoClearStencil;
19963
- e.autoClear = !1, e.autoClearColor = !1, e.autoClearDepth = !1, e.autoClearStencil = !1, e.setRenderTarget(this.compositeRenderTarget), e.render(t, r), e.autoClear = u, e.autoClearColor = d, e.autoClearDepth = f, e.autoClearStencil = p;
19964
- for (let e of l) 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;
19965
20317
  }
19966
20318
  dispose() {
19967
20319
  var e, t;
@@ -19974,7 +20326,8 @@ var JS = new e.Matrix4(), YS = class {
19974
20326
  let t = e.backend, n = t.get(this.compositeRenderTarget.texture), r = t.get(this.compositeRenderTarget.depthTexture), i = n == null ? void 0 : n.texture, a = r == null ? void 0 : r.texture;
19975
20327
  return !i || !a ? null : {
19976
20328
  colorView: i.createView(),
19977
- depthView: a.createView()
20329
+ depthView: a.createView(),
20330
+ colorFormat: i.format
19978
20331
  };
19979
20332
  } catch (e) {
19980
20333
  return null;
@@ -19992,7 +20345,7 @@ var JS = new e.Matrix4(), YS = class {
19992
20345
  return null;
19993
20346
  }
19994
20347
  }
19995
- }, 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";
19996
20349
  (() => {
19997
20350
  try {
19998
20351
  let e = document.createElement("canvas");
@@ -20001,23 +20354,23 @@ var JS = new e.Matrix4(), YS = class {
20001
20354
  return !1;
20002
20355
  }
20003
20356
  })();
20004
- var QS = typeof navigator < "u" && navigator.gpu !== void 0;
20005
- 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;
20006
- 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 = [
20007
20360
  "trigger",
20008
20361
  "grip",
20009
20362
  "primary",
20010
20363
  "secondary",
20011
20364
  "pinch"
20012
- ], tC = ["x", "y"];
20013
- function nC(e) {
20365
+ ], kC = ["x", "y"];
20366
+ function AC(e) {
20014
20367
  for (let t of Object.keys(e)) {
20015
20368
  let n = e[t];
20016
- typeof n == "object" && n && !Object.isFrozen(n) && nC(n);
20369
+ typeof n == "object" && n && !Object.isFrozen(n) && AC(n);
20017
20370
  }
20018
20371
  return Object.freeze(e);
20019
20372
  }
20020
- function rC() {
20373
+ function jC() {
20021
20374
  return {
20022
20375
  buttons: {
20023
20376
  trigger: 0,
@@ -20033,7 +20386,7 @@ function rC() {
20033
20386
  model: "auto"
20034
20387
  };
20035
20388
  }
20036
- function iC() {
20389
+ function MC() {
20037
20390
  return {
20038
20391
  buttons: {
20039
20392
  trigger: null,
@@ -20049,13 +20402,13 @@ function iC() {
20049
20402
  model: "none"
20050
20403
  };
20051
20404
  }
20052
- var aC = nC({
20053
- Pico: rC(),
20054
- Oculus: rC(),
20055
- Default: rC(),
20056
- VP: iC()
20405
+ var NC = AC({
20406
+ Pico: jC(),
20407
+ Oculus: jC(),
20408
+ Default: jC(),
20409
+ VP: MC()
20057
20410
  });
20058
- function oC(e, t) {
20411
+ function PC(e, t) {
20059
20412
  try {
20060
20413
  let n = e === void 0 ? navigator.userAgent : e, r = t === void 0 ? navigator.maxTouchPoints : t;
20061
20414
  return typeof n == "string" ? n.includes("PICO") || n.includes("Pico") ? "Pico" : n.includes("Macintosh") && r === 5 ? "VP" : n.includes("Oculus") ? "Oculus" : "Default" : "Default";
@@ -20063,46 +20416,46 @@ function oC(e, t) {
20063
20416
  return "Default";
20064
20417
  }
20065
20418
  }
20066
- function sC(e) {
20419
+ function FC(e) {
20067
20420
  return e === null || typeof e == "number" && Number.isInteger(e) && e >= 0;
20068
20421
  }
20069
- function cC(e) {
20422
+ function IC(e) {
20070
20423
  return typeof e == "object" && !!e;
20071
20424
  }
20072
- function lC(e, t) {
20425
+ function LC(e, t) {
20073
20426
  if (e) try {
20074
20427
  e(t);
20075
20428
  } catch (e) {}
20076
20429
  }
20077
- function uC(e, t, n) {
20430
+ function RC(e, t, n) {
20078
20431
  var r;
20079
- let i = (r = aC[e]) == null ? aC.Default : r, a = {
20432
+ let i = (r = NC[e]) == null ? NC.Default : r, a = {
20080
20433
  buttons: Object.assign({}, i.buttons),
20081
20434
  axes: Object.assign({}, i.axes),
20082
20435
  model: i.model
20083
20436
  };
20084
- if (!cC(t)) return a;
20437
+ if (!IC(t)) return a;
20085
20438
  let o = t.buttons;
20086
- 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) {
20087
20440
  let t = o[e];
20088
- 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}`));
20089
20442
  }
20090
- else lC(n, "buttons");
20443
+ else LC(n, "buttons");
20091
20444
  let s = t.axes;
20092
- 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) {
20093
20446
  let t = s[e];
20094
- 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}`));
20095
20448
  }
20096
- else lC(n, "axes");
20449
+ else LC(n, "axes");
20097
20450
  let c = t.model;
20098
- 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;
20099
20452
  }
20100
- function dC(e) {
20453
+ function zC(e) {
20101
20454
  return e === "Default" ? "Pico" : e;
20102
20455
  }
20103
20456
  //#endregion
20104
20457
  //#region build/five/core/webglAsyncReadFix.js
20105
- function fC() {
20458
+ function BC() {
20106
20459
  let { gl: e } = this, t = e.fenceSync(e.SYNC_GPU_COMMANDS_COMPLETE, 0);
20107
20460
  return e.flush(), new Promise((n, r) => {
20108
20461
  function i() {
@@ -20124,16 +20477,16 @@ function fC() {
20124
20477
  i();
20125
20478
  });
20126
20479
  }
20127
- function pC(e) {
20128
- if (oC() === "Default") return !1;
20480
+ function VC(e) {
20481
+ if (PC() === "Default") return !1;
20129
20482
  let t = e;
20130
20483
  if ((t == null ? void 0 : t.isWebGLBackend) !== !0) return !1;
20131
20484
  let n = t.utils;
20132
- return !n || typeof n._clientWaitAsync != "function" ? !1 : (n._clientWaitAsync = fC, !0);
20485
+ return !n || typeof n._clientWaitAsync != "function" ? !1 : (n._clientWaitAsync = BC, !0);
20133
20486
  }
20134
20487
  //#endregion
20135
20488
  //#region build/five/core/internalWebGPURenderer.js
20136
- var mC = 1579548, hC = class extends e.WebGPURenderer {
20489
+ var HC = 1579548, UC = class extends e.WebGPURenderer {
20137
20490
  constructor({ antialias: t = !1, logarithmicDepthBuffer: n, outputType: r = e.UnsignedByteType, forceWebGL: i = !1 }) {
20138
20491
  var a;
20139
20492
  super({
@@ -20143,7 +20496,7 @@ var mC = 1579548, hC = class extends e.WebGPURenderer {
20143
20496
  logarithmicDepthBuffer: n,
20144
20497
  outputType: r,
20145
20498
  forceWebGL: i
20146
- }), 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);
20147
20500
  let o = (a = this.onDeviceLost) == null ? void 0 : a.bind(this);
20148
20501
  this.onDeviceLost = (e) => {
20149
20502
  var t;
@@ -20154,7 +20507,7 @@ var mC = 1579548, hC = class extends e.WebGPURenderer {
20154
20507
  console.error("onDeviceLostCallback error", e);
20155
20508
  }
20156
20509
  }, this.ready = this.init().then(() => {
20157
- pC(this.backend), this._backendReady = !0;
20510
+ VC(this.backend), this._backendReady = !0;
20158
20511
  });
20159
20512
  }
20160
20513
  get isInitialized() {
@@ -20173,12 +20526,12 @@ var mC = 1579548, hC = class extends e.WebGPURenderer {
20173
20526
  console.error("reconfigureContext error", e);
20174
20527
  }
20175
20528
  }
20176
- }, gC = new e.Matrix4(), _C = new e.Frustum(), vC = new e.Vector2(), yC = /* @__PURE__ */ new WeakMap();
20177
- function bC(e) {
20529
+ }, WC = new e.Matrix4(), GC = new e.Frustum(), KC = new e.Vector2(), qC = /* @__PURE__ */ new WeakMap();
20530
+ function JC(e) {
20178
20531
  let t = !1;
20179
20532
  return e.needsRender === !0 ? (e.needsRender = !1, t = !0) : e.mixer && e.mixer.stats.actions.inUse > 0 && (t = !0), t;
20180
20533
  }
20181
- var xC = class extends e.Scene {
20534
+ var YC = class extends e.Scene {
20182
20535
  constructor() {
20183
20536
  super(...arguments), this.needsRender = !1;
20184
20537
  }
@@ -20190,17 +20543,17 @@ var xC = class extends e.Scene {
20190
20543
  }
20191
20544
  update(t, n) {
20192
20545
  let r = !1, i;
20193
- 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) => {
20194
- if (t.setResolution && t.setResolution(vC.x, vC.y), t.setTime && t.setTime(i), t.mixer instanceof e.AnimationMixer) {
20195
- let e = t.mixer, n = yC.get(e);
20196
- 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());
20197
20550
  }
20198
- (t instanceof e.Mesh || t instanceof e.Line || t instanceof e.Points) && (!t.frustumCulled || _C.intersectsObject(t)) && (bC(t) && (r = !0), t.traverseAncestors((e) => {
20199
- 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);
20200
20553
  }));
20201
20554
  }), this.needsRender = r, r;
20202
20555
  }
20203
- }, SC = (e) => e * (2 - e), CC = (() => {
20556
+ }, XC = (e) => e * (2 - e), ZC = (() => {
20204
20557
  let t = new Float32Array([
20205
20558
  -.18,
20206
20559
  0,
@@ -20232,16 +20585,16 @@ var xC = class extends e.Scene {
20232
20585
  1
20233
20586
  ]), i = new e.BufferGeometry();
20234
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;
20235
- })(), wC = oe(.5, .5), TC = T(.017);
20236
- function EC(e, t) {
20237
- let n = D(wC.sub(e));
20238
- 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);
20239
20592
  }
20240
- function DC(e, t) {
20241
- let n = D(wC.sub(e));
20242
- 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));
20243
20596
  }
20244
- function OC(t) {
20597
+ function nw(t) {
20245
20598
  let n = {
20246
20599
  baseColor: R(new e.Color(t)),
20247
20600
  circleScale: R(1),
@@ -20258,7 +20611,7 @@ function OC(t) {
20258
20611
  tapScale: R(1),
20259
20612
  tapOpacity: R(1),
20260
20613
  disable: R(0)
20261
- }, 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);
20262
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);
20263
20616
  let S = V(x.xyz.mul(n.baseColor), x.w.mul(n.opacity).mul(n.opacity)), C = new e.NodeMaterial();
20264
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, {
@@ -20266,7 +20619,7 @@ function OC(t) {
20266
20619
  u: n
20267
20620
  };
20268
20621
  }
20269
- var kC = class extends e.Object3D {
20622
+ var rw = class extends e.Object3D {
20270
20623
  constructor(t = {}) {
20271
20624
  var n, r;
20272
20625
  super();
@@ -20278,8 +20631,8 @@ var kC = class extends e.Object3D {
20278
20631
  scale: 1,
20279
20632
  opacity: 1
20280
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 });
20281
- let { material: o, u: s } = OC(i);
20282
- 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;
20283
20636
  }
20284
20637
  setProgress(e) {
20285
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(() => {
@@ -20346,14 +20699,14 @@ var kC = class extends e.Object3D {
20346
20699
  let t = (e - this.currentStartTime - 1500) / 2e3;
20347
20700
  if (t % 5 < 2) {
20348
20701
  let e = t % 1;
20349
- 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;
20350
20703
  }
20351
20704
  }
20352
20705
  {
20353
20706
  let t = (e - this.currentStartTime - 1e3) / 2e3;
20354
20707
  if (t % 5 < 2) {
20355
20708
  let e = t % 1;
20356
- 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;
20357
20710
  }
20358
20711
  }
20359
20712
  }
@@ -20375,7 +20728,7 @@ var kC = class extends e.Object3D {
20375
20728
  dispose() {
20376
20729
  this.ringMotion.dispose(), this.tapMotion.dispose(), this.progressMotion.dispose(), this.progressOpacityMotion.dispose(), this.opacityMotion.dispose(), this.currentMotion.dispose(), this.panoMesh.material.dispose();
20377
20730
  }
20378
- }, AC = (e) => e * (2 - e), jC = (() => {
20731
+ }, iw = (e) => e * (2 - e), aw = (() => {
20379
20732
  let t = new Float32Array([
20380
20733
  -.18,
20381
20734
  0,
@@ -20407,16 +20760,16 @@ var kC = class extends e.Object3D {
20407
20760
  1
20408
20761
  ]), i = new e.BufferGeometry();
20409
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;
20410
- })(), MC = oe(.5, .5), NC = T(.017);
20411
- function PC(e, t) {
20412
- let n = D(MC.sub(e));
20413
- 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);
20414
20767
  }
20415
- function FC(e, t) {
20416
- let n = D(MC.sub(e));
20417
- 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));
20418
20771
  }
20419
- function IC(t) {
20772
+ function uw(t) {
20420
20773
  let n = {
20421
20774
  baseColor: R(new e.Color(t)),
20422
20775
  circleScale: R(1),
@@ -20432,7 +20785,7 @@ function IC(t) {
20432
20785
  tapScale: R(1),
20433
20786
  tapOpacity: R(1),
20434
20787
  disable: R(0)
20435
- }, 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);
20436
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);
20437
20790
  let O = V(E.xyz.mul(n.baseColor), E.w.mul(n.opacity).mul(n.opacity)), k = new e.NodeMaterial();
20438
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, {
@@ -20440,7 +20793,7 @@ function IC(t) {
20440
20793
  u: n
20441
20794
  };
20442
20795
  }
20443
- var LC = class extends e.Object3D {
20796
+ var dw = class extends e.Object3D {
20444
20797
  constructor(t = {}) {
20445
20798
  var n, r;
20446
20799
  super();
@@ -20449,8 +20802,8 @@ var LC = class extends e.Object3D {
20449
20802
  scale: 1,
20450
20803
  opacity: 1
20451
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 });
20452
- let { material: o, u: s } = IC(i);
20453
- 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;
20454
20807
  }
20455
20808
  setProgress(e) {
20456
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(() => {
@@ -20517,14 +20870,14 @@ var LC = class extends e.Object3D {
20517
20870
  let t = (e - this.currentStartTime - 1500) / 2e3;
20518
20871
  if (t % 5 < 2) {
20519
20872
  let e = t % 1;
20520
- 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;
20521
20874
  }
20522
20875
  }
20523
20876
  {
20524
20877
  let t = (e - this.currentStartTime - 1e3) / 2e3;
20525
20878
  if (t % 5 < 2) {
20526
20879
  let e = t % 1;
20527
- 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;
20528
20881
  }
20529
20882
  }
20530
20883
  }
@@ -20536,7 +20889,7 @@ var LC = class extends e.Object3D {
20536
20889
  dispose() {
20537
20890
  this.tapMotion.dispose(), this.progressMotion.dispose(), this.progressOpacityMotion.dispose(), this.opacityMotion.dispose(), this.currentMotion.dispose(), this.panoMesh.material.dispose();
20538
20891
  }
20539
- }, RC = (e) => e * (2 - e), zC = (() => {
20892
+ }, fw = (e) => e * (2 - e), pw = (() => {
20540
20893
  let t = new Float32Array([
20541
20894
  -.18,
20542
20895
  0,
@@ -20568,16 +20921,16 @@ var LC = class extends e.Object3D {
20568
20921
  1
20569
20922
  ]), i = new e.BufferGeometry();
20570
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;
20571
- })(), BC = oe(.5, .5), VC = T(.017);
20572
- function HC(e, t) {
20573
- let n = D(BC.sub(e));
20574
- 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);
20575
20928
  }
20576
- function UC(e, t) {
20577
- let n = D(BC.sub(e));
20578
- 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));
20579
20932
  }
20580
- function WC(t) {
20933
+ function vw(t) {
20581
20934
  let n = t.map, r = t.borderWidth > 0, i = {
20582
20935
  baseColor: R(new e.Color(t.color)),
20583
20936
  circleScale: R(1),
@@ -20593,18 +20946,18 @@ function WC(t) {
20593
20946
  tapScale: R(1),
20594
20947
  tapOpacity: R(1),
20595
20948
  disable: R(0)
20596
- }, 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;
20597
20950
  if (n) {
20598
20951
  let e = l.div(.5);
20599
- 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));
20600
20953
  } else d = V(i.baseColor, T(1));
20601
20954
  let g;
20602
20955
  if (t.mapUseReverse) g = V(i.baseColor, T(1).sub(d.a));
20603
20956
  else if (r) {
20604
- 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);
20605
20958
  g = j(V(s, e.mul(t)), d, d.a);
20606
20959
  } else g = d;
20607
- 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));
20608
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);
20609
20962
  let ie = V(P.rgb, P.a.mul(i.opacity)), ae = new e.NodeMaterial();
20610
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, {
@@ -20612,7 +20965,7 @@ function WC(t) {
20612
20965
  u: i
20613
20966
  };
20614
20967
  }
20615
- var GC = class extends e.Object3D {
20968
+ var yw = class extends e.Object3D {
20616
20969
  constructor(t = {}) {
20617
20970
  var n, r, i, a, o, s, c;
20618
20971
  super();
@@ -20621,7 +20974,7 @@ var GC = class extends e.Object3D {
20621
20974
  scale: 1,
20622
20975
  opacity: 1
20623
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 });
20624
- let { material: d, u: f } = WC({
20977
+ let { material: d, u: f } = vw({
20625
20978
  color: l,
20626
20979
  map: t.map,
20627
20980
  mapAlpha: (i = t.mapAlpha) == null ? 1 : i,
@@ -20630,7 +20983,7 @@ var GC = class extends e.Object3D {
20630
20983
  mapUseColor: (s = t.mapUseColor) == null ? !1 : s,
20631
20984
  mapUseReverse: (c = t.mapUseReverse) == null ? !1 : c
20632
20985
  });
20633
- 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;
20634
20987
  }
20635
20988
  setProgress(e) {
20636
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(() => {
@@ -20690,14 +21043,14 @@ var GC = class extends e.Object3D {
20690
21043
  let t = (e - this.currentStartTime - 1500) / 2e3;
20691
21044
  if (t % 5 < 2) {
20692
21045
  let e = t % 1;
20693
- 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;
20694
21047
  }
20695
21048
  }
20696
21049
  {
20697
21050
  let t = (e - this.currentStartTime - 1e3) / 2e3;
20698
21051
  if (t % 5 < 2) {
20699
21052
  let e = t % 1;
20700
- 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;
20701
21054
  }
20702
21055
  }
20703
21056
  }
@@ -20712,22 +21065,22 @@ var GC = class extends e.Object3D {
20712
21065
  };
20713
21066
  //#endregion
20714
21067
  //#region build/five/utils/isSimilar.js
20715
- function KC(e, t, n) {
21068
+ function bw(e, t, n) {
20716
21069
  let r = Math.abs(e - t);
20717
21070
  return r < .001 || n !== void 0 && Math.abs(n - r) < .001;
20718
21071
  }
20719
- function qC(e, t, n) {
20720
- return !KC(e, t, n);
21072
+ function xw(e, t, n) {
21073
+ return !bw(e, t, n);
20721
21074
  }
20722
- function JC(e, t) {
21075
+ function Sw(e, t) {
20723
21076
  return e.distanceTo(t) < .001;
20724
21077
  }
20725
- function YC(e, t) {
20726
- return !JC(e, t);
21078
+ function Cw(e, t) {
21079
+ return !Sw(e, t);
20727
21080
  }
20728
21081
  //#endregion
20729
21082
  //#region build/five/utils/isPromise.js
20730
- function XC(e) {
21083
+ function ww(e) {
20731
21084
  return !!e && (typeof e == "object" || typeof e == "function") && typeof e.then == "function";
20732
21085
  }
20733
21086
  //#endregion
@@ -20746,32 +21099,32 @@ function $(e, t) {
20746
21099
  for (let e of Object.keys(t)) e in r || (r[e] = t[e]);
20747
21100
  return r;
20748
21101
  }
20749
- var ZC = /* @__PURE__ */ new WeakMap();
20750
- function QC(e, t) {
21102
+ var Tw = /* @__PURE__ */ new WeakMap();
21103
+ function Ew(e, t) {
20751
21104
  let n = $(e, Object.assign(Object.assign({}, t), { waitUntil(e) {
20752
- let t = ZC.get(n);
21105
+ let t = Tw.get(n);
20753
21106
  t && t.push(e);
20754
21107
  } }));
20755
- return ZC.set(n, []), n;
21108
+ return Tw.set(n, []), n;
20756
21109
  }
20757
- function $C(e) {
21110
+ function Dw(e) {
20758
21111
  var t;
20759
- return Promise.all((t = ZC.get(e)) == null ? [] : t).then(Y);
21112
+ return Promise.all((t = Tw.get(e)) == null ? [] : t).then(Y);
20760
21113
  }
20761
21114
  //#endregion
20762
21115
  //#region build/five/utils/stateUtils.js
20763
- function ew(e, t) {
21116
+ function Ow(e, t) {
20764
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;
20765
21118
  }
20766
- function tw(e, t) {
20767
- 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);
20768
21121
  }
20769
21122
  //#endregion
20770
21123
  //#region build/five/utils/poseUtils.js
20771
- function nw(e, t) {
21124
+ function Aw(e, t) {
20772
21125
  e.longitude = t.longitude, e.latitude = t.latitude, e.fov = t.fov, e.distance = t.distance, e.offset.copy(t.offset);
20773
21126
  }
20774
- function rw(e) {
21127
+ function jw(e) {
20775
21128
  return {
20776
21129
  longitude: e.longitude,
20777
21130
  latitude: e.latitude,
@@ -20782,14 +21135,14 @@ function rw(e) {
20782
21135
  }
20783
21136
  //#endregion
20784
21137
  //#region build/five/application/mode.js
20785
- function iw(e) {
21138
+ function Mw(e) {
20786
21139
  switch (e) {
20787
21140
  case "Floorplan": return !0;
20788
21141
  case "Mapview": return !0;
20789
21142
  default: return !1;
20790
21143
  }
20791
21144
  }
20792
- function aw(e) {
21145
+ function Nw(e) {
20793
21146
  switch (e) {
20794
21147
  case "Panorama": return !0;
20795
21148
  case "VRPanorama": return !0;
@@ -20800,22 +21153,22 @@ function aw(e) {
20800
21153
  }
20801
21154
  //#endregion
20802
21155
  //#region build/five/utils/isEmptyObject.js
20803
- function ow(e) {
21156
+ function Pw(e) {
20804
21157
  for (let t in e) return !1;
20805
21158
  return !0;
20806
21159
  }
20807
21160
  //#endregion
20808
21161
  //#region build/five/renderer/tools/render-cube-to-equirectangular.js
20809
- 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();
20810
- gw.fragmentNode = hw, gw.transparent = !0, gw.depthTest = !1, gw.depthWrite = !1;
20811
- var _w = new Gx(gw);
20812
- function vw(e, t, n) {
20813
- 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;
20814
21167
  }
20815
21168
  //#endregion
20816
21169
  //#region build/five/texture/textureData.js
20817
- var yw = new e.Color(), bw = 0, xw = 1;
20818
- function Sw(t, n, r, i) {
21170
+ var qw = new e.Color(), Jw = 0, Yw = 1;
21171
+ function Xw(t, n, r, i) {
20819
21172
  return Ti(this, void 0, void 0, function* () {
20820
21173
  let a = new e.RenderTarget(i.width, i.height, {
20821
21174
  depthBuffer: !1,
@@ -20824,16 +21177,16 @@ function Sw(t, n, r, i) {
20824
21177
  magFilter: e.LinearFilter,
20825
21178
  minFilter: e.LinearFilter
20826
21179
  }), o = t.getRenderTarget();
20827
- t.getClearColor(yw);
21180
+ t.getClearColor(qw);
20828
21181
  let s = t.getClearAlpha(), c = t.autoClear, l = t.autoClearColor, u = t.autoClearDepth, d = t.autoClearStencil;
20829
- 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;
20830
21183
  let f = yield t.readRenderTargetPixelsAsync(a, 0, 0, i.width, i.height);
20831
21184
  return i.data.set(f), a.dispose(), i;
20832
21185
  });
20833
21186
  }
20834
21187
  //#endregion
20835
21188
  //#region build/five/thirdparty/hammer.js
20836
- var Cw = (function(e, t, n, r) {
21189
+ var Zw = (function(e, t, n, r) {
20837
21190
  var i = [
20838
21191
  "",
20839
21192
  "webkit",
@@ -21662,7 +22015,7 @@ var Cw = (function(e, t, n, r) {
21662
22015
  })(typeof window < "u" ? window : {}, typeof document < "u" ? document : {}, "Hammer");
21663
22016
  //#endregion
21664
22017
  //#region build/five/controllers/base.js
21665
- function ww(e, t, n) {
22018
+ function Qw(e, t, n) {
21666
22019
  if (n.isPerspectiveCamera) {
21667
22020
  e.setFromCamera(t, n);
21668
22021
  return;
@@ -21674,7 +22027,7 @@ function ww(e, t, n) {
21674
22027
  }
21675
22028
  e.setFromCamera(t, n);
21676
22029
  }
21677
- var Tw = class t extends xn {
22030
+ var $w = class t extends xn {
21678
22031
  static parseArgs(e) {
21679
22032
  return e instanceof t ? e : Object.assign({}, e);
21680
22033
  }
@@ -21751,7 +22104,7 @@ var Tw = class t extends xn {
21751
22104
  updateTime(e, t, ...n) {
21752
22105
  if (this.destroyed) return;
21753
22106
  let r = {};
21754
- 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);
21755
22108
  }
21756
22109
  render() {
21757
22110
  return !1;
@@ -21802,7 +22155,7 @@ var Tw = class t extends xn {
21802
22155
  }
21803
22156
  setCamera(e = {}) {
21804
22157
  var t, n, r, i, a;
21805
- 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);
21806
22159
  (f || d || m || p) && (this.camera.setFromPose({
21807
22160
  longitude: o,
21808
22161
  latitude: s,
@@ -21858,7 +22211,7 @@ var Tw = class t extends xn {
21858
22211
  }
21859
22212
  createRaycasterFromCamera(t, n) {
21860
22213
  let r = new e.Raycaster();
21861
- 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;
21862
22215
  }
21863
22216
  bindEvents(t) {
21864
22217
  let n = (e) => {
@@ -21871,10 +22224,10 @@ var Tw = class t extends xn {
21871
22224
  ctrlKey: "ctrlKey" in e ? e.ctrlKey : !1,
21872
22225
  altKey: "altKey" in e ? e.altKey : !1,
21873
22226
  metaKey: "metaKey" in e ? e.metaKey : !1
21874
- }), 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({
21875
22228
  threshold: 10,
21876
22229
  pointers: 0
21877
- }), s = new Cw.Tap({ interval: 410 }), c = new Cw.Pinch({
22230
+ }), s = new Zw.Tap({ interval: 410 }), c = new Zw.Pinch({
21878
22231
  threshold: 0,
21879
22232
  pointers: 2
21880
22233
  });
@@ -21919,7 +22272,7 @@ var Tw = class t extends xn {
21919
22272
  overallVelocityX: e.overallVelocityX,
21920
22273
  overallVelocityY: e.overallVelocityY,
21921
22274
  userAction: !0,
21922
- 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))
21923
22276
  });
21924
22277
  this.emit("gesture.fire", s), this.onPanGesture(s), v();
21925
22278
  }), i.on("tap", (e) => {
@@ -21961,7 +22314,7 @@ var Tw = class t extends xn {
21961
22314
  overallVelocityX: e.overallVelocityX,
21962
22315
  overallVelocityY: e.overallVelocityY,
21963
22316
  userAction: !0,
21964
- 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))
21965
22318
  });
21966
22319
  this.emit("gesture.fire", s), this.onTapGesture(s), v();
21967
22320
  }), i.on("pinchstart pinch pinchend", (t) => {
@@ -21974,7 +22327,7 @@ var Tw = class t extends xn {
21974
22327
  pointers: t.pointers.map((t) => {
21975
22328
  var n;
21976
22329
  let r = this.relativeClientPosition(t), i = new e.Raycaster();
21977
- 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({
21978
22331
  x: t.x,
21979
22332
  y: t.y,
21980
22333
  delta: (n = t.delta) == null ? 0 : n
@@ -22002,7 +22355,7 @@ var Tw = class t extends xn {
22002
22355
  overallVelocityX: t.overallVelocityX,
22003
22356
  overallVelocityY: t.overallVelocityY,
22004
22357
  userAction: !0,
22005
- 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))
22006
22359
  });
22007
22360
  this.emit("gesture.fire", c), this.onPinchGesture(c), v();
22008
22361
  }), i.on("dbltap", (e) => {
@@ -22044,7 +22397,7 @@ var Tw = class t extends xn {
22044
22397
  overallVelocityX: e.overallVelocityX,
22045
22398
  overallVelocityY: e.overallVelocityY,
22046
22399
  userAction: !0,
22047
- 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))
22048
22401
  });
22049
22402
  this.emit("gesture.fire", s), this.onDblTapGesture(s), v();
22050
22403
  });
@@ -22070,7 +22423,7 @@ var Tw = class t extends xn {
22070
22423
  overallVelocityX: 0,
22071
22424
  overallVelocityY: 0,
22072
22425
  userAction: !0,
22073
- 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))
22074
22427
  });
22075
22428
  }, f = (e) => {
22076
22429
  var t;
@@ -22110,7 +22463,7 @@ var Tw = class t extends xn {
22110
22463
  overallVelocityX: 0,
22111
22464
  overallVelocityY: 0,
22112
22465
  userAction: !0,
22113
- 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))
22114
22467
  });
22115
22468
  this.emit("gesture.fire", c), this.onMouseWheel(c), this.mouseWheelState && clearTimeout(this.mouseWheelState.timer), this.mouseWheelState = { timer: setTimeout(() => {
22116
22469
  this.mouseWheelState = void 0;
@@ -22128,7 +22481,7 @@ var Tw = class t extends xn {
22128
22481
  overallVelocityX: 0,
22129
22482
  overallVelocityY: 0,
22130
22483
  userAction: !0,
22131
- 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))
22132
22485
  });
22133
22486
  this.emit("gesture.fire", t), this.onMouseWheel(t);
22134
22487
  }, 100) };
@@ -22136,7 +22489,7 @@ var Tw = class t extends xn {
22136
22489
  v();
22137
22490
  }
22138
22491
  }, p = (e) => {
22139
- if ($S) return;
22492
+ if (DC) return;
22140
22493
  if (!n({
22141
22494
  x: e.clientX,
22142
22495
  y: e.clientY
@@ -22166,7 +22519,7 @@ var Tw = class t extends xn {
22166
22519
  overallVelocityX: 0,
22167
22520
  overallVelocityY: 0,
22168
22521
  userAction: !0,
22169
- 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))
22170
22523
  });
22171
22524
  this.emit("gesture.fire", c), this.mouseMoveState = {
22172
22525
  timeStamp: J(),
@@ -22220,7 +22573,7 @@ var Tw = class t extends xn {
22220
22573
  overallVelocityX: 0,
22221
22574
  overallVelocityY: 0,
22222
22575
  userAction: !0,
22223
- 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))
22224
22577
  });
22225
22578
  this.emit("gesture.fire", o), h(o);
22226
22579
  }, _ = (e) => {
@@ -22245,7 +22598,7 @@ var Tw = class t extends xn {
22245
22598
  overallVelocityX: 0,
22246
22599
  overallVelocityY: 0,
22247
22600
  userAction: !0,
22248
- 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))
22249
22602
  });
22250
22603
  this.emit("gesture.fire", o), h(o);
22251
22604
  }, v = () => {
@@ -22292,22 +22645,22 @@ var Tw = class t extends xn {
22292
22645
  overallVelocityX: 0,
22293
22646
  overallVelocityY: 0,
22294
22647
  userAction: !0,
22295
- 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))
22296
22649
  });
22297
22650
  }, x = (e) => {
22298
- if (e.preventDefault(), $S) return;
22651
+ if (e.preventDefault(), DC) return;
22299
22652
  let t = b(e);
22300
22653
  this.emit("gesture.fire", t), y = { firstEvent: t };
22301
22654
  let r = y.firstEvent;
22302
22655
  r && !n(r.center) || this.onPinchGesture(t);
22303
22656
  }, S = (e) => {
22304
- if (e.preventDefault(), $S || !y) return;
22657
+ if (e.preventDefault(), DC || !y) return;
22305
22658
  let t = y.firstEvent;
22306
22659
  if (t && !n(t.center)) return;
22307
22660
  let r = b(e);
22308
22661
  this.emit("gesture.fire", r), this.onPinchGesture(r);
22309
22662
  }, C = (e) => {
22310
- if (e.preventDefault(), $S || !y) return;
22663
+ if (e.preventDefault(), DC || !y) return;
22311
22664
  let t = y.firstEvent;
22312
22665
  if (y = null, t && !n(t.center)) return;
22313
22666
  let r = b(e);
@@ -22322,16 +22675,16 @@ var Tw = class t extends xn {
22322
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);
22323
22676
  }, { element: t });
22324
22677
  }
22325
- }, 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();
22326
- 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;
22327
- 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 {
22328
22681
  constructor() {
22329
- 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);
22330
22683
  }
22331
22684
  dispose() {
22332
22685
  this.remove(this.ringMesh);
22333
22686
  }
22334
- }, Bw = new e.Box3(), Vw = new e.Vector3(), Hw = {
22687
+ }, mT = new e.Box3(), hT = new e.Vector3(), gT = {
22335
22688
  defaultLongitude: Math.PI / 4,
22336
22689
  defaultLatitude: Math.PI / 4,
22337
22690
  defaultFov: 80,
@@ -22339,8 +22692,8 @@ var zw = class extends e.Object3D {
22339
22692
  minFov: 20,
22340
22693
  maxLatitude: Math.PI / 2,
22341
22694
  minLatitude: -Math.PI / 2,
22342
- intersectMeshCreator: () => new zw()
22343
- }, Uw = class t extends Tw {
22695
+ intersectMeshCreator: () => new pT()
22696
+ }, _T = class t extends $w {
22344
22697
  static distanceFromModel(e, t, n) {
22345
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);
22346
22699
  i = isNaN(i) || !isFinite(i) ? 1 : i;
@@ -22352,14 +22705,14 @@ var zw = class extends e.Object3D {
22352
22705
  if (e instanceof t) return e;
22353
22706
  let u = super.parseArgs(e);
22354
22707
  return Object.assign(Object.assign({}, u), {
22355
- defaultLongitude: (n = e.defaultLongitude) == null ? Hw.defaultLongitude : n,
22356
- defaultLatitude: (r = e.defaultLatitude) == null ? Hw.defaultLatitude : r,
22357
- defaultFov: (i = e.defaultFov) == null ? Hw.defaultFov : i,
22358
- maxFov: (a = e.maxFov) == null ? Hw.maxFov : a,
22359
- minFov: (o = e.minFov) == null ? Hw.minFov : o,
22360
- maxLatitude: (s = e.maxLatitude) == null ? Hw.maxLatitude : s,
22361
- minLatitude: (c = e.minLatitude) == null ? Hw.minLatitude : c,
22362
- 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
22363
22716
  });
22364
22717
  }
22365
22718
  static initAnimationEndState(n) {
@@ -22370,7 +22723,7 @@ var zw = class extends e.Object3D {
22370
22723
  } : {
22371
22724
  workCode: f.workCode,
22372
22725
  panoIndex: f.panoIndex
22373
- }, 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;
22374
22727
  return Object.assign(Object.assign({}, p), {
22375
22728
  mode: "Floorplan",
22376
22729
  longitude: h,
@@ -22457,7 +22810,7 @@ var zw = class extends e.Object3D {
22457
22810
  let { pano0: e, pano1: t } = this.modelScene.parameter;
22458
22811
  e && e.map !== (t == null ? void 0 : t.map) && e.map.dispose(), i.progress = 1, i.pano0 = i.pano1 = t;
22459
22812
  }
22460
- 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) {
22461
22814
  let e = q(this.camera.position.distanceTo(this.intersectMesh.position) * (2 * Math.tan(.5 * this.camera.fov / 180 * Math.PI)) / 5, .5);
22462
22815
  this.intersectMesh.scale.setScalar(e);
22463
22816
  } else this.intersectMesh.scale.setScalar(1);
@@ -22496,7 +22849,7 @@ var zw = class extends e.Object3D {
22496
22849
  userAction: this.userAction
22497
22850
  }));
22498
22851
  }, (e) => {
22499
- 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));
22500
22853
  this.emit("initAnimation.end", $("initAnimation.end", {
22501
22854
  state: t,
22502
22855
  userAction: this.userAction
@@ -22515,9 +22868,9 @@ var zw = class extends e.Object3D {
22515
22868
  let n = [];
22516
22869
  for (let t of this.works) {
22517
22870
  let r = this.modelScene.models.find((e) => e.work === t);
22518
- 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);
22519
22872
  }
22520
- 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);
22521
22874
  return r && i < Math.max(r.standingPosition.distanceTo(this.camera.position) / 5, 10) ? r : null;
22522
22875
  }
22523
22876
  coordinatesForOffset(t) {
@@ -22751,7 +23104,7 @@ var zw = class extends e.Object3D {
22751
23104
  return;
22752
23105
  }
22753
23106
  this.pendingTextureId = null, u.name = p;
22754
- 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), _ = {
22755
23108
  panoId: o,
22756
23109
  map: u,
22757
23110
  mapSize: f,
@@ -22789,7 +23142,7 @@ var zw = class extends e.Object3D {
22789
23142
  hideIntersectMesh() {
22790
23143
  this.intersectMesh.visible = !1, this.needsRender = !0;
22791
23144
  }
22792
- }, Ww = Object.assign(Object.assign({}, Ql(Hw, [
23145
+ }, vT = Object.assign(Object.assign({}, Ql(gT, [
22793
23146
  "defaultLongitude",
22794
23147
  "defaultLatitude",
22795
23148
  "maxLatitude",
@@ -22797,15 +23150,15 @@ var zw = class extends e.Object3D {
22797
23150
  ])), {
22798
23151
  defaultLongitude: 0,
22799
23152
  defaultLatitude: Math.PI / 2
22800
- }), Gw = class t extends Uw {
23153
+ }), yT = class t extends _T {
22801
23154
  static parseArgs(e) {
22802
23155
  var n, r;
22803
23156
  if (e instanceof t) return e;
22804
23157
  let i = Object.assign(Object.assign({}, e), {
22805
23158
  maxLatitude: Math.PI / 2,
22806
23159
  minLatitude: -Math.PI / 2,
22807
- defaultLongitude: (n = e.defaultLongitude) == null ? Ww.defaultLongitude : n,
22808
- 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
22809
23162
  });
22810
23163
  return super.parseArgs(i);
22811
23164
  }
@@ -22831,7 +23184,7 @@ var zw = class extends e.Object3D {
22831
23184
  x: n.x,
22832
23185
  y: n.y,
22833
23186
  z: n.z,
22834
- distance: Uw.distanceFromModel(this.modelScene, this.defaultFov, this.camera.aspect)
23187
+ distance: _T.distanceFromModel(this.modelScene, this.defaultFov, this.camera.aspect)
22835
23188
  }, 0).catch(Y), this.hideIntersectMesh();
22836
23189
  }
22837
23190
  updateCamera(e, t, n) {
@@ -22889,7 +23242,7 @@ var zw = class extends e.Object3D {
22889
23242
  userAction: this.userAction
22890
23243
  }));
22891
23244
  }, (e) => {
22892
- 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));
22893
23246
  this.emit("initAnimation.end", $("initAnimation.end", {
22894
23247
  state: t,
22895
23248
  userAction: this.userAction
@@ -22954,7 +23307,7 @@ var zw = class extends e.Object3D {
22954
23307
  let t = q(this.cameraMotion.value.fov - e.center.delta, this.minFov, this.maxFov);
22955
23308
  e.state.fov = t, this.emit("gesture.mousewheel", e), !e.defaultPrevented && this.cameraMotion.set({ fov: t }, 0).catch(Y);
22956
23309
  }
22957
- }, Kw = {
23310
+ }, bT = {
22958
23311
  defaultLatitude: 0,
22959
23312
  defaultFov: 90,
22960
23313
  maxFov: 120,
@@ -22962,23 +23315,23 @@ var zw = class extends e.Object3D {
22962
23315
  maxLatitude: (e) => Math.PI / 2 - e / 2 / 180 * Math.PI,
22963
23316
  minLatitude: (e) => -Math.PI / 2 + e / 2 / 180 * Math.PI,
22964
23317
  moveSpeed: 3.6,
22965
- intersectMeshCreator: () => new zw(),
23318
+ intersectMeshCreator: () => new pT(),
22966
23319
  aerialObserverMinHeight: 5
22967
- }, qw = class t extends Tw {
23320
+ }, xT = class t extends $w {
22968
23321
  static parseArgs(e) {
22969
23322
  var n, r, i, a, o, s, c, l, u;
22970
23323
  if (e instanceof t) return e;
22971
23324
  let d = super.parseArgs(e);
22972
23325
  return Object.assign(Object.assign({}, d), {
22973
- defaultLatitude: (n = e.defaultLatitude) == null ? Kw.defaultLatitude : n,
22974
- defaultFov: (r = e.defaultFov) == null ? Kw.defaultFov : r,
22975
- maxFov: (i = e.maxFov) == null ? Kw.maxFov : i,
22976
- minFov: (a = e.minFov) == null ? Kw.minFov : a,
22977
- maxLatitude: (o = e.maxLatitude) == null ? Kw.maxLatitude : o,
22978
- minLatitude: (s = e.minLatitude) == null ? Kw.minLatitude : s,
22979
- moveSpeed: (c = e.moveSpeed) == null ? Kw.moveSpeed : c,
22980
- intersectMeshCreator: (l = e.intersectMeshCreator) == null ? Kw.intersectMeshCreator : l,
22981
- 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
22982
23335
  });
22983
23336
  }
22984
23337
  static initAnimationEndState(t) {
@@ -22989,7 +23342,7 @@ var zw = class extends e.Object3D {
22989
23342
  } : {
22990
23343
  workCode: d.workCode,
22991
23344
  panoIndex: d.panoIndex
22992
- }, 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();
22993
23346
  return p && y.copy(p.position).applyMatrix4(p.work.transform), {
22994
23347
  workCode: f.workCode,
22995
23348
  panoIndex: f.panoIndex,
@@ -23201,11 +23554,11 @@ var zw = class extends e.Object3D {
23201
23554
  let i = Math.max(40 - n * 5, this.minFov, 5), a = i - t < t - this.defaultFov ? i : this.defaultFov;
23202
23555
  e.state.fov = a, this.emit("gesture.dbltap", e), !e.defaultPrevented && (this.cameraMotion.set({ fov: a }, 360).catch(Y), this.hideIntersectMesh());
23203
23556
  }
23204
- }, Jw = "data:video/mp4;base64,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", Yw;
23205
- function Xw() {
23206
- 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) => {
23207
23560
  let t, n = document.createElement("video");
23208
- n.muted = !0, n.src = Jw, n.addEventListener("timeupdate", function r() {
23561
+ n.muted = !0, n.src = ST, n.addEventListener("timeupdate", function r() {
23209
23562
  n.removeEventListener("timeupdate", r, !1), clearTimeout(t);
23210
23563
  let i = document.createElement("canvas");
23211
23564
  i.width = i.height = 1;
@@ -23224,7 +23577,7 @@ function Xw() {
23224
23577
  }
23225
23578
  //#endregion
23226
23579
  //#region build/five/utils/tileCube.js
23227
- var Zw = [
23580
+ var TT = [
23228
23581
  "right",
23229
23582
  "left",
23230
23583
  "up",
@@ -23232,7 +23585,7 @@ var Zw = [
23232
23585
  "front",
23233
23586
  "back"
23234
23587
  ];
23235
- function Qw(t, n, r, i) {
23588
+ function ET(t, n, r, i) {
23236
23589
  let a = new e.Box3();
23237
23590
  switch (t) {
23238
23591
  case "up":
@@ -23257,7 +23610,7 @@ function Qw(t, n, r, i) {
23257
23610
  }
23258
23611
  return a.applyMatrix4(new e.Matrix4().makeRotationY(Math.PI));
23259
23612
  }
23260
- var $w = (t, n) => {
23613
+ var DT = (t, n) => {
23261
23614
  if (t.level >= n) return;
23262
23615
  let r = t.level + 1, i = t.size / 2, a = [
23263
23616
  new e.Vector2(t.position.x, t.position.y),
@@ -23271,44 +23624,44 @@ var $w = (t, n) => {
23271
23624
  level: r,
23272
23625
  size: i,
23273
23626
  position: e,
23274
- box: Qw(t.face, e.x, e.y, i),
23627
+ box: ET(t.face, e.x, e.y, i),
23275
23628
  parent: t,
23276
23629
  children: []
23277
23630
  };
23278
- t.children.push(a), $w(a, n);
23631
+ t.children.push(a), DT(a, n);
23279
23632
  }
23280
23633
  };
23281
- function eT(t, n) {
23634
+ function OT(t, n) {
23282
23635
  let r = {
23283
23636
  level: 0,
23284
23637
  face: t,
23285
23638
  position: new e.Vector2(0, 0),
23286
23639
  size: 1,
23287
- box: Qw(t, 0, 0, 1),
23640
+ box: ET(t, 0, 0, 1),
23288
23641
  parent: null,
23289
23642
  children: []
23290
23643
  };
23291
- return $w(r, n), r;
23644
+ return DT(r, n), r;
23292
23645
  }
23293
- function tT(e) {
23646
+ function kT(e) {
23294
23647
  return {
23295
- children: Zw.map((t) => eT(t, e)),
23648
+ children: TT.map((t) => OT(t, e)),
23296
23649
  maxLevel: e
23297
23650
  };
23298
23651
  }
23299
- function nT(e, t) {
23300
- 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);
23301
23654
  }
23302
23655
  //#endregion
23303
23656
  //#region build/five/core/tiling.js
23304
- 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 = {
23305
- up: new e.Quaternion(hT, 0, 0, hT),
23306
- down: new e.Quaternion(-hT, 0, 0, hT),
23307
- left: new e.Quaternion(0, hT, 0, hT),
23308
- 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),
23309
23662
  front: new e.Quaternion(0, 0, 0, 1),
23310
23663
  back: new e.Quaternion(0, 1, 0, 0)
23311
- }, _T = (() => {
23664
+ }, GT = (() => {
23312
23665
  let t = new Float32Array([
23313
23666
  -.5,
23314
23667
  -.5,
@@ -23340,16 +23693,16 @@ var rT, iT = new e.Vector3(), aT = new e.Quaternion(), oT = new e.Matrix4(), sT
23340
23693
  2
23341
23694
  ]), i = new e.BufferGeometry();
23342
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;
23343
- })(), vT = null;
23344
- function yT() {
23345
- return vT || (vT = new e.DataTexture(new Uint8Array([
23696
+ })(), KT = null;
23697
+ function qT() {
23698
+ return KT || (KT = new e.DataTexture(new Uint8Array([
23346
23699
  255,
23347
23700
  255,
23348
23701
  255,
23349
23702
  255
23350
- ]), 1, 1), vT.needsUpdate = !0), vT;
23703
+ ]), 1, 1), KT.needsUpdate = !0), KT;
23351
23704
  }
23352
- function bT() {
23705
+ function JT() {
23353
23706
  return {
23354
23707
  enabled: R(0),
23355
23708
  maxDisplayBoost: R(1),
@@ -23362,30 +23715,30 @@ function bT() {
23362
23715
  offsetHdr: R(Sn.offsetHdr)
23363
23716
  };
23364
23717
  }
23365
- function xT(e, t) {
23718
+ function YT(e, t) {
23366
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);
23367
23720
  return se(w(d.x), w(d.y), w(d.z));
23368
23721
  }
23369
- function ST(e, t, n) {
23722
+ function XT(e, t, n) {
23370
23723
  return se(e).add(n.offsetSdr).mul(t).sub(n.offsetHdr);
23371
23724
  }
23372
- var CT = class extends e.NodeMaterial {
23725
+ var ZT = class extends e.NodeMaterial {
23373
23726
  constructor(e) {
23374
- 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();
23375
23728
  }
23376
23729
  setupNode() {
23377
- 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));
23378
23731
  this.outputNode = o;
23379
23732
  }
23380
23733
  setMap(e) {
23381
- this.map = e, this._mapNode.value = e == null ? yT() : e;
23734
+ this.map = e, this._mapNode.value = e == null ? qT() : e;
23382
23735
  }
23383
23736
  setGain(e) {
23384
- this._gainNode.value = e == null ? yT() : e;
23737
+ this._gainNode.value = e == null ? qT() : e;
23385
23738
  }
23386
- }, wT = class extends e.Mesh {
23739
+ }, QT = class extends e.Mesh {
23387
23740
  constructor(t, n, r, i, a) {
23388
- 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]) => {
23389
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));
23390
23743
  }).catch(Y);
23391
23744
  }
@@ -23399,14 +23752,14 @@ var CT = class extends e.NodeMaterial {
23399
23752
  dispose() {
23400
23753
  this.disposed = !0, this.releaseTexture(this.colorTexture), this.releaseTexture(this.gainmapTexture), this.colorTexture = void 0, this.gainmapTexture = void 0, this.releaseMaterial(this.material);
23401
23754
  }
23402
- }, TT = sb(20, 20, 20);
23403
- TT.applyMatrix4(new e.Matrix4().makeScale(-1, 1, 1));
23404
- 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 {
23405
23758
  constructor(t) {
23406
23759
  super();
23407
23760
  let n = ee(ne), r = se(n.x, n.y, n.z);
23408
23761
  this._mapNode = b(new e.CubeTexture(), r), this._gainNode = b(new e.CubeTexture(), r);
23409
- 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);
23410
23763
  this.fragmentNode = V(j(this._mapNode.rgb, a, t.enabled), 1), this.depthTest = !0, this.depthWrite = !0, this.transparent = !1;
23411
23764
  }
23412
23765
  get map() {
@@ -23418,9 +23771,9 @@ var ET = class extends e.NodeMaterial {
23418
23771
  set gainmap(e) {
23419
23772
  this._gainNode.value = e == null ? null : e;
23420
23773
  }
23421
- }, DT = class extends e.Mesh {
23774
+ }, tE = class extends e.Mesh {
23422
23775
  constructor(e) {
23423
- 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;
23424
23777
  }
23425
23778
  update(e, t, n) {
23426
23779
  if (this.disposed) {
@@ -23432,11 +23785,11 @@ var ET = class extends e.NodeMaterial {
23432
23785
  dispose() {
23433
23786
  this.disposed = !0, this.material.dispose();
23434
23787
  }
23435
- }, OT = 64, kT = 32, AT = class {
23788
+ }, nE = 64, rE = 32, iE = class {
23436
23789
  constructor(t) {
23437
23790
  var n;
23438
23791
  this.prevHDRKey = "", this.tileMaterialPool = [], this.tileTexturePool = /* @__PURE__ */ new Map(), this.forceRenderWhenNextUpdate = !0, this.releaseTileMaterial = (e) => {
23439
- 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) {
23440
23793
  e.dispose();
23441
23794
  return;
23442
23795
  }
@@ -23450,12 +23803,12 @@ var ET = class extends e.NodeMaterial {
23450
23803
  return;
23451
23804
  }
23452
23805
  let o = `${i}x${a}:${e.colorSpace}`, s = this.tileTexturePool.get(o);
23453
- if (s || (s = [], this.tileTexturePool.set(o, s)), s.length >= kT) {
23806
+ if (s || (s = [], this.tileTexturePool.set(o, s)), s.length >= rE) {
23454
23807
  e.dispose();
23455
23808
  return;
23456
23809
  }
23457
23810
  s.push(e);
23458
- }, 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, {
23459
23812
  depthBuffer: !0,
23460
23813
  stencilBuffer: !1,
23461
23814
  generateMipmaps: !1,
@@ -23477,7 +23830,7 @@ var ET = class extends e.NodeMaterial {
23477
23830
  }), this.tileTexturePool.clear(), this.disposed = !0;
23478
23831
  }
23479
23832
  acquireTileMaterial() {
23480
- return this.tileMaterialPool.pop() || new CT(this.hdrUniforms);
23833
+ return this.tileMaterialPool.pop() || new ZT(this.hdrUniforms);
23481
23834
  }
23482
23835
  acquireTileTexture(t, n, r) {
23483
23836
  let i = this.tileTexturePool.get(`${t}x${n}:${r}`);
@@ -23501,7 +23854,7 @@ var ET = class extends e.NodeMaterial {
23501
23854
  if (this.disposed || this.observer === e) return;
23502
23855
  this.cleanup(), this.observer = e;
23503
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;
23504
- this.tileTree = tT(a);
23857
+ this.tileTree = kT(a);
23505
23858
  }
23506
23859
  update(t) {
23507
23860
  var n, r, i, a, o, s, c, l, u, d;
@@ -23524,12 +23877,12 @@ var ET = class extends e.NodeMaterial {
23524
23877
  this.level = q(w, 0, this.tileTree.maxLevel);
23525
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;
23526
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);
23527
- 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);
23528
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);
23529
- let te = sT.copy(v);
23530
- 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);
23531
23884
  let ne = this.frustum.planes[5].normal, re = [];
23532
- w >= C && nT(this.tileTree, (e) => {
23885
+ w >= C && AT(this.tileTree, (e) => {
23533
23886
  if (!(e.level < C)) {
23534
23887
  if (e.level > w || !this.frustum.intersectsBox(e.box)) return !1;
23535
23888
  re.push(e);
@@ -23539,9 +23892,9 @@ var ET = class extends e.NodeMaterial {
23539
23892
  re.sort((e, t) => {
23540
23893
  if (e.level !== t.level) return e.level - t.level;
23541
23894
  let n = P.get(e);
23542
- 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));
23543
23896
  let r = P.get(t);
23544
- 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;
23545
23898
  });
23546
23899
  let ie = /* @__PURE__ */ new WeakSet(), ae = this.observer.images.tiles;
23547
23900
  if (ae) for (let t of re) {
@@ -23594,7 +23947,7 @@ var ET = class extends e.NodeMaterial {
23594
23947
  generateMipmaps: !1,
23595
23948
  fetcher: $y(this.fiveId, this.observer.work)
23596
23949
  }).then((e) => this.adoptTileTexture(e.body)) : Promise.resolve(void 0)]);
23597
- 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;
23598
23951
  }
23599
23952
  let F = [], I = [];
23600
23953
  this.tileMeshes.forEach((e, t) => {
@@ -23605,33 +23958,33 @@ var ET = class extends e.NodeMaterial {
23605
23958
  let L = I.sort((e, t) => t.activeTime - e.activeTime).slice(Math.max(0, this.maxCacheTile - F.length));
23606
23959
  for (let e of L) this.tileMeshes.delete(e.node), this.scene.remove(e), e.dispose(), f = !0;
23607
23960
  if (f) {
23608
- let t = g.getRenderTarget(), n = g.getClearColor(mT), r = g.getClearAlpha(), i = g.autoClear, a = g.autoClearColor, o = g.autoClearDepth, s = g.autoClearStencil;
23609
- 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;
23610
23963
  }
23611
23964
  return this.forceRenderWhenNextUpdate = !1, f;
23612
23965
  }
23613
- }, 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);
23614
- FT.applyMatrix4(new e.Matrix4().makeScale(-1, 1, 1));
23615
- 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() {
23616
23969
  let t = {
23617
23970
  size: R(new e.Vector2()),
23618
23971
  mapMatrix: R(new e.Matrix4()),
23619
23972
  panoMatrix: R(new e.Matrix4()),
23620
23973
  alpha: R(1),
23621
23974
  map: L(new e.Texture())
23622
- }, 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();
23623
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, {
23624
23977
  material: u,
23625
23978
  u: t
23626
23979
  };
23627
23980
  }
23628
- var LT = class {
23981
+ var dE = class {
23629
23982
  constructor() {
23630
- let { material: t, u: n } = IT();
23631
- 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;
23632
23985
  }
23633
23986
  setMaterial(t) {
23634
- 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));
23635
23988
  let n = t !== null;
23636
23989
  this.active !== n && (this.active = n, this.object.visible = n);
23637
23990
  }
@@ -23641,36 +23994,36 @@ var LT = class {
23641
23994
  dispose() {
23642
23995
  this.material.dispose();
23643
23996
  }
23644
- }, RT = new e.Color(0, 0, 0), zT = new e.Color();
23645
- function BT(e) {
23997
+ }, fE = new e.Color(0, 0, 0), pE = new e.Color();
23998
+ function mE(e) {
23646
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));
23647
24000
  return V(t, n, r, e.sub(r.mul(1 / 256))).mul(256 / 255);
23648
24001
  }
23649
- var VT = R(0), HT = BT(v(D(re.sub(_)).div(VT), 0, 1)), UT = new e.NodeMaterial();
23650
- UT.fragmentNode = HT, UT.fog = !1;
23651
- function WT(e, t, n, r = 1e3) {
23652
- 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);
23653
24006
  let i = e.getClearAlpha(), a = t.overrideMaterial;
23654
- 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;
23655
24008
  }
23656
24009
  //#endregion
23657
24010
  //#region build/five/utils/error.js
23658
- function GT(e) {
24011
+ function yE(e) {
23659
24012
  if (e instanceof Error) return e;
23660
24013
  let t = typeof e;
23661
24014
  return Error(t && t === "object" ? JSON.stringify(e) : e);
23662
24015
  }
23663
24016
  //#endregion
23664
24017
  //#region build/five/controllers/panorama.js
23665
- 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 = [
23666
24019
  new e.Vector3(0, 0, 0).multiplyScalar(.1),
23667
24020
  new e.Vector3(1, 0, 0).multiplyScalar(.1),
23668
24021
  new e.Vector3(-.5, 0, -Math.sqrt(3) / 2).multiplyScalar(.1),
23669
24022
  new e.Vector3(-.5, 0, Math.sqrt(3) / 2).multiplyScalar(.1)
23670
- ], XT = Object.assign(Object.assign({}, Kw), {
24023
+ ], wE = Object.assign(Object.assign({}, bT), {
23671
24024
  maxAccessibleDistance: 5,
23672
24025
  panoTapTriggerRadius: .5,
23673
- 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(),
23674
24027
  adjustPanoCircleMeshPositionBasedOnModel: !1,
23675
24028
  tileLevelForFov: ((e, t) => {
23676
24029
  var n;
@@ -23680,20 +24033,20 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
23680
24033
  tileAppearDuration: .5,
23681
24034
  tileMaxRequest: 3,
23682
24035
  flyEffectUseDepthBuffer: !1
23683
- }), ZT = class t extends qw {
24036
+ }), TE = class t extends xT {
23684
24037
  static parseArgs(e) {
23685
24038
  var n, r, i, a, o, s, c, l;
23686
24039
  if (e instanceof t) return e;
23687
24040
  let u = super.parseArgs(e);
23688
24041
  return Object.assign(Object.assign({}, u), {
23689
- maxAccessibleDistance: (n = e.maxAccessibleDistance) == null ? XT.maxAccessibleDistance : n,
23690
- panoTapTriggerRadius: (r = e.panoTapTriggerRadius) == null ? XT.panoTapTriggerRadius : r,
23691
- panoCircleMeshCreator: (i = e.panoCircleMeshCreator) == null ? XT.panoCircleMeshCreator : i,
23692
- adjustPanoCircleMeshPositionBasedOnModel: (a = e.adjustPanoCircleMeshPositionBasedOnModel) == null ? XT.adjustPanoCircleMeshPositionBasedOnModel : a,
23693
- tileLevelForFov: (o = e.tileLevelForFov) == null ? XT.tileLevelForFov : o,
23694
- tileAppearDuration: (s = e.tileAppearDuration) == null ? XT.tileAppearDuration : s,
23695
- tileMaxRequest: (c = e.tileMaxRequest) == null ? XT.tileMaxRequest : c,
23696
- 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
23697
24050
  });
23698
24051
  }
23699
24052
  static initAnimationEndState(e) {
@@ -23714,12 +24067,12 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
23714
24067
  panoPicture: this.modelScene.parameter.resolveValue().pano1,
23715
24068
  position: this.camera.pose.offset.clone(),
23716
24069
  effect: "fly",
23717
- effectEasing: KT,
24070
+ effectEasing: bE,
23718
24071
  fixCameraTransform: new e.Matrix4()
23719
- }, 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({
23720
24073
  fiveId: this.fiveId,
23721
24074
  enableHDR: this.enableHDR
23722
- }), 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;
23723
24076
  }
23724
24077
  get tileLevel() {
23725
24078
  return this.tiling.level;
@@ -23832,13 +24185,13 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
23832
24185
  l !== this.currentPano && (this.currentPano = l, this.accessibleObserverFloorCheckCount = 0), this.emit("pano.moving", $("pano.moving", {
23833
24186
  userAction: this.userAction,
23834
24187
  prevPano: Qb(y.panoId),
23835
- 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),
23836
24189
  options: {},
23837
24190
  progress: this.locationMotion.progress,
23838
24191
  error: null
23839
24192
  }));
23840
24193
  }
23841
- 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);
23842
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);
23843
24196
  if (this.adjustPanoCircleMeshPositionBasedOnModel && this.helper.visible && S) {
23844
24197
  let t = [], n = S.work.observers;
@@ -23859,9 +24212,9 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
23859
24212
  let t = .3, i = .005, a = n.standingPosition.clone().applyMatrix4(n.work.transform), o = Zb({
23860
24213
  panoIndex: n.panoIndex,
23861
24214
  workCode: n.work.workCode
23862
- }), s = YT.map((n) => {
23863
- 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;
23864
- 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);
23865
24218
  return o && o.distance - i <= t ? new e.Vector3().copy(a).setY(o.point.y + i) : a;
23866
24219
  });
23867
24220
  s.sort((e, t) => t.y - e.y);
@@ -23908,7 +24261,7 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
23908
24261
  else {
23909
24262
  t.position.copy(r.standingPosition).applyMatrix4(r.work.transform);
23910
24263
  let e = this.adjustPanoCircleMeshPositionFix.get(r.panoId);
23911
- 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);
23912
24265
  }
23913
24266
  let a = this.camera.position.clone().setY(t.position.y), o = new e.Vector3().copy(t.position).sub(a).normalize();
23914
24267
  if (n === Zb(this.currentPano)) {
@@ -24015,9 +24368,9 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24015
24368
  generateMipmaps: !1
24016
24369
  });
24017
24370
  let t = new e.CubeCamera(this.camera.near, this.camera.far, this.pano0DepthCubeRenderTarget);
24018
- 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);
24019
24372
  let i = new e.CubeCamera(this.camera.near, this.camera.far, this.pano1DepthCubeRenderTarget);
24020
- 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({
24021
24374
  pano0Depth: {
24022
24375
  panoId: n.panoId,
24023
24376
  map: this.pano0DepthCubeRenderTarget.texture,
@@ -24103,7 +24456,7 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24103
24456
  }
24104
24457
  let v = "move-to-pano-" + s;
24105
24458
  this.pending.add(v);
24106
- let y = QC("pano.prepare", {
24459
+ let y = Ew("pano.prepare", {
24107
24460
  options: n,
24108
24461
  prevMode: this.mode,
24109
24462
  prevPano: this.currentPano,
@@ -24119,7 +24472,7 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24119
24472
  let r = {
24120
24473
  panoId: s,
24121
24474
  effect: b,
24122
- effectEasing: (o = n.effectEasing) == null ? KT : o,
24475
+ effectEasing: (o = n.effectEasing) == null ? bE : o,
24123
24476
  panoPicture: {
24124
24477
  panoId: S.panoId,
24125
24478
  map: S.map,
@@ -24135,13 +24488,13 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24135
24488
  position: c.position.clone().applyMatrix4(c.work.transform),
24136
24489
  fixCameraTransform: new e.Matrix4()
24137
24490
  };
24138
- 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(() => {
24139
24492
  Bu.shared.add(() => {
24140
24493
  this.pending.delete(v), this.doMoveToPano(t, r, n);
24141
24494
  }, !0, 1);
24142
24495
  }).catch((e) => {
24143
24496
  var r;
24144
- 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));
24145
24498
  this.emit("pano.error", $("pano.error", {
24146
24499
  error: i,
24147
24500
  userAction: this.userAction,
@@ -24169,10 +24522,10 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24169
24522
  if (this.destroyed) l.dispose();
24170
24523
  else {
24171
24524
  l.name = _;
24172
- 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 = {
24173
24526
  panoId: s,
24174
24527
  effect: b,
24175
- effectEasing: (o = n.effectEasing) == null ? KT : o,
24528
+ effectEasing: (o = n.effectEasing) == null ? bE : o,
24176
24529
  panoPicture: {
24177
24530
  panoId: s,
24178
24531
  map: l,
@@ -24189,7 +24542,7 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24189
24542
  }
24190
24543
  }),
24191
24544
  onError: (e) => {
24192
- 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));
24193
24546
  this.emit("pano.error", $("pano.error", {
24194
24547
  error: e,
24195
24548
  userAction: this.userAction,
@@ -24237,7 +24590,7 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24237
24590
  }, void 0, void 0, void 0, this.renderer)]).then(([e, t]) => ({
24238
24591
  config: e,
24239
24592
  map: t.body
24240
- })) : 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));
24241
24594
  Promise.all([
24242
24595
  w,
24243
24596
  T,
@@ -24312,7 +24665,7 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24312
24665
  })), this.initAnimationed = !0, e();
24313
24666
  },
24314
24667
  moveCancelCallback: () => {
24315
- 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));
24316
24669
  l === !1 && this.emit("initAnimation.start", $("initAnimation.start", {
24317
24670
  state: t,
24318
24671
  userAction: this.userAction
@@ -24474,7 +24827,7 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24474
24827
  panoMatrix: n.matrix.clone().premultiply(n.work.transform),
24475
24828
  alpha: 1
24476
24829
  }, t = gn(), r = this.videoTexture.image;
24477
- 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) => {
24478
24831
  i && n.images.video && r.getAttribute("uuid") === t && (r.oncanplay = () => {
24479
24832
  r.oncanplay = Y, r.play();
24480
24833
  }, r.ontimeupdate = () => {
@@ -24520,9 +24873,9 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24520
24873
  return Math.abs(i.z) > 1 || Math.abs(i.x) > 1 || Math.abs(i.y) > 1 ? !1 : n.loadable || n.active;
24521
24874
  }), u = /* @__PURE__ */ new Map(), d = l.slice().sort((e, t) => {
24522
24875
  let n = c[e], r = u.get(n);
24523
- 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));
24524
24877
  let i = c[t], o = u.get(i);
24525
- 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;
24526
24879
  });
24527
24880
  u.clear();
24528
24881
  for (let e of [
@@ -24533,13 +24886,13 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24533
24886
  ]) for (let t of d) {
24534
24887
  let n = c[t];
24535
24888
  if (n) {
24536
- 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);
24537
24890
  if (t && t.length() !== 0 && s.angleTo(t) < e) return n;
24538
24891
  }
24539
24892
  }
24540
24893
  let f = null;
24541
24894
  if (n) {
24542
- let e = n.ray.intersectBox(this.modelScene.boundingBox, JT);
24895
+ let e = n.ray.intersectBox(this.modelScene.boundingBox, SE);
24543
24896
  e && (e.project(t), Math.abs(e.z) <= 1 && (f = e.clone()));
24544
24897
  } else f = new e.Vector3(0, 0, 0);
24545
24898
  if (f) {
@@ -24551,15 +24904,15 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24551
24904
  return Math.abs(i.z) > 1 || Math.abs(i.x) > 1 || Math.abs(i.y) > 1 ? !1 : n.loadable || n.active;
24552
24905
  }), n = /* @__PURE__ */ new Map(), i = e.slice().sort((e, r) => {
24553
24906
  let i = c[e], a = n.get(i);
24554
- 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));
24555
24908
  let o = c[r], s = n.get(o);
24556
- 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;
24557
24910
  });
24558
24911
  n.clear();
24559
24912
  for (let e of i) {
24560
24913
  let n = c[e];
24561
24914
  if (n) {
24562
- let e = JT.copy(n.position).applyMatrix4(n.work.transform);
24915
+ let e = SE.copy(n.position).applyMatrix4(n.work.transform);
24563
24916
  if (e.project(t), Math.abs(e.z) > 1) continue;
24564
24917
  if (Math.pow(f.x - e.x, 2) + Math.pow(f.y - e.y, 2) < Math.pow(.4, 2)) return n;
24565
24918
  }
@@ -24577,12 +24930,12 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24577
24930
  let s = o.work.observers, c = o.accessibleNodes.filter((e) => {
24578
24931
  if (e === this.currentPano.panoIndex && o.work.workCode === this.currentPano.workCode) return !1;
24579
24932
  let t = s[e];
24580
- 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;
24581
24934
  }), [l] = this.modelScene.intersectRaycaster(r);
24582
24935
  if (l) {
24583
24936
  let [e, t] = Im(c, (e) => {
24584
24937
  let t = s[e];
24585
- 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;
24586
24939
  }, !0);
24587
24940
  typeof e == "number" && t < this.panoTapTriggerRadius && (a = (n = s[e]) == null ? null : n);
24588
24941
  }
@@ -24634,21 +24987,21 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24634
24987
  }
24635
24988
  }
24636
24989
  }
24637
- }, 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 = (() => {
24638
24991
  let e = typeof navigator < "u" && /iPad|iPhone|iPod/.test(navigator.platform);
24639
24992
  return () => e;
24640
- })(), rE = (() => {
24993
+ })(), jE = (() => {
24641
24994
  let e = typeof navigator < "u" && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
24642
24995
  return () => e;
24643
- })(), iE = (() => {
24996
+ })(), ME = (() => {
24644
24997
  let e = typeof navigator < "u" && navigator.userAgent.indexOf("Firefox") !== -1 && navigator.userAgent.indexOf("Android") !== -1;
24645
24998
  return () => e;
24646
- })(), aE = (() => {
24999
+ })(), NE = (() => {
24647
25000
  let e = typeof navigator < "u" ? navigator.userAgent.match(/.*Chrome\/([0-9]+)/) : null, t = e ? parseInt(e[1], 10) : null;
24648
25001
  return () => t;
24649
- })(), oE = (() => {
25002
+ })(), PE = (() => {
24650
25003
  let e = !1;
24651
- if (aE() === 65) {
25004
+ if (NE() === 65) {
24652
25005
  let t = typeof navigator < "u" ? navigator.userAgent.match(/.*Chrome\/([0-9\.]*)/) : null;
24653
25006
  if (t) {
24654
25007
  let [n, r, i, a] = t[1].split(".");
@@ -24656,41 +25009,41 @@ var KT = eg, qT = new e.Raycaster(), JT = new e.Vector3(), YT = [
24656
25009
  }
24657
25010
  }
24658
25011
  return () => e;
24659
- })(), sE = (() => {
24660
- 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;
24661
25014
  return () => e;
24662
- })(), cE = (() => {
25015
+ })(), IE = (() => {
24663
25016
  let e = typeof navigator < "u" && navigator.userAgent.indexOf("R7 Build") !== -1;
24664
25017
  return () => e;
24665
25018
  })();
24666
- function lE() {
25019
+ function LE() {
24667
25020
  let e = typeof window < "u" && (window.orientation == 90 || window.orientation == -90);
24668
- return cE() ? !e : e;
25021
+ return IE() ? !e : e;
24669
25022
  }
24670
- function uE(e) {
24671
- return !(isNaN(e) || e <= eE || e > tE);
25023
+ function RE(e) {
25024
+ return !(isNaN(e) || e <= OE || e > kE);
24672
25025
  }
24673
- function dE(e) {
25026
+ function zE(e) {
24674
25027
  return e.w > 1 ? 0 : 2 * Math.acos(e.w);
24675
25028
  }
24676
- var fE = (() => {
25029
+ var BE = (() => {
24677
25030
  let e = {};
24678
25031
  return (t, n) => {
24679
25032
  e[t] === void 0 && (console.warn("cardboard: " + n), e[t] = !0);
24680
25033
  };
24681
25034
  })();
24682
- function pE(e) {
25035
+ function VE(e) {
24683
25036
  let t, n = e.indexOf("://");
24684
25037
  t = n === -1 ? 0 : n + 3;
24685
25038
  let r = e.indexOf("/", t);
24686
25039
  return r === -1 && (r = e.length), e.substring(0, r);
24687
25040
  }
24688
- function mE() {
25041
+ function HE() {
24689
25042
  if (typeof window > "u" || typeof document > "u") return !1;
24690
- 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);
24691
25044
  return e && t !== n;
24692
25045
  }
24693
- var hE = (() => {
25046
+ var UE = (() => {
24694
25047
  function e(e, t, n) {
24695
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;
24696
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;
@@ -24706,7 +25059,7 @@ var hE = (() => {
24706
25059
  return (r, i, a) => {
24707
25060
  e(r, i), a && t(r, r, a), n(r, r);
24708
25061
  };
24709
- })(), gE = class {
25062
+ })(), WE = class {
24710
25063
  constructor(t = new e.Vector3(), n = 0) {
24711
25064
  this.sample = t, this.timestampS = n;
24712
25065
  }
@@ -24716,15 +25069,15 @@ var hE = (() => {
24716
25069
  copy(e) {
24717
25070
  this.set(e.sample, e.timestampS);
24718
25071
  }
24719
- }, _E = class {
25072
+ }, GE = class {
24720
25073
  constructor(t, n) {
24721
- 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();
24722
25075
  }
24723
25076
  addAccelMeasurement(e, t) {
24724
25077
  this.currentAccelMeasurement.set(e, t);
24725
25078
  }
24726
25079
  addGyroMeasurement(e, t) {
24727
- 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);
24728
25081
  }
24729
25082
  getOrientation() {
24730
25083
  return this.filterQ;
@@ -24739,7 +25092,7 @@ var hE = (() => {
24739
25092
  let r = new e.Quaternion();
24740
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();
24741
25094
  let i = new e.Quaternion();
24742
- 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));
24743
25096
  let a = new e.Quaternion();
24744
25097
  a.copy(this.filterQ), a.multiply(i), this.filterQ.slerp(a, 1 - this.kFilter), this.previousFilterQ.copy(this.filterQ);
24745
25098
  }
@@ -24753,7 +25106,7 @@ var hE = (() => {
24753
25106
  let r = new e.Quaternion(), i = new e.Vector3();
24754
25107
  return i.copy(t), i.normalize(), r.setFromAxisAngle(i, t.length() * n), r;
24755
25108
  }
24756
- }, vE = class {
25109
+ }, KE = class {
24757
25110
  constructor(t, n) {
24758
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();
24759
25112
  }
@@ -24762,11 +25115,11 @@ var hE = (() => {
24762
25115
  let i = new e.Vector3();
24763
25116
  i.copy(n), i.normalize();
24764
25117
  let a = n.length();
24765
- 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;
24766
25119
  let o = a * this.predictionTimeS;
24767
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;
24768
25121
  }
24769
- }, yE = class {
25122
+ }, qE = class {
24770
25123
  constructor(e) {
24771
25124
  this.coefficients = e;
24772
25125
  }
@@ -24783,15 +25136,15 @@ var hE = (() => {
24783
25136
  for (let e = 0; e < this.coefficients.length; e++) n = t * (n + this.coefficients[e]);
24784
25137
  return (n + 1) * e;
24785
25138
  }
24786
- }, bE = class {
25139
+ }, JE = class {
24787
25140
  constructor() {
24788
25141
  this.angularAcceleration = null, this.angularVelocity = null, this.linearAcceleration = null, this.linearVelocity = null, this.orientation = null, this.position = null;
24789
25142
  }
24790
- }, xE = class {
25143
+ }, YE = class {
24791
25144
  constructor() {
24792
25145
  this.leftDegrees = 0, this.rightDegrees = 0, this.upDegrees = 0, this.downDegrees = 0;
24793
25146
  }
24794
- }, SE = class {
25147
+ }, XE = class {
24795
25148
  constructor(t, n, r, i) {
24796
25149
  this.viewer = {
24797
25150
  id: "CardboardV1",
@@ -24819,11 +25172,11 @@ var hE = (() => {
24819
25172
  widthMeters: .11,
24820
25173
  heightMeters: .062,
24821
25174
  bevelMeters: .004
24822
- }, 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();
24823
- let a = aE();
24824
- 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();
24825
25178
  let o = typeof window < "u" ? -window.orientation * Math.PI / 180 : 0;
24826
- 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();
24827
25180
  }
24828
25181
  getPosition() {
24829
25182
  return null;
@@ -24848,20 +25201,20 @@ var hE = (() => {
24848
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_;
24849
25202
  }
24850
25203
  getPose() {
24851
- let e = new bE();
25204
+ let e = new JE();
24852
25205
  return e.orientation = this.getOrientation(), e;
24853
25206
  }
24854
25207
  resetPose() {
24855
- 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);
24856
25209
  }
24857
25210
  getFrameData(e) {
24858
25211
  let t = this.getOrientation(), n = this.getEyeOffset(), r = this.getEyeProjectionMatrix();
24859
- 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;
24860
25213
  }
24861
25214
  start() {
24862
25215
  if (typeof window > "u") return () => {};
24863
25216
  let e = this.onDeviceMotion_.bind(this), t = this.onOrientationChange_.bind(this), n = this.onMessage_.bind(this), r = this.onDeviceOrientation_.bind(this);
24864
- 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), () => {
24865
25218
  window.removeEventListener("devicemotion", e), window.removeEventListener("deviceorientation", t), window.removeEventListener("orientationchange", t), window.removeEventListener("message", n);
24866
25219
  };
24867
25220
  }
@@ -24885,17 +25238,17 @@ var hE = (() => {
24885
25238
  right: []
24886
25239
  };
24887
25240
  {
24888
- 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);
24889
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;
24890
25243
  }
24891
25244
  {
24892
- 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);
24893
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;
24894
25247
  }
24895
25248
  return r;
24896
25249
  }
24897
25250
  getEyeFieldOfView() {
24898
- 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();
24899
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, {
24900
25253
  left: f,
24901
25254
  right: p
@@ -24912,13 +25265,13 @@ var hE = (() => {
24912
25265
  updateDeviceMotion_(e) {
24913
25266
  let t = e.accelerationIncludingGravity, n = e.rotationRate, r = e.timeStamp / 1e3, i = r - this.previousTimestampS;
24914
25267
  if (i < 0) {
24915
- 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;
24916
25269
  return;
24917
- } else if (i <= eE || i > tE) {
24918
- 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;
24919
25272
  return;
24920
25273
  }
24921
- 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;
24922
25275
  }
24923
25276
  onOrientationChange_() {
24924
25277
  this.setScreenTransform_();
@@ -24940,19 +25293,19 @@ var hE = (() => {
24940
25293
  }
24941
25294
  this.inverseWorldToScreenQ.copy(this.worldToScreenQ), this.inverseWorldToScreenQ.invert();
24942
25295
  }
24943
- }, CE = [
25296
+ }, ZE = [
24944
25297
  0,
24945
25298
  0,
24946
25299
  .5,
24947
25300
  1
24948
- ], wE = [
25301
+ ], QE = [
24949
25302
  .5,
24950
25303
  0,
24951
25304
  .5,
24952
25305
  1
24953
- ], TE = class {
25306
+ ], $E = class {
24954
25307
  constructor(t) {
24955
- 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();
24956
25309
  let n = this.sensor.start();
24957
25310
  this.dispose = () => {
24958
25311
  let t = this.renderer.getSize(new e.Vector2());
@@ -24965,15 +25318,15 @@ var hE = (() => {
24965
25318
  var i = t.matrixWorldAutoUpdate;
24966
25319
  i && (t.updateMatrixWorld(), t.matrixWorldAutoUpdate = !1);
24967
25320
  let a = {
24968
- x: Math.round(r.width * CE[0]),
24969
- y: Math.round(r.height * CE[1]),
24970
- width: Math.round(r.width * CE[2]),
24971
- 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])
24972
25325
  }, o = {
24973
- x: Math.round(r.width * wE[0]),
24974
- y: Math.round(r.height * wE[1]),
24975
- width: Math.round(r.width * wE[2]),
24976
- 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])
24977
25330
  };
24978
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);
24979
25332
  let s = this.sensor.getEyeOffset();
@@ -24983,7 +25336,7 @@ var hE = (() => {
24983
25336
  } else this.renderer.render(t, n);
24984
25337
  }
24985
25338
  dispose() {}
24986
- }, EE = "data:image/png;base64,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", DE = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK4AAAClCAMAAADyFTYfAAAC+lBMVEUAAABISEhKSkpGRkZERERCQkJOTk45OTlBQUFQUFBSUlJUVFQ7OztYWFg/Pz8/Pz9aWlpkZGQ3NzdcXFxeXl5MTExHR0dhYWFJSUk9PT1WVlZMTEygoKBERERFRUVmZmZQUFA9PT1LS0tra2tPT09ubm5SUlI2NjZXV1czMzOpqalTU1O3t7dVVVVoaGhaWlpqamq1tbWhoaGenp6lpaWurq6ysrJZWVmjo6OgoKBUVFRdXV1cXFyvr6+0tLSwsLCrq6ubm5syMjKbm5twcHCQkJCLi4uGhobLy8uCgoJ9fX1ycnLPz894eHizs7NxcXFgYGCVlZWYmJh7e3umpqa3t7fOzs7JycnFxcWvr6+JiYl0dHRra2uSkpKNjY2IiIi4uLiUlJSsrKx3d3fDw8OHh4eQkJB9fX2dnZ2UlJR/f3++vr6RkZFzc3ODg4OioqKcnJyUlJSCgoJ4eHirq6u4uLh4eHiBgYF2dnaLi4uMjIyjo6OZmZm1tbWwsLCcnJyxsbF6enqAgICwsLC9vb26urqjo6OKioqsrKyWlpaoqKhbW1u2traCgoJ6enqZmZmbm5t+fn6JiYmgoKC0tLS4uLhmZma0tLSYmJhxcXF1dXWlpaWfn5+IiIicnJyzs7Ofn5+xsbGampq7u7vAwMCMjIxgYGChoaGgoKCQkJCOjo5vb2+RkZG1tbWOjo6Hh4d6enq1tbV8fHzGxsZubm5mZmanp6eZmZmvr6+Hh4eTk5Ojo6NwcHCenp6mpqZ6enqlpaWWlpaJiYmlpaVjY2OcnJyKiop9fX1/f3+CgoKlpaV4eHiUlJSIiIixsbGqqqqGhoZxcXGPj4+ysrK1tbWurq63t7eBgYG2tra2tralpaV+fn6enp6tra2EhISZmZmVlZWGhoZycnKhoaHV1dXX19fW1tbZ2dmrq6upqamwsLDa2trU1NSzs7Ovr6+ysrKurq6tra3S0tLGxsa9vb3Q0NDDw8PNzc3BwcG/v7/IyMi6urq4uLi1tbVYe8d+AAAA5HRSTlMA4+Pj4+Dj4OPj4+Pg4+Pg4+Pg4+Pj4OPg4OPg7+Dg4+Dj4OPg4+Dg4ODM4Mzg4+DjzPDwzMzM4MzM4ODgzMzMzMzg7uPMzMz+zMzM/swD4+DNzMz0/vz8+fXNzerMzAr58dPN9fLs7MzMzPn05My3j1w/Lff07+7MLRH77+7u7uVbJfr39PPr6eno6Ofn59W7jl9ZVxAK+ffr6dXVuHNAQCYm/Prx6uff3NLNuaePjX9zc/vq6d/f3NbUyK6rqaeNjXMR6ufc2tG9vLynp4xzWUnn0ry8t6WZemFLNxrRyMjIxGrWwvApAAASsUlEQVR42uzW12tTYRjH8aMQvLDiJDa2aimigqiQ3NjLIjVpTQutrba2FkupthXqIA6caNUaxYUXDlTcWhUVB+LeCxXUGy8EFxlocoxohokJ+Hvfk9Pn4q1By/EYwe9f8OHhd4b0P40qmXfm6vuJV8/Mk/6BVp19XD2Rd+Lq8xIprVu88kY1sEnuCYCltK1k3tbi+kXV8HLsgzpHIuFwnpHSMowA2EXVi7j2wYzA9/j3eLyioiL7lZRuYQTFxcX19fDiuNVtju+sOLio9ayUTmEERZO4lk9hoyUYDALburBXd8ORhkSF/DmN7osRTJoELcJtHzgrgqx43V1TRkYPtOFDQrZI6RFGAKuqrX9RFY1GgV2yYEgGsEqDErKcDs8bRtBcVFTEucDeXxv9FkWBhp4ZiLwNstwu6Z04gkdFPK59uDT+jRXccaG3KYntOK8sl0t/tcXPXhY2N6vahy9aw+EwsI4FRhNL4aoZZPmzpH80gtOFhdA2K9r75V+/htH0w4N6m3h0XF4/WQ5If6tVtx8VshTtpRWHvqJw1FJj6I0ELrT6c2kET1usHdqHzu2xGNNWzcwEFQlTgFb369II3lmtLS2Fire9PGaLgXvwcC9+WOLy6Li6cmkEe6ysFu69lB222aANm2sMLOISVkeuOALrVCsP2NfO6ZGIDbXOzDIoqVjUCTfwUdIvjGDCVGCTt22vskWQ7VBdL4OaOAXSMq5+18UIJkzo4B5fe85ut0cisbXnB6vW1FtAAb24i+c+hRVazp16b3UoZEfbF2YNNhCXsDQF3a+LEZyq5VjluBerQl9CqLKu/5DByEDcVMdFAR22e+D2ydraWlXbvn7Kly/Q2sp3GocIWuG4+nIxgicFKKk9fvSQy8+00xtygOXaX1+uyNV6BLcKOBbhsheX+T0uv99/bukAI7BMK16X3mLicUcEPv457oG9J6cV8Bj28rrJbrfH5Qo5dmUa0U+PS1hEWoGr9QiapqnaguNHK71uaD2rG0YZFWzqKZg61Y74+Ee4JftuvS2FVvHWXpzv9jHtlPEDM3FZgUta8UkjLbj96LpajmBLaWlTUxK7eZ3dh7wux67cTGjVJbB+TUveGs25d7Y9KS0rZdwmaC8frfR5YfXNahvNsHRc1m+9FtAYM8ag7QjelJVBq1z32Hw3qF7fZEvfXI6l4xpTLFf8Lef1mWHWlIsR5JexuHbzcrvPizxVm7JykcKlKYjeVJ+IHmOcZgSuViO4lp+fr2DR+kovuysbQZagRZ1gSStuoRsuqxkXI5jTmM/jXIzAi3w2S98sxLW5xE35iQA4Q3gtmOrMKveTFiNQsQgj4FaMIAfWJJe0qlc4boop1CS12XTdro8gr7ERXN7m9ZU4LJrVNnLYMEFLxyUvaVniFvqhNlA1GEPJvptX8vIa85K35SNANsvQnGGIYclLWjou1YGl1wJ5l2pwXYxgdh6PH3f3crsbny6vHyMAlrTCcUmb+rjEXZHUgvupqyO4Pm5cUgssRuCGFiMYm4NScVP+OIpbIG62mbi/PQIVC+6xNR4vw9osY4bDqnrFKSjRcAVvZw8acbt23f0/SLV7n6aiMAzg8SMkSkwkaPz+SPwqbbHcXAVjpRJ1cFIGAjJqTB1IR+IiyiDRBRZhkYGYuDK4ECb/AAcd/IgObscGk8YAf4Hve96ePj19r+e28eEf+OXJc889bfn04cqlK47LI+CYyYXc+dPCTRpu+uXmiNWq5XrcPx1yl169v0RhLVt5BJypcuE8x3VLSeOqbvVywWUtuO2PIHtJtMxdmzZMpREM5HLQppTLadHWvYlaxz3O+aO4wRFks1mnXX46bq10EvTnOJ2UywmUK1Rwb3bc7tLi+yzFlfuyPoLn5eLV3NVcR+WeONnBFITLWOFutjOClY8jI9kGd21ORjARn+nv7xcutLpcSYArCXAxBs3VI/g6cjlb12YxgkeZfqu1QbsWeza4XEon5V7gdsENj2D1MqVe7vLLxklQzGQyrKVAaxMqFw8a0g73OLjBEQxftrHaphFkBIt29RY4Spv25QK4wF5or903775eHx4erne7PDNe/UV/NIJCRsJY4upyj6XfHBH1imgEXJIKd3PrnyMYHCStlPuAR1C1IxgdGhpq1oIrWJu0m6OHDX25wPG4m8kjKA2SVrgja3O1KoVGcK4wREG5BGZs6BSTBMoVbahccDeJq0fwpVQi7KCdwgMaQZWq3Z6cL1BYK162SrfeoYtyrdfDhk4xlOtryeu1q0YQRYS15V6nEZgqZ6rcY7EFaDngkla3i49oTpv+iVKV67Xrb/fnj1I+KpWEO7xOI+BMxHevFSTYArR6C4JFuekXR30Xg7avL5m79COfz0d1rh2BqRoaQfEatF656lgIXcvDXH2KwZvMXfkWRaSNSHt99mGVsKb6vHyKsNDiQRMt2gUXWmA7vy645frtbjW4i9SslPt5ZrtqKBNxpVgkrea65bZebrxDt4Obo+ai3L5E7ru6NhqcZmqVR8C5xlFab7rhKegHLV2L6frtbglXtJa7fpu1U+WLo0UbT4stoNxcMtfXYrr6Z6kwty9pDIsRdcvaWW52en501Gk5oi0ka9X7V50LwVMsrFVj2LBvBrYSuDRD2tsvCKu4arl40Nq6iqX/zqMvN4q7JdxVovKxwNq5AWC1ViLDtd4WrXih/a+LrmjBjYW7mJfM1kxtsoewvle/Ijih96+N1qaXq7U+d4O4d77lbbfr28ZMVyqVu3eLo6FycYgprTrE2rvcHAl0q8awwlgS3zPm3gJhKbco5zhJZ24GN0fRSgJclNvJp4hWbiztfs/bdulQ2J7ncimMRc5w/Cl45QIradGCm/r61VpwY+EuUbXc7rgxYwR1adIiA5RD2IJg4YXWRbCdlKu3cKPB3SDuCmO53NptbhZSaIGlXOSc4hwIfhUiVl2u/hQRKBftxjIG90J7yOVSdLO+V7CSHpfe0/61HN0GD139UwS0/2r3u32jfTamtkBQR9Va1yv9OS1yyOWs0oa2EFgutMKN69xV+0ajLbxVxXqRZrUUWs6BQwc4vb29x/zLjY+FNjQFcNHuF7uFGdoCtOAOuFyEVheLkFa8kv2cw+Rt99tyF48rWOHaM5enW4ZUtJ5XqGJVWkiBFa5kXz3OG/jPQbXcFi5Z6W/CmHmxetQzVKp+wMLaXq1FjnK6u7t9beLlRrTCjcG1BxmduhW9WnFKUC7ScMpm1Q5IStZWbrfN3nr8LahyKU+auXLRNcYkvRRgBRRBraBKudB6te7rdlyA9+zdw+nq6iKtOhaEGzvub+JGFFNzXEyWmYob3KyTIl6tVgoruOJ1OXiwhRs3ceViLu1Ci6fLST2tgkILbwPqsNA6qkS04FJ22uzYDe4zx40oNeImnwXt70CCdvVeEXAhVVzyco6PjY097rpx5PXGb+JGBC7RzRxYHLHQpjQLK6T7odVQaD2oSKHl9Nx/tGcXx223xGMAF3sNbdZz+lxILfRvc2f2clMUhvGNkzFucOPOrTtD4kJcupArc8oQURQyJZI5U5nKzI1ZQiFTpkLxDyhxZZ91bHPmsbzvWmftd6/1rGWT4zjP58Plr6ffftdwPptHyylI0Al7FVQOkxrczLjLuC+clRZMiI/ZPPCE4dNleX1ne0qCsBVKu4qRodCuKdahDIogY6sQz1iNC8L+iratNNvWa7bCyTKWgS/x6FHTxfrbGAElVMaFXg0pzoOu8Hh5sFYAkTZPjkq/Ca1pV1/oUruwLyiZBdArLLc+p8MLukocDQyqtKuvn2mZcOdskFbW2hzTpxVnXVrsVXARVXBz2o4dO2pc2y6vYUAbecBCT5eHK6hxXk3q4BZBg7hsrsFFUhOcXPS7MRZmgQ1qEFjAfFCkzUk5BpfL5UctZoHg4sYAcB1UjxaXMNAAaAG3r22XUAO8uIShBbCbhUEA5cooAFyXlH5Z3DZZtjQh2rzdAmV40EoKuEIbHVtC6k8EwQzj2nTr1q1zlvVPBjLuUG438nAFaIWzWC5uuFxaO2froEhrFZDhJbCUo1k2RXBjswAONeEhS9+wj/Hi4DKpZkVcgXVwF2XZhIRoPdzQydZDRVyeswaUvrv4tIWHS6wFUEb1abvl6Tg7y7Yl5uNfcvcPDgpdveATBr06xmK1MGQtrgDTk5bNTwZKuxo0RGtIi7wwDNwDo88ptIEFoQ19wehymrUubEgSXa7gFijNX9ADKBZPX3k8VtjGwJAVWMHtzem4lF0wuEM0buR+QzyAjUFeLgsLWxigrcdwurA4DDSt4FK5SycRLtMyrmxiJNE5i4fFPMFezbqAtUpwzhpS+sXpROY+SDSuaVeqRVzoVWhttbKCAS3H2xigr4Y155VejQq7s2xZYnCHcLsKaC0qDFrvrAiPWM4JHuDk4oSc9XCn09Z8JeNyt0aGHl6gWLjf8EB9WpPgZlY4Jb4Gkm5MeyPhmJ+5SVUqkE7gMiZ2pEFnXVx8xAqkdnSBB5zKbLodu5zoEK2RAZ+uQoC2ZDebc3q0QupW6wwDD/f2UqFNzA80kQxQbWgWdI01i7QOKEjroIoH0GyHTVzt03tJPUzLuEpooyeFAmVx0KKySItLwi8esJy348Tdb+inGJaeTXzcVHCjqy1IAL2GN97uoaZQqkMLzW6a/vTVK/qpgBOrkjxsLuGq1HRqElEWeONDNu4Bbr2DyrZftPTZM6LN7jpvHCJYIwM8XRYXDouS6GERcUMS4OgSCV4+o7zqf2A+QyJu6gorEgCtkCItYMITJmMLcEWCZy9f0z/9y07yyhDBNajIG7mMKXMWUIUWQE2sBNlLerPBy2cbtu1MMJp2GLkbmAX0HTvSeLi4L4gfaULWigT0NiTCXWckwGjaYeRuoNnwaiuBBQx79QetA+rhbjrycjTlxxuRAHE1r0pTC+ntEb1eQ6Or3IKKJDYLOs1YoF819eMOSBBqNw19XNfrF8XSd6zYdh6uR4q7rsr5/of0m7FAgiBuH3LXoS2bBbkHfKAJWOClSGtJhfbo7NHfGHb1FZAAwrTa3RLa6NE2uB5gsRoXeiUJFq/WL/L6fucMSoBhWi2DsMIuJnKm4V+5tYCKHuCeq7Jn3Zf3nFEgQSTaBZah0G35p0q4mUXa+AJW33QfnX3oC9PuAgni0bR9VKry5cs5gQGog/uLYv2LLju3RILX+j1e74+BBCW4xEsyWFq49o59DOrhuq0WyoViWYKl9GYswl1wCiT4dZiWZaB2cdDG14Tf23hTKrgvODrls36R1+Qt25M/Dbug2xUFOLEjjaMBbLhKlgTG7Tx98rt3THvsNEpQHi5XP2qOsBxZwkqPto6uYIGwVvaO+qpf5DUeJPgjXJUqBxeURVy53wiLgLPr9u6PGvZQVILyMC3jmnbLP60TWtxwSWBykQSHvn5l2o0swV/ipkoFL2PgIC6o3vwC0CJuu0UL9Hu8vu4iCf4qxGrc7QwiiAW61PiaAFPLlfZC/7H6RV6H97MEDcFN1W9/WifBy0NcwDofmTXiE9NqCRqDO0CpFM40MV6oFou1C1ibRatHjGDahVtJgkZE0w5QqXJoQVko1y3Wpc0lGPOBaceJBA1ql93NSfHyCD9Uil512j97HfnM7/Ea8Wn96UkNQpV2U6V0tUAaXW7jNwYswYxdL94y7VqSoKFhWiMDXnUBaHBwoQT9Prx4Szm3TyRodLupoMJHH5LyK+9es8+l/CKvDytukQQND8FSlFIOreGM0/omiATVapVo12xd0jhExKW5294RAc40RVoftY47cd2LKtMOFwkajzuAeVOlIhfJeKahLyiWJRhLr3Ai2BVzQYKG4lLYXfg8HCSI33a2nTH5OaVWmzYHJGhsdLmDuN2exAonBTzZIuzEUS+ec0ZMBQn+Ea5KlXNI4C/UAO/k6hKwBptJgn8fgmVckgFXML9YEEFLUKMvlqAp0eWyDEAL65dLqyWo6RekTZ2XNCsD6rgpTK/4p3WcrrPH1ghWJGhONC3JoGAkRHH1JKjpNEcCxOV2I8MWyiUJqNVajSVodgiWcVMVLVeSS1ATCZoc88qjVKlSc3kSLJ5c5V6rTZQAcVkGbBeuOkgCgq2CBM3MoFwGr1tvim2aMpZZqyBBc3N1UF2GX90j9SQJKCBB83OfYAcNVjFcSrvzo95WOShB83Ody5V24fqzO0nAUSzB/89Nph38VqmuOa3gticJOP9fApuHTDt4nFJ7AXdPC0lg8/gq8y5XapSrgpUgbQ0JpF5u97hS1fOC26nlJJA8Yd41Sg3fU4dtRQkKeXSN3jo4Qqm0397OmyZOGatoDrScBIWM3DFn5kXi1ZyqRSUoZtKOa1vWKArztqgEnhIHty4f9/btuEstKwGkxf+XuCT5CbTFnFRuxktuAAAAAElFTkSuQmCC", OE, kE = {
25339
+ }, eD = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAADqCAMAAAAvZYhaAAAC/VBMVEUAAAD///99fX37+/v5+fn29vbx8fHv7+/Nzc3o6Ojq6urh4eHU1NTR0dGDg4Pl5eWSkpLHx8fj4+Pe3t7X19fAwMDZ2dnCwsKrq6uioqLb29uNjY2enp67u7t5eXmAgIC2traWlpa5ubnKysqmpqZycnKHh4eurq6ysrKKioqDg4Pd3d12dnb9/f1vb2/s7OxlZWXz8/OoqKiZmZlpaWmbm5teXl7W1tbJycnExMRiYmJsbGywsLCPj49aWlq9vb1UVFRYWFhra2t+fn7t7e1RUVFOTk6Dg4OAgICCgoKKioqEhISIiIhqamqCgoKIiIiQkJCIiIiWlpawsLBmZmaAgICenp6Li4uBgYGTk5OMjIyVlZWFhYWCgoKvr6+Ojo59fX2SkpKvr6+Ojo6QkJCurq6BgYGxsbF8fHx4eHitra2enp6srKyJiYmurq54eHj5+fl+fn57e3v////5+fnS0tLAwMCVlZWwsLCurq5QUFCtra2EhISUlJSwsLCUlJSUlJSlpaWVlZW3t7diYmLAwMCFhYV3d3f///+tra3///9XV1eampqnp6d8fHz///////9VVVVlZWVtbW3+/v5SUlKcnJytra28vLzGxsbR0dHX19doaGiWlpafn5/Hx8ezs7Nzc3Nubm7AwMCIiIjj4+NTU1P29vZbW1vl5eVkZGTMzMxYWFjq6upfX1/k5OT////4+PjV1dWkpKRoaGj4+Pizs7Pm5ubAwMCfn5+vr6+urq4wMDCxsbG2tra5ubliYmIuLi6zs7NHR0empqY0NDRCQkKqqqo5OTmoqKg7OztfX19dXV1oaGikpKRkZGStra0hISE/Pz89PT0pKSlmZmZJSUlERERbW1s2NjZVVVUmJia7u7uEhIRXV1dZWVlLS0tOTk6srKxqamojIyNTU1MrKyuAgICCgoJRUVFra2ttbW13d3dxcXFvb299fX1zc3N2dnZ5eXl8fHyHh4eSkpKenp6Ojo6VlZWMjIyYmJihoaGcnJyJiYmamprZ2YdEAAAAunRSTlMAs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7P9s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Oz+QSzswb9DiH3FyI57Jn1ajgu7uHYmIgr8OHHwqVOQybv6OZuUvTt3dHPrIeFSNVgLCAWD9/UqKebiH1iXVTczcvKvambhnBuY/vGrKqjlHlzVDj37s/Fw7+tpJGAeN7VzcWTgGJNQ8O9u7iko5aVjvbNsa+so1pd3mNGAAAqAElEQVR42uzZzWvTYBwH8DxNmvRlfVNr17Wl05a9dISyiugO4qVQ2g1pVyx2Q7QKCoIivgxF1HnTXbbDDnNDJ8iQHcQX8O3We1t6GnjJyYPSuTmdf4C/ZE260U5rl6bJ2g8Pu2zP5cvz++ZJhilOcOxcfPHq/NuFhVcftK8WXizeCGItFWKKX5x/23Zk3/6OPr1+j0mr1fkpkuxXv5luBbbZWPzevEWjMRja2iCrvXs3stJRFGRFEDhOT1xv5QWCkYvPPtosFg+XFZyrvSYdRUJEBA4Igg2LRuBhk+cVOndv3uWyWm0DlqMajWafXkcSNNrexA2sSQ1dvPK+86DruNUGWRn6dGoa/dvk9BjWbMLxZ7e7e3ogK5fVZtBTOKrew6Y6Xufu3Qm0d3f3dEJWGj1Fo/81dbU52isUf2T3etvZrHoG9vtxVKOJm9guF049ddrt3gBkdVCzh0DlWtO4YejT00OHnU44VwHXPgqJ4PV1bFeKDD8xH4Cs7PaAtY9AYpncfeUFSR0zc1l5B/Q4EhW9q+KCpHodXFYBjxZxWnFtk9SZrl4uK6/Hj+pmWvlxDQ2fMRq7eh0OSIpCW7Ti2iJ8/4zK7WazcloqJtUaxqLweFSl4rI6ZNOhylpxsUKpqFsF3EazS4ukNLmIKcuJpFHF6erUI8lNKeiaGrl7WcUxtu+nUUO8VsZLEDz8VBy33YCjxnko+1dsrtI5hz1q1GATcm76YCrpVnHMVgrJgWwfjCN3u1Sc3k4TkgtZNv3QcLHS3Wyly4ncqis8/qSYlFNDINl5IZ9ZDKaifFHZSCRLkzKZxZEkX1QHtUi+ZDCLQlEZ2/uQzDX2c0T4vjzuntWaatiVPiQU1YEBoahoRMNCNRBzv9zuqCNJo1BUdGU4jcOiqyDhfgmLvryoOnClkfRwhcehqDh2A4ErkGTNBa9+paLClUqSK2rkrnCjMhFK9mYMqy+4Jwhf8wjlIWcvjcYGGYbxxUZvmd6V93w9XmicHpJQmD0zifM+ZovYzFWsjMifiB0urVpRyMeJmI+pyBnCxBcaF8avQ60kL58nYkyJ78f3leUvXwqrP9e/MqzBCCaykWRp/NTKQT0fHfzN8L79WlteSm9S+MUdt2t16XR4+vVXTd2vhtVfRrL9cw9ijGB9rZDOgPRm+XxunQGnRD9Ubm8bqRgvZ0Z9woFaX81lNqQzW7MCKwy4IE5T8YfKbNWRSmG6FCtN3upSNpspKosKLBXY6jorxuPPyF+pSKWYezDIFP1YyWXYpLJlSeWFqNi0fFD7O235VFTFOWbVUjUiKRIWBaTZP5vgk/r2vZDOgkylAczD4tMCy5DW6R2V+vBlvqkohZhN8DX1dY09UkJW5b0uJMXJ/dzRIEaKpe5wmShlmEv4hOHLf84WlU8gEKLi5Zagtk5itTkR5f/trvNvj/JTsKr4Xf3366GnhKSy2WJWmZJKpypfDCoHVmHriZpu6hvzZ+zu0HH8kBj8+KvKfyfN/j/UnclvG1UcxxGnhGxKaVIIioBEosi9gVAaCSkHkFhFgAOrBEIgDixCnOAAAgmVG1cEZ7jxHzi2YzvYcWyP3cRNY6e1J2sdJ7bjbLXTLOL73rzFz88TGqip+cyLZ+kMJB++v988jwN0fSJMFb1JIFxxXXq3kq4wCIjWw/+gVT3G6+++/wOtP7wmMuUVooASqtmNQim/6djd36tUyuX9o930WnZrXagCJdwQnz3lc+JvrVb16MXW+/4P/PaRg3X0AstUUm1WRil7VIn5xzkeD74EU4fl3c0CVC0bG/iLvHi6rs7vf60ncR9E4kXbVvcbf724+a2VZpMUdCuhysgfHS5xR1KVR+dyZQdvrNdOdT9851X+IWnr/wDR0h15I2kmuSwK8eQetwG+dGP+4200rW9Oq+r8/a3NT9cPH/K3x+tRSJKx8haObvqvXx8fx8CLrokOLBp/7q69daq5An5BtrWL0trVitHFkcea4M9/FY2qGBGhQreKFNI3x68TdFXSGIaO3+P3e6a+vK1Uvc+ev7R1NT1i7pktxU3AVEU2HIee64JxDCy1lrgqrBVV3Ne7r/ztZMFq6w+NtHWdUeg604Vhu62f2/Dr277m8wQ0KqkqvnkMUSo2uWKFWKvKTxaMy1+c7Oq7Tuu9ctuZZucX/mnD5kbUpCSBkT6AG00VXNkJ0/BzYeCxk2L1Ki3AnjNtZzDaFGqPnXROw6//46vnHWmHNaMyhari/iS86EAThgYNVd0ZBM0V5U37mdXnZF51/kJbc9Mr5wmzTJSZjG7tuXVTateyK0U9WXR1oq0PHiaz9fa25kY0qp31ZIaHKn8LEYEOLDpSVI0w2dv5SvoS/F5/wkBcPYH/Is791WC3DcNuXz+3oddXzxMyXFUBmQJWZ1Kxb1oeeVPUVPF82dt6Ea4e7r+/iRnCPIG6Wit5M1zV+v6YNMDE6NiUIPmqh99aGPrs9OXH4GoY39KF+y9o4KB+XD8HNOz6vs9ek40qg4Vg7E5JUdZig83NUE7h9ZuhYLJ2vvUs6e0DfVVc6LtAwErsY9gepzTs+l8/WuPzhCQyRWPlzR6M12Bri/4Rhh6setGCKMXWz8/VzK/g6nxfczLE737ZQiQDiKpoibZ0NVeQYhcs20Kki4rfGsQY0G+JL6BhPdnX19vXS8BKbst9sVaQ5zTm+h9G0w5HGsvWbIZhzh45x+tio4pmyq4SdagqDI7br3zq+jYaVktv8/HHG8+z8ltPilBt36Sh0pNFZdzmNMvjnIzdPK5Ubh0fHsRik6oq4Fei9XP1nRBF+EDvWYXes70YyrZyTDt+56/HM2KaKtz95rkqY99pdWUdmyJURTljt/Y3C7ORqMB6ompsrZUP3doMntMpZX2L5zHtZ5uLDv5AYdswM4zk9oEw5dFUKcL0jjVWLpq5mXDIlUpM5PhDeWEMzkwzshlTmrxUNiUeMj/XiWCdBUNnhwTYwbDbVtaUO3s9OhXBkS1G55Eqind3TE636+pi9aZNGpbKxZxrenpl5Uo4HE75XC5XYC4TEb4iUpdZONBuh8DtFj3+A9Kx2sFQ+xAFGwLsYNhuC+7g9QiV1dS3Z2GKsVHxezgyWZov7Z4Y21kNTFNWgA+2Ai5CYAKf9AhhEalrR86zJO7Jl5msV3ErbG8aLrFnL1aosJD624kJUWypmyzZ6qm0qWwGgWKsEK4FwuGQJcsVMr0WoiKT1FaexkpNlt/dyaoQ84aB9uag47OXECmwbWTmCRkQP3J6JGp71xsXS9ZSOpqaBqqra1dC4USKuAKpjBdIXyRcNFtIFhC+3BjuGHsHTaqwg9De0Y5B14BuA2Xf7pw7cv2ljzBTgKxsKQJPzJWxJ+pP6lKipfs63JiBH10VcKEQ4YqSMr0CIouHa1/t7sgVhvUW8XU8Re5oAj57ic+pTOqJpqp4rImCKm5Kr0Ow5w1M18JcXQGkxwcYoSj9CF+my7KVPKhtWRjv8pb1YMfd5hKefZJUkTkVsGSZedGqVF+gfo937mZuMD+aKyaLdC3mKhWYicOVECYaVxx2PGq03JdfILLQsh7p6GjpaMGgawX1mN05//L6H0bp3S+dRagY6OrZSevGpCCCpatypxeuTduoYrkCrnAiHOC2Urk4gCvFlmkeacGy6vBlTN+7tR+QLjp25/2b61s+hSaSqq34vMBSRVuHrqtez/KXvSGIsXXFZd24weswRUC0KN64Yis6SaIlVRE+svp7Z8vdA/VnzRQ2kqurMlVrl627Ud0iBDVPPPeMYDi1cmKs4MqSFbLqMEUJRfHLRlXhYm3edCjJosKW8Hs13+PznJa7xXujaTpVwPSzSlXUAVUED1noi16JUtgtIxGGAKUEtdbOVIFAOBGCKiZrdRayLF1xflckn9M6FVtu0rbwbxN8jF/Uxrc92DKIYa0BVicfA+r26a8f/PQlqwC3IsSU7FVjXBXXpCNq8KAQ9LlCiitNFZCufIFEIsxzFQpdhSyqS9qihVjmomSLf4w+nnlq8C7QjfojqcpumKsyVfPm9pRf4lGalpYsZ3bB5fP5UgjWFRtXTJV05XNBFhEFVSA4q9mihVjA31h44k2LzhwGL14cvDhIwQaGsmaIff3c019/CQ+KHaz+qmNViklR9Lu1D5anEgn4XD7MMOHKZ+NKVQWxVFYCrhhhwzCYL2JLFuJYdRVSZQf33PMjHjngB+m+2E3BBoayBnxbX1NOe/17L1lPP0uov2pXxZt+BXE71J1NbgXhicpCEQbsVNWXNROStuIGELbkLbGi1iDwv0hldf+nkFYFWdmiSU0J4hV62wF/27PKpgv4YApFWL9haaq4K9fMTDAk8RrSFtNFu9amlMV9fUxkne/+7xjGVJ2kKrucWaWIiVXayfKu2tJ9TRUSSBRVhVdShDdOaFcM6coVDEpZ4VDUkLZEISJa62qwAKalnUTWMKV7uJuCDQxlDcS2ft5tX49WRVOFVqWqyuSnSNAxavDU+tozXdQUf4GrgH2srimqAFpclSxcnDQseLJ414q6hS0erd+JrMeH8X/UODeMcQ7IbbwAbVs/9zavHxh1ULZYq5IlaBy6qStVkx6tpe0gc4SBxSrCldtrV8AFAnNzc0wVkWUajNpoxVgFimjhcenDkHXuv+C9Uev9XzGphAqYu043hf9TlCgzh0NvgBcfXuiPXq8IV6avKa5uSFeE1NzcBI8VMJeXZbRmq6J1LBoW84UHD/fiffS5xvMTujppVeu8VUlbxZjbggdeLUEmy7+f8wFY4g2LBStVq2paUwVXMlihiYk5pgokMsvVtiCLt/g9tWWBnyFLJKvnXI8CDgiwg6GstXPsr/8UXR1kDThSSzATKbsFfvqlNS1weTtIJbHyoyvW3a+oroDqSlUVCIQhK8xVJSALCFmA1+GuejMEB1RWT2NhqnbisKS6ymQKU+5q1Dr0sNeYEWB5wop90X1tiqXfBVVXYObq1SBTJWQpXYvJyrJYyWjFGi5rBKpIr8p7V3PClZgv7ON7cApRdBG3RA+rxMOIiyCDhQFEsPRYAZtYgbmFhSCPFZivKwu2xERL6Joisp7uGRnpGenBoGsNebz+OSP214+QaRVk5SM57mpeulqOOYFbhaqSuioZmiQ2A1WGOndHt1Jc6d3K4ipkcVdqstRZ/DYVVc0SldU/Iugf6SdgpW4DrPTj9Jjd9f3szXIpmsvxUMkKNNc0VVrHKi8SR0wTT5XQhh9Zzt0VVbauUqGFxcUZ4WpmBrJAtay41eHzRJXa4oms8/2NgfWqUjIHVxzhKnqLqHLSFylLMVZegBjpCJvKfgrBkqki6K5UVZCVWFxcJKY0WUDp8HnpqfGyfnrGAdYKJlelPF7IrP/ppKI0xORhfwFCmCTmSN1nHcv+LsiQrvBoZm5x8SoTBVVclt60aLKsRZU1MDDQP9CPQdcCdV85DsQ1QL9+YDRNVBUzMCVKcFW62hyzTPFcqdECe0QVF0M3a/fJ5zQiVnbtClTFCiws5ia4KhA8QRa+Dz1ZDwzccf6i7Wx60zjCON5PEPVoq5WcRFGd+ugoN/fUSy9VT1UPTXuu1EPVr5B7T/02wAG0ZrFZMAjMshCVBRziXTCOncR2Xtqq/3nZfXZmdrdJtf15CsYiCvzyf56dmd3iH3msLv2kqvGCTnK9KcVAmNbfMf4e8xSRoor5GO29JlTlzq5UV028Ipu5EtiZyXIuKVP/r6zfWLd6Xg0ByQLUrqQo9mXqetep14D0wi3pj6m9K0dBmlw909uV2Ege4gUlVNm2nyWL9aw0Wbfv3r199zbGXUDfp9wDeh491v78Y97XF0qzwojOMw+OSgQKUWtZjXUfnVtEiVbNxuO6WOlAFLnKjFW86T5bLKZwJbFJljF3OIMqNihgJSGrWH5m3aoNU2Zj5639sKzI0nS9rD05aMJWnCQxKtpjUYVP02IFjKOgPD/Rx2sZkqocWa0zocpMVqH8FmAV2AoBqUq4Om+UFNQavOohLMzWQSV70hBPsqAqyxWeRLKEKWAh4mRKkaVPtDLLUHD/9n2M24T2c/qe7s3nRa7SGju46JZLZUOXFHbYEoUlL9GrKY7Ux/xYCFm5rurkittqLsaTKalieFClL6VlsjRKvAx37xcJjoNBNX2+AC5MVRiSPyrRKeQabFWAsn9Fj8EIT8ieiFY4SgWC5hCvwOaNPcbPkZWWrHtFuvpmJ4CrDFVwBUoYiitRi0dh4nQ7XByY+1fyMQOV+kw7h0qySBXVIGiGvh+qroZZyXLMZCmy9u7vcfANBr+X0GP6efpzfsZc9DyUpqgCJes5c0XZSs61dmqRKsCjpe9fyccCrO6eGCcGZQkKDFVN2/d9y04wHJIshiJLC1ZJytrb3t7b3vtg8Icw6J6BCdbzlKOgYNngwUrT1ZioV+ixHj8y9q8SJpC8FFdKCequmgvf8xVVubIUU/yGy9ouir3vMGtwVFOTCL+zXxaUjGRd1bUp03EFNvT9q0pEnbWskdKujlNjBejkxNBrtdzYFFylyBpklWFJytrcLoyvsHI25wsc33kHT13Zs9Sp1sUTc+9O1GEtMRLUR81+XTw5P1cHUhbfbve8ieLKlAXSZfHGymVtbCtsbG9g0L3AfGz+DMEKfNnYSRTwJ773ttyFKoZWhQ3e2RVXgO3sqftXMlR1puKg368oqgD5NHIF+pbXclxhKlZlWSmyqjkNHrKKAh1rrbgax678V1DVFclS29b1QeqqhS1nlKkoIBXNvl0zF86mKnLV8x1nbAukKbh6H1liBQuKlLX9eCc4pQv4FFX+ZVfUoJGtmxq19mRd8aZF+1cUKw7WdzWtBOk5HM1Vf4rFsStFkSur9T6yMNh/hSbr252dM2VuRa46h10AX1HTinj+xFBFsmj/KqIuwVTpmXJunlzRslkg9pDtllMdQ5USq3xZpCqRrE83dnc3djc4+AaD7kH69wT9mdOdYBD3dYnP8f7sCihYGGBtlqA0wGdaVIEUKw7e8zN1O4ZUyRIckSowgQDLpmYVkS+LhGEIWbvF8BjtfUKqkrL+mHNT+Ooq04e2VoLJsEhZZqwAzsGTLHPdzKBYgV4IAaGq6v2TVRIjlnVv9x5Gjgl6jvaYvkcVXgpVlCvBct6VtqJgiduqkiutXeNd1pOx4pAsqyYTyEjaVEtQbLdbeP9eXIGEazm5sshXXIb3igHHQlmFZIrjXXNXZYzIF6/DTnasuKxePVYFyBR84B3XUtqV2q+aUa7sFvZdrKEkocp1nZx5FonCbbGyNoOdoJUswUiVFyBYXJc6e1iqsyv9hHu/J2XVKVjSBpdVORbdioJl5Eqe7uotOp3BLBJFuMD51+VOKRL2n2Vt3tvEUH6EiUMwmcSpIledxnwOVaIQqRQv8nIFcMCrU2OnVAlZrjtiz8xuVwhVJGsKV75ZgS6YVvNk0RwrTtbDzQ8GogweYeJAswVy5b2BK6ji0Gzr1VNylXrdmU2yDFcHtus2a0oJGjPROFduZzCoWqqpmGr+Fk0JQ/giWUXwbbBzThUo8ECbu5pryXp7DFV5ripox5DFRgx1JHs6tckVSHfVA1Zn0B5MaWYF3FjXtJMnq0TJKlgWtkjbhilwI13FTYuxX08/DJKrOt4bTOnNSuro4cQyyapndHaosodVaAgVVZIpY5CzU0ozB5L1oBhZ2HHoKK6EreW8MQdQlZg/dMOnubkCIws9XK9AmmvikgW2GMpy1U+6OlkYzQqqhCxypcsSoZKmSNanRbDJtrLiXuVhCP5qxLLk/AGyXuS2q/hyxmSqaFrOmYZhP32PoZl0ZTvtk5NxiirhajY7yT4VBleA6yJZdwqR9SAIdjytBoFzCFGNuAzn3NWfx6kLHEVW33JtowRJlhWGrrp1BVRXYIj+vfRJFfUqwSxUZAE6yQpV0XGwcFmPg+DUFyQ/sveMqeLQEXHeI1dmu5IGcLzrGc2KsLETNKKjIKkiV7ZtdZbLZUtLFUxJUMqTrAk8ZJGqFFkPP32I8Z9l4XShVoEtjLeNhm6rfGLmSnMFrOm0KVxpoZJOwvHYUkrQdDVtL5erhCuJNDWdAT9TVkbPuvOwCLBL+tIHpIoFq81UUYfnvM09CkpXB3g/IzVWZIpJGWKtcJCUSapkv1qcLFcrzyhAyhXIWhqKnhVDsj5+8GFaHjx8gKF//10QvFRccU4bgFciNflQqCJZhivQw9shVXqsQD/0/YXZregw6EDVapKnCnSMCTzJolApsooAyXohRZErVOG8S1XIm/zrfzkMCqzZbGi4IlUwMsS/y1SLFR0GwxOoWoYZfV26ov5uXlN6SaqKl/UoCM6oswucKg8WG7Jn4Wb2Pq5GeCN9vQKpK3ErM/xFbl1tV1KVW12BgZsbq4z+LibwkAVSZN0pgkfsSj9SJbiAK64qttW9TlFlbqD3wzA8SDdFK+QJ/oaZ3q6gyvJWDD/jEEiEmS0LZaiKKmNA1lZxsmRjp9/e8gqqulKXtLXObVfSFZtGTXVXTXIltNg+/gq/py1w3NYKnHdm2jKQKlCCf492xvydl6FGGcnaKkjWt0FwQaakrOsGo5s4JM6beq5SN9DDxcJWelWTXAlTgNnCW5tY9GNrMmCmzpdjbXvBzBVceeSKggXgytNllVGGW1tbX3xcBNhUXsMUpQoMeKgYcSG+1qYMRqyYIj7lRBUarihV0ta4WsVmVdVf4N0vJk57xThf+i65Sq3BcBaCQWzK/L8zLzVT2AkXsu4U8IVkrePGLmWtSRRuOOdmripaCYLZYjxLqcB+BF3oOHUGoA3YDJSnaqCmapqeKuC1iYGy1mkZZVgWsm4VlCzIIleC5w2gHhCHWTUY5wr0sTttG65IlnJVaNhqA6wBIet8NfBmlkCqipuV4Wqiu1I+rOCFago3hx9t3br1ScGy6NcnvWkA0gX2kwvn9HYF3MlkYajSChAjwgonLQfv1PFDV18HZsQKjAe6q2SwvD+MYB19dKtAWeeaq+p1QpVo8jfHuisJ5Qp2sCtm6Y29T644NqGcj3+vZgX8DFcyWP6NMmtgXHNZXxTBT7jkT/t1i51GgjnP1lq7kkNr7YIptsWapCq9/kiVJHsfJkXVuKqp0j9fxb+OXTFZ7Ot7LiuFL2AQNwr5z2HJckgWY9VQmMNXKGXJvavU/fM+NsXcgxxZdhI9VUBVhaHLWjgkKuOTezrJboVb8IjLKoSfgmBFseK80GRhjPTODvQz7ljGTJLLQF1VzzBFqvKPgYJFa8AtER3jM6H8QG3vZfBDobLOhSoMwU5Dt3VE7SrzOlmbLfnSZ6HATutWZqqymxVUqXSUz8+SRei/k6IAbkC3/AuT9XkhsnByZ8XrD0NyYwTrylg3V8zLZFstv5k9tSJRdmZbp1QRslc5eqRErvRP/XvBTQlfksbXXJbGJ7CHG+NxPl/KMqwSfzc05qdQlZcr2Bni5VoyVn1KlV6Bw+liylWRK5dildHYJ06y8MSd+Zl/kNXaj0qQovX6I8j67PMCkLKqBF7B/uGhZuuEYpVx7WfPbzl+/mzBcs5ujso4nVC+Wrt5qlRXC6+ajBRhfvamfxNNGOQd6P4KWbBVmKwqgRfQNoLVmNQEGbGCnxCbYMMcV8OTqzK2MCP21yQrt7GPW51UqqSKXJ1Sa2eI0+i/C1kJPoc53KSS/xwui2KFsTxs6MlyyVVdm10JPxbCGZIqo1d1jqSpEh/gapYWK0LWn2mJ00n5BFz/MpqJ8iF9/UPdufy4FMVx/MYf4E9ghURELMQCEa/Em3gl4hWPeEYICfGKJREiQbARwULEwoYVG4nGdWk7DUHTpEbbSKudajvtdDpjiO9533POvUXNovOZ03tvaybRT76/X29Oz22HFzvOZLgaFfRk9YAqVBm+XofWIPODhVQvou9NV6pZ9Yl3XCBKbOKfIatdqlJJ4UShdNmfrVyBKAypiq0rQxU655GsUZaFVFH6XatnSVd2CQK68hNFGNrYS/rVwriRjRfVp/f0XoUpr0BMVfJTu4fUrAxTRcvQewhZmyYjW+P/CH4Jo92xkKW+nLnieUawmsKVWr6gvQmRwd9mQpoVSGWpKYrbHPn14znLl/tCr0BFKvn2z6JAVLarYlNkSgFXiTUOODt+FJCyVKzwwpx2abQwBC0RKztXdJoTf55sc2L16xkn0UrX6/VKJf+Lta5E7ItExeorXlgZ7TyBqKzAF0MsUloRYiSy1x2wdzRl+VX1fBjyzKbVCHcFW5/IH78SqmxXVeGqWahX4IrQ4k2sZKr6+jmp5tZszK+wIPTGBhNSk4AvsV7rEHaOoqzvSIbv+9EHPbMOK1IVMFcnvCITxF/0SSv/+XrG5a7ieRIrThOuSLz6NFOpXu2dEwzbEtkwkkRWD2JKMHQxV+4xh7ByPJhoMX7ieIx/eYzI0r93vwVVTJcwVtVipbl69+otWSXLVGGItq5s/XzGSdcr3FU+X5ma4E2s1StNiWVPXJhC1Jz5tTvF/qEfwhJumih62+pQFp+XrjrHkPWBEhuBKKZLUISsQFewk8RffOOuguasPgtXkYoEtvL8839wa5VTeFOILZeWvgA1YsD+4W2sXME3vBuz7eqknW5Ac5UDeNMaTVkfhKsPPzyKqxrXC7tdEZirWCxFVYXMhMqZy2FpqpIHaf+Viz9+9hejKeFLCdN0vYiVapX0UKvp6ZLIjeBTxVb9ZI84nOVE1jj8UHBggofsx+3fYbI+SFexGG9ZdMPola6YKVWD5I2WJDElZBmqECxBi5mSNOWZFycbHx78ma7U+2u1avk7KFf76pV8+ufgwPBIHIaC4ReNajXIxlFHsonI+m+kLOmq6HFcaetrmCvMXObeolUFpIrbasgLyYaoK6WL9zKurBNYm2I7lSn2Qgi2LHEkqxGtUZKlVElZvGlhgIxWgkIVrqyJ5YpRX6iMXIFMVs4vpVkBKnjP6VzYczp8mVLtCsQ3Oz7OTkS0JozDmEBRx9p9sQ8CD0tZMbgilDyOOjd9yVQZrf0bVBWTsGRXoJw37ucXdGKDUGmuCqKbdZoqtgU4Yqp4pNh2nUNQXQu2JvwvkFWWqkCu7ElcLuwVZL3mqHYFVcWUZsqeNI6TOqFPx9ViVSDEO1dFN2xIEmzw9cJ3HJ1j49HBR11WVakCLuG9cKVi9eVDEWTet3EFWz1EFQtAxG+K2po69B/Bko3KbuzAdAUWn8Xr4KjIinGw4CJX8wTy5PT1a721v3sZhalSz0tblRRF+cmvu8OI533AFEiPdGBJDtxUosSOxyp7xrFYdoVEa9qEaRLcwQg7Nh8TsqQrdKFcn67KxU7UIFf1qbdI+Bz0GkhVCVlf3OeAxWAEiiAJgzKVfL1mw+3Ektjo9ccjxWwddkK+cxu2/odF+XyZq6IUIcvQFddq8GMyR2P1UU5Z2Y2dU3quGC5I8ixXYPBfMqV2ovz08wXFRSeQ5ePAf8kSycpRW9DQ7wFN1483cpLhZaqnCEq5b/Y7p/ZbXAPi0js8tQGRLLqHK0qTS7BRZjD8Z1X22TobuCFTuN3a54SwGZWEaE2aNkmAQ3VfYf473wtZOaYK1D0D90dPNPWNLTorUlXFVFizAsrV1yxXRdi97ezeYzv2btq2gqWL2GqkG54qMrPo9DwxUdp8FdtiT1WJEjy0ywll1RVia1LHkDKkqopwRah4Js0ecXIPSqWeb6+Eq/bLPMp4BrL/yqeweMe2pdQXsdUYpI1a5gZH1n3ey7kms1OpMyuYIu1qsdOGlReQrM5tIVnVWIyqCpHljlBXOWYq9fIdxzZlXJk0wOqDPTH/c1i2aSnt9JDVGGalBrgZ677csKHBSlBxaL3TniVHaFl1LqsMVUJWqZiPeBFPo/UpQ+Yvk5+/fnylFqUZbd12lXETgL9SHTRex8+TUkQxNhpxJkKLkryv7TVFdKuRTRzc54Sigk1VTfcxafokjND76jGaLCJKuCoVInCly8LscQfrrGKsQJix7VZBjC/kQSHfiHBH8rRAv6+EAX+3Ms4Ysof2ifS2Z/kF4qoj0LOqyhUoQI/ua8CWFe4KprisRgIIYWcC/tPbWLrSEV909HNzw5DogapPgSwzddgswHCWXJ/+37JKjKmGKshqs35PmrKClYknfNx1Alh2diNk5ac2lSpgqbLbFDY8sbdObj91+OL6E84/sWrSnOlzMJgCHAB2v83jAGVYU65AOuIZXWuQuQqvwMBFoaVE1hetsG6y+ey2rSumYsGIhpkoYYjYOXhy+5RTZw5fPLdv/a7jRuH9Q7jmdALpWdSUkgU8U1bQREzblY6ZEchSvv5UJLsunpm7/eTBPZyDB08eOrR9+1xoOXP48F2Y2bd+/S5bTudsuD1n4ZyFFBxQcIBB90HgYVKGJSHrOwZk0aalhA3JVGmEqqKy8uJTIRgnnG5jyfWZC2diLMSYyVH3sQHiWOxJskrSFWa+GzRZRJiUxVWFL3S01+8Vhaosve1xupANt2f+I0hWjasCTJan6xoSrmxVGNyUvoI25mYpohK3O93Ikmv/KGs/GjxVpWSxaPnKMGx6L2z53reSuqiTHRx2uhOEawZl5oyZGHQPxLHYa7KUq3K5wWIl4wVZfzqzErK4qlRNXqkoivGc06UsucZU/R378/k+WoJKlkCWoW0K2C+BGETV57wLU9SWzNcup2vZcHvGX4Nk9clYwRVkCVHY0O2QPb1nNytAVJFPNiWuXP7DuOV0MSRc/5AsnyozWRiQZTWr4AtuMlDVOwBHTJfilNPVbJg9e8ZspgMHGHyvHuMcgCzlyp8ssqUHg393bdI38qEj0WEXJKgvDC6ta1uWDNfs9ihZ/T5V1XI6IvHYGNBOQkMueMO1g3D19he1BF3UlajE7jsltcL117KkKsiqTo1oQNeAOWllX5uUgSq46vmhXafIo9XtVcjDNWv2rNkYs+QeGI8dKBQgi4vCqBYMV16kpdefHSuooq5ycSFJ9i2ycdc7Y4ENj2f9CSSrXhZUQT5i4A0HTcT4U8VX7dcirglsjY1g0XBd+pOse5AlTYXI4t3KMsVVcVfpIFVgz3FnrLDq8R9lVZQqUImYNImq4NfAr0lxNciLlhvMky4+IbVYfGnerFnzZs3DCJRVKFSUqlqtVo/EDVnxb8SUfWUSQiWvyPoed4O5OXZyRVl5dV4495Gsalm4Av1wZZAMUIVQ+a5eS7NVgjZblzhjjYdtZeWlKmoLdgxfL4zP/mKhArwGY7+gCsMicsUZgyx7wNQsmLcAQ5rC4VMpq8aJWHxI4mMqpCryPr66eg1UInLJrs7lY87YZMPpBYE8giyVKtAXj5vJKiahpPcz/QrpqH71WjL6YdgD3JSWsN0rnbHKkkuhsmqQVeWq+oisiO6rytejv6XAEweuVKzUVRlc23hnLLPyKtUzf8F8DLbHEWT1iVBRWSMRostvq94LW/rVRzxXMcRKiBI/LFvNvc4Y5wb8mGASvi5l9YGBOGRp0Wr0MlvUl9whVr/bO3fdtmEoDPNJ0r1P0UW+oKC1GGjRJoCBdKinwB09B/DgIICHvELRIQ+RQYuHnqxdjI42ejMqVWpguUWPKNJHFKtKBZJBlD5YpucPh8c/aRLeeHSOK/vgFHzBak93bsgaY3ZIVUl+eQCgVdZPcTsE5RCJqs+/lSrSJUvrhFkBX+RkJdmBXCFr1bRA+drjpp52uS35fPPDWxYQnzFbuJo6zhPnIOt6g5s06QxEfN8PAPGytQUf0JbQRbK+x4YjlR9eDpg9dOdOFjEPv0hXiMgOoJXWe7rblnIbLuWms8mz+oX2kozqEOdrLC1hSpJWVjZB+HS1TSjbgDyWZALPmXXwhdNxOvhCWz20JVyluoIYQKiiyRhqNwG/RvLsiGdW18WI2chw2pEkpRWgLEUICk9V1zf6X56bMKMqz6s+s5QrpWuc2PIlQbBSogAO+XR1Ky6afvy0AuGKniXhPWIWI3U5vdRW4AcCkJArJN7d7SLtlx9VW8pXbdfN/6frfJPYUq58cqWivBpIlTrFRcJOObOe4SKx1Vsj20Cwjam01JODjiUpcbaE9jL4W9Hkla7tNgTI9XgxmtChiMie0F5G/930+vX6wOOsKvinKDlaFdrL4XOcipIACOpcxco820J7BfhsLH1F+jyUQxE2hvYqdEezo8lk8hQIavQFwiwN7ZV5Awa0+Mnh1nen/Z44BkLv9DljYHVorwbfgwGtf4iL2u+03weXYKJKi5pXE0J7FU5Bw8zz+N6Q0F4OD4EwvhWRJoX2UoZhUY9PZ2PYrNBewuAODLzDUMPjMQ8Kd6GIaMZaclxG8FfcIWsxGLkxGOzazl7AYKLn09idtd2qmP7ZiZsK24fHR20MLafPB6O2UTWAP1yGz7GpTmekAAAAAElFTkSuQmCC", tD = "data:image/png;base64,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", nD, rD = {
24987
25340
  zh: {
24988
25341
  TITLE: "眼镜模式",
24989
25342
  HIT: "请将手机横屏放入 VR 眼镜中"
@@ -24996,7 +25349,7 @@ var hE = (() => {
24996
25349
  TITLE: "メガネモード",
24997
25350
  HIT: "携帯電話をVRメガネに水平に入れてください。"
24998
25351
  }
24999
- }, 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 = `
25000
25353
  <style>
25001
25354
  .$id {
25002
25355
  all: initial;
@@ -25079,7 +25432,7 @@ var hE = (() => {
25079
25432
  .$id-modal-content-guide-cardboard-image {
25080
25433
  width: 100px;
25081
25434
  height: 82px;
25082
- background-image: url(${EE});
25435
+ background-image: url(${eD});
25083
25436
  background-size: 100%;
25084
25437
  background-repeat: no-repeat;
25085
25438
  }
@@ -25121,7 +25474,7 @@ var hE = (() => {
25121
25474
  .$id-modal-content-guide-phone-image {
25122
25475
  width: 58px;
25123
25476
  height: 56px;
25124
- background-image: url(${DE});
25477
+ background-image: url(${tD});
25125
25478
  background-size: 100%;
25126
25479
  background-repeat: no-repeat;
25127
25480
  }
@@ -25198,8 +25551,8 @@ Z
25198
25551
  </div>
25199
25552
  </div>
25200
25553
  <div class="$id-modal-content">
25201
- <div class="$id-modal-content-title">${AE.TITLE}</div>
25202
- <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>
25203
25556
  <div class="$id-modal-content-guide">
25204
25557
  <div class="$id-modal-content-guide-phone">
25205
25558
  <div class="$id-modal-content-guide-phone-move-x">
@@ -25258,7 +25611,7 @@ Z
25258
25611
  </div>
25259
25612
  </div>
25260
25613
  `;
25261
- function ME(e) {
25614
+ function oD(e) {
25262
25615
  let t = 1, n = document.getElementsByTagName("meta");
25263
25616
  for (let e = 0; e < n.length; e++) {
25264
25617
  let r = n[e];
@@ -25268,31 +25621,31 @@ function ME(e) {
25268
25621
  }
25269
25622
  }
25270
25623
  let r = (e) => Math.floor(e * t) + "px";
25271
- 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)));
25272
25625
  }
25273
- function NE() {
25274
- 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");
25275
25628
  return n.className = e, n.innerHTML = t, n;
25276
25629
  }
25277
25630
  //#endregion
25278
25631
  //#region build/five/meshes/panoSphereMesh.js
25279
- var PE = new e.CircleGeometry(.12, 16), FE = oe(.5, .5), IE = T(.017);
25280
- function LE(e, t) {
25281
- let n = D(FE.sub(e));
25282
- 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);
25283
25636
  }
25284
- function RE(e, t) {
25285
- let n = D(FE.sub(e));
25286
- 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));
25287
25640
  }
25288
- function zE() {
25289
- 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();
25290
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, {
25291
25644
  material: f,
25292
25645
  u: t
25293
25646
  };
25294
25647
  }
25295
- function BE() {
25648
+ function mD() {
25296
25649
  let t = {
25297
25650
  circleScale: R(1),
25298
25651
  circleFade: R(0),
@@ -25302,8 +25655,8 @@ function BE() {
25302
25655
  opacity: R(0),
25303
25656
  disable: R(0)
25304
25657
  }, n = z();
25305
- D(FE.sub(n));
25306
- 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);
25307
25660
  c = j(c, i, i.w), c = j(c, o, o.w), c = j(c, s, t.disable);
25308
25661
  let l = V(c.xyz, c.w.mul(t.opacity)), u = new e.NodeMaterial();
25309
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, {
@@ -25311,7 +25664,7 @@ function BE() {
25311
25664
  u: t
25312
25665
  };
25313
25666
  }
25314
- var VE = class extends e.Object3D {
25667
+ var hD = class extends e.Object3D {
25315
25668
  constructor() {
25316
25669
  super(), this.progress = 0, this.opacity = 0, this.loading = !1, this.current = !1, this.disabled = !1, this.currentMotion = new X({
25317
25670
  ringScale: 1.1,
@@ -25319,7 +25672,7 @@ var VE = class extends e.Object3D {
25319
25672
  circleFade: 0,
25320
25673
  circleOpacity: .85,
25321
25674
  circleScale: 1
25322
- }), 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({
25323
25676
  blending: e.CustomBlending,
25324
25677
  blendSrc: e.SrcAlphaFactor,
25325
25678
  blendDst: e.OneMinusSrcAlphaFactor,
@@ -25330,10 +25683,10 @@ var VE = class extends e.Object3D {
25330
25683
  color: 0,
25331
25684
  opacity: 0
25332
25685
  })), this.hitTestMesh.scale.set(1.5, 1.5, 1.5);
25333
- let { material: t, u: n } = zE();
25334
- this.ringMesh = new e.Mesh(PE, t), this.ringU = n;
25335
- let { material: r, u: i } = BE();
25336
- 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;
25337
25690
  }
25338
25691
  setProgress(e) {
25339
25692
  this.progress = e, this.setLoading(e > 0);
@@ -25476,7 +25829,7 @@ var VE = class extends e.Object3D {
25476
25829
  dispose() {
25477
25830
  this.hitTestMesh.material.dispose(), this.ringMesh.material.dispose(), this.panoMesh.material.dispose();
25478
25831
  }
25479
- }, 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 {
25480
25833
  static parseArgs(e) {
25481
25834
  if (e instanceof t) return e;
25482
25835
  let n = Object.assign(Object.assign({}, e), {
@@ -25491,10 +25844,10 @@ var VE = class extends e.Object3D {
25491
25844
  }
25492
25845
  constructor(e) {
25493
25846
  let n = t.parseArgs(e);
25494
- super(n), this.mode = "VRPanorama", this.cardboard = new TE(this.renderer);
25495
- let r = NE();
25847
+ super(n), this.mode = "VRPanorama", this.cardboard = new $E(this.renderer);
25848
+ let r = sD();
25496
25849
  this.helperElement = r;
25497
- let i = new Cw(r);
25850
+ let i = new Zw(r);
25498
25851
  this.element.parentNode && (this.element.parentNode.insertBefore(r, this.element), this.updateHelperElementSize(), i.on("tap", () => this.emit("vr.requestExit", $("vr.requestExit", {})))), this.destroyHelper = () => {
25499
25852
  i.destroy(), r.parentNode && r.parentNode.removeChild(r), this.helperElement = void 0;
25500
25853
  };
@@ -25567,17 +25920,17 @@ var VE = class extends e.Object3D {
25567
25920
  this.currentPano = Qb(_.panoId), this.emit("pano.moving", $("pano.moving", {
25568
25921
  userAction: this.userAction,
25569
25922
  prevPano: Qb(v.panoId),
25570
- 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),
25571
25924
  options: {},
25572
25925
  progress: this.locationMotion.progress,
25573
25926
  error: null
25574
25927
  }));
25575
25928
  }
25576
- 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);
25577
25930
  let x = this.camera.pose.longitude, S = this.camera.pose.latitude;
25578
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", {
25579
25932
  userAction: !0,
25580
- 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))
25581
25934
  }))), this.works.getObserver(this.currentPano);
25582
25935
  let C = this.works.getObserver(g.panoId), w = this.works.getObserver(_.panoId), T = /* @__PURE__ */ new Map();
25583
25936
  if (C) for (let e of C.accessibleNodes) {
@@ -25604,7 +25957,7 @@ var VE = class extends e.Object3D {
25604
25957
  let n = T.get(t);
25605
25958
  n ? (e.position.copy(n.position).applyMatrix4(n.work.transform), T.delete(t)) : (this.helper.remove(e), e.dispose(), this.panoMeshes.delete(t));
25606
25959
  }), T.forEach((e, t) => {
25607
- let n = new VE();
25960
+ let n = new hD();
25608
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);
25609
25962
  }), this.camera.pose.distance > .1 || b ? this.panoMeshes.forEach((e, r) => {
25610
25963
  e.setOpacity(0), e.updateTime && e.updateTime(t, n), e.visible = !1;
@@ -25685,9 +26038,9 @@ var VE = class extends e.Object3D {
25685
26038
  generateMipmaps: !1
25686
26039
  });
25687
26040
  let t = new e.CubeCamera(this.camera.near, this.camera.far, this.pano0DepthCubeRenderTarget);
25688
- 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);
25689
26042
  let i = new e.CubeCamera(this.camera.near, this.camera.far, this.pano1DepthCubeRenderTarget);
25690
- 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({
25691
26044
  pano0Depth: {
25692
26045
  panoId: n.panoId,
25693
26046
  map: this.pano0DepthCubeRenderTarget.texture,
@@ -25724,7 +26077,7 @@ var VE = class extends e.Object3D {
25724
26077
  this.intersectMesh.visible = !1, this.activePanoMesh = void 0, this.activeTime = void 0;
25725
26078
  return;
25726
26079
  }
25727
- if (this.activePanoMesh && this.activeTime && t - this.activeTime > HE) {
26080
+ if (this.activePanoMesh && this.activeTime && t - this.activeTime > gD) {
25728
26081
  let e = this.activePanoMesh, t = null;
25729
26082
  return this.panoMeshes.forEach((n, r) => {
25730
26083
  n === e && (t = r);
@@ -25776,13 +26129,13 @@ var VE = class extends e.Object3D {
25776
26129
  onPinchGesture() {}
25777
26130
  onMouseMove() {}
25778
26131
  onMouseOut() {}
25779
- }, GE = .01, KE = "183", qE = {
26132
+ }, yD = .01, bD = "183", xD = {
25780
26133
  isXRRenderTarget: !0,
25781
26134
  _hasExternalTextures: !1,
25782
26135
  _autoAllocateDepthBuffer: !0,
25783
26136
  _isOpaqueFramebuffer: !0
25784
26137
  };
25785
- function JE(t, n, r, i) {
26138
+ function SD(t, n, r, i) {
25786
26139
  let a = new e.RenderTarget(n, r, {
25787
26140
  format: e.RGBAFormat,
25788
26141
  type: e.UnsignedByteType,
@@ -25791,9 +26144,9 @@ function JE(t, n, r, i) {
25791
26144
  resolveDepthBuffer: i,
25792
26145
  resolveStencilBuffer: i
25793
26146
  });
25794
- return Object.assign(a, qE), a;
26147
+ return Object.assign(a, xD), a;
25795
26148
  }
25796
- var YE = class {
26149
+ var CD = class {
25797
26150
  constructor(t, n = {}) {
25798
26151
  var r;
25799
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;
@@ -25804,16 +26157,16 @@ var YE = class {
25804
26157
  verify() {
25805
26158
  let t = this.renderer, n = [], r = t.backend;
25806
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");
25807
- let i = JE(this.renderer, 1, 1, !0);
26160
+ let i = SD(this.renderer, 1, 1, !0);
25808
26161
  try {
25809
26162
  let e = i;
25810
- 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])})`);
25811
26164
  for (let t of ["multiview", "resolveDepthBuffer"]) e[t] === void 0 && n.push(`xrRT.${t}`);
25812
26165
  } finally {
25813
26166
  i.dispose();
25814
26167
  }
25815
26168
  if (n.length > 0) throw Error(`[RenderTargetBridge] three 内部 API 校验失败(THREE.REVISION=${e.REVISION}),缺失或不符:${n.join("、")}`);
25816
- 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} 复核过,继续运行`));
25817
26170
  }
25818
26171
  verifyCameras(t) {
25819
26172
  let n = this.renderer.coordinateSystem, r = t.map((e, t) => e.coordinateSystem === n ? null : t).filter((e) => e !== null);
@@ -25847,7 +26200,7 @@ var YE = class {
25847
26200
  }
25848
26201
  i.setScissorTest(!1), o.setXRTarget(t.framebuffer), i.setRenderTarget(null), a.setOutputRenderTarget(l);
25849
26202
  let m = i.getPixelRatio();
25850
- 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);
25851
26204
  } finally {
25852
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);
25853
26206
  }
@@ -25875,7 +26228,7 @@ var YE = class {
25875
26228
  generateMipmaps: !1,
25876
26229
  minFilter: e.LinearFilter,
25877
26230
  magFilter: e.LinearFilter
25878
- }), 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();
25879
26232
  o.fragmentNode = V(L(i.texture).rgb, 1), o.depthTest = !1, o.depthWrite = !1;
25880
26233
  let s = new e.QuadMesh(o);
25881
26234
  return this.resources = {
@@ -25896,7 +26249,7 @@ var YE = class {
25896
26249
  let t = (e = this.renderer.backend) == null ? void 0 : e.gl;
25897
26250
  return t ? !!t.getExtension("EXT_color_buffer_float") || !!t.getExtension("EXT_color_buffer_half_float") : !1;
25898
26251
  }
25899
- }, XE = class {
26252
+ }, wD = class {
25900
26253
  constructor() {
25901
26254
  this.root = new e.Group(), this._entries = /* @__PURE__ */ new Map(), this._dir = new e.Vector3();
25902
26255
  }
@@ -25946,8 +26299,8 @@ var YE = class {
25946
26299
  let { position: r, orientation: i } = t.transform;
25947
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);
25948
26301
  }
25949
- }, ZE = 5e3;
25950
- function QE(e) {
26302
+ }, TD = 5e3;
26303
+ function ED(e) {
25951
26304
  let t = [.../* @__PURE__ */ new Set([
25952
26305
  e,
25953
26306
  "local",
@@ -25955,21 +26308,21 @@ function QE(e) {
25955
26308
  ])];
25956
26309
  return t.slice(0, t.indexOf("viewer") + 1);
25957
26310
  }
25958
- function $E() {
26311
+ function DD() {
25959
26312
  let e = /* @__PURE__ */ Error("会话在参考空间解析前已结束");
25960
26313
  return e.aborted = !0, e;
25961
26314
  }
25962
- function eD(e) {
26315
+ function OD(e) {
25963
26316
  return e.map((e) => `${e.type}(${e.reason})`).join(", ");
25964
26317
  }
25965
- function tD(e, t) {
26318
+ function kD(e, t) {
25966
26319
  return Ti(this, arguments, void 0, function* (e, t, n = {}) {
25967
26320
  var r, i, a;
25968
- 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 = [];
25969
26322
  for (let n of u) {
25970
- let r = yield nD(e, n, o, c, l);
25971
- if (s != null && s()) throw $E();
25972
- 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)}`), {
25973
26326
  space: r.space,
25974
26327
  type: n,
25975
26328
  failures: d
@@ -25979,11 +26332,11 @@ function tD(e, t) {
25979
26332
  reason: r.reason
25980
26333
  });
25981
26334
  }
25982
- let f = /* @__PURE__ */ Error(`所有参考空间均不可用(期望 ${t}):${eD(d)}`);
26335
+ let f = /* @__PURE__ */ Error(`所有参考空间均不可用(期望 ${t}):${OD(d)}`);
25983
26336
  throw f.attempts = d, f;
25984
26337
  });
25985
26338
  }
25986
- function nD(e, t, n, r, i) {
26339
+ function AD(e, t, n, r, i) {
25987
26340
  return Ti(this, void 0, void 0, function* () {
25988
26341
  let a, o = !1, s = new Promise((n) => {
25989
26342
  let r = (e) => {
@@ -26017,7 +26370,7 @@ function nD(e, t, n, r, i) {
26017
26370
  }
26018
26371
  //#endregion
26019
26372
  //#region build/five/webxr/xrManager.js
26020
- var rD = 5e3, iD = "会话在进入过程中已结束", aD = class {
26373
+ var jD = 5e3, MD = "会话在进入过程中已结束", ND = class {
26021
26374
  static isBackendXRCapable(e) {
26022
26375
  let t = e.backend;
26023
26376
  return (t == null ? void 0 : t.isWebGPUBackend) !== !0;
@@ -26039,7 +26392,7 @@ var rD = 5e3, iD = "会话在进入过程中已结束", aD = class {
26039
26392
  }
26040
26393
  constructor(t, n, r) {
26041
26394
  var i;
26042
- 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 = {
26043
26396
  time: 0,
26044
26397
  hasPose: !1,
26045
26398
  headOrientation: new e.Quaternion(),
@@ -26055,7 +26408,7 @@ var rD = 5e3, iD = "会话在进入过程中已结束", aD = class {
26055
26408
  var e;
26056
26409
  if (this._session) {
26057
26410
  if (!this.entered) {
26058
- 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));
26059
26412
  return;
26060
26413
  }
26061
26414
  this.teardown();
@@ -26068,7 +26421,7 @@ var rD = 5e3, iD = "会话在进入过程中已结束", aD = class {
26068
26421
  }, this.onSelectEvent = (e) => {
26069
26422
  var t, n;
26070
26423
  (n = (t = this.callbacks).onSelect) == null || n.call(t, e.inputSource);
26071
- }, 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) => {
26072
26425
  console.warn(`[XR] Device_Profile 字段 ${e} 非法,已回落默认值`);
26073
26426
  });
26074
26427
  let a = () => {
@@ -26097,7 +26450,7 @@ var rD = 5e3, iD = "会话在进入过程中已结束", aD = class {
26097
26450
  this.layer = a;
26098
26451
  let o = this.options.foveation;
26099
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);
26100
- 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 });
26101
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;
26102
26455
  try {
26103
26456
  this.callbacks.onSessionStart(e, this.device);
@@ -26105,7 +26458,7 @@ var rD = 5e3, iD = "会话在进入过程中已结束", aD = class {
26105
26458
  console.error("[XR] onSessionStart 回调抛错", e);
26106
26459
  }
26107
26460
  } catch (e) {
26108
- throw this.rollback(), this.endedDuringEnter ? /* @__PURE__ */ Error(iD) : e;
26461
+ throw this.rollback(), this.endedDuringEnter ? /* @__PURE__ */ Error(MD) : e;
26109
26462
  }
26110
26463
  }
26111
26464
  });
@@ -26124,7 +26477,7 @@ var rD = 5e3, iD = "会话在进入过程中已结束", aD = class {
26124
26477
  var e;
26125
26478
  let t = this._session;
26126
26479
  if (this.entering) {
26127
- 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);
26128
26481
  return;
26129
26482
  }
26130
26483
  this.entered && t && (this.teardown(), this.endQuietly(t));
@@ -26198,12 +26551,12 @@ var rD = 5e3, iD = "会话在进入过程中已结束", aD = class {
26198
26551
  this.firstFrameArrived || (this.firstFrameArrived = !0, (e = this.firstFrameWaiter) == null || e.resolve());
26199
26552
  }
26200
26553
  throwIfEnded() {
26201
- if (this.endedDuringEnter) throw Error(iD);
26554
+ if (this.endedDuringEnter) throw Error(MD);
26202
26555
  }
26203
26556
  waitFirstFrame() {
26204
26557
  var e;
26205
26558
  if (this.firstFrameArrived) return Promise.resolve();
26206
- let t = (e = this.options.firstFrameTimeoutMs) == null ? rD : e;
26559
+ let t = (e = this.options.firstFrameTimeoutMs) == null ? jD : e;
26207
26560
  return new Promise((e, n) => {
26208
26561
  let r = setTimeout(() => {
26209
26562
  this.firstFrameWaiter = null, n(/* @__PURE__ */ Error(`等待首帧超时(${t}ms 内未收到首个 XRFrame)`));
@@ -26263,7 +26616,7 @@ var rD = 5e3, iD = "会话在进入过程中已结束", aD = class {
26263
26616
  rollback() {
26264
26617
  var e;
26265
26618
  let t = this._session;
26266
- (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;
26267
26620
  }
26268
26621
  teardown() {
26269
26622
  var e, t;
@@ -26283,7 +26636,7 @@ var rD = 5e3, iD = "会话在进入过程中已结束", aD = class {
26283
26636
  Promise.resolve(e.end()).catch(() => {});
26284
26637
  } catch (e) {}
26285
26638
  }
26286
- }, oD = {
26639
+ }, PD = {
26287
26640
  Handedness: Object.freeze({
26288
26641
  NONE: "none",
26289
26642
  LEFT: "left",
@@ -26314,24 +26667,24 @@ var rD = 5e3, iD = "会话在进入过程中已结束", aD = class {
26314
26667
  VISIBILITY: "visibility"
26315
26668
  })
26316
26669
  };
26317
- function sD(e) {
26670
+ function FD(e) {
26318
26671
  return Ti(this, void 0, void 0, function* () {
26319
26672
  let t = yield fetch(e);
26320
26673
  if (t.ok) return t.json();
26321
26674
  throw Error(t.statusText);
26322
26675
  });
26323
26676
  }
26324
- function cD(e) {
26677
+ function ID(e) {
26325
26678
  return Ti(this, void 0, void 0, function* () {
26326
26679
  if (!e) throw Error("No basePath supplied");
26327
- return yield sD(`${e}/profilesList.json`);
26680
+ return yield FD(`${e}/profilesList.json`);
26328
26681
  });
26329
26682
  }
26330
- function lD(e, t) {
26683
+ function LD(e, t) {
26331
26684
  return Ti(this, arguments, void 0, function* (e, t, n = null, r = !0) {
26332
26685
  if (!e) throw Error("No xrInputSource supplied");
26333
26686
  if (!t) throw Error("No basePath supplied");
26334
- let i = yield cD(t), a;
26687
+ let i = yield ID(t), a;
26335
26688
  if (e.profiles.some((e) => {
26336
26689
  let n = i[e];
26337
26690
  return n && (a = {
@@ -26349,7 +26702,7 @@ function lD(e, t) {
26349
26702
  deprecated: !!e.deprecated
26350
26703
  };
26351
26704
  }
26352
- let o = yield sD(a.profilePath), s;
26705
+ let o = yield FD(a.profilePath), s;
26353
26706
  if (r) {
26354
26707
  let t;
26355
26708
  if (t = o.layouts[e.handedness], !t) throw Error(`No matching handedness, ${e.handedness}, in profile ${a.profileId}`);
@@ -26361,13 +26714,13 @@ function lD(e, t) {
26361
26714
  };
26362
26715
  });
26363
26716
  }
26364
- var uD = {
26717
+ var RD = {
26365
26718
  xAxis: 0,
26366
26719
  yAxis: 0,
26367
26720
  button: 0,
26368
- state: oD.ComponentState.DEFAULT
26721
+ state: PD.ComponentState.DEFAULT
26369
26722
  };
26370
- function dD(e = 0, t = 0) {
26723
+ function zD(e = 0, t = 0) {
26371
26724
  let n = e, r = t;
26372
26725
  if (Math.sqrt(e * e + t * t) > 1) {
26373
26726
  let i = Math.atan2(t, e);
@@ -26378,36 +26731,36 @@ function dD(e = 0, t = 0) {
26378
26731
  normalizedYAxis: r * .5 + .5
26379
26732
  };
26380
26733
  }
26381
- var fD = class {
26734
+ var BD = class {
26382
26735
  constructor(e) {
26383
- 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);
26384
26737
  }
26385
26738
  updateFromComponent({ xAxis: e, yAxis: t, button: n, state: r }) {
26386
- let { normalizedXAxis: i, normalizedYAxis: a } = dD(e, t);
26739
+ let { normalizedXAxis: i, normalizedYAxis: a } = zD(e, t);
26387
26740
  switch (this.componentProperty) {
26388
- case oD.ComponentProperty.X_AXIS:
26741
+ case PD.ComponentProperty.X_AXIS:
26389
26742
  this.value = this.states.includes(r) ? i : .5;
26390
26743
  break;
26391
- case oD.ComponentProperty.Y_AXIS:
26744
+ case PD.ComponentProperty.Y_AXIS:
26392
26745
  this.value = this.states.includes(r) ? a : .5;
26393
26746
  break;
26394
- case oD.ComponentProperty.BUTTON:
26747
+ case PD.ComponentProperty.BUTTON:
26395
26748
  this.value = this.states.includes(r) ? n : 0;
26396
26749
  break;
26397
- case oD.ComponentProperty.STATE:
26398
- 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);
26399
26752
  break;
26400
26753
  default: throw Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`);
26401
26754
  }
26402
26755
  }
26403
- }, pD = class {
26756
+ }, VD = class {
26404
26757
  constructor(e, t) {
26405
26758
  if (!e || !t || !t.visualResponses || !t.gamepadIndices || Object.keys(t.gamepadIndices).length === 0) throw Error("Invalid arguments supplied");
26406
26759
  this.id = e, this.type = t.type, this.rootNodeName = t.rootNodeName, this.touchPointNodeName = t.touchPointNodeName, this.visualResponses = {}, Object.keys(t.visualResponses).forEach((e) => {
26407
- let n = new fD(t.visualResponses[e]);
26760
+ let n = new BD(t.visualResponses[e]);
26408
26761
  this.visualResponses[e] = n;
26409
26762
  }), this.gamepadIndices = Object.assign({}, t.gamepadIndices), this.values = {
26410
- state: oD.ComponentState.DEFAULT,
26763
+ state: PD.ComponentState.DEFAULT,
26411
26764
  button: this.gamepadIndices.button === void 0 ? void 0 : 0,
26412
26765
  xAxis: this.gamepadIndices.xAxis === void 0 ? void 0 : 0,
26413
26766
  yAxis: this.gamepadIndices.yAxis === void 0 ? void 0 : 0
@@ -26417,21 +26770,21 @@ var fD = class {
26417
26770
  return Object.assign({ id: this.id }, this.values);
26418
26771
  }
26419
26772
  updateFromGamepad(e) {
26420
- 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) {
26421
26774
  let t = e.buttons[this.gamepadIndices.button];
26422
- 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);
26423
26776
  }
26424
- 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) => {
26425
26778
  e.updateFromComponent(this.values);
26426
26779
  });
26427
26780
  }
26428
- }, mD = class {
26781
+ }, HD = class {
26429
26782
  constructor(e, t, n) {
26430
26783
  if (!e) throw Error("No xrInputSource supplied");
26431
26784
  if (!t) throw Error("No profile supplied");
26432
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) => {
26433
26786
  let t = this.layoutDescription.components[e];
26434
- this.components[e] = new pD(e, t);
26787
+ this.components[e] = new VD(e, t);
26435
26788
  }), this.updateFromGamepad();
26436
26789
  }
26437
26790
  get gripSpace() {
@@ -26451,7 +26804,7 @@ var fD = class {
26451
26804
  e.updateFromGamepad(this.xrInputSource.gamepad);
26452
26805
  });
26453
26806
  }
26454
- }, 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 {
26455
26808
  constructor() {
26456
26809
  super(), this.motionController = null, this.envMap = null;
26457
26810
  }
@@ -26464,21 +26817,21 @@ var fD = class {
26464
26817
  super.updateMatrixWorld(e), this.motionController && (this.motionController.updateFromGamepad(), Object.values(this.motionController.components).forEach((e) => {
26465
26818
  Object.values(e.visualResponses).forEach((e) => {
26466
26819
  let { valueNode: t, minNode: n, maxNode: r, value: i, valueNodeProperty: a } = e;
26467
- 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)));
26468
26821
  });
26469
26822
  }));
26470
26823
  }
26471
26824
  };
26472
- function vD(e, r) {
26825
+ function KD(e, r) {
26473
26826
  Object.values(e.components).forEach((e) => {
26474
26827
  let { type: a, touchPointNodeName: o, visualResponses: s } = e;
26475
- 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) {
26476
26829
  let r = new t(new i(.001), new n({ color: 255 }));
26477
26830
  e.touchPointNode.add(r);
26478
26831
  } else console.warn(`Could not find touch dot, ${e.touchPointNodeName}, in touchpad component ${e.id}`);
26479
26832
  Object.values(s).forEach((e) => {
26480
26833
  let { valueNodeName: t, minNodeName: n, maxNodeName: i, valueNodeProperty: a } = e;
26481
- if (a === oD.VisualResponseProperty.TRANSFORM) {
26834
+ if (a === PD.VisualResponseProperty.TRANSFORM) {
26482
26835
  if (e.minNode = r.getObjectByName(n), e.maxNode = r.getObjectByName(i), !e.minNode) {
26483
26836
  console.warn(`Could not find ${n} in the model`);
26484
26837
  return;
@@ -26492,27 +26845,27 @@ function vD(e, r) {
26492
26845
  });
26493
26846
  });
26494
26847
  }
26495
- function yD(t, n) {
26496
- vD(t.motionController, n), t.envMap && n.traverse((n) => {
26848
+ function qD(t, n) {
26849
+ KD(t.motionController, n), t.envMap && n.traverse((n) => {
26497
26850
  n instanceof e.Mesh && n.isMesh && (n.material.envMap = t.envMap, n.material.needsUpdate = !0);
26498
26851
  }), t.add(n);
26499
26852
  }
26500
- var bD = class {
26853
+ var JD = class {
26501
26854
  constructor(e = null) {
26502
- this.gltfLoader = e, this.path = hD, this._assetCache = {};
26855
+ this.gltfLoader = e, this.path = UD, this._assetCache = {};
26503
26856
  }
26504
26857
  createControllerModel(e) {
26505
- let t = new _D(), n = null;
26858
+ let t = new GD(), n = null;
26506
26859
  return e.addEventListener("connected", (e) => {
26507
26860
  let r = e.data;
26508
- r.targetRayMode !== "tracked-pointer" || !r.gamepad || lD(r, this.path, gD).then(({ profile: e, assetPath: i }) => {
26509
- 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);
26510
26863
  let a = this._assetCache[t.motionController.assetUrl];
26511
- if (a) n = a.scene.clone(), yD(t, n);
26864
+ if (a) n = a.scene.clone(), qD(t, n);
26512
26865
  else {
26513
26866
  if (!this.gltfLoader) throw Error("GLTFLoader not set.");
26514
26867
  this.gltfLoader.load(t.motionController.assetUrl, (e) => {
26515
- 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);
26516
26869
  });
26517
26870
  }
26518
26871
  }).catch((e) => {
@@ -26522,7 +26875,7 @@ var bD = class {
26522
26875
  t.motionController = null, t.remove(n), n = null;
26523
26876
  }), t;
26524
26877
  }
26525
- }, xD = class {
26878
+ }, YD = class {
26526
26879
  constructor() {
26527
26880
  this.states = /* @__PURE__ */ new Map();
26528
26881
  }
@@ -26612,14 +26965,14 @@ var bD = class {
26612
26965
  let n = this.states.get(e);
26613
26966
  n && (n.delete(t), n.size === 0 && this.states.delete(e));
26614
26967
  }
26615
- }, SD = Object.assign(Object.assign({}, Ql(XT, ["maxLatitude", "minLatitude"])), {
26968
+ }, XD = Object.assign(Object.assign({}, Ql(wE, ["maxLatitude", "minLatitude"])), {
26616
26969
  referenceSpaceType: "local-floor",
26617
26970
  foveation: 1,
26618
26971
  showControllerModel: !0,
26619
26972
  showPointerRay: !0,
26620
26973
  deviceProfile: {}
26621
- }), CD = 5, wD = 1e-4, TD = 1500;
26622
- function ED() {
26974
+ }), ZD = 5, QD = 1e-4, $D = 1500;
26975
+ function eO() {
26623
26976
  return { load(e, t) {
26624
26977
  Xl.ajax(e, { responseType: "arraybuffer" }).then((t) => {
26625
26978
  var n;
@@ -26633,7 +26986,7 @@ function ED() {
26633
26986
  });
26634
26987
  } };
26635
26988
  }
26636
- var DD = class t extends ZT {
26989
+ var tO = class t extends TE {
26637
26990
  static parseArgs(e) {
26638
26991
  if (e instanceof t) return e;
26639
26992
  let n = Object.assign(Object.assign({}, e), {
@@ -26652,15 +27005,15 @@ var DD = class t extends ZT {
26652
27005
  super(s), this.controllerRayFilled = {
26653
27006
  left: !1,
26654
27007
  right: !1
26655
- }, 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 = {
26656
27009
  left: null,
26657
27010
  right: null
26658
27011
  }, this.gazeRayPool = null, this.mode = "XRPanorama";
26659
- 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;
26660
27013
  this.showControllerModel = (i = e.showControllerModel) == null ? c.showControllerModel : i, this.showPointerRay = (a = e.showPointerRay) == null ? c.showPointerRay : a, this.controllerRaycasters = {
26661
27014
  left: this.createPickingRaycaster(),
26662
27015
  right: this.createPickingRaycaster()
26663
- }, this.gazeRaycaster = null, this.xrManager = new aD(this.renderer, {
27016
+ }, this.gazeRaycaster = null, this.xrManager = new ND(this.renderer, {
26664
27017
  referenceSpaceType: l,
26665
27018
  foveation: u,
26666
27019
  deviceProfile: (o = e.deviceProfile) == null ? c.deviceProfile : o
@@ -26668,13 +27021,13 @@ var DD = class t extends ZT {
26668
27021
  onSessionStart: (e, t) => {
26669
27022
  this.emit("xr.session.start", $("xr.session.start", {
26670
27023
  session: e,
26671
- machineType: dC(t)
27024
+ machineType: zC(t)
26672
27025
  }));
26673
27026
  },
26674
27027
  onSessionEnd: (e) => {
26675
27028
  this.emit("xr.session.end", $("xr.session.end", {
26676
27029
  session: null,
26677
- machineType: dC(e)
27030
+ machineType: zC(e)
26678
27031
  }));
26679
27032
  },
26680
27033
  onSessionEnding: () => {
@@ -26831,8 +27184,8 @@ var DD = class t extends ZT {
26831
27184
  }
26832
27185
  getControllerModelFactory() {
26833
27186
  if (!this.controllerModelFactory) {
26834
- let e = new bD();
26835
- e.gltfLoader = ED(), this.controllerModelFactory = e;
27187
+ let e = new JD();
27188
+ e.gltfLoader = eO(), this.controllerModelFactory = e;
26836
27189
  }
26837
27190
  return this.controllerModelFactory;
26838
27191
  }
@@ -26866,15 +27219,15 @@ var DD = class t extends ZT {
26866
27219
  depthWrite: !1,
26867
27220
  transparent: !0
26868
27221
  }), a = new e.LineSegments(t, i);
26869
- 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;
26870
27223
  } else !o && r.ray && (this.disposeRay(r.ray), r.ray = void 0);
26871
27224
  }
26872
27225
  updatePointerRayLength(e, t) {
26873
27226
  for (let [n, r] of this.inputVisuals) {
26874
27227
  let i = r.ray;
26875
27228
  if (!i) continue;
26876
- let a = n.handedness === "left" ? "left" : "right", o = CD;
26877
- 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;
26878
27231
  let s = i.geometry.getAttribute("position");
26879
27232
  s.setZ(1, -o), s.needsUpdate = !0, r.rayLength = o;
26880
27233
  }
@@ -26894,7 +27247,7 @@ var DD = class t extends ZT {
26894
27247
  let i = $(e, {
26895
27248
  session: this.xrManager.session,
26896
27249
  buttons: t,
26897
- machineType: dC(this.xrManager.device),
27250
+ machineType: zC(this.xrManager.device),
26898
27251
  isFirst: n,
26899
27252
  isFinal: r,
26900
27253
  controllers: { raycaster: {
@@ -26943,7 +27296,7 @@ var DD = class t extends ZT {
26943
27296
  this.intersectMesh.visible = !1, this.activePanoMesh = void 0, this.activeTime = void 0, this.updatePointerRayLength(null, null);
26944
27297
  return;
26945
27298
  }
26946
- if (this.activePanoMesh && this.activeTime && t - this.activeTime > TD) {
27299
+ if (this.activePanoMesh && this.activeTime && t - this.activeTime > $D) {
26947
27300
  let e = this.activePanoMesh, t = null;
26948
27301
  return this.panoMeshes.forEach((n, r) => {
26949
27302
  n === e && (t = r);
@@ -27059,7 +27412,7 @@ var DD = class t extends ZT {
27059
27412
  onPinchGesture() {}
27060
27413
  onMouseMove() {}
27061
27414
  onMouseOut() {}
27062
- }, 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 {
27063
27416
  static parseArgs(e) {
27064
27417
  return e instanceof t ? e : super.parseArgs(e);
27065
27418
  }
@@ -27071,7 +27424,7 @@ var DD = class t extends ZT {
27071
27424
  } : {
27072
27425
  workCode: d.workCode,
27073
27426
  panoIndex: d.panoIndex
27074
- }, 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();
27075
27428
  if (c.initial.state.offset) y.copy(c.initial.state.offset);
27076
27429
  else if (p) y.copy(p.position).applyMatrix4(p.work.transform);
27077
27430
  else {
@@ -27167,9 +27520,9 @@ var DD = class t extends ZT {
27167
27520
  let n = new e.Vector3(this.locationMotion.value.x, this.locationMotion.value.y, this.locationMotion.value.z), r = [];
27168
27521
  for (let e of this.works) {
27169
27522
  let t = this.modelScene.models.find((t) => t.work === e);
27170
- 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);
27171
27524
  }
27172
- 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));
27173
27526
  this.currentPano = i ? {
27174
27527
  workCode: i.work.workCode,
27175
27528
  panoIndex: i.panoIndex
@@ -27178,7 +27531,7 @@ var DD = class t extends ZT {
27178
27531
  panoIndex: 0
27179
27532
  };
27180
27533
  }
27181
- 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);
27182
27535
  let o = this.works.getObserver(this.currentPano);
27183
27536
  if (this.intersectMesh && this.intersectMesh.parent && o && o.position.y - o.standingPosition.y > 10) {
27184
27537
  let e = q(this.camera.position.distanceTo(this.intersectMesh.position) * (2 * Math.tan(.5 * this.camera.fov / 180 * Math.PI)) / 5, .5);
@@ -27262,9 +27615,9 @@ var DD = class t extends ZT {
27262
27615
  }, g = [];
27263
27616
  for (let e of this.works) {
27264
27617
  let t = this.modelScene.models.find((t) => t.work === e);
27265
- 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);
27266
27619
  }
27267
- 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 = _ ? {
27268
27621
  workCode: _.work.workCode,
27269
27622
  panoIndex: _.panoIndex
27270
27623
  } : {
@@ -27287,7 +27640,7 @@ var DD = class t extends ZT {
27287
27640
  error: null
27288
27641
  })), n.moveStartCallback && n.moveStartCallback(y), this.cameraMotion.set(h, p).catch(Y), this.locationMotion.set(m, p, f).then(() => {
27289
27642
  for (let e of this.modelScene.children) e instanceof vb && e.show();
27290
- 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));
27291
27644
  this.emit("pano.arrived", $("pano.arrived", {
27292
27645
  options: n,
27293
27646
  prevPano: b,
@@ -27321,16 +27674,16 @@ var DD = class t extends ZT {
27321
27674
  }
27322
27675
  }
27323
27676
  if (r) {
27324
- let n = new e.Vector3().copy(r.point).add(OD), i = [];
27677
+ let n = new e.Vector3().copy(r.point).add(nO), i = [];
27325
27678
  for (let e of this.works) {
27326
27679
  let t = this.modelScene.models.find((t) => t.work === e);
27327
- 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);
27328
27681
  }
27329
- let [a, o] = Im(i, (e) => AD.copy(e.position).applyMatrix4(e.work.transform).distanceTo(n), !0);
27330
- 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);
27331
27684
  } else this.emit("gesture.tap", t), t.defaultPrevented || this.cameraBounce();
27332
27685
  }
27333
- }, 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 = {
27334
27687
  defaultLongitude: Math.PI / 4,
27335
27688
  defaultLatitude: Math.PI / 4,
27336
27689
  defaultDistance: 150,
@@ -27338,28 +27691,28 @@ var DD = class t extends ZT {
27338
27691
  minLatitude: 0,
27339
27692
  cameraType: "auto",
27340
27693
  cameraFence: null,
27341
- intersectMeshCreator: () => new zw()
27342
- }, RD = {
27343
- Floorplan: Uw,
27344
- Topview: Gw,
27345
- Panorama: ZT,
27346
- VRPanorama: WE,
27347
- XRPanorama: DD,
27348
- Model: MD,
27349
- 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 {
27350
27703
  static parseArgs(e) {
27351
27704
  var n, r, i, a, o, s, c, l;
27352
27705
  if (e instanceof t) return e;
27353
27706
  let u = super.parseArgs(e);
27354
27707
  return Object.assign(Object.assign({}, u), {
27355
- defaultLongitude: (n = e.defaultLongitude) == null ? LD.defaultLongitude : n,
27356
- defaultLatitude: (r = e.defaultLatitude) == null ? LD.defaultLatitude : r,
27357
- defaultDistance: (i = e.defaultDistance) == null ? LD.defaultDistance : i,
27358
- maxLatitude: (a = e.maxLatitude) == null ? LD.maxLatitude : a,
27359
- minLatitude: (o = e.minLatitude) == null ? LD.minLatitude : o,
27360
- cameraType: (s = e.cameraType) == null ? LD.cameraType : s,
27361
- cameraFence: (c = e.cameraFence) == null ? LD.cameraFence : c,
27362
- 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
27363
27716
  });
27364
27717
  }
27365
27718
  static distanceFromModel(e, t, n) {
@@ -27376,7 +27729,7 @@ var DD = class t extends ZT {
27376
27729
  } : {
27377
27730
  workCode: m.workCode,
27378
27731
  panoIndex: m.panoIndex
27379
- }, 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;
27380
27733
  if (p.offset) x.copy(p.offset);
27381
27734
  else {
27382
27735
  let e = d.getObserver(h);
@@ -27485,7 +27838,7 @@ var DD = class t extends ZT {
27485
27838
  e && e.map !== (t == null ? void 0 : t.map) && e.map.dispose(), r.progress = 1, r.pano0 = r.pano1 = t;
27486
27839
  }
27487
27840
  let a = 0;
27488
- 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) {
27489
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));
27490
27843
  if (this.cameraFence.distanceToPoint(n) > .01) {
27491
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), {
@@ -27543,7 +27896,7 @@ var DD = class t extends ZT {
27543
27896
  userAction: this.userAction
27544
27897
  }));
27545
27898
  }, (e) => {
27546
- 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));
27547
27900
  this.emit("initAnimation.end", $("initAnimation.end", {
27548
27901
  state: t,
27549
27902
  userAction: this.userAction
@@ -27559,9 +27912,9 @@ var DD = class t extends ZT {
27559
27912
  let n = [];
27560
27913
  for (let t of this.works) {
27561
27914
  let r = this.modelScene.models.find((e) => e.work === t);
27562
- 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);
27563
27916
  }
27564
- 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);
27565
27918
  return r && i < Math.max(r.standingPosition.distanceTo(this.camera.position) / 5, 10) ? r : null;
27566
27919
  }
27567
27920
  coordinatesForOffset(t) {
@@ -27615,7 +27968,7 @@ var DD = class t extends ZT {
27615
27968
  fixFinalState(t) {
27616
27969
  if (this.perspToOrthoMotion.getTargetKeyframe().value.perspToOrtho === 1) return;
27617
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);
27618
- 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;
27619
27972
  let a;
27620
27973
  if (a = this.modelScene.intersectRaycaster(i)[0], a && a.distance < this.camera.near && (a = void 0), !a) {
27621
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());
@@ -27642,7 +27995,7 @@ var DD = class t extends ZT {
27642
27995
  face: null
27643
27996
  };
27644
27997
  }
27645
- 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);
27646
27999
  }
27647
28000
  onPanGesture(t) {
27648
28001
  this.userAction = t.userAction, this.stopMomentumMovement(), this.hideIntersectMesh();
@@ -27685,7 +28038,7 @@ var DD = class t extends ZT {
27685
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();
27686
28039
  o *= Math.tan(this.camera.pose.fov / 2 * Math.PI / 180);
27687
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();
27688
- 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);
27689
28042
  let d = Object.assign(Object.assign({}, this.currentPano), {
27690
28043
  mode: this.mode,
27691
28044
  longitude: this.camera.pose.longitude,
@@ -27706,7 +28059,7 @@ var DD = class t extends ZT {
27706
28059
  z: d.offset.z
27707
28060
  }, 0).catch(Y)), t.isFinal) {
27708
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();
27709
- 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, {
27710
28063
  longitude: 0,
27711
28064
  latitude: 0,
27712
28065
  x: s.x,
@@ -27765,7 +28118,7 @@ var DD = class t extends ZT {
27765
28118
  return;
27766
28119
  }
27767
28120
  if (i === void 0) return;
27768
- 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;
27769
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)) {
27770
28123
  if (!("__fixFinalState" in n)) {
27771
28124
  let e = n.state;
@@ -27831,7 +28184,7 @@ var DD = class t extends ZT {
27831
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());
27832
28185
  o && (r += o.distanceTo(i));
27833
28186
  let s = Math.max(this.locationMotion.value.distance - this.camera.near, 0), c = n.center.delta / 10 * Math.max(s / 5, .1);
27834
- 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) {
27835
28188
  let e = this.locationMotion.value.distance - c;
27836
28189
  n.state.distance = e;
27837
28190
  } else {
@@ -27945,7 +28298,7 @@ var DD = class t extends ZT {
27945
28298
  return;
27946
28299
  }
27947
28300
  this.pendingTextureId = null, u.name = p;
27948
- 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), _ = {
27949
28302
  panoId: o,
27950
28303
  map: u,
27951
28304
  mapSize: f,
@@ -27992,18 +28345,18 @@ var DD = class t extends ZT {
27992
28345
  this.intersectMesh.visible === !0 && (this.intersectMesh.visible = !1, this.needsRender = !0);
27993
28346
  }
27994
28347
  }
27995
- }, zD = {
27996
- Floorplan: Hw,
27997
- Topview: Ww,
27998
- Panorama: XT,
27999
- VRPanorama: UE,
28000
- XRPanorama: SD,
28001
- Model: jD,
28002
- Mapview: LD
28003
- }, 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(",");
28004
28357
  //#endregion
28005
28358
  //#region build/five/application/events-legacy.js
28006
- function VD(e) {
28359
+ function hO(e) {
28007
28360
  e.on("initAnimation.start", (t) => {
28008
28361
  e.emit("initAnimationWillStart", t.state.panoIndex, t.state, t.userAction);
28009
28362
  }), e.on("initAnimation.end", (t) => {
@@ -28145,7 +28498,7 @@ function VD(e) {
28145
28498
  }
28146
28499
  //#endregion
28147
28500
  //#region build/five/application/generateDefaultVideoElement.js
28148
- function HD() {
28501
+ function gO() {
28149
28502
  if (typeof window < "u") {
28150
28503
  let e = document.createElement("video");
28151
28504
  e.loop = !0, e.autoplay = !0, e.playsInline = !0, e.muted = !0, e.crossOrigin = "";
@@ -28157,7 +28510,7 @@ function HD() {
28157
28510
  }
28158
28511
  //#endregion
28159
28512
  //#region build/five/application/initLights.js
28160
- function UD() {
28513
+ function _O() {
28161
28514
  let t = new e.Group();
28162
28515
  t.name = "internalLights";
28163
28516
  {
@@ -28180,7 +28533,7 @@ function UD() {
28180
28533
  }
28181
28534
  //#endregion
28182
28535
  //#region build/five/application/getViewportScale.js
28183
- function WD(e) {
28536
+ function vO(e) {
28184
28537
  var t, n;
28185
28538
  let r = {}, i = e.split(/(\;|\,)/);
28186
28539
  for (let e of i) {
@@ -28189,14 +28542,14 @@ function WD(e) {
28189
28542
  }
28190
28543
  return r;
28191
28544
  }
28192
- function GD() {
28545
+ function yO() {
28193
28546
  var e;
28194
28547
  if (typeof document < "u") {
28195
28548
  let t = document.getElementsByTagName("meta");
28196
28549
  for (let n = 0; n < t.length; n++) {
28197
28550
  let r = t[n];
28198
28551
  if (r.getAttribute("name") === "viewport") {
28199
- 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"]);
28200
28553
  if (!isNaN(n)) return n;
28201
28554
  }
28202
28555
  }
@@ -28205,7 +28558,7 @@ function GD() {
28205
28558
  }
28206
28559
  //#endregion
28207
28560
  //#region build/five/utils/requestPermission.js
28208
- function KD() {
28561
+ function bO() {
28209
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) => {
28210
28563
  if (e == "granted") return Promise.resolve();
28211
28564
  {
@@ -28214,7 +28567,7 @@ function KD() {
28214
28567
  }
28215
28568
  }) : Promise.resolve();
28216
28569
  }
28217
- function qD() {
28570
+ function xO() {
28218
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)));
28219
28572
  {
28220
28573
  let e = /* @__PURE__ */ Error("Request XR Permission denied.");
@@ -28223,9 +28576,9 @@ function qD() {
28223
28576
  }
28224
28577
  //#endregion
28225
28578
  //#region build/five/application/five.js
28226
- 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 {
28227
28580
  static get version() {
28228
- return "1.0.0-alpha.7";
28581
+ return "1.0.0-alpha.9";
28229
28582
  }
28230
28583
  static get dracoPath() {
28231
28584
  return Uf.decoderPath;
@@ -28247,7 +28600,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28247
28600
  }
28248
28601
  constructor(t = {}) {
28249
28602
  var n, r, i, a, o, s, c, l, u, d, f, p;
28250
- 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 = {
28251
28604
  time: J(),
28252
28605
  args: []
28253
28606
  }, this.currentMode = "Panorama", this.pano = {
@@ -28264,14 +28617,14 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28264
28617
  }, this.fps = {
28265
28618
  testCount: 0,
28266
28619
  testTime: J()
28267
- }, 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;
28268
28621
  else try {
28269
- this.renderer = new hC({
28622
+ this.renderer = new UC({
28270
28623
  outputType: this.enableHDR ? e.HalfFloatType : void 0,
28271
28624
  logarithmicDepthBuffer: t.logarithmicDepthBuffer,
28272
28625
  forceWebGL: (u = t.forceWebGL) == null ? !1 : u
28273
28626
  });
28274
- let n = GD();
28627
+ let n = yO();
28275
28628
  this.renderer.setPixelRatio(n === 1 ? window.devicePixelRatio : 1), this.renderer.setSize(512, 512), this.renderer.setClearColor(this.backgroundColor, this.backgroundAlpha);
28276
28629
  } catch (e) {
28277
28630
  let t = e instanceof Error ? e : Error(String(e));
@@ -28285,7 +28638,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28285
28638
  bottom: 0,
28286
28639
  width: 1,
28287
28640
  height: 1
28288
- }, 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) => {
28289
28642
  var i;
28290
28643
  this.emit("network.resource", $("network.resource", {
28291
28644
  source: e,
@@ -28293,17 +28646,17 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28293
28646
  requestState: n,
28294
28647
  detail: r
28295
28648
  })), (i = this.analysis) == null || i.network(this.works, e, t, n, r);
28296
- }), 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) => {
28297
28650
  this.bindModel(e.model);
28298
28651
  }), this.scene.add(this.modelScene);
28299
- let [m] = this.modelScene.setModels(iO, { forceReplaceImmediately: !0 });
28652
+ let [m] = this.modelScene.setModels(MO, { forceReplaceImmediately: !0 });
28300
28653
  Q(m, "loaded", {
28301
28654
  get() {
28302
28655
  return !1;
28303
28656
  },
28304
28657
  set(e) {}
28305
- }), this.videoTexture = new e.VideoTexture(t.videoInstance || HD());
28306
- let h = UD();
28658
+ }), this.videoTexture = new e.VideoTexture(t.videoInstance || gO());
28659
+ let h = _O();
28307
28660
  this.scene.add(h), this.state = {
28308
28661
  mode: this.currentMode,
28309
28662
  workCode: this.pano.workCode,
@@ -28321,16 +28674,16 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28321
28674
  }, _ = () => {
28322
28675
  this.needsRender = !0;
28323
28676
  }, v = () => {
28324
- this.renderer instanceof hC && this.renderer.reconfigureContext(), this.needsRender = !0;
28677
+ this.renderer instanceof UC && this.renderer.reconfigureContext(), this.needsRender = !0;
28325
28678
  }, y = () => {
28326
28679
  typeof document < "u" && document.visibilityState === "visible" && v();
28327
28680
  }, b = () => {
28328
28681
  v();
28329
28682
  };
28330
- if (this.renderer instanceof hC && (this.renderer.onDeviceLostCallback = () => {
28683
+ if (this.renderer instanceof UC && (this.renderer.onDeviceLostCallback = () => {
28331
28684
  v();
28332
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 = () => {
28333
- 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);
28334
28687
  }, this.loadWorkTask = this.prepare(), this.plugins = {}, t.plugins && t.plugins.length) {
28335
28688
  for (let e of t.plugins) if (typeof e == "function") e(this);
28336
28689
  else if (Array.isArray(e)) {
@@ -28341,7 +28694,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28341
28694
  }
28342
28695
  }
28343
28696
  }
28344
- 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);
28345
28698
  }
28346
28699
  get ident() {
28347
28700
  return this.fiveId;
@@ -28355,11 +28708,11 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28355
28708
  dispose() {
28356
28709
  var t;
28357
28710
  if (this.destroyed === !0) return;
28358
- 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);
28359
28712
  let n = this.getElement();
28360
28713
  n && n.parentNode && n.parentNode.removeChild(n);
28361
28714
  let r = this.modelScene.parameter;
28362
- 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();
28363
28716
  }
28364
28717
  setViewport(e) {
28365
28718
  Object.assign(this.viewport, e), this.needsRender = !0;
@@ -28379,7 +28732,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28379
28732
  }
28380
28733
  appendTo(e, t = {}) {
28381
28734
  if (!this.renderer) return;
28382
- if (!(this.renderer instanceof hC)) {
28735
+ if (!(this.renderer instanceof UC)) {
28383
28736
  this.throwError(/* @__PURE__ */ Error("cannot call appendTo method when render a external renderer"));
28384
28737
  return;
28385
28738
  }
@@ -28394,7 +28747,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28394
28747
  if (!this.renderer) return;
28395
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;
28396
28749
  if (l = Math.max(1, l), u = Math.max(1, u), !t) {
28397
- let e = GD(), n = typeof window < "u" ? window.devicePixelRatio : 1;
28750
+ let e = yO(), n = typeof window < "u" ? window.devicePixelRatio : 1;
28398
28751
  if (t = (i = e === 1 ? n : 1) == null ? 1 : i, t > 1) {
28399
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);
28400
28753
  e > n && (t = Math.max(t / e * n, 1), t = Math.floor(t * 100) / 100);
@@ -28428,7 +28781,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28428
28781
  return this.controller.updateCameraWithKeyframes(e, t, n);
28429
28782
  }
28430
28783
  get works() {
28431
- return rO.get(this) || iO;
28784
+ return jO.get(this) || MO;
28432
28785
  }
28433
28786
  get work() {
28434
28787
  return this.works[0];
@@ -28444,7 +28797,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28444
28797
  }
28445
28798
  load(e, t, n, r = !0) {
28446
28799
  if (!this.renderer) throw Error("renderer is not initialized");
28447
- 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));
28448
28801
  return this.loadWorkTask = i.catch((e) => {
28449
28802
  this.throwError(e);
28450
28803
  }), i;
@@ -28452,7 +28805,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28452
28805
  load_(n, r, i, a = !0) {
28453
28806
  var o, s, c, l, u, d, f, p, m, h;
28454
28807
  let g = {};
28455
- 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"));
28456
28809
  let _ = {};
28457
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);
28458
28811
  let v = [];
@@ -28466,7 +28819,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28466
28819
  return this.throwError(e), Promise.reject(e);
28467
28820
  }
28468
28821
  for (let e of y) this.bindWorkFetcher(e);
28469
- 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");
28470
28823
  let b = this.currentMode, x = y.initial, S = x.work.observers[0], C = S ? {
28471
28824
  workCode: S.work.workCode,
28472
28825
  panoIndex: S.panoIndex
@@ -28537,7 +28890,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28537
28890
  duration: E,
28538
28891
  effect: D,
28539
28892
  userAction: a
28540
- } }, this.commonParams()), this.controllerInits[e]), c = RD[o.mode].initAnimationEndState(s);
28893
+ } }, this.commonParams()), this.controllerInits[e]), c = fO[o.mode].initAnimationEndState(s);
28541
28894
  if (this.controller && b === e) this.controller.updateWork(y, c, {
28542
28895
  effect: D,
28543
28896
  duration: E
@@ -28545,7 +28898,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28545
28898
  else {
28546
28899
  if (this.controller) this.controller.destroy();
28547
28900
  else {
28548
- let t = RD[e].initAnimationEndState(s);
28901
+ let t = fO[e].initAnimationEndState(s);
28549
28902
  this.camera.setFromPose(t), this.emit("camera.update", $("camera.update", {
28550
28903
  state: this.getCurrentState(),
28551
28904
  userAction: a
@@ -28566,10 +28919,10 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28566
28919
  }
28567
28920
  this.state.workCode = this.pano.workCode, this.state.panoIndex = this.pano.panoIndex, this.updateTime(this.currentUpdateArgs.time, 0, ...this.currentUpdateArgs.args);
28568
28921
  };
28569
- rO.set(this, y);
28922
+ jO.set(this, y);
28570
28923
  let k = Promise.resolve();
28571
28924
  if (w === t.Mode.Floorplan || w === t.Mode.Topview || w === t.Mode.Mapview || w === t.Mode.Model) {
28572
- 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));
28573
28926
  let e = this.modelScene.setModels(y, _);
28574
28927
  k = Promise.all(e.map((e) => e.loadedReady)).then(() => {
28575
28928
  this.needsRender = !0, O(w, C, T), this.emit("camera.update", $("camera.update", {
@@ -28617,12 +28970,12 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28617
28970
  pano0: null,
28618
28971
  pano1: null,
28619
28972
  modelAlpha: 1
28620
- }), 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 = {
28621
28974
  workCode: "",
28622
28975
  panoIndex: 0
28623
28976
  }, this.camera.setFromPose({
28624
28977
  distance: 0,
28625
- fov: YD,
28978
+ fov: CO,
28626
28979
  longitude: 0,
28627
28980
  latitude: 0,
28628
28981
  offset: new e.Vector3(0, 0, 0)
@@ -28671,7 +29024,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28671
29024
  duration: f,
28672
29025
  effect: p,
28673
29026
  userAction: i
28674
- } }, 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", {
28675
29028
  prevMode: this.currentMode,
28676
29029
  mode: e,
28677
29030
  state: a,
@@ -28690,22 +29043,22 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28690
29043
  }
28691
29044
  o();
28692
29045
  }, v = Bu.shared.getContext();
28693
- 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) => {
28694
29047
  let t = e instanceof Error ? e : Error(String(e));
28695
29048
  this.exitFullscreen(), this.throwError(t), s(t);
28696
29049
  });
28697
29050
  else if (e === t.Mode.XRPanorama) {
28698
- if (!aD.isBackendXRCapable(this.renderer)) {
29051
+ if (!ND.isBackendXRCapable(this.renderer)) {
28699
29052
  let e = /* @__PURE__ */ Error("XRPanorama 需要 WebGL2 回落后端。请在 new Five() 时传入 { forceWebGL: true }。后端在运行时无法切换,设备检测必须发生在 new Five() 之前。");
28700
29053
  this.throwError(e), s(e);
28701
29054
  return;
28702
29055
  }
28703
- if (!aD.isBrowserXRCapable()) {
29056
+ if (!ND.isBrowserXRCapable()) {
28704
29057
  let e = /* @__PURE__ */ Error("当前浏览器不支持 WebXR(navigator.xr 不存在)。");
28705
29058
  this.throwError(e), s(e);
28706
29059
  return;
28707
29060
  }
28708
- qD().then((e) => {
29061
+ xO().then((e) => {
28709
29062
  Bu.shared.setContext(e), a = !0;
28710
29063
  try {
28711
29064
  _();
@@ -28727,10 +29080,10 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28727
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;
28728
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 : _;
28729
29082
  let x = this.helperVisible, S = this.modelScene.parameter.modelAlpha;
28730
- 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);
28731
29084
  let C = this.getPixelsRenderTarget;
28732
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);
28733
- 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();
28734
29087
  this.renderer.autoClear = !0, this.renderer.autoClearColor = !0, this.renderer.autoClearDepth = !0, this.renderer.autoClearStencil = !0, this.renderer.setScissorTest(!1);
28735
29088
  let j = this.scene.background;
28736
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);
@@ -28763,9 +29116,9 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28763
29116
  if (!t) return;
28764
29117
  let n = t.getRenderTarget();
28765
29118
  t.setRenderTarget(null);
28766
- 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();
28767
29120
  t.autoClear = !0, t.autoClearColor = !0, t.autoClearDepth = !0, t.autoClearStencil = !0;
28768
- 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);
28769
29122
  t.setClearColor(this.backgroundColor, this.backgroundAlpha), t.setViewport(p, m, h, g), t.setScissor(p, m, h, g);
28770
29123
  let _ = this.viewport.bottom !== 0 || this.viewport.left !== 0 || this.viewport.width !== 1 || this.viewport.height !== 1;
28771
29124
  t.setScissorTest(_);
@@ -28788,8 +29141,8 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28788
29141
  }, !0, 0, 10);
28789
29142
  }
28790
29143
  if (this.camera.autoNearFar) {
28791
- QD.makeEmpty(), QD.expandByObject(this.modelScene.boundingMesh);
28792
- 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;
28793
29146
  t.containsPoint(this.camera.position) || (n = this.camera.position.distanceTo(t.center) + t.radius);
28794
29147
  let r = q(n / 500, .001, .1), i = q(n, 800);
28795
29148
  this.camera.near !== r && (this.camera.near = r), this.camera.far !== i && (this.camera.far = i), this.camera.updateTime(e);
@@ -28798,14 +29151,14 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28798
29151
  let e = this.modelScene.visible;
28799
29152
  this.modelScene.visible = !1, this.scene.update(this.renderer, this.camera), this.modelScene.visible = e;
28800
29153
  }
28801
- 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;
28802
29155
  let r = $("render.prepare", { needsRender: this.needsRender });
28803
29156
  this.emit("render.prepare", r), r.defaultPrevented && (this.needsRender = !1);
28804
29157
  let i = this.needsRender;
28805
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));
28806
29159
  }
28807
29160
  pause() {
28808
- 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);
28809
29162
  }
28810
29163
  play() {
28811
29164
  this.needsRender = !0, this.paused = !1;
@@ -28923,7 +29276,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28923
29276
  duration: this.modeChangeDuration,
28924
29277
  effect: "fly",
28925
29278
  userAction: !1
28926
- } }, this.commonParams()), this.controllerInits[h]), i = RD[h].initAnimationEndState(r);
29279
+ } }, this.commonParams()), this.controllerInits[h]), i = fO[h].initAnimationEndState(r);
28927
29280
  g = i.longitude, _ = i.latitude, v = i.fov, y = i.offset, b = i.distance;
28928
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;
28929
29282
  let x = {
@@ -28939,7 +29292,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28939
29292
  this.emit("state.set", $("state.set", {
28940
29293
  userAction: r,
28941
29294
  state: x
28942
- })), 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", {
28943
29296
  userAction: r,
28944
29297
  state: this.state
28945
29298
  })), (p = this.analysis) == null || p.state(this.works, this.state)));
@@ -28961,8 +29314,8 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28961
29314
  return this.changeMode(this.state.mode, e, this.modeChangeDuration, this.controller.userAction), !0;
28962
29315
  }
28963
29316
  if (!this.controller.isReady()) return !1;
28964
- if (this.controller instanceof RD.Model) {
28965
- 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)) {
28966
29319
  let e = {
28967
29320
  longitude: this.state.longitude,
28968
29321
  latitude: this.state.latitude,
@@ -28987,7 +29340,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28987
29340
  return this.controller.moveToPano(e, t, !1), !0;
28988
29341
  }
28989
29342
  }
28990
- 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) {
28991
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 ? {
28992
29345
  longitude: this.state.longitude,
28993
29346
  latitude: this.state.latitude
@@ -28998,7 +29351,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
28998
29351
  longitude: this.state.longitude,
28999
29352
  latitude: this.state.latitude
29000
29353
  }, n);
29001
- 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)) {
29002
29355
  let e = {
29003
29356
  x: u.x,
29004
29357
  y: u.y,
@@ -29020,7 +29373,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
29020
29373
  longitude: this.state.longitude,
29021
29374
  latitude: this.state.latitude
29022
29375
  }, t), o = this.state.distance, s = new e.Vector3().copy(this.state.offset);
29023
- 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({
29024
29377
  longitude: r,
29025
29378
  latitude: a,
29026
29379
  fov: n
@@ -29034,7 +29387,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
29034
29387
  if (!(e === t.Mode.Floorplan || e === t.Mode.Topview || e === t.Mode.Mapview || e === t.Mode.Model) || this.modelScene.loaded) {
29035
29388
  let e = this.readyCallbacks.slice();
29036
29389
  this.readyCallbacks.length = 0;
29037
- 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();
29038
29391
  }
29039
29392
  }
29040
29393
  return !1;
@@ -29047,7 +29400,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
29047
29400
  }
29048
29401
  requestFullscreen() {
29049
29402
  var e;
29050
- if (!$S) return;
29403
+ if (!DC) return;
29051
29404
  let t = (e = this.getElement()) == null ? void 0 : e.parentNode;
29052
29405
  t && "requestFullscreen" in t && typeof document < "u" && document.fullscreenElement === null && t.requestFullscreen();
29053
29406
  }
@@ -29135,15 +29488,15 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
29135
29488
  }
29136
29489
  applyController(e, n) {
29137
29490
  if (!this.renderer) throw Error("renderer is not initialized.");
29138
- let r = RD[e];
29491
+ let r = fO[e];
29139
29492
  this.currentMode = e;
29140
29493
  let i = new r(n);
29141
- for (let e of BD) i.on(e, (...t) => {
29494
+ for (let e of mO) i.on(e, (...t) => {
29142
29495
  if (this.emit(e, ...t)) return !1;
29143
29496
  });
29144
29497
  {
29145
- let t = RD[e].initAnimationEndState(n), r = n.initial.userAction;
29146
- 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", {
29147
29500
  userAction: r,
29148
29501
  state: this.state
29149
29502
  }))), this.emit("currentState.change", $("currentState.change", {
@@ -29155,7 +29508,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
29155
29508
  var t;
29156
29509
  if (this.controller) {
29157
29510
  let n = this.controller.getTargetState();
29158
- 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", {
29159
29512
  userAction: e.userAction,
29160
29513
  state: this.state
29161
29514
  })), (t = this.analysis) == null || t.state(this.works, this.state));
@@ -29167,7 +29520,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
29167
29520
  }), i.on("initAnimation.start", (e) => {
29168
29521
  var t;
29169
29522
  let { state: n, userAction: r } = e;
29170
- 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", {
29171
29524
  userAction: r,
29172
29525
  state: this.state
29173
29526
  })), (t = this.analysis) == null || t.state(this.works, this.state));
@@ -29177,7 +29530,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
29177
29530
  this.pano = {
29178
29531
  workCode: n.workCode,
29179
29532
  panoIndex: n.panoIndex
29180
- }, 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", {
29181
29534
  userAction: r,
29182
29535
  state: this.state
29183
29536
  })), (t = this.analysis) == null || t.state(this.works, this.state));
@@ -29187,7 +29540,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
29187
29540
  this.pano = {
29188
29541
  workCode: n.workCode,
29189
29542
  panoIndex: n.panoIndex
29190
- }, 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", {
29191
29544
  userAction: r,
29192
29545
  state: this.state
29193
29546
  })), (t = this.analysis) == null || t.state(this.works, this.state));
@@ -29197,14 +29550,14 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
29197
29550
  this.pano = {
29198
29551
  workCode: n.workCode,
29199
29552
  panoIndex: n.panoIndex
29200
- }, 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", {
29201
29554
  userAction: r,
29202
29555
  state: this.state
29203
29556
  })), (t = this.analysis) == null || t.state(this.works, this.state));
29204
29557
  }), i.on("pano.cancel", (e) => {
29205
29558
  var t;
29206
29559
  let { state: n, userAction: r } = e;
29207
- 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", {
29208
29561
  userAction: r,
29209
29562
  state: this.state
29210
29563
  })), (t = this.analysis) == null || t.state(this.works, this.state));
@@ -29302,7 +29655,7 @@ var JD = 800, YD = 90, XD = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-
29302
29655
  this.adaptiveLuminancePass.enabled = e, this.needsRender = !0;
29303
29656
  }
29304
29657
  };
29305
- oO.Mode = {
29658
+ PO.Mode = {
29306
29659
  Panorama: "Panorama",
29307
29660
  Model: "Model",
29308
29661
  Floorplan: "Floorplan",
@@ -29312,12 +29665,12 @@ oO.Mode = {
29312
29665
  XRPanorama: "XRPanorama"
29313
29666
  }, typeof window < "u" && Object.assign(window, { __FIVE_DEBUG__: {
29314
29667
  THREE: e,
29315
- constructor: oO,
29316
- instances: aO
29668
+ constructor: PO,
29669
+ instances: NO
29317
29670
  } });
29318
29671
  //#endregion
29319
29672
  //#region build/five/webxr/xrButton.js
29320
- var sO = class {
29673
+ var FO = class {
29321
29674
  static createButton(e) {
29322
29675
  let t = document.createElement("button"), n = "ENTER VR", r = "calc(50% - 50px)", i = "100px", a;
29323
29676
  function o() {
@@ -29362,4 +29715,4 @@ var sO = class {
29362
29715
  }
29363
29716
  };
29364
29717
  //#endregion
29365
- 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 };