@itwin/frontend-tiles 4.0.0-dev.46 → 4.0.0-dev.48

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 (70) hide show
  1. package/.rush/temp/820682d7f2cbea1cd35650a2487650856cc1f630.log +10 -0
  2. package/.rush/temp/operation/build_ci/state.json +1 -1
  3. package/.rush/temp/shrinkwrap-deps.json +11 -9
  4. package/lib/cjs/BatchedSpatialTileTreeRefs.d.ts +3 -3
  5. package/lib/cjs/BatchedSpatialTileTreeRefs.js +27 -27
  6. package/lib/cjs/BatchedSpatialTileTreeRefs.js.map +1 -1
  7. package/lib/cjs/BatchedTile.d.ts +23 -23
  8. package/lib/cjs/BatchedTile.js +155 -155
  9. package/lib/cjs/BatchedTile.js.map +1 -1
  10. package/lib/cjs/BatchedTileContentReader.d.ts +22 -22
  11. package/lib/cjs/BatchedTileContentReader.js +74 -74
  12. package/lib/cjs/BatchedTileContentReader.js.map +1 -1
  13. package/lib/cjs/BatchedTileTree.d.ts +22 -22
  14. package/lib/cjs/BatchedTileTree.js +52 -52
  15. package/lib/cjs/BatchedTileTree.js.map +1 -1
  16. package/lib/cjs/BatchedTileTreeReference.d.ts +3 -3
  17. package/lib/cjs/BatchedTileTreeReference.js +24 -24
  18. package/lib/cjs/BatchedTileTreeReference.js.map +1 -1
  19. package/lib/cjs/BatchedTileTreeSupplier.d.ts +5 -5
  20. package/lib/cjs/BatchedTileTreeSupplier.js +38 -38
  21. package/lib/cjs/BatchedTileTreeSupplier.js.map +1 -1
  22. package/lib/cjs/BatchedTilesetReader.d.ts +13 -13
  23. package/lib/cjs/BatchedTilesetReader.d.ts.map +1 -1
  24. package/lib/cjs/BatchedTilesetReader.js +87 -89
  25. package/lib/cjs/BatchedTilesetReader.js.map +1 -1
  26. package/lib/cjs/FrontendTiles.d.ts +14 -14
  27. package/lib/cjs/FrontendTiles.js +16 -16
  28. package/lib/cjs/FrontendTiles.js.map +1 -1
  29. package/lib/cjs/LoggerCategory.d.ts +2 -2
  30. package/lib/cjs/LoggerCategory.js +9 -9
  31. package/lib/cjs/LoggerCategory.js.map +1 -1
  32. package/lib/cjs/frontend-tiles.d.ts +1 -1
  33. package/lib/cjs/frontend-tiles.js +17 -17
  34. package/lib/cjs/frontend-tiles.js.map +1 -1
  35. package/lib/cjs/tsconfig.tsbuildinfo +1 -1
  36. package/lib/esm/BatchedSpatialTileTreeRefs.d.ts +3 -3
  37. package/lib/esm/BatchedSpatialTileTreeRefs.js +23 -23
  38. package/lib/esm/BatchedSpatialTileTreeRefs.js.map +1 -1
  39. package/lib/esm/BatchedTile.d.ts +23 -23
  40. package/lib/esm/BatchedTile.js +151 -151
  41. package/lib/esm/BatchedTile.js.map +1 -1
  42. package/lib/esm/BatchedTileContentReader.d.ts +22 -22
  43. package/lib/esm/BatchedTileContentReader.js +70 -70
  44. package/lib/esm/BatchedTileContentReader.js.map +1 -1
  45. package/lib/esm/BatchedTileTree.d.ts +22 -22
  46. package/lib/esm/BatchedTileTree.js +48 -48
  47. package/lib/esm/BatchedTileTree.js.map +1 -1
  48. package/lib/esm/BatchedTileTreeReference.d.ts +3 -3
  49. package/lib/esm/BatchedTileTreeReference.js +20 -20
  50. package/lib/esm/BatchedTileTreeReference.js.map +1 -1
  51. package/lib/esm/BatchedTileTreeSupplier.d.ts +5 -5
  52. package/lib/esm/BatchedTileTreeSupplier.js +34 -34
  53. package/lib/esm/BatchedTileTreeSupplier.js.map +1 -1
  54. package/lib/esm/BatchedTilesetReader.d.ts +13 -13
  55. package/lib/esm/BatchedTilesetReader.d.ts.map +1 -1
  56. package/lib/esm/BatchedTilesetReader.js +83 -85
  57. package/lib/esm/BatchedTilesetReader.js.map +1 -1
  58. package/lib/esm/FrontendTiles.d.ts +14 -14
  59. package/lib/esm/FrontendTiles.js +12 -12
  60. package/lib/esm/FrontendTiles.js.map +1 -1
  61. package/lib/esm/LoggerCategory.d.ts +2 -2
  62. package/lib/esm/LoggerCategory.js +6 -6
  63. package/lib/esm/LoggerCategory.js.map +1 -1
  64. package/lib/esm/frontend-tiles.d.ts +1 -1
  65. package/lib/esm/frontend-tiles.js +5 -5
  66. package/lib/esm/frontend-tiles.js.map +1 -1
  67. package/lib/esm/tsconfig.tsbuildinfo +1 -1
  68. package/package.json +10 -10
  69. package/src/BatchedTilesetReader.ts +1 -3
  70. package/.rush/temp/package-deps_build_ci.json +0 -21
