@loaders.gl/tiles 4.4.5 → 5.0.0-alpha.2

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 (227) hide show
  1. package/LICENSE +14 -3
  2. package/README.md +110 -1
  3. package/dist/dist.dev.js +6588 -2057
  4. package/dist/dist.min.js +1 -1
  5. package/dist/image-set.d.ts +94 -0
  6. package/dist/image-set.d.ts.map +1 -0
  7. package/dist/image-set.js +243 -0
  8. package/dist/image-set.js.map +1 -0
  9. package/dist/index.cjs +6872 -2160
  10. package/dist/index.cjs.map +3 -4
  11. package/dist/index.d.ts +33 -9
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +18 -8
  14. package/dist/index.js.map +1 -1
  15. package/dist/point-cloud/point-cloud-tile.d.ts +47 -0
  16. package/dist/point-cloud/point-cloud-tile.d.ts.map +1 -0
  17. package/dist/point-cloud/point-cloud-tile.js +70 -0
  18. package/dist/point-cloud/point-cloud-tile.js.map +1 -0
  19. package/dist/point-cloud/point-cloud-tileset.d.ts +131 -0
  20. package/dist/point-cloud/point-cloud-tileset.d.ts.map +1 -0
  21. package/dist/point-cloud/point-cloud-tileset.js +510 -0
  22. package/dist/point-cloud/point-cloud-tileset.js.map +1 -0
  23. package/dist/point-cloud/types.d.ts +64 -0
  24. package/dist/point-cloud/types.d.ts.map +1 -0
  25. package/dist/point-cloud/types.js +5 -0
  26. package/dist/point-cloud/types.js.map +1 -0
  27. package/dist/raster-set.d.ts +113 -0
  28. package/dist/raster-set.d.ts.map +1 -0
  29. package/dist/raster-set.js +274 -0
  30. package/dist/raster-set.js.map +1 -0
  31. package/dist/tileset-2d/adapter.d.ts +38 -0
  32. package/dist/tileset-2d/adapter.d.ts.map +1 -0
  33. package/dist/tileset-2d/adapter.js +5 -0
  34. package/dist/tileset-2d/adapter.js.map +1 -0
  35. package/dist/tileset-2d/index.d.ts +7 -0
  36. package/dist/tileset-2d/index.d.ts.map +1 -0
  37. package/dist/tileset-2d/index.js +6 -0
  38. package/dist/tileset-2d/index.js.map +1 -0
  39. package/dist/tileset-2d/tile-2d-header.d.ts +68 -0
  40. package/dist/tileset-2d/tile-2d-header.d.ts.map +1 -0
  41. package/dist/tileset-2d/tile-2d-header.js +181 -0
  42. package/dist/tileset-2d/tile-2d-header.js.map +1 -0
  43. package/dist/tileset-2d/tileset-2d.d.ts +201 -0
  44. package/dist/tileset-2d/tileset-2d.d.ts.map +1 -0
  45. package/dist/tileset-2d/tileset-2d.js +532 -0
  46. package/dist/tileset-2d/tileset-2d.js.map +1 -0
  47. package/dist/tileset-2d/types.d.ts +44 -0
  48. package/dist/tileset-2d/types.d.ts.map +1 -0
  49. package/dist/tileset-2d/types.js +5 -0
  50. package/dist/tileset-2d/types.js.map +1 -0
  51. package/dist/tileset-2d.d.ts +2 -0
  52. package/dist/tileset-2d.d.ts.map +1 -0
  53. package/dist/tileset-2d.js +5 -0
  54. package/dist/tileset-2d.js.map +1 -0
  55. package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts +60 -0
  56. package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts.map +1 -0
  57. package/dist/tileset-3d/common/indexed-archive-tileset-source.js +125 -0
  58. package/dist/tileset-3d/common/indexed-archive-tileset-source.js.map +1 -0
  59. package/dist/{tileset → tileset-3d/common}/tile-3d.d.ts +133 -29
  60. package/dist/tileset-3d/common/tile-3d.d.ts.map +1 -0
  61. package/dist/{tileset → tileset-3d/common}/tile-3d.js +282 -77
  62. package/dist/tileset-3d/common/tile-3d.js.map +1 -0
  63. package/dist/tileset-3d/common/tileset-3d.d.ts +317 -0
  64. package/dist/tileset-3d/common/tileset-3d.d.ts.map +1 -0
  65. package/dist/tileset-3d/common/tileset-3d.js +807 -0
  66. package/dist/tileset-3d/common/tileset-3d.js.map +1 -0
  67. package/dist/tileset-3d/common/tileset-cache.d.ts +29 -0
  68. package/dist/tileset-3d/common/tileset-cache.d.ts.map +1 -0
  69. package/dist/{tileset → tileset-3d/common}/tileset-cache.js +12 -4
  70. package/dist/tileset-3d/common/tileset-cache.js.map +1 -0
  71. package/dist/tileset-3d/common/tileset-source.d.ts +204 -0
  72. package/dist/tileset-3d/common/tileset-source.d.ts.map +1 -0
  73. package/dist/tileset-3d/common/tileset-source.js +17 -0
  74. package/dist/tileset-3d/common/tileset-source.js.map +1 -0
  75. package/dist/{tileset → tileset-3d/common}/tileset-traverser.d.ts +15 -2
  76. package/dist/tileset-3d/common/tileset-traverser.d.ts.map +1 -0
  77. package/dist/{tileset → tileset-3d/common}/tileset-traverser.js +30 -3
  78. package/dist/tileset-3d/common/tileset-traverser.js.map +1 -0
  79. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts +111 -0
  80. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts.map +1 -0
  81. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js +340 -0
  82. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js.map +1 -0
  83. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +189 -0
  84. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts.map +1 -0
  85. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js +510 -0
  86. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js.map +1 -0
  87. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts +43 -0
  88. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -0
  89. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js +119 -0
  90. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
  91. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts.map +1 -0
  92. package/dist/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.js +3 -0
  93. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js.map +1 -0
  94. package/dist/tileset-3d/format-i3s/i3s-source.d.ts +99 -0
  95. package/dist/tileset-3d/format-i3s/i3s-source.d.ts.map +1 -0
  96. package/dist/tileset-3d/format-i3s/i3s-source.js +299 -0
  97. package/dist/tileset-3d/format-i3s/i3s-source.js.map +1 -0
  98. package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts.map +1 -0
  99. package/dist/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.js +5 -2
  100. package/dist/tileset-3d/format-i3s/i3s-tile-manager.js.map +1 -0
  101. package/dist/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.d.ts +2 -2
  102. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts.map +1 -0
  103. package/dist/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.js +17 -23
  104. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js.map +1 -0
  105. package/dist/{tileset → tileset-3d}/helpers/3d-tiles-options.d.ts +1 -1
  106. package/dist/tileset-3d/helpers/3d-tiles-options.d.ts.map +1 -0
  107. package/dist/{tileset → tileset-3d}/helpers/3d-tiles-options.js +3 -0
  108. package/dist/tileset-3d/helpers/3d-tiles-options.js.map +1 -0
  109. package/dist/tileset-3d/helpers/bounding-volume.d.ts.map +1 -0
  110. package/dist/{tileset → tileset-3d}/helpers/bounding-volume.js +1 -0
  111. package/dist/tileset-3d/helpers/bounding-volume.js.map +1 -0
  112. package/dist/tileset-3d/helpers/frame-state.d.ts +86 -0
  113. package/dist/tileset-3d/helpers/frame-state.d.ts.map +1 -0
  114. package/dist/{tileset → tileset-3d}/helpers/frame-state.js +84 -9
  115. package/dist/tileset-3d/helpers/frame-state.js.map +1 -0
  116. package/dist/{tileset → tileset-3d}/helpers/i3s-lod.d.ts +1 -1
  117. package/dist/tileset-3d/helpers/i3s-lod.d.ts.map +1 -0
  118. package/dist/{tileset → tileset-3d}/helpers/i3s-lod.js +1 -1
  119. package/dist/tileset-3d/helpers/i3s-lod.js.map +1 -0
  120. package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts +72 -0
  121. package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts.map +1 -0
  122. package/dist/tileset-3d/helpers/tiles-3d-lod.js +257 -0
  123. package/dist/tileset-3d/helpers/tiles-3d-lod.js.map +1 -0
  124. package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts +134 -0
  125. package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts.map +1 -0
  126. package/dist/tileset-3d/helpers/tiles-3d-request-priority.js +179 -0
  127. package/dist/tileset-3d/helpers/tiles-3d-request-priority.js.map +1 -0
  128. package/dist/{tileset → tileset-3d}/helpers/transform-utils.d.ts +1 -1
  129. package/dist/tileset-3d/helpers/transform-utils.d.ts.map +1 -0
  130. package/dist/tileset-3d/helpers/transform-utils.js.map +1 -0
  131. package/dist/tileset-3d/helpers/zoom.d.ts.map +1 -0
  132. package/dist/tileset-3d/helpers/zoom.js.map +1 -0
  133. package/dist/types.d.ts +9 -0
  134. package/dist/types.d.ts.map +1 -1
  135. package/dist/types.js +3 -0
  136. package/dist/types.js.map +1 -1
  137. package/dist/utils/doubly-linked-list.d.ts.map +1 -1
  138. package/dist/utils/doubly-linked-list.js +1 -0
  139. package/dist/utils/doubly-linked-list.js.map +1 -1
  140. package/dist/utils/managed-array.d.ts.map +1 -1
  141. package/dist/utils/managed-array.js +1 -0
  142. package/dist/utils/managed-array.js.map +1 -1
  143. package/package.json +7 -6
  144. package/src/image-set.ts +328 -0
  145. package/src/index.ts +99 -9
  146. package/src/point-cloud/point-cloud-tile.ts +80 -0
  147. package/src/point-cloud/point-cloud-tileset.ts +713 -0
  148. package/src/point-cloud/types.ts +82 -0
  149. package/src/raster-set.ts +412 -0
  150. package/src/tileset-2d/adapter.ts +47 -0
  151. package/src/tileset-2d/index.ts +33 -0
  152. package/src/tileset-2d/tile-2d-header.ts +224 -0
  153. package/src/tileset-2d/tileset-2d.ts +716 -0
  154. package/src/tileset-2d/types.ts +39 -0
  155. package/src/tileset-2d.ts +5 -0
  156. package/src/tileset-3d/common/indexed-archive-tileset-source.ts +205 -0
  157. package/src/{tileset → tileset-3d/common}/tile-3d.ts +348 -93
  158. package/src/tileset-3d/common/tileset-3d.ts +1087 -0
  159. package/src/{tileset → tileset-3d/common}/tileset-cache.ts +16 -8
  160. package/src/tileset-3d/common/tileset-source.ts +255 -0
  161. package/src/{tileset → tileset-3d/common}/tileset-traverser.ts +32 -4
  162. package/src/tileset-3d/format-3d-tiles/implicit-tiling.ts +534 -0
  163. package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +632 -0
  164. package/src/tileset-3d/format-3d-tiles/tileset-3d-traverser.ts +140 -0
  165. package/src/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.ts +4 -0
  166. package/src/tileset-3d/format-i3s/i3s-source.ts +366 -0
  167. package/src/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.ts +6 -2
  168. package/src/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.ts +19 -24
  169. package/src/{tileset → tileset-3d}/helpers/3d-tiles-options.ts +5 -1
  170. package/src/{tileset → tileset-3d}/helpers/bounding-volume.ts +2 -0
  171. package/src/tileset-3d/helpers/frame-state.ts +311 -0
  172. package/src/{tileset → tileset-3d}/helpers/i3s-lod.ts +2 -2
  173. package/src/tileset-3d/helpers/tiles-3d-lod.ts +370 -0
  174. package/src/tileset-3d/helpers/tiles-3d-request-priority.ts +301 -0
  175. package/src/{tileset → tileset-3d}/helpers/transform-utils.ts +1 -1
  176. package/src/types.ts +13 -0
  177. package/src/utils/doubly-linked-list.ts +2 -0
  178. package/src/utils/managed-array.ts +2 -0
  179. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts +0 -7
  180. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts.map +0 -1
  181. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js +0 -53
  182. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js.map +0 -1
  183. package/dist/tileset/format-i3s/i3s-pending-tiles-register.d.ts.map +0 -1
  184. package/dist/tileset/format-i3s/i3s-pending-tiles-register.js.map +0 -1
  185. package/dist/tileset/format-i3s/i3s-tile-manager.d.ts.map +0 -1
  186. package/dist/tileset/format-i3s/i3s-tile-manager.js.map +0 -1
  187. package/dist/tileset/format-i3s/i3s-tileset-traverser.d.ts.map +0 -1
  188. package/dist/tileset/format-i3s/i3s-tileset-traverser.js.map +0 -1
  189. package/dist/tileset/helpers/3d-tiles-options.d.ts.map +0 -1
  190. package/dist/tileset/helpers/3d-tiles-options.js.map +0 -1
  191. package/dist/tileset/helpers/bounding-volume.d.ts.map +0 -1
  192. package/dist/tileset/helpers/bounding-volume.js.map +0 -1
  193. package/dist/tileset/helpers/frame-state.d.ts +0 -28
  194. package/dist/tileset/helpers/frame-state.d.ts.map +0 -1
  195. package/dist/tileset/helpers/frame-state.js.map +0 -1
  196. package/dist/tileset/helpers/i3s-lod.d.ts.map +0 -1
  197. package/dist/tileset/helpers/i3s-lod.js.map +0 -1
  198. package/dist/tileset/helpers/tiles-3d-lod.d.ts +0 -8
  199. package/dist/tileset/helpers/tiles-3d-lod.d.ts.map +0 -1
  200. package/dist/tileset/helpers/tiles-3d-lod.js +0 -113
  201. package/dist/tileset/helpers/tiles-3d-lod.js.map +0 -1
  202. package/dist/tileset/helpers/transform-utils.d.ts.map +0 -1
  203. package/dist/tileset/helpers/transform-utils.js.map +0 -1
  204. package/dist/tileset/helpers/zoom.d.ts.map +0 -1
  205. package/dist/tileset/helpers/zoom.js.map +0 -1
  206. package/dist/tileset/tile-3d.d.ts.map +0 -1
  207. package/dist/tileset/tile-3d.js.map +0 -1
  208. package/dist/tileset/tileset-3d.d.ts +0 -284
  209. package/dist/tileset/tileset-3d.d.ts.map +0 -1
  210. package/dist/tileset/tileset-3d.js +0 -814
  211. package/dist/tileset/tileset-3d.js.map +0 -1
  212. package/dist/tileset/tileset-cache.d.ts +0 -19
  213. package/dist/tileset/tileset-cache.d.ts.map +0 -1
  214. package/dist/tileset/tileset-cache.js.map +0 -1
  215. package/dist/tileset/tileset-traverser.d.ts.map +0 -1
  216. package/dist/tileset/tileset-traverser.js.map +0 -1
  217. package/src/tileset/format-3d-tiles/tileset-3d-traverser.ts +0 -63
  218. package/src/tileset/helpers/frame-state.ts +0 -183
  219. package/src/tileset/helpers/tiles-3d-lod.ts +0 -149
  220. package/src/tileset/tileset-3d.ts +0 -1037
  221. /package/dist/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.d.ts +0 -0
  222. /package/dist/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.d.ts +0 -0
  223. /package/dist/{tileset → tileset-3d}/helpers/bounding-volume.d.ts +0 -0
  224. /package/dist/{tileset → tileset-3d}/helpers/transform-utils.js +0 -0
  225. /package/dist/{tileset → tileset-3d}/helpers/zoom.d.ts +0 -0
  226. /package/dist/{tileset → tileset-3d}/helpers/zoom.js +0 -0
  227. /package/src/{tileset → tileset-3d}/helpers/zoom.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implicit-tiling.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/format-3d-tiles/implicit-tiling.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,eAAe,EAAE,eAAe,EAAY,2BAAwB;AAK5E,sEAAsE;AACtE,MAAM,MAAM,uBAAuB,GAAG;IACpC,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,CAAC,EAAE,MAAM,CAAC;IACV,uDAAuD;IACvD,CAAC,EAAE,MAAM,CAAC;IACV,gFAAgF;IAChF,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,uFAAuF;AACvF,MAAM,MAAM,wBAAwB,GAAG;IACrC,gGAAgG;IAChG,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sFAAsF;IACtF,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,4DAA4D;IAC5D,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iDAAiD;IACjD,iBAAiB,EAAE,UAAU,GAAG,QAAQ,CAAC;IACzC,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,YAAY,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,MAAM,EAAE,eAAe,GAAG,MAAM,CAAC;IACjC,0CAA0C;IAC1C,aAAa,EAAE,eAAe,CAAC,eAAe,CAAC;IAC/C,oEAAoE;IACpE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0DAA0D;IAC1D,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACzC,CAAC;AAEF,2FAA2F;AAC3F,MAAM,MAAM,wBAAwB,GAAG;IACrC,yDAAyD;IACzD,WAAW,EAAE,uBAAuB,CAAC;IACrC,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,UAAU,EAAE,wBAAwB,CAAC;CACtC,CAAC;AAEF,mFAAmF;AACnF,MAAM,MAAM,oBAAoB,GAAG;IACjC,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,UAAU,CAAC;CAChC,CAAC;AAEF,yFAAyF;AACzF,MAAM,MAAM,qBAAqB,GAAG;IAClC,iDAAiD;IACjD,gBAAgB,EAAE,oBAAoB,CAAC;IACvC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,oBAAoB,GAAG,oBAAoB,EAAE,CAAC;IACpE,oEAAoE;IACpE,wBAAwB,EAAE,oBAAoB,CAAC;CAChD,CAAC;AAEF,8DAA8D;AAC9D,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IACrD,qEAAqE;IACrE,EAAE,EAAE,MAAM,CAAC;IACX,2EAA2E;IAC3E,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,qEAAqE;IACrE,eAAe,CAAC,EAAE,wBAAwB,CAAC;CAC5C,CAAC;AAEF,4DAA4D;AAC5D,MAAM,MAAM,2BAA2B,GAAG;IACxC,yEAAyE;IACzE,IAAI,EAAE,kBAAkB,CAAC;IACzB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,wBAAwB,EACpC,WAAW,EAAE,uBAAuB,GACnC,wBAAwB,CAM1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,qBAAqB,EAC9B,SAAS,EAAE,wBAAwB,GAClC,2BAA2B,CAoB7B;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,uBAAuB,GACnC,MAAM,CAUR"}
