@loaders.gl/tiles 4.5.3 → 5.0.0-alpha.10

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 (295) hide show
  1. package/LICENSE +14 -3
  2. package/README.md +136 -1
  3. package/dist/dist.dev.js +22570 -4947
  4. package/dist/dist.min.js +3 -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 +10171 -2117
  10. package/dist/index.cjs.map +3 -4
  11. package/dist/index.d.ts +50 -9
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +28 -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 +135 -0
  20. package/dist/point-cloud/point-cloud-tileset.d.ts.map +1 -0
  21. package/dist/point-cloud/point-cloud-tileset.js +549 -0
  22. package/dist/point-cloud/point-cloud-tileset.js.map +1 -0
  23. package/dist/point-cloud/types.d.ts +81 -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 +124 -0
  28. package/dist/raster-set.d.ts.map +1 -0
  29. package/dist/raster-set.js +348 -0
  30. package/dist/raster-set.js.map +1 -0
  31. package/dist/spatial/format-spatial-reference.d.ts +68 -0
  32. package/dist/spatial/format-spatial-reference.d.ts.map +1 -0
  33. package/dist/spatial/format-spatial-reference.js +291 -0
  34. package/dist/spatial/format-spatial-reference.js.map +1 -0
  35. package/dist/spatial/get-spatial-coordinate-frame.d.ts +20 -0
  36. package/dist/spatial/get-spatial-coordinate-frame.d.ts.map +1 -0
  37. package/dist/spatial/get-spatial-coordinate-frame.js +139 -0
  38. package/dist/spatial/get-spatial-coordinate-frame.js.map +1 -0
  39. package/dist/spatial/i3s-elevation.d.ts +20 -0
  40. package/dist/spatial/i3s-elevation.d.ts.map +1 -0
  41. package/dist/spatial/i3s-elevation.js +90 -0
  42. package/dist/spatial/i3s-elevation.js.map +1 -0
  43. package/dist/spatial/i3s-spatial-transformer.d.ts +189 -0
  44. package/dist/spatial/i3s-spatial-transformer.d.ts.map +1 -0
  45. package/dist/spatial/i3s-spatial-transformer.js +686 -0
  46. package/dist/spatial/i3s-spatial-transformer.js.map +1 -0
  47. package/dist/spatial/normalize-crs-identifier.d.ts +15 -0
  48. package/dist/spatial/normalize-crs-identifier.d.ts.map +1 -0
  49. package/dist/spatial/normalize-crs-identifier.js +22 -0
  50. package/dist/spatial/normalize-crs-identifier.js.map +1 -0
  51. package/dist/spatial/spatial-coordinate-transformer.d.ts +52 -0
  52. package/dist/spatial/spatial-coordinate-transformer.d.ts.map +1 -0
  53. package/dist/spatial/spatial-coordinate-transformer.js +295 -0
  54. package/dist/spatial/spatial-coordinate-transformer.js.map +1 -0
  55. package/dist/spatial/spatial-resource-registry.d.ts +44 -0
  56. package/dist/spatial/spatial-resource-registry.d.ts.map +1 -0
  57. package/dist/spatial/spatial-resource-registry.js +67 -0
  58. package/dist/spatial/spatial-resource-registry.js.map +1 -0
  59. package/dist/spatial/spatial-types.d.ts +190 -0
  60. package/dist/spatial/spatial-types.d.ts.map +1 -0
  61. package/dist/spatial/spatial-types.js +192 -0
  62. package/dist/spatial/spatial-types.js.map +1 -0
  63. package/dist/spatial/tiles-3d-spatial-transformer.d.ts +32 -0
  64. package/dist/spatial/tiles-3d-spatial-transformer.d.ts.map +1 -0
  65. package/dist/spatial/tiles-3d-spatial-transformer.js +175 -0
  66. package/dist/spatial/tiles-3d-spatial-transformer.js.map +1 -0
  67. package/dist/tileset-2d/adapter.d.ts +37 -0
  68. package/dist/tileset-2d/adapter.d.ts.map +1 -0
  69. package/dist/tileset-2d/adapter.js +5 -0
  70. package/dist/tileset-2d/adapter.js.map +1 -0
  71. package/dist/tileset-2d/index.d.ts +7 -0
  72. package/dist/tileset-2d/index.d.ts.map +1 -0
  73. package/dist/tileset-2d/index.js +6 -0
  74. package/dist/tileset-2d/index.js.map +1 -0
  75. package/dist/tileset-2d/tile-2d-header.d.ts +68 -0
  76. package/dist/tileset-2d/tile-2d-header.d.ts.map +1 -0
  77. package/dist/tileset-2d/tile-2d-header.js +181 -0
  78. package/dist/tileset-2d/tile-2d-header.js.map +1 -0
  79. package/dist/tileset-2d/tileset-2d.d.ts +200 -0
  80. package/dist/tileset-2d/tileset-2d.d.ts.map +1 -0
  81. package/dist/tileset-2d/tileset-2d.js +532 -0
  82. package/dist/tileset-2d/tileset-2d.js.map +1 -0
  83. package/dist/tileset-2d/types.d.ts +44 -0
  84. package/dist/tileset-2d/types.d.ts.map +1 -0
  85. package/dist/tileset-2d/types.js +5 -0
  86. package/dist/tileset-2d/types.js.map +1 -0
  87. package/dist/tileset-2d.d.ts +2 -0
  88. package/dist/tileset-2d.d.ts.map +1 -0
  89. package/dist/tileset-2d.js +5 -0
  90. package/dist/tileset-2d.js.map +1 -0
  91. package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts +60 -0
  92. package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts.map +1 -0
  93. package/dist/tileset-3d/common/indexed-archive-tileset-source.js +130 -0
  94. package/dist/tileset-3d/common/indexed-archive-tileset-source.js.map +1 -0
  95. package/dist/tileset-3d/common/tile-3d-contracts.d.ts +63 -0
  96. package/dist/tileset-3d/common/tile-3d-contracts.d.ts.map +1 -0
  97. package/dist/tileset-3d/common/tile-3d-contracts.js +51 -0
  98. package/dist/tileset-3d/common/tile-3d-contracts.js.map +1 -0
  99. package/dist/tileset-3d/common/tile-3d.d.ts +410 -0
  100. package/dist/tileset-3d/common/tile-3d.d.ts.map +1 -0
  101. package/dist/tileset-3d/common/tile-3d.js +1056 -0
  102. package/dist/tileset-3d/common/tile-3d.js.map +1 -0
  103. package/dist/tileset-3d/common/tileset-3d.d.ts +360 -0
  104. package/dist/tileset-3d/common/tileset-3d.d.ts.map +1 -0
  105. package/dist/tileset-3d/common/tileset-3d.js +846 -0
  106. package/dist/tileset-3d/common/tileset-3d.js.map +1 -0
  107. package/dist/tileset-3d/common/tileset-cache.d.ts +29 -0
  108. package/dist/tileset-3d/common/tileset-cache.d.ts.map +1 -0
  109. package/dist/{tileset → tileset-3d/common}/tileset-cache.js +12 -4
  110. package/dist/tileset-3d/common/tileset-cache.js.map +1 -0
  111. package/dist/tileset-3d/common/tileset-content-traversal.d.ts +37 -0
  112. package/dist/tileset-3d/common/tileset-content-traversal.d.ts.map +1 -0
  113. package/dist/tileset-3d/common/tileset-content-traversal.js +80 -0
  114. package/dist/tileset-3d/common/tileset-content-traversal.js.map +1 -0
  115. package/dist/tileset-3d/common/tileset-observability.d.ts +60 -0
  116. package/dist/tileset-3d/common/tileset-observability.d.ts.map +1 -0
  117. package/dist/tileset-3d/common/tileset-observability.js +39 -0
  118. package/dist/tileset-3d/common/tileset-observability.js.map +1 -0
  119. package/dist/tileset-3d/common/tileset-source.d.ts +228 -0
  120. package/dist/tileset-3d/common/tileset-source.d.ts.map +1 -0
  121. package/dist/tileset-3d/common/tileset-source.js +17 -0
  122. package/dist/tileset-3d/common/tileset-source.js.map +1 -0
  123. package/dist/{tileset → tileset-3d/common}/tileset-traverser.d.ts +35 -3
  124. package/dist/tileset-3d/common/tileset-traverser.d.ts.map +1 -0
  125. package/dist/{tileset → tileset-3d/common}/tileset-traverser.js +61 -13
  126. package/dist/tileset-3d/common/tileset-traverser.js.map +1 -0
  127. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts +182 -0
  128. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts.map +1 -0
  129. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js +681 -0
  130. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js.map +1 -0
  131. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +221 -0
  132. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts.map +1 -0
  133. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js +770 -0
  134. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js.map +1 -0
  135. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts +110 -0
  136. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -0
  137. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js +331 -0
  138. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
  139. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts.map +1 -0
  140. package/dist/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.js +3 -0
  141. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js.map +1 -0
  142. package/dist/tileset-3d/format-i3s/i3s-source.d.ts +116 -0
  143. package/dist/tileset-3d/format-i3s/i3s-source.d.ts.map +1 -0
  144. package/dist/tileset-3d/format-i3s/i3s-source.js +450 -0
  145. package/dist/tileset-3d/format-i3s/i3s-source.js.map +1 -0
  146. package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts.map +1 -0
  147. package/dist/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.js +5 -2
  148. package/dist/tileset-3d/format-i3s/i3s-tile-manager.js.map +1 -0
  149. package/dist/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.d.ts +2 -2
  150. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts.map +1 -0
  151. package/dist/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.js +17 -23
  152. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js.map +1 -0
  153. package/dist/{tileset → tileset-3d}/helpers/3d-tiles-options.d.ts +1 -1
  154. package/dist/tileset-3d/helpers/3d-tiles-options.d.ts.map +1 -0
  155. package/dist/{tileset → tileset-3d}/helpers/3d-tiles-options.js +3 -0
  156. package/dist/tileset-3d/helpers/3d-tiles-options.js.map +1 -0
  157. package/dist/{tileset → tileset-3d}/helpers/bounding-volume.d.ts +7 -3
  158. package/dist/tileset-3d/helpers/bounding-volume.d.ts.map +1 -0
  159. package/dist/{tileset → tileset-3d}/helpers/bounding-volume.js +20 -91
  160. package/dist/tileset-3d/helpers/bounding-volume.js.map +1 -0
  161. package/dist/tileset-3d/helpers/frame-state.d.ts +93 -0
  162. package/dist/tileset-3d/helpers/frame-state.d.ts.map +1 -0
  163. package/dist/{tileset → tileset-3d}/helpers/frame-state.js +92 -10
  164. package/dist/tileset-3d/helpers/frame-state.js.map +1 -0
  165. package/dist/{tileset → tileset-3d}/helpers/i3s-lod.d.ts +1 -1
  166. package/dist/tileset-3d/helpers/i3s-lod.d.ts.map +1 -0
  167. package/dist/{tileset → tileset-3d}/helpers/i3s-lod.js +21 -9
  168. package/dist/tileset-3d/helpers/i3s-lod.js.map +1 -0
  169. package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts +17 -0
  170. package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts.map +1 -0
  171. package/dist/tileset-3d/helpers/s2-bounding-volume.js +20 -0
  172. package/dist/tileset-3d/helpers/s2-bounding-volume.js.map +1 -0
  173. package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts +72 -0
  174. package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts.map +1 -0
  175. package/dist/tileset-3d/helpers/tiles-3d-lod.js +257 -0
  176. package/dist/tileset-3d/helpers/tiles-3d-lod.js.map +1 -0
  177. package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts +134 -0
  178. package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts.map +1 -0
  179. package/dist/tileset-3d/helpers/tiles-3d-request-priority.js +179 -0
  180. package/dist/tileset-3d/helpers/tiles-3d-request-priority.js.map +1 -0
  181. package/dist/{tileset → tileset-3d}/helpers/transform-utils.d.ts +1 -1
  182. package/dist/tileset-3d/helpers/transform-utils.d.ts.map +1 -0
  183. package/dist/tileset-3d/helpers/transform-utils.js.map +1 -0
  184. package/dist/tileset-3d/helpers/zoom.d.ts.map +1 -0
  185. package/dist/tileset-3d/helpers/zoom.js.map +1 -0
  186. package/dist/types.d.ts +14 -0
  187. package/dist/types.d.ts.map +1 -1
  188. package/dist/types.js +3 -0
  189. package/dist/types.js.map +1 -1
  190. package/dist/utils/doubly-linked-list.d.ts.map +1 -1
  191. package/dist/utils/doubly-linked-list.js +1 -0
  192. package/dist/utils/doubly-linked-list.js.map +1 -1
  193. package/dist/utils/managed-array.d.ts.map +1 -1
  194. package/dist/utils/managed-array.js +1 -0
  195. package/dist/utils/managed-array.js.map +1 -1
  196. package/package.json +12 -9
  197. package/src/image-set.ts +328 -0
  198. package/src/index.ts +157 -9
  199. package/src/point-cloud/point-cloud-tile.ts +80 -0
  200. package/src/point-cloud/point-cloud-tileset.ts +767 -0
  201. package/src/point-cloud/types.ts +99 -0
  202. package/src/raster-set.ts +504 -0
  203. package/src/spatial/format-spatial-reference.ts +385 -0
  204. package/src/spatial/get-spatial-coordinate-frame.ts +169 -0
  205. package/src/spatial/i3s-elevation.ts +96 -0
  206. package/src/spatial/i3s-spatial-transformer.ts +957 -0
  207. package/src/spatial/normalize-crs-identifier.ts +26 -0
  208. package/src/spatial/spatial-coordinate-transformer.ts +376 -0
  209. package/src/spatial/spatial-resource-registry.ts +79 -0
  210. package/src/spatial/spatial-types.ts +422 -0
  211. package/src/spatial/tiles-3d-spatial-transformer.ts +206 -0
  212. package/src/tileset-2d/adapter.ts +46 -0
  213. package/src/tileset-2d/index.ts +33 -0
  214. package/src/tileset-2d/tile-2d-header.ts +224 -0
  215. package/src/tileset-2d/tileset-2d.ts +715 -0
  216. package/src/tileset-2d/types.ts +39 -0
  217. package/src/tileset-2d.ts +5 -0
  218. package/src/tileset-3d/common/indexed-archive-tileset-source.ts +205 -0
  219. package/src/tileset-3d/common/tile-3d-contracts.ts +115 -0
  220. package/src/tileset-3d/common/tile-3d.ts +1310 -0
  221. package/src/tileset-3d/common/tileset-3d.ts +1166 -0
  222. package/src/{tileset → tileset-3d/common}/tileset-cache.ts +16 -8
  223. package/src/tileset-3d/common/tileset-content-traversal.ts +114 -0
  224. package/src/tileset-3d/common/tileset-observability.ts +100 -0
  225. package/src/tileset-3d/common/tileset-source.ts +284 -0
  226. package/src/{tileset → tileset-3d/common}/tileset-traverser.ts +74 -14
  227. package/src/tileset-3d/format-3d-tiles/implicit-tiling.ts +1059 -0
  228. package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +1025 -0
  229. package/src/tileset-3d/format-3d-tiles/tileset-3d-traverser.ts +379 -0
  230. package/src/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.ts +4 -0
  231. package/src/tileset-3d/format-i3s/i3s-source.ts +557 -0
  232. package/src/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.ts +6 -2
  233. package/src/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.ts +20 -24
  234. package/src/{tileset → tileset-3d}/helpers/3d-tiles-options.ts +5 -1
  235. package/src/{tileset → tileset-3d}/helpers/bounding-volume.ts +31 -114
  236. package/src/tileset-3d/helpers/frame-state.ts +322 -0
  237. package/src/{tileset → tileset-3d}/helpers/i3s-lod.ts +24 -10
  238. package/src/tileset-3d/helpers/s2-bounding-volume.ts +35 -0
  239. package/src/tileset-3d/helpers/tiles-3d-lod.ts +370 -0
  240. package/src/tileset-3d/helpers/tiles-3d-request-priority.ts +301 -0
  241. package/src/{tileset → tileset-3d}/helpers/transform-utils.ts +1 -1
  242. package/src/types.ts +18 -0
  243. package/src/utils/doubly-linked-list.ts +2 -0
  244. package/src/utils/managed-array.ts +2 -0
  245. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts +0 -7
  246. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts.map +0 -1
  247. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js +0 -53
  248. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js.map +0 -1
  249. package/dist/tileset/format-i3s/i3s-pending-tiles-register.d.ts.map +0 -1
  250. package/dist/tileset/format-i3s/i3s-pending-tiles-register.js.map +0 -1
  251. package/dist/tileset/format-i3s/i3s-tile-manager.d.ts.map +0 -1
  252. package/dist/tileset/format-i3s/i3s-tile-manager.js.map +0 -1
  253. package/dist/tileset/format-i3s/i3s-tileset-traverser.d.ts.map +0 -1
  254. package/dist/tileset/format-i3s/i3s-tileset-traverser.js.map +0 -1
  255. package/dist/tileset/helpers/3d-tiles-options.d.ts.map +0 -1
  256. package/dist/tileset/helpers/3d-tiles-options.js.map +0 -1
  257. package/dist/tileset/helpers/bounding-volume.d.ts.map +0 -1
  258. package/dist/tileset/helpers/bounding-volume.js.map +0 -1
  259. package/dist/tileset/helpers/frame-state.d.ts +0 -28
  260. package/dist/tileset/helpers/frame-state.d.ts.map +0 -1
  261. package/dist/tileset/helpers/frame-state.js.map +0 -1
  262. package/dist/tileset/helpers/i3s-lod.d.ts.map +0 -1
  263. package/dist/tileset/helpers/i3s-lod.js.map +0 -1
  264. package/dist/tileset/helpers/tiles-3d-lod.d.ts +0 -8
  265. package/dist/tileset/helpers/tiles-3d-lod.d.ts.map +0 -1
  266. package/dist/tileset/helpers/tiles-3d-lod.js +0 -113
  267. package/dist/tileset/helpers/tiles-3d-lod.js.map +0 -1
  268. package/dist/tileset/helpers/transform-utils.d.ts.map +0 -1
  269. package/dist/tileset/helpers/transform-utils.js.map +0 -1
  270. package/dist/tileset/helpers/zoom.d.ts.map +0 -1
  271. package/dist/tileset/helpers/zoom.js.map +0 -1
  272. package/dist/tileset/tile-3d.d.ts +0 -230
  273. package/dist/tileset/tile-3d.d.ts.map +0 -1
  274. package/dist/tileset/tile-3d.js +0 -631
  275. package/dist/tileset/tile-3d.js.map +0 -1
  276. package/dist/tileset/tileset-3d.d.ts +0 -284
  277. package/dist/tileset/tileset-3d.d.ts.map +0 -1
  278. package/dist/tileset/tileset-3d.js +0 -814
  279. package/dist/tileset/tileset-3d.js.map +0 -1
  280. package/dist/tileset/tileset-cache.d.ts +0 -19
  281. package/dist/tileset/tileset-cache.d.ts.map +0 -1
  282. package/dist/tileset/tileset-cache.js.map +0 -1
  283. package/dist/tileset/tileset-traverser.d.ts.map +0 -1
  284. package/dist/tileset/tileset-traverser.js.map +0 -1
  285. package/src/tileset/format-3d-tiles/tileset-3d-traverser.ts +0 -63
  286. package/src/tileset/helpers/frame-state.ts +0 -183
  287. package/src/tileset/helpers/tiles-3d-lod.ts +0 -149
  288. package/src/tileset/tile-3d.ts +0 -788
  289. package/src/tileset/tileset-3d.ts +0 -1037
  290. /package/dist/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.d.ts +0 -0
  291. /package/dist/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.d.ts +0 -0
  292. /package/dist/{tileset → tileset-3d}/helpers/transform-utils.js +0 -0
  293. /package/dist/{tileset → tileset-3d}/helpers/zoom.d.ts +0 -0
  294. /package/dist/{tileset → tileset-3d}/helpers/zoom.js +0 -0
  295. /package/src/{tileset → tileset-3d}/helpers/zoom.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tileset-source.js","sourceRoot":"","sources":["../../../src/tileset-3d/common/tileset-source.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AA2QpC;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,OAAO,CACZ,KAAK;QACH,OAAO,KAAK,KAAK,QAAQ;QACzB,YAAY,IAAI,KAAK;QACrB,gBAAgB,IAAI,KAAK;QACzB,uBAAuB,IAAI,KAAK;QAChC,iBAAiB,IAAI,KAAK,CAC7B,CAAC;AACJ,CAAC"}