@@ -0,0 +1,10 @@
1
+ Start time: Fri Mar 17 2023 16:11:33 GMT+0000 (Coordinated Universal Time)
2
+ Invoking "C:\Windows\system32\tar.exe -x -m -f C:\a\1\s\common\temp\build-cache\820682d7f2cbea1cd35650a2487650856cc1f630"
3
+
4
+ ======= BEGIN PROCESS INPUT ======
5
+
6
+ ======== END PROCESS INPUT =======
7
+ ======= BEGIN PROCESS OUTPUT =======
8
+ ======== END PROCESS OUTPUT ========
9
+
10
+ Exited with code "0"
@@ -1,3 +1,3 @@
1
1
  {
2
- "nonCachedDurationMs": 15544.154399871826
2
+ "nonCachedDurationMs": 15656.67023400002
3
3
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "../../extensions/frontend-tiles": "../../extensions/frontend-tiles:3Oggz+j3LktQQ2ZGfWft2NC1Ug2ZMzRUvOdPx5H9z/c=:",
2
+ "../../extensions/frontend-tiles": "../../extensions/frontend-tiles:RLvWitvdc8Dc5L3DaxvOsKmd4Az9h8dYgd5u2XmFivM=:",
3
3
  "/@babel/code-frame/7.12.11": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
4
4
  "/@babel/helper-validator-identifier/7.19.1": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
5
5
  "/@babel/highlight/7.18.6": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
@@ -15,7 +15,7 @@
15
15
  "/@nodelib/fs.walk/1.2.8": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
16
16
  "/@types/json-schema/7.0.11": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
17
17
  "/@types/json5/0.0.29": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
18
- "/@types/node/18.14.1": "sha512-QH+37Qds3E0eDlReeboBxfHbX9omAcBCXEzswCu6jySP642jiM3cYSIkU/REqwhCUqXdonHFuBfJDiAJxMNhaQ==",
18
+ "/@types/node/18.15.3": "sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==",
19
19
  "/@typescript-eslint/eslint-plugin/4.31.2_8f0416aa8ec58a469909c5c0f73069bc": "sha512-w63SCQ4bIwWN/+3FxzpnWrDjQRXVEGiTt9tJTRptRXeFvdZc/wLiz3FQUwNQ2CVoRGI6KUWMNUj/pk63noUfcA==",
20
20
  "/@typescript-eslint/experimental-utils/3.10.1_eslint@7.32.0+typescript@4.4.4": "sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==",
21
21
  "/@typescript-eslint/experimental-utils/4.31.2_eslint@7.32.0+typescript@4.4.4": "sha512-3tm2T4nyA970yQ6R3JZV9l0yilE2FedYg8dcXrTar34zC9r6JB7WyBQbpIVongKPlhEMjhQ01qkwrzWy38Bk1Q==",
@@ -37,6 +37,7 @@
37
37
  "/ansi-styles/4.3.0": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
38
38
  "/argparse/1.0.10": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
39
39
  "/aria-query/4.2.2": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==",
40
+ "/array-buffer-byte-length/1.0.0": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
40
41
  "/array-includes/3.1.6": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==",
41
42
  "/array-union/2.1.0": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
42
43
  "/array.prototype.flat/1.3.1": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==",
@@ -59,7 +60,7 @@
59
60
  "/color-name/1.1.4": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
60
61
  "/comment-parser/1.1.5": "sha512-RePCE4leIhBlmrqiYTvaqEeGYg7qpSl4etaIabKtdOQVi+mSTIBBklGUwIr79GXYnl3LpMwmDw4KeR2stNc6FA==",
61
62
  "/concat-map/0.0.1": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
62
- "/core-js-pure/3.28.0": "sha512-DSOVleA9/v3LNj/vFxAPfUHttKTzrB2RXhAPvR5TPXn4vrra3Z2ssytvRyt8eruJwAfwAiFADEbrjcRdcvPLQQ==",
63
+ "/core-js-pure/3.29.1": "sha512-4En6zYVi0i0XlXHVz/bi6l1XDjCqkKRq765NXuX+SnaIatlE96Odt5lMLjdxUiNI1v9OXI5DSLWYPlmTfkTktg==",
63
64
  "/cross-spawn/7.0.3": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
64
65
  "/damerau-levenshtein/1.0.8": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
65
66
  "/debug/2.6.9": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
@@ -74,7 +75,7 @@
74
75
  "/emoji-regex/9.2.2": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
75
76
  "/enquirer/2.3.6": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
76
77
  "/error-ex/1.3.2": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
77
- "/es-abstract/1.21.1": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==",
78
+ "/es-abstract/1.21.2": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==",
78
79
  "/es-set-tostringtag/2.0.1": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==",
79
80
  "/es-shim-unscopables/1.0.0": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
80
81
  "/es-to-primitive/1.2.1": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
@@ -100,7 +101,7 @@
100
101
  "/eslint/7.32.0": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==",
101
102
  "/espree/7.3.1": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
102
103
  "/esprima/4.0.1": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
103
- "/esquery/1.4.2": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==",
104
+ "/esquery/1.5.0": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
104
105
  "/esrecurse/4.3.0": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
105
106
  "/estraverse/4.3.0": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
106
107
  "/estraverse/5.3.0": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
@@ -146,7 +147,7 @@
146
147
  "/inflight/1.0.6": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
147
148
  "/inherits/2.0.4": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
148
149
  "/internal-slot/1.0.5": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==",
149
- "/is-array-buffer/3.0.1": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==",
150
+ "/is-array-buffer/3.0.2": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
150
151
  "/is-arrayish/0.2.1": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
151
152
  "/is-bigint/1.0.4": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
152
153
  "/is-boolean-object/1.1.2": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
@@ -177,7 +178,7 @@
177
178
  "/json5/1.0.2": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
178
179
  "/jsx-ast-utils/3.3.3": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==",
179
180
  "/language-subtag-registry/0.3.22": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==",
180
- "/language-tags/1.0.5": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==",
181
+ "/language-tags/1.0.8": "sha512-aWAZwgPLS8hJ20lNPm9HNVs4inexz6S2sQa3wx/+ycuutMNE5/IfYxiWYBbi+9UWCQVaXYCOPUl6gFrPR7+jGg==",
181
182
  "/levn/0.4.1": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
182
183
  "/load-json-file/4.0.0": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==",
183
184
  "/locate-path/2.0.0": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
@@ -248,13 +249,14 @@
248
249
  "/side-channel/1.0.4": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
249
250
  "/slash/3.0.0": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
250
251
  "/slice-ansi/4.0.0": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
251
- "/spdx-correct/3.1.1": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
252
+ "/spdx-correct/3.2.0": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
252
253
  "/spdx-exceptions/2.3.0": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
253
254
  "/spdx-expression-parse/3.0.1": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
254
- "/spdx-license-ids/3.0.12": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==",
255
+ "/spdx-license-ids/3.0.13": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==",
255
256
  "/sprintf-js/1.0.3": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
256
257
  "/string-width/4.2.3": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
257
258
  "/string.prototype.matchall/4.0.8": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==",
259
+ "/string.prototype.trim/1.2.7": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==",
258
260
  "/string.prototype.trimend/1.0.6": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
259
261
  "/string.prototype.trimstart/1.0.6": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
260
262
  "/strip-ansi/6.0.1": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
@@ -1,4 +1,4 @@
1
- import { IModelConnection, SpatialTileTreeReferences } from "@itwin/core-frontend";
2
- /** @internal */
3
- export declare function createBatchedSpatialTileTreeReferences(iModel: IModelConnection, computeBaseUrl: (iModel: IModelConnection) => URL): SpatialTileTreeReferences;
1
+ import { IModelConnection, SpatialTileTreeReferences } from "@itwin/core-frontend";
2
+ /** @internal */
3
+ export declare function createBatchedSpatialTileTreeReferences(iModel: IModelConnection, computeBaseUrl: (iModel: IModelConnection) => URL): SpatialTileTreeReferences;
4
4
  //# sourceMappingURL=BatchedSpatialTileTreeRefs.d.ts.map
@@ -1,28 +1,28 @@
1
- "use strict";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.createBatchedSpatialTileTreeReferences = void 0;
8
- const BatchedTileTreeReference_1 = require("./BatchedTileTreeReference");
9
- class TreeRefs {
10
- constructor(treeRef) {
11
- this._treeRef = treeRef;
12
- }
13
- *[Symbol.iterator]() {
14
- yield this._treeRef;
15
- }
16
- update() {
17
- }
18
- setDeactivated() {
19
- // This exists chiefly for debugging. Unimplemented here.
20
- }
21
- }
22
- /** @internal */
23
- function createBatchedSpatialTileTreeReferences(iModel, computeBaseUrl) {
24
- const treeRef = (0, BatchedTileTreeReference_1.createBatchedTileTreeReference)(iModel, computeBaseUrl(iModel));
25
- return new TreeRefs(treeRef);
26
- }
27
- exports.createBatchedSpatialTileTreeReferences = createBatchedSpatialTileTreeReferences;
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.createBatchedSpatialTileTreeReferences = void 0;
8
+ const BatchedTileTreeReference_1 = require("./BatchedTileTreeReference");
9
+ class TreeRefs {
10
+ constructor(treeRef) {
11
+ this._treeRef = treeRef;
12
+ }
13
+ *[Symbol.iterator]() {
14
+ yield this._treeRef;
15
+ }
16
+ update() {
17
+ }
18
+ setDeactivated() {
19
+ // This exists chiefly for debugging. Unimplemented here.
20
+ }
21
+ }
22
+ /** @internal */
23
+ function createBatchedSpatialTileTreeReferences(iModel, computeBaseUrl) {
24
+ const treeRef = (0, BatchedTileTreeReference_1.createBatchedTileTreeReference)(iModel, computeBaseUrl(iModel));
25
+ return new TreeRefs(treeRef);
26
+ }
27
+ exports.createBatchedSpatialTileTreeReferences = createBatchedSpatialTileTreeReferences;
28
28
  //# sourceMappingURL=BatchedSpatialTileTreeRefs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BatchedSpatialTileTreeRefs.js","sourceRoot":"","sources":["../../src/BatchedSpatialTileTreeRefs.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAK/F,yEAA4E;AAE5E,MAAM,QAAQ;IAGZ,YAAmB,OAA0B;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAEM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QACvB,MAAM,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAEM,MAAM;IACb,CAAC;IAEM,cAAc;QACnB,yDAAyD;IAC3D,CAAC;CACF;AAED,gBAAgB;AAChB,SAAgB,sCAAsC,CAAC,MAAwB,EAAE,cAAiD;IAChI,MAAM,OAAO,GAAG,IAAA,yDAA8B,EAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/E,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC;AAHD,wFAGC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport {\r\n IModelConnection, SpatialTileTreeReferences, TileTreeReference,\r\n} from \"@itwin/core-frontend\";\r\nimport { createBatchedTileTreeReference } from \"./BatchedTileTreeReference\";\r\n\r\nclass TreeRefs implements SpatialTileTreeReferences {\r\n private readonly _treeRef: TileTreeReference;\r\n\r\n public constructor(treeRef: TileTreeReference) {\r\n this._treeRef = treeRef;\r\n }\r\n\r\n public *[Symbol.iterator](): Iterator<TileTreeReference> {\r\n yield this._treeRef;\r\n }\r\n\r\n public update(): void {\r\n }\r\n\r\n public setDeactivated(): void {\r\n // This exists chiefly for debugging. Unimplemented here.\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function createBatchedSpatialTileTreeReferences(iModel: IModelConnection, computeBaseUrl: (iModel: IModelConnection) => URL): SpatialTileTreeReferences {\r\n const treeRef = createBatchedTileTreeReference(iModel, computeBaseUrl(iModel));\r\n return new TreeRefs(treeRef);\r\n}\r\n"]}
1
+ {"version":3,"file":"BatchedSpatialTileTreeRefs.js","sourceRoot":"","sources":["../../src/BatchedSpatialTileTreeRefs.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAK/F,yEAA4E;AAE5E,MAAM,QAAQ;IAGZ,YAAmB,OAA0B;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAEM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QACvB,MAAM,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAEM,MAAM;IACb,CAAC;IAEM,cAAc;QACnB,yDAAyD;IAC3D,CAAC;CACF;AAED,gBAAgB;AAChB,SAAgB,sCAAsC,CAAC,MAAwB,EAAE,cAAiD;IAChI,MAAM,OAAO,GAAG,IAAA,yDAA8B,EAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/E,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC;AAHD,wFAGC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport {\n IModelConnection, SpatialTileTreeReferences, TileTreeReference,\n} from \"@itwin/core-frontend\";\nimport { createBatchedTileTreeReference } from \"./BatchedTileTreeReference\";\n\nclass TreeRefs implements SpatialTileTreeReferences {\n private readonly _treeRef: TileTreeReference;\n\n public constructor(treeRef: TileTreeReference) {\n this._treeRef = treeRef;\n }\n\n public *[Symbol.iterator](): Iterator<TileTreeReference> {\n yield this._treeRef;\n }\n\n public update(): void {\n }\n\n public setDeactivated(): void {\n // This exists chiefly for debugging. Unimplemented here.\n }\n}\n\n/** @internal */\nexport function createBatchedSpatialTileTreeReferences(iModel: IModelConnection, computeBaseUrl: (iModel: IModelConnection) => URL): SpatialTileTreeReferences {\n const treeRef = createBatchedTileTreeReference(iModel, computeBaseUrl(iModel));\n return new TreeRefs(treeRef);\n}\n"]}
@@ -1,24 +1,24 @@
1
- import { BeTimePoint } from "@itwin/core-bentley";
2
- import { Tileset3dSchema } from "@itwin/core-common";
3
- import { GraphicBuilder, RenderSystem, Tile, TileBoundingBoxes, TileContent, TileDrawArgs, TileParams, TileRequest, TileRequestChannel, TileUser, Viewport } from "@itwin/core-frontend";
4
- import { BatchedTileTree } from "./BatchedTileTree";
5
- /** @internal */
6
- export interface BatchedTileParams extends TileParams {
7
- childrenProps: Tileset3dSchema.Tile[] | undefined;
8
- }
9
- /** @internal */
10
- export declare class BatchedTile extends Tile {
11
- private readonly _childrenProps?;
12
- get batchedTree(): BatchedTileTree;
13
- constructor(params: BatchedTileParams, tree: BatchedTileTree);
14
- private get _batchedChildren();
15
- computeLoadPriority(viewports: Iterable<Viewport>, _users: Iterable<TileUser>): number;
16
- selectTiles(selected: BatchedTile[], args: TileDrawArgs): void;
17
- protected _loadChildren(resolve: (children: Tile[] | undefined) => void, reject: (error: Error) => void): void;
18
- get channel(): TileRequestChannel;
19
- requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response>;
20
- readContent(data: TileRequest.ResponseData, system: RenderSystem, shouldAbort?: () => boolean): Promise<TileContent>;
21
- protected addRangeGraphic(builder: GraphicBuilder, type: TileBoundingBoxes): void;
22
- prune(olderThan: BeTimePoint): void;
23
- }
1
+ import { BeTimePoint } from "@itwin/core-bentley";
2
+ import { Tileset3dSchema } from "@itwin/core-common";
3
+ import { GraphicBuilder, RenderSystem, Tile, TileBoundingBoxes, TileContent, TileDrawArgs, TileParams, TileRequest, TileRequestChannel, TileUser, Viewport } from "@itwin/core-frontend";
4
+ import { BatchedTileTree } from "./BatchedTileTree";
5
+ /** @internal */
6
+ export interface BatchedTileParams extends TileParams {
7
+ childrenProps: Tileset3dSchema.Tile[] | undefined;
8
+ }
9
+ /** @internal */
10
+ export declare class BatchedTile extends Tile {
11
+ private readonly _childrenProps?;
12
+ get batchedTree(): BatchedTileTree;
13
+ constructor(params: BatchedTileParams, tree: BatchedTileTree);
14
+ private get _batchedChildren();
15
+ computeLoadPriority(viewports: Iterable<Viewport>, _users: Iterable<TileUser>): number;
16
+ selectTiles(selected: BatchedTile[], args: TileDrawArgs): void;
17
+ protected _loadChildren(resolve: (children: Tile[] | undefined) => void, reject: (error: Error) => void): void;
18
+ get channel(): TileRequestChannel;
19
+ requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response>;
20
+ readContent(data: TileRequest.ResponseData, system: RenderSystem, shouldAbort?: () => boolean): Promise<TileContent>;
21
+ protected addRangeGraphic(builder: GraphicBuilder, type: TileBoundingBoxes): void;
22
+ prune(olderThan: BeTimePoint): void;
23
+ }
24
24
  //# sourceMappingURL=BatchedTile.d.ts.map
@@ -1,156 +1,156 @@
1
- "use strict";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.BatchedTile = void 0;
8
- const core_bentley_1 = require("@itwin/core-bentley");
9
- const core_common_1 = require("@itwin/core-common");
10
- const core_frontend_1 = require("@itwin/core-frontend");
11
- const LoggerCategory_1 = require("./LoggerCategory");
12
- const BatchedTileContentReader_1 = require("./BatchedTileContentReader");
13
- /** @internal */
14
- class BatchedTile extends core_frontend_1.Tile {
15
- constructor(params, tree) {
16
- super(params, tree);
17
- if (params.childrenProps?.length)
18
- this._childrenProps = params.childrenProps;
19
- if (!this.contentId)
20
- this.setIsReady();
21
- }
22
- get batchedTree() {
23
- return this.tree;
24
- }
25
- get _batchedChildren() {
26
- return this.children;
27
- }
28
- computeLoadPriority(viewports, _users) {
29
- // Prioritize tiles closer to camera and center of attention (zoom point or screen center).
30
- return core_frontend_1.RealityTileLoader.computeTileLocationPriority(this, viewports, this.tree.iModelTransform);
31
- }
32
- selectTiles(selected, args) {
33
- const vis = this.computeVisibility(args);
34
- if (core_frontend_1.TileVisibility.OutsideFrustum === vis)
35
- return;
36
- // ###TODO proper tile refinement. Currently we simply load each level of the tree in succession until we find a tile that
37
- // meets screen space error. Moreover, while we wait for children to load we stop displaying the parent.
38
- // Prefer to skip some levels where appropriate.
39
- // More importantly, fix tile tree structure so that children can be substituted for (portions of) parents more quickly, especially near the camera
40
- // (need non-overlapping child volumes).
41
- if (!this.isReady) {
42
- args.insertMissing(this);
43
- return;
44
- }
45
- if (core_frontend_1.TileVisibility.Visible === vis && this.hasGraphics) {
46
- args.markReady(this);
47
- selected.push(this);
48
- return;
49
- }
50
- args.markUsed(this);
51
- if (this.isReady) {
52
- const childrenStatus = this.loadChildren();
53
- if (core_frontend_1.TileTreeLoadStatus.Loading === childrenStatus)
54
- args.markChildrenLoading();
55
- const children = this._batchedChildren;
56
- if (children)
57
- for (const child of children)
58
- child.selectTiles(selected, args);
59
- }
60
- }
61
- _loadChildren(resolve, reject) {
62
- let children;
63
- if (this._childrenProps) {
64
- try {
65
- for (const childProps of this._childrenProps) {
66
- const params = this.batchedTree.reader.readTileParams(childProps, this);
67
- const child = new BatchedTile(params, this.batchedTree);
68
- children = children ?? [];
69
- children.push(child);
70
- }
71
- }
72
- catch (err) {
73
- core_bentley_1.Logger.logException(LoggerCategory_1.loggerCategory, err);
74
- children = undefined;
75
- if (err instanceof Error)
76
- reject(err);
77
- }
78
- }
79
- resolve(children);
80
- }
81
- get channel() {
82
- return core_frontend_1.IModelApp.tileAdmin.channels.getForHttp("itwinjs-batched-models");
83
- }
84
- async requestContent(_isCanceled) {
85
- const url = new URL(this.contentId, this.batchedTree.reader.baseUrl);
86
- url.search = this.batchedTree.reader.baseUrl.search;
87
- const response = await fetch(url.toString());
88
- return response.arrayBuffer();
89
- }
90
- async readContent(data, system, shouldAbort) {
91
- (0, core_bentley_1.assert)(data instanceof Uint8Array);
92
- if (!(data instanceof Uint8Array))
93
- return {};
94
- let reader = core_frontend_1.ImdlReader.create({
95
- stream: core_bentley_1.ByteStream.fromUint8Array(data),
96
- iModel: this.tree.iModel,
97
- modelId: this.tree.modelId,
98
- is3d: true,
99
- system,
100
- isCanceled: shouldAbort,
101
- options: {
102
- tileId: this.contentId,
103
- },
104
- });
105
- if (!reader) {
106
- const gltfProps = core_frontend_1.GltfReaderProps.create(data, false, this.batchedTree.reader.baseUrl);
107
- if (gltfProps) {
108
- reader = new BatchedTileContentReader_1.BatchedTileContentReader({
109
- props: gltfProps,
110
- iModel: this.tree.iModel,
111
- system,
112
- shouldAbort,
113
- vertexTableRequired: true,
114
- modelId: this.tree.modelId,
115
- isLeaf: this.isLeaf,
116
- range: this.range,
117
- });
118
- }
119
- }
120
- if (!reader)
121
- return {};
122
- return reader.read();
123
- }
124
- addRangeGraphic(builder, type) {
125
- if (core_frontend_1.TileBoundingBoxes.ChildVolumes !== type) {
126
- super.addRangeGraphic(builder, type);
127
- return;
128
- }
129
- builder.setSymbology(core_common_1.ColorDef.green, core_common_1.ColorDef.green, 2);
130
- builder.addRangeBox(this.range);
131
- this.loadChildren();
132
- const children = this.children;
133
- if (!children)
134
- return;
135
- builder.setSymbology(core_common_1.ColorDef.blue, core_common_1.ColorDef.blue.withTransparency(0xdf), 1);
136
- for (const child of children) {
137
- const range = child.range;
138
- builder.addRangeBox(range);
139
- builder.addRangeBox(range, true);
140
- }
141
- }
142
- prune(olderThan) {
143
- const children = this._batchedChildren;
144
- if (!children)
145
- return;
146
- if (this.usageMarker.isExpired(olderThan)) {
147
- this.disposeChildren();
148
- }
149
- else {
150
- for (const child of children)
151
- child.prune(olderThan);
152
- }
153
- }
154
- }
155
- exports.BatchedTile = BatchedTile;
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.BatchedTile = void 0;
8
+ const core_bentley_1 = require("@itwin/core-bentley");
9
+ const core_common_1 = require("@itwin/core-common");
10
+ const core_frontend_1 = require("@itwin/core-frontend");
11
+ const LoggerCategory_1 = require("./LoggerCategory");
12
+ const BatchedTileContentReader_1 = require("./BatchedTileContentReader");
13
+ /** @internal */
14
+ class BatchedTile extends core_frontend_1.Tile {
15
+ constructor(params, tree) {
16
+ super(params, tree);
17
+ if (params.childrenProps?.length)
18
+ this._childrenProps = params.childrenProps;
19
+ if (!this.contentId)
20
+ this.setIsReady();
21
+ }
22
+ get batchedTree() {
23
+ return this.tree;
24
+ }
25
+ get _batchedChildren() {
26
+ return this.children;
27
+ }
28
+ computeLoadPriority(viewports, _users) {
29
+ // Prioritize tiles closer to camera and center of attention (zoom point or screen center).
30
+ return core_frontend_1.RealityTileLoader.computeTileLocationPriority(this, viewports, this.tree.iModelTransform);
31
+ }
32
+ selectTiles(selected, args) {
33
+ const vis = this.computeVisibility(args);
34
+ if (core_frontend_1.TileVisibility.OutsideFrustum === vis)
35
+ return;
36
+ // ###TODO proper tile refinement. Currently we simply load each level of the tree in succession until we find a tile that
37
+ // meets screen space error. Moreover, while we wait for children to load we stop displaying the parent.
38
+ // Prefer to skip some levels where appropriate.
39
+ // More importantly, fix tile tree structure so that children can be substituted for (portions of) parents more quickly, especially near the camera
40
+ // (need non-overlapping child volumes).
41
+ if (!this.isReady) {
42
+ args.insertMissing(this);
43
+ return;
44
+ }
45
+ if (core_frontend_1.TileVisibility.Visible === vis && this.hasGraphics) {
46
+ args.markReady(this);
47
+ selected.push(this);
48
+ return;
49
+ }
50
+ args.markUsed(this);
51
+ if (this.isReady) {
52
+ const childrenStatus = this.loadChildren();
53
+ if (core_frontend_1.TileTreeLoadStatus.Loading === childrenStatus)
54
+ args.markChildrenLoading();
55
+ const children = this._batchedChildren;
56
+ if (children)
57
+ for (const child of children)
58
+ child.selectTiles(selected, args);
59
+ }
60
+ }
61
+ _loadChildren(resolve, reject) {
62
+ let children;
63
+ if (this._childrenProps) {
64
+ try {
65
+ for (const childProps of this._childrenProps) {
66
+ const params = this.batchedTree.reader.readTileParams(childProps, this);
67
+ const child = new BatchedTile(params, this.batchedTree);
68
+ children = children ?? [];
69
+ children.push(child);
70
+ }
71
+ }
72
+ catch (err) {
73
+ core_bentley_1.Logger.logException(LoggerCategory_1.loggerCategory, err);
74
+ children = undefined;
75
+ if (err instanceof Error)
76
+ reject(err);
77
+ }
78
+ }
79
+ resolve(children);
80
+ }
81
+ get channel() {
82
+ return core_frontend_1.IModelApp.tileAdmin.channels.getForHttp("itwinjs-batched-models");
83
+ }
84
+ async requestContent(_isCanceled) {
85
+ const url = new URL(this.contentId, this.batchedTree.reader.baseUrl);
86
+ url.search = this.batchedTree.reader.baseUrl.search;
87
+ const response = await fetch(url.toString());
88
+ return response.arrayBuffer();
89
+ }
90
+ async readContent(data, system, shouldAbort) {
91
+ (0, core_bentley_1.assert)(data instanceof Uint8Array);
92
+ if (!(data instanceof Uint8Array))
93
+ return {};
94
+ let reader = core_frontend_1.ImdlReader.create({
95
+ stream: core_bentley_1.ByteStream.fromUint8Array(data),
96
+ iModel: this.tree.iModel,
97
+ modelId: this.tree.modelId,
98
+ is3d: true,
99
+ system,
100
+ isCanceled: shouldAbort,
101
+ options: {
102
+ tileId: this.contentId,
103
+ },
104
+ });
105
+ if (!reader) {
106
+ const gltfProps = core_frontend_1.GltfReaderProps.create(data, false, this.batchedTree.reader.baseUrl);
107
+ if (gltfProps) {
108
+ reader = new BatchedTileContentReader_1.BatchedTileContentReader({
109
+ props: gltfProps,
110
+ iModel: this.tree.iModel,
111
+ system,
112
+ shouldAbort,
113
+ vertexTableRequired: true,
114
+ modelId: this.tree.modelId,
115
+ isLeaf: this.isLeaf,
116
+ range: this.range,
117
+ });
118
+ }
119
+ }
120
+ if (!reader)
121
+ return {};
122
+ return reader.read();
123
+ }
124
+ addRangeGraphic(builder, type) {
125
+ if (core_frontend_1.TileBoundingBoxes.ChildVolumes !== type) {
126
+ super.addRangeGraphic(builder, type);
127
+ return;
128
+ }
129
+ builder.setSymbology(core_common_1.ColorDef.green, core_common_1.ColorDef.green, 2);
130
+ builder.addRangeBox(this.range);
131
+ this.loadChildren();
132
+ const children = this.children;
133
+ if (!children)
134
+ return;
135
+ builder.setSymbology(core_common_1.ColorDef.blue, core_common_1.ColorDef.blue.withTransparency(0xdf), 1);
136
+ for (const child of children) {
137
+ const range = child.range;
138
+ builder.addRangeBox(range);
139
+ builder.addRangeBox(range, true);
140
+ }
141
+ }
142
+ prune(olderThan) {
143
+ const children = this._batchedChildren;
144
+ if (!children)
145
+ return;
146
+ if (this.usageMarker.isExpired(olderThan)) {
147
+ this.disposeChildren();
148
+ }
149
+ else {
150
+ for (const child of children)
151
+ child.prune(olderThan);
152
+ }
153
+ }
154
+ }
155
+ exports.BatchedTile = BatchedTile;
156
156
  //# sourceMappingURL=BatchedTile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BatchedTile.js","sourceRoot":"","sources":["../../src/BatchedTile.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { assert, BeTimePoint, ByteStream, Logger } from \"@itwin/core-bentley\";\r\nimport { ColorDef, Tileset3dSchema } from \"@itwin/core-common\";\r\nimport {\r\n GltfReaderProps, GraphicBuilder, ImdlReader, IModelApp, RealityTileLoader, RenderSystem, Tile, TileBoundingBoxes, TileContent, TileDrawArgs, TileParams, TileRequest,\r\n TileRequestChannel, TileTreeLoadStatus, TileUser, TileVisibility, Viewport,\r\n} from \"@itwin/core-frontend\";\r\nimport { loggerCategory } from \"./LoggerCategory\";\r\nimport { BatchedTileTree } from \"./BatchedTileTree\";\r\nimport { BatchedTileContentReader } from \"./BatchedTileContentReader\";\r\n\r\n/** @internal */\r\nexport interface BatchedTileParams extends TileParams {\r\n childrenProps: Tileset3dSchema.Tile[] | undefined;\r\n}\r\n\r\n/** @internal */\r\nexport class BatchedTile extends Tile {\r\n private readonly _childrenProps?: Tileset3dSchema.Tile[];\r\n\r\n public get batchedTree(): BatchedTileTree {\r\n return this.tree as BatchedTileTree;\r\n }\r\n\r\n public constructor(params: BatchedTileParams, tree: BatchedTileTree) {\r\n super(params, tree);\r\n if (params.childrenProps?.length)\r\n this._childrenProps = params.childrenProps;\r\n\r\n if (!this.contentId)\r\n this.setIsReady();\r\n }\r\n\r\n private get _batchedChildren(): BatchedTile[] | undefined {\r\n return this.children as BatchedTile[] | undefined;\r\n }\r\n\r\n public override computeLoadPriority(viewports: Iterable<Viewport>, _users: Iterable<TileUser>): number {\r\n // Prioritize tiles closer to camera and center of attention (zoom point or screen center).\r\n return RealityTileLoader.computeTileLocationPriority(this, viewports, this.tree.iModelTransform);\r\n }\r\n\r\n public selectTiles(selected: BatchedTile[], args: TileDrawArgs): void {\r\n const vis = this.computeVisibility(args);\r\n if (TileVisibility.OutsideFrustum === vis)\r\n return;\r\n\r\n // ###TODO proper tile refinement. Currently we simply load each level of the tree in succession until we find a tile that\r\n // meets screen space error. Moreover, while we wait for children to load we stop displaying the parent.\r\n // Prefer to skip some levels where appropriate.\r\n // More importantly, fix tile tree structure so that children can be substituted for (portions of) parents more quickly, especially near the camera\r\n // (need non-overlapping child volumes).\r\n if (!this.isReady) {\r\n args.insertMissing(this);\r\n return;\r\n }\r\n\r\n if (TileVisibility.Visible === vis && this.hasGraphics) {\r\n args.markReady(this);\r\n selected.push(this);\r\n return;\r\n }\r\n\r\n args.markUsed(this);\r\n if (this.isReady) {\r\n const childrenStatus = this.loadChildren();\r\n if (TileTreeLoadStatus.Loading === childrenStatus)\r\n args.markChildrenLoading();\r\n\r\n const children = this._batchedChildren;\r\n if (children)\r\n for (const child of children)\r\n child.selectTiles(selected, args);\r\n }\r\n }\r\n\r\n protected override _loadChildren(resolve: (children: Tile[] | undefined) => void, reject: (error: Error) => void): void {\r\n let children: BatchedTile[] | undefined;\r\n if (this._childrenProps) {\r\n try {\r\n for (const childProps of this._childrenProps) {\r\n const params = this.batchedTree.reader.readTileParams(childProps, this);\r\n const child = new BatchedTile(params, this.batchedTree);\r\n children = children ?? [];\r\n children.push(child);\r\n }\r\n } catch (err) {\r\n Logger.logException(loggerCategory, err);\r\n children = undefined;\r\n if (err instanceof Error)\r\n reject(err);\r\n }\r\n }\r\n\r\n resolve(children);\r\n }\r\n\r\n public override get channel(): TileRequestChannel {\r\n return IModelApp.tileAdmin.channels.getForHttp(\"itwinjs-batched-models\");\r\n }\r\n\r\n public override async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> {\r\n const url = new URL(this.contentId, this.batchedTree.reader.baseUrl);\r\n url.search = this.batchedTree.reader.baseUrl.search;\r\n const response = await fetch(url.toString());\r\n return response.arrayBuffer();\r\n }\r\n\r\n public override async readContent(data: TileRequest.ResponseData, system: RenderSystem, shouldAbort?: () => boolean): Promise<TileContent> {\r\n assert(data instanceof Uint8Array);\r\n if (!(data instanceof Uint8Array))\r\n return { };\r\n\r\n let reader: ImdlReader | BatchedTileContentReader | undefined = ImdlReader.create({\r\n stream: ByteStream.fromUint8Array(data),\r\n iModel: this.tree.iModel,\r\n modelId: this.tree.modelId,\r\n is3d: true,\r\n system,\r\n isCanceled: shouldAbort,\r\n options: {\r\n tileId: this.contentId,\r\n },\r\n });\r\n\r\n if (!reader) {\r\n const gltfProps = GltfReaderProps.create(data, false, this.batchedTree.reader.baseUrl);\r\n if (gltfProps) {\r\n reader = new BatchedTileContentReader({\r\n props: gltfProps,\r\n iModel: this.tree.iModel,\r\n system,\r\n shouldAbort,\r\n vertexTableRequired: true,\r\n modelId: this.tree.modelId,\r\n isLeaf: this.isLeaf,\r\n range: this.range,\r\n });\r\n }\r\n }\r\n\r\n if (!reader)\r\n return { };\r\n\r\n return reader.read();\r\n }\r\n\r\n protected override addRangeGraphic(builder: GraphicBuilder, type: TileBoundingBoxes): void {\r\n if (TileBoundingBoxes.ChildVolumes !== type) {\r\n super.addRangeGraphic(builder, type);\r\n return;\r\n }\r\n\r\n builder.setSymbology(ColorDef.green, ColorDef.green, 2);\r\n builder.addRangeBox(this.range);\r\n\r\n this.loadChildren();\r\n const children = this.children;\r\n if (!children)\r\n return;\r\n\r\n builder.setSymbology(ColorDef.blue, ColorDef.blue.withTransparency(0xdf), 1);\r\n for (const child of children) {\r\n const range = child.range;\r\n builder.addRangeBox(range);\r\n builder.addRangeBox(range, true);\r\n }\r\n }\r\n\r\n public prune(olderThan: BeTimePoint): void {\r\n const children = this._batchedChildren;\r\n if (!children)\r\n return;\r\n\r\n if (this.usageMarker.isExpired(olderThan)) {\r\n this.disposeChildren();\r\n } else {\r\n for (const child of children)\r\n child.prune(olderThan);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"BatchedTile.js","sourceRoot":"","sources":["../../src/BatchedTile.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { assert, BeTimePoint, ByteStream, Logger } from \"@itwin/core-bentley\";\nimport { ColorDef, Tileset3dSchema } from \"@itwin/core-common\";\nimport {\n GltfReaderProps, GraphicBuilder, ImdlReader, IModelApp, RealityTileLoader, RenderSystem, Tile, TileBoundingBoxes, TileContent, TileDrawArgs, TileParams, TileRequest,\n TileRequestChannel, TileTreeLoadStatus, TileUser, TileVisibility, Viewport,\n} from \"@itwin/core-frontend\";\nimport { loggerCategory } from \"./LoggerCategory\";\nimport { BatchedTileTree } from \"./BatchedTileTree\";\nimport { BatchedTileContentReader } from \"./BatchedTileContentReader\";\n\n/** @internal */\nexport interface BatchedTileParams extends TileParams {\n childrenProps: Tileset3dSchema.Tile[] | undefined;\n}\n\n/** @internal */\nexport class BatchedTile extends Tile {\n private readonly _childrenProps?: Tileset3dSchema.Tile[];\n\n public get batchedTree(): BatchedTileTree {\n return this.tree as BatchedTileTree;\n }\n\n public constructor(params: BatchedTileParams, tree: BatchedTileTree) {\n super(params, tree);\n if (params.childrenProps?.length)\n this._childrenProps = params.childrenProps;\n\n if (!this.contentId)\n this.setIsReady();\n }\n\n private get _batchedChildren(): BatchedTile[] | undefined {\n return this.children as BatchedTile[] | undefined;\n }\n\n public override computeLoadPriority(viewports: Iterable<Viewport>, _users: Iterable<TileUser>): number {\n // Prioritize tiles closer to camera and center of attention (zoom point or screen center).\n return RealityTileLoader.computeTileLocationPriority(this, viewports, this.tree.iModelTransform);\n }\n\n public selectTiles(selected: BatchedTile[], args: TileDrawArgs): void {\n const vis = this.computeVisibility(args);\n if (TileVisibility.OutsideFrustum === vis)\n return;\n\n // ###TODO proper tile refinement. Currently we simply load each level of the tree in succession until we find a tile that\n // meets screen space error. Moreover, while we wait for children to load we stop displaying the parent.\n // Prefer to skip some levels where appropriate.\n // More importantly, fix tile tree structure so that children can be substituted for (portions of) parents more quickly, especially near the camera\n // (need non-overlapping child volumes).\n if (!this.isReady) {\n args.insertMissing(this);\n return;\n }\n\n if (TileVisibility.Visible === vis && this.hasGraphics) {\n args.markReady(this);\n selected.push(this);\n return;\n }\n\n args.markUsed(this);\n if (this.isReady) {\n const childrenStatus = this.loadChildren();\n if (TileTreeLoadStatus.Loading === childrenStatus)\n args.markChildrenLoading();\n\n const children = this._batchedChildren;\n if (children)\n for (const child of children)\n child.selectTiles(selected, args);\n }\n }\n\n protected override _loadChildren(resolve: (children: Tile[] | undefined) => void, reject: (error: Error) => void): void {\n let children: BatchedTile[] | undefined;\n if (this._childrenProps) {\n try {\n for (const childProps of this._childrenProps) {\n const params = this.batchedTree.reader.readTileParams(childProps, this);\n const child = new BatchedTile(params, this.batchedTree);\n children = children ?? [];\n children.push(child);\n }\n } catch (err) {\n Logger.logException(loggerCategory, err);\n children = undefined;\n if (err instanceof Error)\n reject(err);\n }\n }\n\n resolve(children);\n }\n\n public override get channel(): TileRequestChannel {\n return IModelApp.tileAdmin.channels.getForHttp(\"itwinjs-batched-models\");\n }\n\n public override async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> {\n const url = new URL(this.contentId, this.batchedTree.reader.baseUrl);\n url.search = this.batchedTree.reader.baseUrl.search;\n const response = await fetch(url.toString());\n return response.arrayBuffer();\n }\n\n public override async readContent(data: TileRequest.ResponseData, system: RenderSystem, shouldAbort?: () => boolean): Promise<TileContent> {\n assert(data instanceof Uint8Array);\n if (!(data instanceof Uint8Array))\n return { };\n\n let reader: ImdlReader | BatchedTileContentReader | undefined = ImdlReader.create({\n stream: ByteStream.fromUint8Array(data),\n iModel: this.tree.iModel,\n modelId: this.tree.modelId,\n is3d: true,\n system,\n isCanceled: shouldAbort,\n options: {\n tileId: this.contentId,\n },\n });\n\n if (!reader) {\n const gltfProps = GltfReaderProps.create(data, false, this.batchedTree.reader.baseUrl);\n if (gltfProps) {\n reader = new BatchedTileContentReader({\n props: gltfProps,\n iModel: this.tree.iModel,\n system,\n shouldAbort,\n vertexTableRequired: true,\n modelId: this.tree.modelId,\n isLeaf: this.isLeaf,\n range: this.range,\n });\n }\n }\n\n if (!reader)\n return { };\n\n return reader.read();\n }\n\n protected override addRangeGraphic(builder: GraphicBuilder, type: TileBoundingBoxes): void {\n if (TileBoundingBoxes.ChildVolumes !== type) {\n super.addRangeGraphic(builder, type);\n return;\n }\n\n builder.setSymbology(ColorDef.green, ColorDef.green, 2);\n builder.addRangeBox(this.range);\n\n this.loadChildren();\n const children = this.children;\n if (!children)\n return;\n\n builder.setSymbology(ColorDef.blue, ColorDef.blue.withTransparency(0xdf), 1);\n for (const child of children) {\n const range = child.range;\n builder.addRangeBox(range);\n builder.addRangeBox(range, true);\n }\n }\n\n public prune(olderThan: BeTimePoint): void {\n const children = this._batchedChildren;\n if (!children)\n return;\n\n if (this.usageMarker.isExpired(olderThan)) {\n this.disposeChildren();\n } else {\n for (const child of children)\n child.prune(olderThan);\n }\n }\n}\n"]}