@@ -0,0 +1,340 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright vis.gl contributors
4
+ import { TILE_TYPE } from "../../constants.js";
5
+ const QUADTREE_CHILD_COUNT = 4;
6
+ const OCTREE_CHILD_COUNT = 8;
7
+ /**
8
+ * Creates the lazy reference stored on an implicit subtree-root header.
9
+ *
10
+ * @param descriptor - Shared implicit hierarchy description.
11
+ * @param coordinates - Global coordinates of the subtree root.
12
+ * @returns Serializable reference with its concrete subtree URL.
13
+ */
14
+ export function createImplicitSubtreeReference(descriptor, coordinates) {
15
+ return {
16
+ coordinates,
17
+ subtreeUrl: replaceImplicitUrlTemplate(descriptor.subtreesUrlTemplate, coordinates),
18
+ descriptor
19
+ };
20
+ }
21
+ /**
22
+ * Materializes the available tiles described by one subtree file without performing I/O.
23
+ *
24
+ * The function deliberately stops at the subtree boundary. Available child subtrees become lazy
25
+ * references so traversal, SSE, request-volume checks, and the request scheduler decide when the
26
+ * next network request is useful.
27
+ *
28
+ * @param subtree - Parsed availability data for one subtree resource.
29
+ * @param reference - Coordinates and hierarchy description for the subtree root.
30
+ * @returns Materialized root and diagnostic counts.
31
+ * @throws If the subtree root is unavailable or the descriptor is invalid.
32
+ */
33
+ export function materializeImplicitSubtree(subtree, reference) {
34
+ const { descriptor } = reference;
35
+ validateImplicitDescriptor(descriptor);
36
+ const counters = { tileCount: 0, childSubtreeCount: 0 };
37
+ const root = materializeAvailableTile(subtree, reference, { localLevel: 0, mortonIndex: 0 }, reference.coordinates, counters);
38
+ if (!root) {
39
+ throw new Error(`Invalid 3D Tiles subtree: root tile is unavailable at ${reference.subtreeUrl}`);
40
+ }
41
+ return { root, ...counters };
42
+ }
43
+ /**
44
+ * Replaces implicit coordinate placeholders in a content or subtree URL.
45
+ *
46
+ * @param templateUrl - URL containing level/x/y/z placeholders.
47
+ * @param coordinates - Global coordinates to insert.
48
+ * @returns URL with all coordinate placeholders replaced.
49
+ */
50
+ export function replaceImplicitUrlTemplate(templateUrl, coordinates) {
51
+ const values = {
52
+ level: coordinates.level,
53
+ x: coordinates.x,
54
+ y: coordinates.y,
55
+ z: coordinates.z
56
+ };
57
+ return templateUrl.replace(/{(level|x|y|z)}/gi, (_match, coordinateName) => String(values[coordinateName.toLowerCase()]));
58
+ }
59
+ /**
60
+ * Builds one available tile and recursively materializes descendants in the same subtree.
61
+ *
62
+ * @param subtree - Parsed availability declarations.
63
+ * @param reference - Current subtree reference.
64
+ * @param localCoordinates - Level and Morton index relative to the current subtree.
65
+ * @param globalCoordinates - Coordinates relative to the complete implicit hierarchy.
66
+ * @param counters - Mutable diagnostic counters owned by the public materializer call.
67
+ * @returns Header for an available tile, or `null` for a sparse unavailable position.
68
+ */
69
+ function materializeAvailableTile(subtree, reference, localCoordinates, globalCoordinates, counters) {
70
+ const { descriptor } = reference;
71
+ const childCount = getImplicitChildCount(descriptor.subdivisionScheme);
72
+ const availabilityIndex = getLevelOffset(childCount, localCoordinates.localLevel) + localCoordinates.mortonIndex;
73
+ if (!getAvailabilityValue(subtree.tileAvailability, availabilityIndex)) {
74
+ return null;
75
+ }
76
+ counters.tileCount++;
77
+ const contentAvailable = getAvailabilityValue(getPrimaryContentAvailability(subtree.contentAvailability), availabilityIndex);
78
+ const children = [];
79
+ if (globalCoordinates.level < descriptor.maximumLevel) {
80
+ if (localCoordinates.localLevel + 1 < descriptor.subtreeLevels) {
81
+ for (let childIndex = 0; childIndex < childCount; childIndex++) {
82
+ const childCoordinates = getChildCoordinates(globalCoordinates, childIndex, descriptor.subdivisionScheme);
83
+ const childHeader = materializeAvailableTile(subtree, reference, {
84
+ localLevel: localCoordinates.localLevel + 1,
85
+ mortonIndex: localCoordinates.mortonIndex * childCount + childIndex
86
+ }, childCoordinates, counters);
87
+ if (childHeader) {
88
+ children.push(childHeader);
89
+ }
90
+ }
91
+ }
92
+ else {
93
+ for (let childIndex = 0; childIndex < childCount; childIndex++) {
94
+ const childSubtreeIndex = localCoordinates.mortonIndex * childCount + childIndex;
95
+ if (getAvailabilityValue(subtree.childSubtreeAvailability, childSubtreeIndex)) {
96
+ const childCoordinates = getChildCoordinates(globalCoordinates, childIndex, descriptor.subdivisionScheme);
97
+ children.push(createLazyImplicitTileHeader(descriptor, childCoordinates));
98
+ counters.childSubtreeCount++;
99
+ }
100
+ }
101
+ }
102
+ }
103
+ return formatImplicitTileHeader(descriptor, reference, globalCoordinates, contentAvailable, children);
104
+ }
105
+ /**
106
+ * Creates a contentless placeholder for an available child subtree.
107
+ *
108
+ * @param descriptor - Shared implicit hierarchy description.
109
+ * @param coordinates - Global coordinates of the child subtree root.
110
+ * @returns Header that participates in culling and SSE before its subtree is requested.
111
+ */
112
+ function createLazyImplicitTileHeader(descriptor, coordinates) {
113
+ const reference = createImplicitSubtreeReference(descriptor, coordinates);
114
+ return {
115
+ id: getImplicitTileId(reference, coordinates),
116
+ children: [],
117
+ implicitSubtree: reference,
118
+ boundingVolume: calculateImplicitBoundingVolume(descriptor.rootBoundingVolume, coordinates, descriptor.subdivisionScheme),
119
+ geometricError: descriptor.rootLodMetricValue / 2 ** coordinates.level,
120
+ lodMetricType: descriptor.lodMetricType,
121
+ lodMetricValue: descriptor.rootLodMetricValue / 2 ** coordinates.level,
122
+ refine: descriptor.refine,
123
+ type: TILE_TYPE.EMPTY
124
+ };
125
+ }
126
+ /**
127
+ * Formats an available implicit tile as a runtime header.
128
+ *
129
+ * @param descriptor - Shared implicit hierarchy description.
130
+ * @param reference - Current subtree reference used to build stable IDs.
131
+ * @param coordinates - Global tile coordinates.
132
+ * @param contentAvailable - Whether the subtree declares render content for this tile.
133
+ * @param children - Materialized or lazy child headers.
134
+ * @returns Runtime tile header.
135
+ */
136
+ function formatImplicitTileHeader(descriptor, reference, coordinates, contentAvailable, children) {
137
+ const contentUrl = contentAvailable && descriptor.contentUrlTemplate
138
+ ? replaceImplicitUrlTemplate(descriptor.contentUrlTemplate, coordinates)
139
+ : undefined;
140
+ const lodMetricValue = descriptor.rootLodMetricValue / 2 ** coordinates.level;
141
+ return {
142
+ id: getImplicitTileId(reference, coordinates),
143
+ children,
144
+ contentUrl,
145
+ content: contentUrl ? { ...descriptor.contentHeader, uri: contentUrl } : undefined,
146
+ refine: descriptor.refine,
147
+ type: getImplicitTileType(contentUrl),
148
+ lodMetricType: descriptor.lodMetricType,
149
+ lodMetricValue,
150
+ geometricError: lodMetricValue,
151
+ boundingVolume: calculateImplicitBoundingVolume(descriptor.rootBoundingVolume, coordinates, descriptor.subdivisionScheme)
152
+ };
153
+ }
154
+ /**
155
+ * Returns a stable identity for contentless and content-bearing implicit tiles.
156
+ *
157
+ * @param reference - Owning subtree reference.
158
+ * @param coordinates - Global tile coordinates.
159
+ * @returns Stable source identity independent of content availability.
160
+ */
161
+ function getImplicitTileId(reference, coordinates) {
162
+ return `${reference.subtreeUrl}#implicit=${coordinates.level}/${coordinates.x}/${coordinates.y}/${coordinates.z}`;
163
+ }
164
+ /**
165
+ * Reads an availability bit without assuming 32-bit coordinate or Morton arithmetic.
166
+ *
167
+ * @param availability - Constant or expanded bitstream availability.
168
+ * @param index - Zero-based availability index.
169
+ * @returns Whether the addressed tile, content, or child subtree exists.
170
+ */
171
+ function getAvailabilityValue(availability, index) {
172
+ if (typeof availability?.constant === 'number') {
173
+ return Boolean(availability.constant);
174
+ }
175
+ const bitstream = availability?.explicitBitstream;
176
+ if (!bitstream) {
177
+ return false;
178
+ }
179
+ const byteIndex = Math.floor(index / 8);
180
+ const bitIndex = index % 8;
181
+ return Boolean((bitstream[byteIndex] >> bitIndex) & 1);
182
+ }
183
+ /**
184
+ * Selects the first content availability stream until multiple contents are supported.
185
+ *
186
+ * @param availability - Single or multiple-content availability declaration.
187
+ * @returns Primary content availability declaration.
188
+ */
189
+ function getPrimaryContentAvailability(availability) {
190
+ return Array.isArray(availability)
191
+ ? availability[0] || { constant: 0 }
192
+ : availability || { constant: 0 };
193
+ }
194
+ /**
195
+ * Calculates the breadth-first availability offset for a local subtree level.
196
+ *
197
+ * @param childCount - Branching factor of the subdivision scheme.
198
+ * @param localLevel - Level relative to the subtree root.
199
+ * @returns First availability index for the requested level.
200
+ */
201
+ function getLevelOffset(childCount, localLevel) {
202
+ return (childCount ** localLevel - 1) / (childCount - 1);
203
+ }
204
+ /**
205
+ * Calculates one child's global implicit coordinates.
206
+ *
207
+ * @param parent - Global parent coordinates.
208
+ * @param childIndex - Morton-ordered child index.
209
+ * @param subdivisionScheme - Quadtree or octree subdivision.
210
+ * @returns Global child coordinates.
211
+ */
212
+ function getChildCoordinates(parent, childIndex, subdivisionScheme) {
213
+ return {
214
+ level: parent.level + 1,
215
+ x: parent.x * 2 + (childIndex & 1),
216
+ y: parent.y * 2 + ((childIndex >> 1) & 1),
217
+ z: subdivisionScheme === 'OCTREE' ? parent.z * 2 + ((childIndex >> 2) & 1) : 0
218
+ };
219
+ }
220
+ /**
221
+ * Returns the branching factor for a supported implicit subdivision scheme.
222
+ *
223
+ * @param subdivisionScheme - Quadtree or octree subdivision.
224
+ * @returns Four for quadtrees or eight for octrees.
225
+ */
226
+ function getImplicitChildCount(subdivisionScheme) {
227
+ return subdivisionScheme === 'OCTREE' ? OCTREE_CHILD_COUNT : QUADTREE_CHILD_COUNT;
228
+ }
229
+ /**
230
+ * Calculates the bounding volume for global implicit coordinates.
231
+ *
232
+ * Region volumes are divided in longitude/latitude and, for octrees, height. Oriented boxes are
233
+ * divided along their half-axis vectors. S2-derived boxes retain the root box conservatively: the
234
+ * lower-level tiles module intentionally does not duplicate the S2 geometry implementation owned
235
+ * by `@loaders.gl/3d-tiles`, and a conservative volume avoids incorrect culling.
236
+ *
237
+ * @param rootBoundingVolume - Bounding volume of the complete implicit hierarchy.
238
+ * @param coordinates - Global tile coordinates.
239
+ * @param subdivisionScheme - Quadtree or octree subdivision.
240
+ * @returns Bounding volume for the addressed tile.
241
+ */
242
+ function calculateImplicitBoundingVolume(rootBoundingVolume, coordinates, subdivisionScheme) {
243
+ if (rootBoundingVolume.region) {
244
+ const [west, south, east, north, minimumHeight, maximumHeight] = rootBoundingVolume.region;
245
+ const divisionCount = 2 ** coordinates.level;
246
+ const longitudeSize = (east - west) / divisionCount;
247
+ const latitudeSize = (north - south) / divisionCount;
248
+ const childWest = west + longitudeSize * coordinates.x;
249
+ const childSouth = south + latitudeSize * coordinates.y;
250
+ let childMinimumHeight = minimumHeight;
251
+ let childMaximumHeight = maximumHeight;
252
+ if (subdivisionScheme === 'OCTREE') {
253
+ const heightSize = (maximumHeight - minimumHeight) / divisionCount;
254
+ childMinimumHeight = minimumHeight + heightSize * coordinates.z;
255
+ childMaximumHeight = childMinimumHeight + heightSize;
256
+ }
257
+ return {
258
+ region: [
259
+ childWest,
260
+ childSouth,
261
+ childWest + longitudeSize,
262
+ childSouth + latitudeSize,
263
+ childMinimumHeight,
264
+ childMaximumHeight
265
+ ]
266
+ };
267
+ }
268
+ if (rootBoundingVolume.box) {
269
+ if (rootBoundingVolume.s2VolumeInfo) {
270
+ return { box: [...rootBoundingVolume.box], s2VolumeInfo: rootBoundingVolume.s2VolumeInfo };
271
+ }
272
+ const box = rootBoundingVolume.box;
273
+ const divisionCount = 2 ** coordinates.level;
274
+ const xOffset = -1 + (2 * coordinates.x + 1) / divisionCount;
275
+ const yOffset = -1 + (2 * coordinates.y + 1) / divisionCount;
276
+ const zOffset = -1 + (2 * coordinates.z + 1) / divisionCount;
277
+ const divideHeight = subdivisionScheme === 'OCTREE';
278
+ const center = [
279
+ box[0] + box[3] * xOffset + box[6] * yOffset + (divideHeight ? box[9] * zOffset : 0),
280
+ box[1] + box[4] * xOffset + box[7] * yOffset + (divideHeight ? box[10] * zOffset : 0),
281
+ box[2] + box[5] * xOffset + box[8] * yOffset + (divideHeight ? box[11] * zOffset : 0)
282
+ ];
283
+ return {
284
+ box: [
285
+ ...center,
286
+ box[3] / divisionCount,
287
+ box[4] / divisionCount,
288
+ box[5] / divisionCount,
289
+ box[6] / divisionCount,
290
+ box[7] / divisionCount,
291
+ box[8] / divisionCount,
292
+ divideHeight ? box[9] / divisionCount : box[9],
293
+ divideHeight ? box[10] / divisionCount : box[10],
294
+ divideHeight ? box[11] / divisionCount : box[11]
295
+ ]
296
+ };
297
+ }
298
+ throw new Error(`Unsupported implicit 3D Tiles bounding volume: ${JSON.stringify(rootBoundingVolume)}`);
299
+ }
300
+ /**
301
+ * Detects the runtime tile category from an available content URL.
302
+ *
303
+ * @param contentUrl - Concrete content URL, if content is available.
304
+ * @returns Runtime tile category.
305
+ */
306
+ function getImplicitTileType(contentUrl) {
307
+ if (!contentUrl) {
308
+ return TILE_TYPE.EMPTY;
309
+ }
310
+ const extension = contentUrl.split('?')[0].split('.').pop()?.toLowerCase();
311
+ switch (extension) {
312
+ case 'pnts':
313
+ return TILE_TYPE.POINTCLOUD;
314
+ case 'i3dm':
315
+ case 'b3dm':
316
+ case 'glb':
317
+ case 'gltf':
318
+ return TILE_TYPE.SCENEGRAPH;
319
+ default:
320
+ return extension || TILE_TYPE.EMPTY;
321
+ }
322
+ }
323
+ /**
324
+ * Validates descriptor invariants before allocating a runtime subtree.
325
+ *
326
+ * @param descriptor - Serializable implicit hierarchy description.
327
+ * @throws If levels, scheme, or maximum-level semantics are invalid.
328
+ */
329
+ function validateImplicitDescriptor(descriptor) {
330
+ if (descriptor.subdivisionScheme !== 'QUADTREE' && descriptor.subdivisionScheme !== 'OCTREE') {
331
+ throw new Error(`Unsupported implicit subdivision scheme: ${descriptor.subdivisionScheme}`);
332
+ }
333
+ if (!Number.isInteger(descriptor.subtreeLevels) || descriptor.subtreeLevels < 1) {
334
+ throw new Error('Implicit subtreeLevels must be a positive integer');
335
+ }
336
+ if (!Number.isInteger(descriptor.maximumLevel) || descriptor.maximumLevel < 0) {
337
+ throw new Error('Implicit availableLevels must describe at least the root level');
338
+ }
339
+ }
340
+ //# sourceMappingURL=implicit-tiling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implicit-tiling.js","sourceRoot":"","sources":["../../../src/tileset-3d/format-3d-tiles/implicit-tiling.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,189 @@
1
+ import type { CoreAPI, LoaderOptions, LoaderWithParser } from '@loaders.gl/loader-utils';
2
+ import type { Tile3D } from "../common/tile-3d.js";
3
+ import type { Tileset3D } from "../common/tileset-3d.js";
4
+ import type { TileChildrenLoadResult, TileContentLoadResult, TilesetContentFormats, TilesetJSON, Tileset3DSource, TilesetSourceInput, TilesetSourceMetadata, TilesetSourceViewState } from "../common/tileset-source.js";
5
+ import { TILESET_TYPE } from "../../constants.js";
6
+ import type { TilesetTraverser, TilesetTraverserProps } from "../common/tileset-traverser.js";
7
+ import type { FrameState } from "../helpers/frame-state.js";
8
+ /** Diagnostics for source-managed implicit subtree loading. */
9
+ export type ImplicitTilingStats = {
10
+ /** Subtree resources requested from the resolver or core API. */
11
+ requestedSubtrees: number;
12
+ /** Successful subtree materializations, including parsed-cache hits. */
13
+ loadedSubtrees: number;
14
+ /** Requests served by the source's parsed-subtree cache. */
15
+ cacheHits: number;
16
+ /** Parsed subtree resources currently retained for reuse. */
17
+ cachedSubtrees: number;
18
+ /** Subtree resource requests currently in flight. */
19
+ pendingSubtrees: number;
20
+ /** Runtime headers created below already-existing subtree-root placeholders. */
21
+ materializedTiles: number;
22
+ };
23
+ /**
24
+ * {@link Tileset3DSource} implementation for 3D Tiles datasets.
25
+ */
26
+ export declare class Tiles3DSource implements Tileset3DSource {
27
+ /** 3D Tiles format discriminator. */
28
+ readonly type = TILESET_TYPE.TILES3D;
29
+ /** Loader used for tile content requests. */
30
+ readonly loader: LoaderWithParser;
31
+ /** Root tileset URL. */
32
+ readonly url: string;
33
+ /** Base path used for relative tile resource resolution. */
34
+ readonly basePath: string;
35
+ /** Parsed root tileset payload. */
36
+ tileset: TilesetJSON | null;
37
+ /** Loader options forwarded to content requests. */
38
+ readonly loadOptions: LoaderOptions;
39
+ /** Core API used for root and tile-content loads when injected by the caller. */
40
+ coreApi?: CoreAPI;
41
+ /** Aggregate content-format flags discovered during streaming. */
42
+ readonly contentFormats: TilesetContentFormats;
43
+ /** Top-level 3D Tiles asset metadata. */
44
+ asset?: Record<string, any>;
45
+ /** Top-level per-feature properties metadata. */
46
+ properties?: any;
47
+ /** Top-level application-specific metadata. */
48
+ extras?: any;
49
+ /** Source-provided attribution metadata. */
50
+ credits?: any;
51
+ /** Normalized source metadata after initialization. */
52
+ metadata?: TilesetSourceMetadata;
53
+ private readonly queryParams;
54
+ /** Final request URLs cached by unmodified tile content URL. */
55
+ private readonly tileUrlCache;
56
+ /** Parsed subtree promises keyed by final source URL for request deduplication and LRU reuse. */
57
+ private readonly implicitSubtreeCache;
58
+ /** URLs whose subtree resource requests have not settled. */
59
+ private readonly pendingImplicitSubtreeUrls;
60
+ /** Maximum number of settled parsed subtrees retained by this source. */
61
+ private readonly maximumCachedSubtrees;
62
+ /** Mutable counters exposed as a defensive snapshot through {@link getImplicitTilingStats}. */
63
+ private readonly implicitTilingStats;
64
+ /** Whether the owning tileset has released this source. */
65
+ private destroyed;
66
+ private readonly extensionsUsed;
67
+ private readonly resolver?;
68
+ private rootTileset;
69
+ /**
70
+ * Creates a 3D Tiles source.
71
+ * @param input Root metadata request, or preloaded root metadata for tests and internal callers.
72
+ * @param loadOptions Loader options forwarded to tile requests.
73
+ */
74
+ constructor(input: TilesetSourceInput, loadOptions?: LoaderOptions);
75
+ /**
76
+ * Releases URL and parsed-subtree caches and blocks late subtree installation.
77
+ *
78
+ * The injected resolver or core API remains responsible for transport-level abort signals. A
79
+ * request that cannot be aborted may finish parsing, but it will not mutate destroyed tiles.
80
+ */
81
+ destroy(): void;
82
+ /**
83
+ * Fetches and validates top-level metadata, then normalizes common fields used by {@link Tileset3D}.
84
+ */
85
+ initialize(): Promise<void>;
86
+ /**
87
+ * Returns normalized source metadata after initialization.
88
+ */
89
+ getMetadata(): TilesetSourceMetadata;
90
+ /**
91
+ * Returns the root 3D Tiles payload.
92
+ */
93
+ getRootTileset(): Promise<TilesetJSON>;
94
+ /**
95
+ * Builds explicit runtime headers while leaving implicit subtree references lazy.
96
+ */
97
+ initializeTileHeaders(tileset: Tileset3D, tilesetJson: TilesetJSON, parentTile?: Tile3D | null): Tile3D;
98
+ /**
99
+ * Creates the standard 3D Tiles traverser.
100
+ */
101
+ createTraverser(options: TilesetTraverserProps): TilesetTraverser;
102
+ /**
103
+ * Loads binary content or nested tileset JSON for a runtime tile.
104
+ */
105
+ loadTileContent(tile: Tile3D): Promise<TileContentLoadResult>;
106
+ /**
107
+ * Loads, materializes, and installs exactly one implicit subtree.
108
+ *
109
+ * Final URLs pass through the same query inheritance and archive/custom resolver path as render
110
+ * content. Parsed resources are deduplicated by final URL, while the pure materializer creates
111
+ * lazy placeholders for every available child subtree instead of recursively fetching them.
112
+ *
113
+ * @param tile - Existing contentless subtree-root placeholder.
114
+ * @param frameState - View state that made this request eligible; priority is consumed earlier.
115
+ * @returns Counts describing the installed subtree.
116
+ */
117
+ loadTileChildren(tile: Tile3D, frameState: FrameState): Promise<TileChildrenLoadResult>;
118
+ /**
119
+ * Returns a snapshot of implicit-subtree request, cache, and materialization counters.
120
+ *
121
+ * @returns Immutable-by-convention diagnostic values for runtime inspection.
122
+ */
123
+ getImplicitTilingStats(): ImplicitTilingStats;
124
+ /**
125
+ * Resolves a tile content URL with source-managed query parameters.
126
+ *
127
+ * Existing per-resource parameters take precedence over inherited root, version, and session
128
+ * values. Completed URLs are cached by the original tile path; {@link setQueryParameter}
129
+ * invalidates the cache before changed source state can be observed.
130
+ *
131
+ * @param tilePath - Unmodified absolute content URL or data URL from the tile header.
132
+ * @returns Content URL with any missing source parameters appended.
133
+ */
134
+ getTileUrl(tilePath: string): string;
135
+ /**
136
+ * Updates an inherited source query parameter and invalidates derived request URLs.
137
+ *
138
+ * Root tokens and tileset versions normally settle during initialization. Some providers expose
139
+ * a session parameter on a child URL, so invalidation is required to prevent URLs cached earlier
140
+ * in header construction from retaining stale authentication state.
141
+ *
142
+ * @param parameterName - Query parameter name.
143
+ * @param parameterValue - Query parameter value.
144
+ */
145
+ private setQueryParameter;
146
+ /**
147
+ * Derives the default view state from the root bounding volume.
148
+ */
149
+ getViewState(rootTile: Tile3D | null): TilesetSourceViewState;
150
+ /**
151
+ * Checks whether the root tileset declares the given extension.
152
+ */
153
+ hasExtension(extensionName: string): boolean;
154
+ /**
155
+ * Updates content-format flags and installs nested tileset subtrees.
156
+ */
157
+ onTileLoaded(tileset: Tileset3D, tile: Tile3D, loadResult: TileContentLoadResult): void;
158
+ /**
159
+ * Loads data through injected core APIs so this module stays independent from `@loaders.gl/core`.
160
+ */
161
+ private loadWithCoreApi;
162
+ /**
163
+ * Loads data through an injected resolver when present, otherwise through the injected core API.
164
+ */
165
+ private loadRootData;
166
+ /**
167
+ * Loads an arbitrary source resource through an injected resolver or core API.
168
+ */
169
+ private loadResourceData;
170
+ /**
171
+ * Returns a parsed subtree from the LRU cache or starts one source-managed request.
172
+ *
173
+ * @param subtreeUrl - Final subtree URL after query inheritance.
174
+ * @returns Parsed subtree availability data.
175
+ */
176
+ private loadImplicitSubtreeResource;
177
+ /**
178
+ * Instantiates every header represented by one materialized subtree.
179
+ *
180
+ * @param tileset - Owning runtime tileset.
181
+ * @param parentTile - Existing materialized parent.
182
+ * @param childHeaders - Headers to install below the parent.
183
+ * @returns Number of newly allocated runtime tile nodes.
184
+ */
185
+ private initializeMaterializedChildren;
186
+ /** Evicts least-recently-used settled subtree entries until the configured bound is met. */
187
+ private trimImplicitSubtreeCache;
188
+ }
189
+ //# sourceMappingURL=tiles-3d-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiles-3d-source.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/format-3d-tiles/tiles-3d-source.ts"],"names":[],"mappings":"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"}