@@ -1,9 +1,17 @@
1
1
  import type { Tile3D } from "./tile-3d.js";
2
- import { ManagedArray } from "../utils/managed-array.js";
3
- import { FrameState } from "./helpers/frame-state.js";
2
+ import { ManagedArray } from "../../utils/managed-array.js";
3
+ import { FrameState } from "../helpers/frame-state.js";
4
4
  export type TilesetTraverserProps = {
5
5
  loadSiblings?: boolean;
6
6
  skipLevelOfDetail?: boolean;
7
+ /** SSE above which tiles remain part of the non-skipping base traversal. */
8
+ baseScreenSpaceError?: number;
9
+ /** Required SSE reduction from the nearest requested or loaded ancestor before loading a tile. */
10
+ skipScreenSpaceErrorFactor?: number;
11
+ /** Minimum hierarchy levels between requested tiles during skip-LOD traversal. */
12
+ skipLevels?: number;
13
+ /** Requests only final tiles that meet the active SSE target when skip-LOD is enabled. */
14
+ immediatelyLoadDesiredLevelOfDetail?: boolean;
7
15
  updateTransforms?: boolean;
8
16
  onTraversalEnd?: (frameState: any) => any;
9
17
  viewportTraversersMap?: Record<string, any>;
@@ -12,9 +20,13 @@ export type TilesetTraverserProps = {
12
20
  export declare const DEFAULT_PROPS: Required<TilesetTraverserProps>;
13
21
  export declare class TilesetTraverser {
14
22
  options: Required<TilesetTraverserProps>;
23
+ /** Whether loaded content has disabled skip-LOD traversal for this tileset. */
24
+ disableSkipLevelOfDetail: boolean;
15
25
  root: any;
16
26
  selectedTiles: Record<string, Tile3D>;
17
27
  requestedTiles: Record<string, Tile3D>;
28
+ /** Tiles intentionally held until the camera has remained still for the configured delay. */
29
+ deferredTiles: Record<string, Tile3D>;
18
30
  emptyTiles: Record<string, Tile3D>;
19
31
  protected lastUpdate: number;
20
32
  protected readonly updateDebounceTime = 1000;
@@ -25,6 +37,8 @@ export declare class TilesetTraverser {
25
37
  protected _frameNumber: number | null;
26
38
  protected traversalFinished(frameState: FrameState): boolean;
27
39
  constructor(options: TilesetTraverserProps);
40
+ /** Returns whether skip-LOD traversal is enabled and supported by the loaded content. */
41
+ isSkipLevelOfDetailEnabled(): boolean;
28
42
  traverse(root: any, frameState: any, options: any): void;
29
43
  reset(): void;
30
44
  /**
@@ -37,15 +51,33 @@ export declare class TilesetTraverser {
37
51
  * and rendering children and parent tiles simultaneously.
38
52
  */
39
53
  executeTraversal(root: any, frameState: FrameState): void;
54
+ /** Notifies the owning tileset when traversal is complete or its debounce interval expires. */
55
+ protected completeTraversal(frameState: FrameState): void;
40
56
  updateChildTiles(tile: Tile3D, frameState: FrameState): void;
41
57
  updateAndPushChildren(tile: Tile3D, frameState: FrameState, stack: any, depth: any): boolean;
42
58
  updateTile(tile: Tile3D, frameState: FrameState): void;
43
59
  selectTile(tile: Tile3D, frameState: FrameState): void;
44
60
  loadTile(tile: Tile3D, frameState: FrameState): void;
61
+ /**
62
+ * Returns whether an eligible peripheral request should wait for camera motion to settle.
63
+ *
64
+ * Eligibility and the current time window are calculated together when tile visibility updates.
65
+ * Keeping the active state on the tile also lets a queued scheduler callback cancel work that
66
+ * became deferred after its original traversal.
67
+ *
68
+ * @param tile - Tile considered for loading.
69
+ * @returns `true` when the request should be retried after the remaining delay.
70
+ */
71
+ shouldDeferTileRequest(tile: Tile3D): boolean;
45
72
  touchTile(tile: Tile3D, frameState: FrameState): void;
46
73
  canTraverse(tile: Tile3D, frameState: FrameState): boolean;
47
74
  shouldLoadTile(tile: Tile3D): boolean;
48
- shouldSelectTile(tile: Tile3D): boolean;
75
+ /**
76
+ * Returns whether a tile's content is available and visible for rendering.
77
+ * @param tile Tile considered for rendering.
78
+ * @param frameState Current culling state.
79
+ */
80
+ shouldSelectTile(tile: Tile3D, frameState: FrameState): boolean;
49
81
  /** Decide if tile LoD (level of detail) is not sufficient under current viewport */
50
82
  shouldRefine(tile: Tile3D, frameState: FrameState, useParentMetric?: boolean): boolean;
51
83
  updateTileVisibility(tile: Tile3D, frameState: FrameState): void;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tileset-traverser.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/common/tileset-traverser.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,15 @@
1
1
  // loaders.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
- import { ManagedArray } from "../utils/managed-array.js";
5
- import { TILE_REFINEMENT } from "../constants.js";
4
+ import { ManagedArray } from "../../utils/managed-array.js";
5
+ import { TILE_REFINEMENT } from "../../constants.js";
6
6
  export const DEFAULT_PROPS = {
7
7
  loadSiblings: false,
8
8
  skipLevelOfDetail: false,
9
+ baseScreenSpaceError: 1024,
10
+ skipScreenSpaceErrorFactor: 16,
11
+ skipLevels: 1,
12
+ immediatelyLoadDesiredLevelOfDetail: false,
9
13
  updateTransforms: true,
10
14
  onTraversalEnd: () => { },
11
15
  viewportTraversersMap: {},
@@ -13,12 +17,16 @@ export const DEFAULT_PROPS = {
13
17
  };
14
18
  export class TilesetTraverser {
15
19
  options;
20
+ /** Whether loaded content has disabled skip-LOD traversal for this tileset. */
21
+ disableSkipLevelOfDetail = false;
16
22
  // fulfill in traverse call
17
23
  root = null;
18
24
  // tiles should be rendered
19
25
  selectedTiles = {};
20
26
  // tiles should be loaded from server
21
27
  requestedTiles = {};
28
+ /** Tiles intentionally held until the camera has remained still for the configured delay. */
29
+ deferredTiles = {};
22
30
  // tiles does not have render content
23
31
  emptyTiles = {};
24
32
  lastUpdate = new Date().getTime();
@@ -36,6 +44,10 @@ export class TilesetTraverser {
36
44
  constructor(options) {
37
45
  this.options = { ...DEFAULT_PROPS, ...options };
38
46
  }
47
+ /** Returns whether skip-LOD traversal is enabled and supported by the loaded content. */
48
+ isSkipLevelOfDetailEnabled() {
49
+ return this.options.skipLevelOfDetail && !this.disableSkipLevelOfDetail;
50
+ }
39
51
  // tiles should be visible
40
52
  traverse(root, frameState, options) {
41
53
  this.root = root; // for root screen space error
@@ -49,6 +61,7 @@ export class TilesetTraverser {
49
61
  }
50
62
  reset() {
51
63
  this.requestedTiles = {};
64
+ this.deferredTiles = {};
52
65
  this.selectedTiles = {};
53
66
  this.emptyTiles = {};
54
67
  this._traversalStack.reset();
@@ -104,7 +117,9 @@ export class TilesetTraverser {
104
117
  // Always load tiles in the base traversal
105
118
  // Select tiles that can't refine further
106
119
  this.loadTile(tile, frameState);
107
- if (stoppedRefining) {
120
+ // Skip-LOD keeps a ready ancestor selected while descendants stream in. This prevents
121
+ // replacement holes when traversal jumps over one or more hierarchy levels.
122
+ if (stoppedRefining || this.isSkipLevelOfDetailEnabled()) {
108
123
  this.selectTile(tile, frameState);
109
124
  }
110
125
  }
@@ -113,6 +128,10 @@ export class TilesetTraverser {
113
128
  // 4. update tile refine prop and parent refinement status to trickle down to the descendants
114
129
  tile._shouldRefine = shouldRefine && parentRefines;
115
130
  }
131
+ this.completeTraversal(frameState);
132
+ }
133
+ /** Notifies the owning tileset when traversal is complete or its debounce interval expires. */
134
+ completeTraversal(frameState) {
116
135
  const newTime = new Date().getTime();
117
136
  if (this.traversalFinished(frameState) || newTime - this.lastUpdate > this.updateDebounceTime) {
118
137
  this.lastUpdate = newTime;
@@ -127,7 +146,8 @@ export class TilesetTraverser {
127
146
  }
128
147
  /* eslint-disable complexity, max-statements */
129
148
  updateAndPushChildren(tile, frameState, stack, depth) {
130
- const { loadSiblings, skipLevelOfDetail } = this.options;
149
+ const { loadSiblings } = this.options;
150
+ const skipLevelOfDetail = this.isSkipLevelOfDetailEnabled();
131
151
  const children = tile.children;
132
152
  // sort children tiles
133
153
  children.sort(this.compareDistanceToCamera.bind(this));
@@ -145,9 +165,10 @@ export class TilesetTraverser {
145
165
  stack.push(child);
146
166
  hasVisibleChild = true;
147
167
  }
148
- else if (checkRefines || loadSiblings) {
149
- // Keep non-visible children loaded since they are still needed before the parent can refine.
150
- // Or loadSiblings is true so always load tiles regardless of visibility.
168
+ else if ((checkRefines || loadSiblings) && child._inRequestVolume) {
169
+ // Keep non-visible children loaded when they are inside their viewer request volume;
170
+ // they may still be needed before a replacement parent can refine. The request-volume
171
+ // check intentionally applies to sibling loading as well, preventing off-volume work.
151
172
  this.loadTile(child, frameState);
152
173
  this.touchTile(child, frameState);
153
174
  }
@@ -179,7 +200,7 @@ export class TilesetTraverser {
179
200
  }
180
201
  // tile to render in the browser
181
202
  selectTile(tile, frameState) {
182
- if (this.shouldSelectTile(tile)) {
203
+ if (this.shouldSelectTile(tile, frameState)) {
183
204
  // The tile can be selected right away and does not require traverseAndSelect
184
205
  tile._selectedFrame = frameState.frameNumber;
185
206
  this.selectedTiles[tile.id] = tile;
@@ -188,11 +209,28 @@ export class TilesetTraverser {
188
209
  // tile to load from server
189
210
  loadTile(tile, frameState) {
190
211
  if (this.shouldLoadTile(tile)) {
212
+ if (this.shouldDeferTileRequest(tile)) {
213
+ this.deferredTiles[tile.id] = tile;
214
+ return;
215
+ }
191
216
  tile._requestedFrame = frameState.frameNumber;
192
217
  tile._priority = tile._getPriority();
193
218
  this.requestedTiles[tile.id] = tile;
194
219
  }
195
220
  }
221
+ /**
222
+ * Returns whether an eligible peripheral request should wait for camera motion to settle.
223
+ *
224
+ * Eligibility and the current time window are calculated together when tile visibility updates.
225
+ * Keeping the active state on the tile also lets a queued scheduler callback cancel work that
226
+ * became deferred after its original traversal.
227
+ *
228
+ * @param tile - Tile considered for loading.
229
+ * @returns `true` when the request should be retried after the remaining delay.
230
+ */
231
+ shouldDeferTileRequest(tile) {
232
+ return tile.priorityDeferred;
233
+ }
196
234
  // cache tile
197
235
  touchTile(tile, frameState) {
198
236
  tile.tileset._cache.touch(tile);
@@ -218,10 +256,13 @@ export class TilesetTraverser {
218
256
  // and has unexpired render content
219
257
  return tile.hasUnloadedContent || tile.contentExpired;
220
258
  }
221
- shouldSelectTile(tile) {
222
- // if select tile is in current frame
223
- // and content available
224
- return tile.contentAvailable && !this.options.skipLevelOfDetail;
259
+ /**
260
+ * Returns whether a tile's content is available and visible for rendering.
261
+ * @param tile Tile considered for rendering.
262
+ * @param frameState Current culling state.
263
+ */
264
+ shouldSelectTile(tile, frameState) {
265
+ return tile.contentAvailable && tile.contentVisibility(frameState) !== 'outside';
225
266
  }
226
267
  /** Decide if tile LoD (level of detail) is not sufficient under current viewport */
227
268
  shouldRefine(tile, frameState, useParentMetric = false) {
@@ -264,12 +305,19 @@ export class TilesetTraverser {
264
305
  // Ignores visibility.
265
306
  executeEmptyTraversal(root, frameState) {
266
307
  let allDescendantsLoaded = true;
308
+ let hasPendingLazyChildren = false;
267
309
  const stack = this._emptyTraversalStack;
268
310
  stack.push(root);
269
311
  while (stack.length > 0) {
270
312
  const tile = stack.pop();
271
313
  const traverse = !tile.hasRenderContent && this.canTraverse(tile, frameState);
272
314
  const emptyLeaf = !tile.hasRenderContent && tile.children.length === 0;
315
+ if (tile.header.implicitSubtree) {
316
+ // An unresolved implicit boundary is not a proven empty leaf. Treating it as loaded would
317
+ // allow REPLACE traversal to drop its ancestor before availability and content are known.
318
+ hasPendingLazyChildren = true;
319
+ allDescendantsLoaded = false;
320
+ }
273
321
  // Traversal stops but the tile does not have content yet
274
322
  // There will be holes if the parent tries to refine to its children, so don't refine
275
323
  // One exception: a parent may refine even if one of its descendants is an empty leaf
@@ -288,7 +336,7 @@ export class TilesetTraverser {
288
336
  }
289
337
  }
290
338
  }
291
- return root.hasEmptyContent || allDescendantsLoaded;
339
+ return (root.hasEmptyContent && !hasPendingLazyChildren) || allDescendantsLoaded;
292
340
  }
293
341
  }
294
342
  //# sourceMappingURL=tileset-traverser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tileset-traverser.js","sourceRoot":"","sources":["../../../src/tileset-3d/common/tileset-traverser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,182 @@
1
+ import { LOD_METRIC_TYPE, TILE_REFINEMENT } from "../../constants.js";
2
+ /** Global coordinates of a tile in an implicit quadtree or octree. */
3
+ export type ImplicitTileCoordinates = {
4
+ /** Zero-based level relative to the implicit-tile root. */
5
+ level: number;
6
+ /** Zero-based horizontal coordinate at {@link level}. */
7
+ x: number;
8
+ /** Zero-based vertical coordinate at {@link level}. */
9
+ y: number;
10
+ /** Zero-based height coordinate at {@link level}; always zero for quadtrees. */
11
+ z: number;
12
+ };
13
+ /** Serializable information shared by every subtree in one implicit-tile hierarchy. */
14
+ export type ImplicitTilingDescriptor = {
15
+ /** Absolute template URL for render content, or an empty string for a contentless hierarchy. */
16
+ contentUrlTemplate: string;
17
+ /** Absolute templates for every implicit content stream, in source order. */
18
+ contentUrlTemplates?: string[];
19
+ /** Non-URI content metadata inherited by each available implicit content resource. */
20
+ contentHeader?: Record<string, any>;
21
+ /** Metadata inherited by every implicit content stream, in source order. */
22
+ contentHeaders?: Array<Record<string, any>>;
23
+ /** Whether generated headers preserve the standard `contents` source representation. */
24
+ useCanonicalContents?: boolean;
25
+ /** Absolute template URL for subtree availability files. */
26
+ subtreesUrlTemplate: string;
27
+ /** Spatial subdivision used by the hierarchy. */
28
+ subdivisionScheme: 'QUADTREE' | 'OCTREE';
29
+ /** Number of tile levels represented inside each subtree file. */
30
+ subtreeLevels: number;
31
+ /** Last valid global tile level, where the implicit root is level zero. */
32
+ maximumLevel: number;
33
+ /** Refinement mode inherited by generated tiles. */
34
+ refine: TILE_REFINEMENT | string;
35
+ /** LOD metric used by generated tiles. */
36
+ lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR;
37
+ /** Source geometric error of the implicit root, in local meters. */
38
+ rootLodMetricValue: number;
39
+ /** Bounding volume of the complete implicit hierarchy. */
40
+ rootBoundingVolume: Record<string, any>;
41
+ /** Whether runtime transforms scale geometric error; false for draft 2.0. */
42
+ scaleGeometricError?: boolean;
43
+ /** Package files that may satisfy concrete content and subtree template references. */
44
+ resourceFiles?: ImplicitPackageFile[];
45
+ };
46
+ /** Structured-cloneable file retained from a draft glTF package. */
47
+ export type ImplicitPackageFile = {
48
+ name?: string;
49
+ mimeType: string;
50
+ uri?: string;
51
+ originalUri?: string;
52
+ data?: ArrayBuffer;
53
+ byteOffset: number;
54
+ byteLength: number;
55
+ bufferUri?: string;
56
+ };
57
+ /** Package reference attached to a generated content or subtree URL. */
58
+ export type ImplicitPackageResource = {
59
+ fileIndex: number;
60
+ files: ImplicitPackageFile[];
61
+ };
62
+ /** Lazy pointer from a runtime tile to the subtree that defines it and its descendants. */
63
+ export type ImplicitSubtreeReference = {
64
+ /** Global coordinates of the referenced subtree root. */
65
+ coordinates: ImplicitTileCoordinates;
66
+ /** Absolute subtree URL before source-level query inheritance is applied. */
67
+ subtreeUrl: string;
68
+ /** Serializable hierarchy description used to materialize the subtree. */
69
+ descriptor: ImplicitTilingDescriptor;
70
+ /** Embedded package resource matching {@link subtreeUrl}, when available. */
71
+ resource?: ImplicitPackageResource;
72
+ };
73
+ /** Constant or bitstream-backed availability declaration from a parsed subtree. */
74
+ export type ImplicitAvailability = {
75
+ /** Constant availability value applied to every addressed element. */
76
+ constant?: number;
77
+ /** Expanded least-significant-bit-first availability buffer. */
78
+ explicitBitstream?: Uint8Array;
79
+ };
80
+ /** Parsed subset of the 3D Tiles subtree schema needed for hierarchy materialization. */
81
+ export type ParsedImplicitSubtree = {
82
+ /** Availability of tiles inside this subtree. */
83
+ tileAvailability: ImplicitAvailability;
84
+ /**
85
+ * Availability of tile content. Array entries correspond to content templates in source order.
86
+ * Omitted availability denotes a metadata-only subtree with no render content.
87
+ */
88
+ contentAvailability?: ImplicitAvailability | ImplicitAvailability[];
89
+ /** Availability of subtree roots immediately below this subtree. */
90
+ childSubtreeAvailability: ImplicitAvailability;
91
+ /** Property-table payloads referenced by subtree metadata declarations. */
92
+ propertyTables?: unknown;
93
+ /** Property-table reference for metadata attached to each available tile. */
94
+ tileMetadata?: unknown;
95
+ /** Property-table references for metadata attached to each content stream. */
96
+ contentMetadata?: unknown;
97
+ /** Metadata entity attached to the subtree itself. */
98
+ subtreeMetadata?: unknown;
99
+ /** Decoded standard attribute accessors keyed by tile semantic. */
100
+ tileAttributes?: Record<string, ArrayLike<number>>;
101
+ /** Decoded standard attribute accessors keyed by content semantic. */
102
+ contentAttributes?: Record<string, ArrayLike<number>>;
103
+ /** Index of the property table assigned to available tiles. */
104
+ tileProperties?: unknown;
105
+ /** Index of the property table assigned to available contents. */
106
+ contentProperties?: unknown;
107
+ /** Fully decoded property rows for available tiles, in availability order. */
108
+ tilePropertyRows?: Array<Record<string, unknown>>;
109
+ /** Fully decoded property rows for available contents, in availability order. */
110
+ contentPropertyRows?: Array<Record<string, unknown>>;
111
+ /** Tile property rows filtered to values permitted in URI templates. */
112
+ tileTemplatePropertyRows?: Array<Record<string, unknown>>;
113
+ /** Content property rows filtered to values permitted in URI templates. */
114
+ contentTemplatePropertyRows?: Array<Record<string, unknown>>;
115
+ /** Files retained by a glTF subtree package for later content/subtree resolution. */
116
+ resourceFiles?: ImplicitPackageFile[];
117
+ };
118
+ /** Runtime header produced for an available implicit tile. */
119
+ export type ImplicitTileHeader = Record<string, any> & {
120
+ /** Stable source identity, including global implicit coordinates. */
121
+ id: string;
122
+ /** Materialized children that are represented by the same subtree file. */
123
+ children: ImplicitTileHeader[];
124
+ /** Optional lazy reference when this tile begins a child subtree. */
125
+ implicitSubtree?: ImplicitSubtreeReference;
126
+ /** Raw subtree metadata references preserved for application-level interpretation. */
127
+ implicitMetadata?: ImplicitSubtreeMetadata;
128
+ };
129
+ /** Metadata references inherited by generated implicit tile headers. */
130
+ export type ImplicitSubtreeMetadata = {
131
+ /** Property tables declared by the subtree. */
132
+ propertyTables?: unknown;
133
+ /** Tile-level metadata property-table reference. */
134
+ tileMetadata?: unknown;
135
+ /** Content-level metadata property-table references in content order. */
136
+ contentMetadata?: unknown;
137
+ /** Subtree-level metadata entity. */
138
+ subtreeMetadata?: unknown;
139
+ /** Decoded property-table row for this tile. */
140
+ tileProperties?: Record<string, unknown>;
141
+ /** Decoded property-table row for this tile's available content. */
142
+ contentProperties?: Record<string, unknown>;
143
+ };
144
+ /** Result of materializing exactly one subtree resource. */
145
+ export type MaterializedImplicitSubtree = {
146
+ /** Header for the subtree root, including its in-subtree descendants. */
147
+ root: ImplicitTileHeader;
148
+ /** Number of available headers materialized from this subtree. */
149
+ tileCount: number;
150
+ /** Number of lazy child-subtree references created at the subtree boundary. */
151
+ childSubtreeCount: number;
152
+ };
153
+ /**
154
+ * Creates the lazy reference stored on an implicit subtree-root header.
155
+ *
156
+ * @param descriptor - Shared implicit hierarchy description.
157
+ * @param coordinates - Global coordinates of the subtree root.
158
+ * @returns Serializable reference with its concrete subtree URL.
159
+ */
160
+ export declare function createImplicitSubtreeReference(descriptor: ImplicitTilingDescriptor, coordinates: ImplicitTileCoordinates): ImplicitSubtreeReference;
161
+ /**
162
+ * Materializes the available tiles described by one subtree file without performing I/O.
163
+ *
164
+ * The function deliberately stops at the subtree boundary. Available child subtrees become lazy
165
+ * references so traversal, SSE, request-volume checks, and the request scheduler decide when the
166
+ * next network request is useful.
167
+ *
168
+ * @param subtree - Parsed availability data for one subtree resource.
169
+ * @param reference - Coordinates and hierarchy description for the subtree root.
170
+ * @returns Materialized root and diagnostic counts.
171
+ * @throws If the subtree root is unavailable or the descriptor is invalid.
172
+ */
173
+ export declare function materializeImplicitSubtree(subtree: ParsedImplicitSubtree, reference: ImplicitSubtreeReference): MaterializedImplicitSubtree;
174
+ /**
175
+ * Replaces implicit coordinate placeholders in a content or subtree URL.
176
+ *
177
+ * @param templateUrl - URL containing level/x/y/z placeholders.
178
+ * @param coordinates - Global coordinates to insert.
179
+ * @returns URL with all coordinate placeholders replaced.
180
+ */
181
+ export declare function replaceImplicitUrlTemplate(templateUrl: string, coordinates: ImplicitTileCoordinates, properties?: Record<string, unknown>): string;
182
+ //# sourceMappingURL=implicit-tiling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implicit-tiling.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/format-3d-tiles/implicit-tiling.ts"],"names":[],"mappings":"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"}