@loaders.gl/3d-tiles 4.0.0-alpha.5 → 4.0.0-alpha.7

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 (327) hide show
  1. package/dist/bundle.js +2 -2
  2. package/dist/cesium-ion-loader.d.ts.map +1 -1
  3. package/dist/cesium-ion-loader.js +37 -32
  4. package/dist/dist.min.js +5345 -2938
  5. package/dist/es5/bundle.js +6 -0
  6. package/dist/es5/bundle.js.map +1 -0
  7. package/dist/es5/cesium-ion-loader.js +77 -0
  8. package/dist/es5/cesium-ion-loader.js.map +1 -0
  9. package/dist/es5/index.js +63 -0
  10. package/dist/es5/index.js.map +1 -0
  11. package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js +114 -0
  12. package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -0
  13. package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js +180 -0
  14. package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -0
  15. package/dist/es5/lib/classes/tile-3d-batch-table.js +285 -0
  16. package/dist/es5/lib/classes/tile-3d-batch-table.js.map +1 -0
  17. package/dist/es5/lib/classes/tile-3d-feature-table.js +97 -0
  18. package/dist/es5/lib/classes/tile-3d-feature-table.js.map +1 -0
  19. package/dist/es5/lib/constants.js +32 -0
  20. package/dist/es5/lib/constants.js.map +1 -0
  21. package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js +49 -0
  22. package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js.map +1 -0
  23. package/dist/es5/lib/encoders/encode-3d-tile-composite.js +30 -0
  24. package/dist/es5/lib/encoders/encode-3d-tile-composite.js.map +1 -0
  25. package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js +47 -0
  26. package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -0
  27. package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js +48 -0
  28. package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -0
  29. package/dist/es5/lib/encoders/encode-3d-tile.js +35 -0
  30. package/dist/es5/lib/encoders/encode-3d-tile.js.map +1 -0
  31. package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js +35 -0
  32. package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -0
  33. package/dist/es5/lib/ion/ion.js +170 -0
  34. package/dist/es5/lib/ion/ion.js.map +1 -0
  35. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js +64 -0
  36. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -0
  37. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js +32 -0
  38. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -0
  39. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js +32 -0
  40. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -0
  41. package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js +280 -0
  42. package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -0
  43. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +98 -0
  44. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -0
  45. package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js +22 -0
  46. package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -0
  47. package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js +145 -0
  48. package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -0
  49. package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js +85 -0
  50. package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -0
  51. package/dist/es5/lib/parsers/helpers/parse-utils.js +28 -0
  52. package/dist/es5/lib/parsers/helpers/parse-utils.js.map +1 -0
  53. package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js +51 -0
  54. package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js.map +1 -0
  55. package/dist/es5/lib/parsers/parse-3d-tile-composite.js +48 -0
  56. package/dist/es5/lib/parsers/parse-3d-tile-composite.js.map +1 -0
  57. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js +37 -0
  58. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js.map +1 -0
  59. package/dist/es5/lib/parsers/parse-3d-tile-header.js +271 -0
  60. package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -0
  61. package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js +172 -0
  62. package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -0
  63. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js +271 -0
  64. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -0
  65. package/dist/es5/lib/parsers/parse-3d-tile.js +74 -0
  66. package/dist/es5/lib/parsers/parse-3d-tile.js.map +1 -0
  67. package/dist/es5/lib/utils/obb/s2-corners-to-obb.js +30 -0
  68. package/dist/es5/lib/utils/obb/s2-corners-to-obb.js.map +1 -0
  69. package/dist/es5/lib/utils/s2/converters/s2-to-boundary.js +44 -0
  70. package/dist/es5/lib/utils/s2/converters/s2-to-boundary.js.map +1 -0
  71. package/dist/es5/lib/utils/s2/converters/s2-to-obb-points.js +30 -0
  72. package/dist/es5/lib/utils/s2/converters/s2-to-obb-points.js.map +1 -0
  73. package/dist/es5/lib/utils/s2/converters/s2-to-region.js +52 -0
  74. package/dist/es5/lib/utils/s2/converters/s2-to-region.js.map +1 -0
  75. package/dist/es5/lib/utils/s2/index.js +90 -0
  76. package/dist/es5/lib/utils/s2/index.js.map +1 -0
  77. package/dist/es5/lib/utils/s2/s2-geometry-functions.js +19 -0
  78. package/dist/es5/lib/utils/s2/s2-geometry-functions.js.map +1 -0
  79. package/dist/es5/lib/utils/s2/s2-token-functions.js +41 -0
  80. package/dist/es5/lib/utils/s2/s2-token-functions.js.map +1 -0
  81. package/dist/es5/lib/utils/s2/s2geometry/s2-cell-utils.js +22 -0
  82. package/dist/es5/lib/utils/s2/s2geometry/s2-cell-utils.js.map +1 -0
  83. package/dist/es5/lib/utils/s2/s2geometry/s2-geometry.js +207 -0
  84. package/dist/es5/lib/utils/s2/s2geometry/s2-geometry.js.map +1 -0
  85. package/dist/es5/lib/utils/version.js +9 -0
  86. package/dist/es5/lib/utils/version.js.map +1 -0
  87. package/dist/es5/tile-3d-subtree-loader.js +22 -0
  88. package/dist/es5/tile-3d-subtree-loader.js.map +1 -0
  89. package/dist/es5/tile-3d-writer.js +26 -0
  90. package/dist/es5/tile-3d-writer.js.map +1 -0
  91. package/dist/es5/tiles-3d-loader.js +138 -0
  92. package/dist/es5/tiles-3d-loader.js.map +1 -0
  93. package/dist/es5/types.js +2 -0
  94. package/dist/es5/types.js.map +1 -0
  95. package/dist/esm/bundle.js +4 -0
  96. package/dist/esm/bundle.js.map +1 -0
  97. package/dist/esm/cesium-ion-loader.js +36 -0
  98. package/dist/esm/cesium-ion-loader.js.map +1 -0
  99. package/dist/esm/index.js +9 -0
  100. package/dist/esm/index.js.map +1 -0
  101. package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js +96 -0
  102. package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -0
  103. package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js +171 -0
  104. package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -0
  105. package/dist/esm/lib/classes/tile-3d-batch-table.js +231 -0
  106. package/dist/esm/lib/classes/tile-3d-batch-table.js.map +1 -0
  107. package/dist/esm/lib/classes/tile-3d-feature-table.js +70 -0
  108. package/dist/esm/lib/classes/tile-3d-feature-table.js.map +1 -0
  109. package/dist/esm/lib/constants.js +22 -0
  110. package/dist/esm/lib/constants.js.map +1 -0
  111. package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js +40 -0
  112. package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js.map +1 -0
  113. package/dist/esm/lib/encoders/encode-3d-tile-composite.js +21 -0
  114. package/dist/esm/lib/encoders/encode-3d-tile-composite.js.map +1 -0
  115. package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js +36 -0
  116. package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -0
  117. package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js +39 -0
  118. package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -0
  119. package/dist/esm/lib/encoders/encode-3d-tile.js +29 -0
  120. package/dist/esm/lib/encoders/encode-3d-tile.js.map +1 -0
  121. package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js +28 -0
  122. package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -0
  123. package/dist/esm/lib/ion/ion.js +70 -0
  124. package/dist/esm/lib/ion/ion.js.map +1 -0
  125. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js +58 -0
  126. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -0
  127. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js +26 -0
  128. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -0
  129. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js +26 -0
  130. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -0
  131. package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js +241 -0
  132. package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -0
  133. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js +61 -0
  134. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -0
  135. package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js +16 -0
  136. package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -0
  137. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js +67 -0
  138. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -0
  139. package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js +80 -0
  140. package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -0
  141. package/dist/esm/lib/parsers/helpers/parse-utils.js +20 -0
  142. package/dist/esm/lib/parsers/helpers/parse-utils.js.map +1 -0
  143. package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js +25 -0
  144. package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js.map +1 -0
  145. package/dist/esm/lib/parsers/parse-3d-tile-composite.js +15 -0
  146. package/dist/esm/lib/parsers/parse-3d-tile-composite.js.map +1 -0
  147. package/dist/esm/lib/parsers/parse-3d-tile-gltf.js +12 -0
  148. package/dist/esm/lib/parsers/parse-3d-tile-gltf.js.map +1 -0
  149. package/dist/esm/lib/parsers/parse-3d-tile-header.js +164 -0
  150. package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -0
  151. package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js +147 -0
  152. package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -0
  153. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js +211 -0
  154. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -0
  155. package/dist/esm/lib/parsers/parse-3d-tile.js +30 -0
  156. package/dist/esm/lib/parsers/parse-3d-tile.js.map +1 -0
  157. package/dist/esm/lib/utils/obb/s2-corners-to-obb.js +23 -0
  158. package/dist/esm/lib/utils/obb/s2-corners-to-obb.js.map +1 -0
  159. package/dist/esm/lib/utils/s2/converters/s2-to-boundary.js +40 -0
  160. package/dist/esm/lib/utils/s2/converters/s2-to-boundary.js.map +1 -0
  161. package/dist/esm/lib/utils/s2/converters/s2-to-obb-points.js +24 -0
  162. package/dist/esm/lib/utils/s2/converters/s2-to-obb-points.js.map +1 -0
  163. package/dist/esm/lib/utils/s2/converters/s2-to-region.js +42 -0
  164. package/dist/esm/lib/utils/s2/converters/s2-to-region.js.map +1 -0
  165. package/dist/esm/lib/utils/s2/index.js +7 -0
  166. package/dist/esm/lib/utils/s2/index.js.map +1 -0
  167. package/dist/esm/lib/utils/s2/s2-geometry-functions.js +12 -0
  168. package/dist/esm/lib/utils/s2/s2-geometry-functions.js.map +1 -0
  169. package/dist/esm/lib/utils/s2/s2-token-functions.js +32 -0
  170. package/dist/esm/lib/utils/s2/s2-token-functions.js.map +1 -0
  171. package/dist/esm/lib/utils/s2/s2geometry/s2-cell-utils.js +15 -0
  172. package/dist/esm/lib/utils/s2/s2geometry/s2-cell-utils.js.map +1 -0
  173. package/dist/esm/lib/utils/s2/s2geometry/s2-geometry.js +186 -0
  174. package/dist/esm/lib/utils/s2/s2geometry/s2-geometry.js.map +1 -0
  175. package/dist/esm/lib/utils/version.js +2 -0
  176. package/dist/esm/lib/utils/version.js.map +1 -0
  177. package/dist/esm/tile-3d-subtree-loader.js +14 -0
  178. package/dist/esm/tile-3d-subtree-loader.js.map +1 -0
  179. package/dist/esm/tile-3d-writer.js +19 -0
  180. package/dist/esm/tile-3d-writer.js.map +1 -0
  181. package/dist/esm/tiles-3d-loader.js +62 -0
  182. package/dist/esm/tiles-3d-loader.js.map +1 -0
  183. package/dist/esm/types.js +2 -0
  184. package/dist/esm/types.js.map +1 -0
  185. package/dist/index.d.ts +1 -1
  186. package/dist/index.d.ts.map +1 -1
  187. package/dist/index.js +26 -9
  188. package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts +1 -1
  189. package/dist/lib/classes/helpers/tile-3d-accessor-utils.js +106 -89
  190. package/dist/lib/classes/tile-3d-batch-table-hierarchy.js +184 -202
  191. package/dist/lib/classes/tile-3d-batch-table.d.ts +1 -1
  192. package/dist/lib/classes/tile-3d-batch-table.js +223 -282
  193. package/dist/lib/classes/tile-3d-feature-table.js +64 -86
  194. package/dist/lib/constants.js +23 -19
  195. package/dist/lib/encoders/encode-3d-tile-batched-model.js +45 -45
  196. package/dist/lib/encoders/encode-3d-tile-composite.js +23 -24
  197. package/dist/lib/encoders/encode-3d-tile-instanced-model.js +37 -37
  198. package/dist/lib/encoders/encode-3d-tile-point-cloud.js +36 -38
  199. package/dist/lib/encoders/encode-3d-tile.js +30 -32
  200. package/dist/lib/encoders/helpers/encode-3d-tile-header.js +28 -29
  201. package/dist/lib/ion/ion.js +60 -69
  202. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.js +60 -62
  203. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.js +26 -26
  204. package/dist/lib/parsers/helpers/normalize-3d-tile-positions.js +39 -28
  205. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts +11 -0
  206. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts.map +1 -1
  207. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.js +247 -203
  208. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.d.ts.map +1 -1
  209. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.js +84 -63
  210. package/dist/lib/parsers/helpers/parse-3d-tile-header.js +26 -15
  211. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts +2 -1
  212. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts.map +1 -1
  213. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js +98 -58
  214. package/dist/lib/parsers/helpers/parse-3d-tile-tables.js +84 -80
  215. package/dist/lib/parsers/helpers/parse-utils.js +29 -16
  216. package/dist/lib/parsers/parse-3d-tile-batched-model.js +30 -26
  217. package/dist/lib/parsers/parse-3d-tile-composite.d.ts +6 -1
  218. package/dist/lib/parsers/parse-3d-tile-composite.d.ts.map +1 -1
  219. package/dist/lib/parsers/parse-3d-tile-composite.js +23 -16
  220. package/dist/lib/parsers/parse-3d-tile-gltf.d.ts +3 -1
  221. package/dist/lib/parsers/parse-3d-tile-gltf.d.ts.map +1 -1
  222. package/dist/lib/parsers/parse-3d-tile-gltf.js +19 -9
  223. package/dist/lib/parsers/parse-3d-tile-header.d.ts +6 -4
  224. package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -1
  225. package/dist/lib/parsers/parse-3d-tile-header.js +166 -138
  226. package/dist/lib/parsers/parse-3d-tile-instanced-model.d.ts +3 -1
  227. package/dist/lib/parsers/parse-3d-tile-instanced-model.d.ts.map +1 -1
  228. package/dist/lib/parsers/parse-3d-tile-instanced-model.js +179 -170
  229. package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts +4 -2
  230. package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts.map +1 -1
  231. package/dist/lib/parsers/parse-3d-tile-point-cloud.js +351 -184
  232. package/dist/lib/parsers/parse-3d-tile.js +36 -31
  233. package/dist/lib/utils/obb/s2-corners-to-obb.d.ts +15 -0
  234. package/dist/lib/utils/obb/s2-corners-to-obb.d.ts.map +1 -0
  235. package/dist/lib/utils/obb/s2-corners-to-obb.js +37 -0
  236. package/dist/lib/utils/s2/converters/s2-to-boundary.d.ts +9 -0
  237. package/dist/lib/utils/s2/converters/s2-to-boundary.d.ts.map +1 -0
  238. package/dist/lib/utils/s2/converters/s2-to-boundary.js +61 -0
  239. package/dist/lib/utils/s2/converters/s2-to-obb-points.d.ts +15 -0
  240. package/dist/lib/utils/s2/converters/s2-to-obb-points.d.ts.map +1 -0
  241. package/dist/lib/utils/s2/converters/s2-to-obb-points.js +36 -0
  242. package/dist/lib/utils/s2/converters/s2-to-region.d.ts +13 -0
  243. package/dist/lib/utils/s2/converters/s2-to-region.d.ts.map +1 -0
  244. package/dist/lib/utils/s2/converters/s2-to-region.js +59 -0
  245. package/dist/lib/utils/s2/index.d.ts +8 -0
  246. package/dist/lib/utils/s2/index.d.ts.map +1 -0
  247. package/dist/lib/utils/s2/index.js +23 -0
  248. package/dist/lib/utils/s2/s2-geometry-functions.d.ts +14 -0
  249. package/dist/lib/utils/s2/s2-geometry-functions.d.ts.map +1 -0
  250. package/dist/lib/utils/s2/s2-geometry-functions.js +29 -0
  251. package/dist/lib/utils/s2/s2-token-functions.d.ts +23 -0
  252. package/dist/lib/utils/s2/s2-token-functions.d.ts.map +1 -0
  253. package/dist/lib/utils/s2/s2-token-functions.js +68 -0
  254. package/dist/lib/utils/s2/s2geometry/s2-cell-utils.d.ts +14 -0
  255. package/dist/lib/utils/s2/s2geometry/s2-cell-utils.d.ts.map +1 -0
  256. package/dist/lib/utils/s2/s2geometry/s2-cell-utils.js +32 -0
  257. package/dist/lib/utils/s2/s2geometry/s2-geometry.d.ts +52 -0
  258. package/dist/lib/utils/s2/s2geometry/s2-geometry.d.ts.map +1 -0
  259. package/dist/lib/utils/s2/s2geometry/s2-geometry.js +260 -0
  260. package/dist/lib/utils/version.js +7 -2
  261. package/dist/tile-3d-subtree-loader.js +22 -13
  262. package/dist/tile-3d-writer.js +24 -17
  263. package/dist/tiles-3d-loader.d.ts +15 -1
  264. package/dist/tiles-3d-loader.d.ts.map +1 -1
  265. package/dist/tiles-3d-loader.js +67 -71
  266. package/dist/types.d.ts +28 -15
  267. package/dist/types.d.ts.map +1 -1
  268. package/dist/types.js +2 -2
  269. package/package.json +12 -11
  270. package/src/cesium-ion-loader.ts +1 -0
  271. package/src/index.ts +1 -1
  272. package/src/lib/parsers/helpers/parse-3d-implicit-tiles.ts +104 -27
  273. package/src/lib/parsers/helpers/parse-3d-tile-gltf-view.ts +4 -2
  274. package/src/lib/parsers/helpers/parse-3d-tile-subtree.ts +50 -7
  275. package/src/lib/parsers/parse-3d-tile-composite.ts +17 -6
  276. package/src/lib/parsers/parse-3d-tile-gltf.ts +25 -0
  277. package/src/lib/parsers/parse-3d-tile-header.ts +93 -24
  278. package/src/lib/parsers/parse-3d-tile-instanced-model.ts +17 -3
  279. package/src/lib/parsers/parse-3d-tile-point-cloud.ts +37 -10
  280. package/src/lib/utils/obb/s2-corners-to-obb.ts +51 -0
  281. package/src/lib/utils/s2/converters/s2-to-boundary.ts +67 -0
  282. package/src/lib/utils/s2/converters/s2-to-obb-points.ts +46 -0
  283. package/src/lib/utils/s2/converters/s2-to-region.ts +69 -0
  284. package/src/lib/utils/s2/index.ts +17 -0
  285. package/src/lib/utils/s2/s2-geometry-functions.ts +28 -0
  286. package/src/lib/utils/s2/s2-token-functions.ts +67 -0
  287. package/src/lib/utils/s2/s2geometry/s2-cell-utils.ts +33 -0
  288. package/src/lib/utils/s2/s2geometry/s2-geometry.ts +296 -0
  289. package/src/tiles-3d-loader.ts +64 -46
  290. package/src/types.ts +20 -5
  291. package/dist/bundle.js.map +0 -1
  292. package/dist/cesium-ion-loader.js.map +0 -1
  293. package/dist/index.js.map +0 -1
  294. package/dist/lib/classes/helpers/tile-3d-accessor-utils.js.map +0 -1
  295. package/dist/lib/classes/tile-3d-batch-table-hierarchy.js.map +0 -1
  296. package/dist/lib/classes/tile-3d-batch-table.js.map +0 -1
  297. package/dist/lib/classes/tile-3d-feature-table.js.map +0 -1
  298. package/dist/lib/constants.js.map +0 -1
  299. package/dist/lib/encoders/encode-3d-tile-batched-model.js.map +0 -1
  300. package/dist/lib/encoders/encode-3d-tile-composite.js.map +0 -1
  301. package/dist/lib/encoders/encode-3d-tile-instanced-model.js.map +0 -1
  302. package/dist/lib/encoders/encode-3d-tile-point-cloud.js.map +0 -1
  303. package/dist/lib/encoders/encode-3d-tile.js.map +0 -1
  304. package/dist/lib/encoders/helpers/encode-3d-tile-header.js.map +0 -1
  305. package/dist/lib/ion/ion.js.map +0 -1
  306. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.js.map +0 -1
  307. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.js.map +0 -1
  308. package/dist/lib/parsers/helpers/normalize-3d-tile-positions.js.map +0 -1
  309. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +0 -1
  310. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +0 -1
  311. package/dist/lib/parsers/helpers/parse-3d-tile-header.js.map +0 -1
  312. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js.map +0 -1
  313. package/dist/lib/parsers/helpers/parse-3d-tile-tables.js.map +0 -1
  314. package/dist/lib/parsers/helpers/parse-utils.js.map +0 -1
  315. package/dist/lib/parsers/parse-3d-tile-batched-model.js.map +0 -1
  316. package/dist/lib/parsers/parse-3d-tile-composite.js.map +0 -1
  317. package/dist/lib/parsers/parse-3d-tile-gltf.js.map +0 -1
  318. package/dist/lib/parsers/parse-3d-tile-header.js.map +0 -1
  319. package/dist/lib/parsers/parse-3d-tile-instanced-model.js.map +0 -1
  320. package/dist/lib/parsers/parse-3d-tile-point-cloud.js.map +0 -1
  321. package/dist/lib/parsers/parse-3d-tile.js.map +0 -1
  322. package/dist/lib/utils/version.js.map +0 -1
  323. package/dist/tile-3d-subtree-loader.js.map +0 -1
  324. package/dist/tile-3d-writer.js.map +0 -1
  325. package/dist/tiles-3d-loader.js.map +0 -1
  326. package/dist/types.js.map +0 -1
  327. package/src/lib/parsers/parse-3d-tile-gltf.js +0 -16
@@ -0,0 +1,296 @@
1
+ // math.gl, MIT license
2
+ /*
3
+ Adapted from s2-geometry under ISC License (ISC)
4
+ Copyright (c) 2012-2016, Jon Atkins <github@jonatkins.com>
5
+ Copyright (c) 2016, AJ ONeal <aj@daplie.com>
6
+ Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
7
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
8
+ */
9
+
10
+ import Long from 'long';
11
+
12
+ //
13
+ // Functional Style
14
+ //
15
+ const FACE_BITS = 3;
16
+ const MAX_LEVEL = 30;
17
+ const POS_BITS = 2 * MAX_LEVEL + 1; // 61 (60 bits of data, 1 bit lsb marker)
18
+ const RADIAN_TO_DEGREE = 180 / Math.PI;
19
+
20
+ /**
21
+ * An object describing the S2 cell
22
+ * @param face {number} Selects one of the six cube faces. The value is in the range [0..5]
23
+ * @param ij {[number, number]} “i” and “j” are integers in the range [0..2**30-1] that identify the cell.
24
+ * @param level {number} The number of times the cell has been subdivided (starting with a face cell). The value is in the range [0..30]
25
+ */
26
+ export type S2Cell = {
27
+ face: number;
28
+ ij: [number, number];
29
+ level: number;
30
+ };
31
+
32
+ /**
33
+ * Return the S2Cell
34
+ * @param hilbertQuadkey {string} A string that is the Hilbert quad key (containing /)
35
+ * @returns {@link S2Cell}
36
+ */
37
+ // eslint-disable-next-line max-statements
38
+ export function getS2CellFromQuadKey(hilbertQuadkey: string): S2Cell {
39
+ if (hilbertQuadkey.length === 0) {
40
+ throw new Error(`Invalid Hilbert quad key ${hilbertQuadkey}`);
41
+ }
42
+ const parts: string[] = hilbertQuadkey.split('/');
43
+ const face: number = parseInt(parts[0], 10); // face is in the range [0..5]
44
+ const position: string = parts[1]; // position is in the range [0..4**30-1]
45
+ const maxLevel: number = position.length;
46
+ let level = 0;
47
+
48
+ const point = [0, 0] as [number, number];
49
+
50
+ for (let i = maxLevel - 1; i >= 0; i--) {
51
+ level = maxLevel - i;
52
+ const bit = position[i];
53
+ let rx = 0;
54
+ let ry = 0;
55
+ if (bit === '1') {
56
+ ry = 1;
57
+ } else if (bit === '2') {
58
+ rx = 1;
59
+ ry = 1;
60
+ } else if (bit === '3') {
61
+ rx = 1;
62
+ }
63
+
64
+ const val = Math.pow(2, level - 1);
65
+ rotateAndFlipQuadrant(val, point, rx, ry);
66
+
67
+ point[0] += val * rx;
68
+ point[1] += val * ry;
69
+ }
70
+
71
+ if (face % 2 === 1) {
72
+ const t = point[0];
73
+ point[0] = point[1];
74
+ point[1] = t;
75
+ }
76
+
77
+ return {face, ij: point, level};
78
+ }
79
+
80
+ /**
81
+ * Convets S2 cell ID to the Hilbert quad key
82
+ * @param cellId {Long} Cell id that is a 64-bit encoding of a face and a Hilbert curve parameter on that face
83
+ * @returns {string} the Hilbert quad key (containing /) as a string in the format 'face/pos', where
84
+ * - face is a 10-base representation of the face number
85
+ * - pos is a 4-base representation of the position along the Hilbert curve. For example,
86
+ * pos == '13' means the following:
87
+ * The face is divided two times. After the first time the child cell with position 1 will be selected.
88
+ * Then, this cell will be divided the second time, and the child cell with position 3 will be selected.
89
+ */
90
+ export function getS2QuadkeyFromCellId(cellId: Long): string {
91
+ if (cellId.isZero()) {
92
+ // Invalid token
93
+ return '';
94
+ }
95
+
96
+ let bin = cellId.toString(2);
97
+
98
+ while (bin.length < FACE_BITS + POS_BITS) {
99
+ // eslint-disable-next-line prefer-template
100
+ bin = '0' + bin;
101
+ }
102
+
103
+ // MUST come AFTER binstr has been left-padded with '0's
104
+ const lsbIndex = bin.lastIndexOf('1');
105
+ // substring(start, end) // includes start, does not include end
106
+ const faceB = bin.substring(0, 3);
107
+ // posB will always be a multiple of 2 (or it's invalid)
108
+ const posB = bin.substring(3, lsbIndex);
109
+ const levelN = posB.length / 2;
110
+
111
+ const faceS = Long.fromString(faceB, true, 2).toString(10);
112
+
113
+ /*
114
+ Here is a fix for the case when posB is an empty string that causes an exception in Long.fromString
115
+ */
116
+ let posS = '';
117
+ if (levelN !== 0) {
118
+ // posB is not an empty string, because levelN !== 0
119
+ posS = Long.fromString(posB, true, 2).toString(4);
120
+
121
+ while (posS.length < levelN) {
122
+ // eslint-disable-next-line prefer-template
123
+ posS = '0' + posS;
124
+ }
125
+ }
126
+ // Note, posS will be "" for the level==0, which corresponds to the full face.
127
+ // Example: Full face 0 (No subdivision, so level==0): Returns "0/"
128
+ // TODO: Is it ok?
129
+
130
+ return `${faceS}/${posS}`;
131
+ }
132
+
133
+ /**
134
+ * Convets S2 the Hilbert quad key to cell ID.
135
+ * @param quadkey {string} The Hilbert quad key (containing /) as a string in the format 'face/pos'
136
+ * @returns {Long} Cell id that is a 64-bit encoding of a face and a Hilbert curve parameter on that face
137
+ */
138
+ /* eslint complexity: ["error", { "max": 14 }] */
139
+ export function getS2CellIdFromQuadkey(hilbertQuadkey: string): Long {
140
+ if (hilbertQuadkey.length === 0 || hilbertQuadkey.indexOf('/') !== 1) {
141
+ throw new Error(`Invalid Hilbert quad key ${hilbertQuadkey}`);
142
+ }
143
+
144
+ let idS = '';
145
+
146
+ const faceS = hilbertQuadkey[0];
147
+ switch (faceS) {
148
+ case '0':
149
+ idS += '000';
150
+ break;
151
+ case '1':
152
+ idS += '001';
153
+ break;
154
+ case '2':
155
+ idS += '010';
156
+ break;
157
+ case '3':
158
+ idS += '011';
159
+ break;
160
+ case '4':
161
+ idS += '100';
162
+ break;
163
+ case '5':
164
+ idS += '101';
165
+ break;
166
+ default:
167
+ throw new Error(`Invalid Hilbert quad key ${hilbertQuadkey}`);
168
+ }
169
+
170
+ const maxLevel: number = hilbertQuadkey.length;
171
+ // Don't convert position to Long, because it can contain leading zeros, which makes you handle it later.
172
+
173
+ for (let i = 2; i < maxLevel; i++) {
174
+ // The first char is a face, the second char is '/'
175
+ const p = hilbertQuadkey[i];
176
+ switch (p) {
177
+ case '0':
178
+ idS += '00';
179
+ break;
180
+ case '1':
181
+ idS += '01';
182
+ break;
183
+ case '2':
184
+ idS += '10';
185
+ break;
186
+ case '3':
187
+ idS += '11';
188
+ break;
189
+ default:
190
+ throw new Error(`Invalid Hilbert quad key ${hilbertQuadkey}`);
191
+ }
192
+ }
193
+ // Append the sentinel bit
194
+ idS += '1';
195
+
196
+ const paddedId = idS.padEnd(64, '0');
197
+ const id = Long.fromString(paddedId, true, 2);
198
+ return id;
199
+ }
200
+
201
+ export function IJToST(
202
+ ij: [number, number],
203
+ level: number,
204
+ offsets: [number, number]
205
+ ): [number, number] {
206
+ const maxSize = 1 << level;
207
+
208
+ return [(ij[0] + offsets[0]) / maxSize, (ij[1] + offsets[1]) / maxSize];
209
+ }
210
+
211
+ function singleSTtoUV(st: number): number {
212
+ if (st >= 0.5) {
213
+ return (1 / 3.0) * (4 * st * st - 1);
214
+ }
215
+ return (1 / 3.0) * (1 - 4 * (1 - st) * (1 - st));
216
+ }
217
+
218
+ export function STToUV(st: [number, number]): [number, number] {
219
+ return [singleSTtoUV(st[0]), singleSTtoUV(st[1])];
220
+ }
221
+
222
+ export function FaceUVToXYZ(face: number, [u, v]: [number, number]): [number, number, number] {
223
+ switch (face) {
224
+ case 0:
225
+ return [1, u, v];
226
+ case 1:
227
+ return [-u, 1, v];
228
+ case 2:
229
+ return [-u, -v, 1];
230
+ case 3:
231
+ return [-1, -v, -u];
232
+ case 4:
233
+ return [v, -1, -u];
234
+ case 5:
235
+ return [v, u, -1];
236
+ default:
237
+ throw new Error('Invalid face');
238
+ }
239
+ }
240
+
241
+ export function XYZToLngLat([x, y, z]: [number, number, number]): [number, number] {
242
+ const lat = Math.atan2(z, Math.sqrt(x * x + y * y));
243
+ const lng = Math.atan2(y, x);
244
+
245
+ return [lng * RADIAN_TO_DEGREE, lat * RADIAN_TO_DEGREE];
246
+ }
247
+
248
+ function rotateAndFlipQuadrant(n: number, point: [number, number], rx: number, ry: number): void {
249
+ if (ry === 0) {
250
+ if (rx === 1) {
251
+ point[0] = n - 1 - point[0];
252
+ point[1] = n - 1 - point[1];
253
+ }
254
+
255
+ const x = point[0];
256
+ point[0] = point[1];
257
+ point[1] = x;
258
+ }
259
+ }
260
+
261
+ /**
262
+ * Retrieve S2 geometry center
263
+ * @param s2cell {S2Cell} S2 cell
264
+ * @returns {[number, number]} Longitude and Latitude coordinates of the S2 cell's center
265
+ */
266
+ export function getS2LngLatFromS2Cell(s2Cell: S2Cell): [number, number] {
267
+ const st = IJToST(s2Cell.ij, s2Cell.level, [0.5, 0.5]);
268
+ const uv = STToUV(st);
269
+ const xyz = FaceUVToXYZ(s2Cell.face, uv);
270
+
271
+ return XYZToLngLat(xyz);
272
+ }
273
+
274
+ /**
275
+ * Return longitude and latitude of four corners of the cell.
276
+ * @param s2Cell {S2Cell} S2 cell
277
+ * @returns {Array<[number, number]>} Array of longitude and latitude pairs (in degrees) for four corners of the cell.
278
+ */
279
+ export function getCornerLngLats(s2Cell: S2Cell): Array<[number, number]> {
280
+ const result: Array<[number, number]> = [];
281
+ const offsets: Array<[number, number]> = [
282
+ [0.0, 0.0],
283
+ [0.0, 1.0],
284
+ [1.0, 1.0],
285
+ [1.0, 0.0]
286
+ ];
287
+
288
+ for (let i = 0; i < 4; i++) {
289
+ const st = IJToST(s2Cell.ij, s2Cell.level, offsets[i]);
290
+ const uv = STToUV(st);
291
+ const xyz = FaceUVToXYZ(s2Cell.face, uv);
292
+
293
+ result.push(XYZToLngLat(xyz));
294
+ }
295
+ return result;
296
+ }
@@ -1,14 +1,29 @@
1
- import type {LoaderWithParser} from '@loaders.gl/loader-utils';
1
+ import type {LoaderWithParser, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';
2
+ // / import type { GLTFLoaderOptions } from '@loaders.gl/gltf';
3
+ import type {DracoLoaderOptions} from '@loaders.gl/draco';
4
+ import type {ImageLoaderOptions} from '@loaders.gl/images';
5
+
2
6
  import {path} from '@loaders.gl/loader-utils';
3
7
  import {TILESET_TYPE, LOD_METRIC_TYPE} from '@loaders.gl/tiles';
4
8
  import {VERSION} from './lib/utils/version';
5
9
  import {parse3DTile} from './lib/parsers/parse-3d-tile';
6
- import {
7
- normalizeTileHeaders,
8
- normalizeImplicitTileHeaders
9
- } from './lib/parsers/parse-3d-tile-header';
10
+ import {normalizeTileHeaders} from './lib/parsers/parse-3d-tile-header';
10
11
 
11
- const IMPLICIT_TILING_EXTENSION_NAME = '3DTILES_implicit_tiling';
12
+ export type Tiles3DLoaderOptions = LoaderOptions &
13
+ // GLTFLoaderOptions & - TODO not yet exported
14
+ DracoLoaderOptions &
15
+ ImageLoaderOptions & {
16
+ '3d-tiles'?: {
17
+ /** Whether to parse any embedded glTF binaries (or extract memory for independent glTF parsing) */
18
+ loadGLTF?: boolean;
19
+ /** If renderer doesn't support quantized positions, loader can decode them on CPU */
20
+ decodeQuantizedPositions?: boolean;
21
+ /** Whether this is a tileset or a tile */
22
+ isTileset?: boolean | 'auto';
23
+ /** Controls which axis is "up" in glTF files */
24
+ assetGltfUpAxis?: 'x' | 'y' | 'z' | null;
25
+ };
26
+ };
12
27
 
13
28
  /**
14
29
  * Loader for 3D Tiles
@@ -32,31 +47,39 @@ export const Tiles3DLoader: LoaderWithParser = {
32
47
  }
33
48
  };
34
49
 
35
- function getBaseUri(tileset) {
36
- return path.dirname(tileset.url);
37
- }
50
+ /** Parses a tileset or tile */
51
+ async function parse(data, options: Tiles3DLoaderOptions = {}, context?: LoaderContext) {
52
+ // auto detect file type
53
+ const loaderOptions = options['3d-tiles'] || {};
54
+ let isTileset;
55
+ if (loaderOptions.isTileset === 'auto') {
56
+ isTileset = context?.url && context.url.indexOf('.json') !== -1;
57
+ } else {
58
+ isTileset = loaderOptions.isTileset;
59
+ }
38
60
 
39
- async function parseTile(arrayBuffer, options, context) {
40
- const tile = {
41
- content: {
42
- featureIds: null
43
- }
44
- };
45
- const byteOffset = 0;
46
- await parse3DTile(arrayBuffer, byteOffset, options, context, tile.content);
47
- return tile.content;
61
+ return (await isTileset)
62
+ ? parseTileset(data, options, context)
63
+ : parseTile(data, options, context);
48
64
  }
49
65
 
50
- async function parseTileset(data, options, context) {
66
+ /** Parse a tileset */
67
+ async function parseTileset(
68
+ data: ArrayBuffer,
69
+ options?: Tiles3DLoaderOptions,
70
+ context?: LoaderContext
71
+ ) {
51
72
  const tilesetJson = JSON.parse(new TextDecoder().decode(data));
73
+
52
74
  // eslint-disable-next-line no-use-before-define
53
- tilesetJson.loader = options.loader || Tiles3DLoader;
54
- tilesetJson.url = context.url;
75
+ tilesetJson.loader = options?.loader || Tiles3DLoader;
76
+ tilesetJson.url = context?.url || '';
77
+ tilesetJson.queryString = context?.queryString || '';
78
+
55
79
  // base path that non-absolute paths in tileset are relative to.
56
80
  tilesetJson.basePath = getBaseUri(tilesetJson);
57
- tilesetJson.root = hasImplicitTilingExtension(tilesetJson)
58
- ? await normalizeImplicitTileHeaders(tilesetJson)
59
- : normalizeTileHeaders(tilesetJson);
81
+ // TODO - check option types in normalizeTileHeaders
82
+ tilesetJson.root = await normalizeTileHeaders(tilesetJson, options || {});
60
83
 
61
84
  tilesetJson.type = TILESET_TYPE.TILES3D;
62
85
 
@@ -66,28 +89,23 @@ async function parseTileset(data, options, context) {
66
89
  return tilesetJson;
67
90
  }
68
91
 
69
- async function parse(data, options, context) {
70
- // auto detect file type
71
- const loaderOptions = options['3d-tiles'] || {};
72
- let isTileset;
73
- if (loaderOptions.isTileset === 'auto') {
74
- isTileset = context.url && context.url.indexOf('.json') !== -1;
75
- } else {
76
- isTileset = loaderOptions.isTileset;
77
- }
78
-
79
- if (isTileset) {
80
- data = await parseTileset(data, options, context);
81
- } else {
82
- data = await parseTile(data, options, context);
83
- }
84
-
85
- return data;
92
+ /** Parse a tile */
93
+ async function parseTile(
94
+ arrayBuffer: ArrayBuffer,
95
+ options?: Tiles3DLoaderOptions,
96
+ context?: LoaderContext
97
+ ) {
98
+ const tile = {
99
+ content: {
100
+ featureIds: null
101
+ }
102
+ };
103
+ const byteOffset = 0;
104
+ await parse3DTile(arrayBuffer, byteOffset, options, context, tile.content);
105
+ return tile.content;
86
106
  }
87
107
 
88
- function hasImplicitTilingExtension(tilesetJson) {
89
- return (
90
- tilesetJson?.extensionsRequired?.includes(IMPLICIT_TILING_EXTENSION_NAME) &&
91
- tilesetJson?.extensionsUsed?.includes(IMPLICIT_TILING_EXTENSION_NAME)
92
- );
108
+ /** Get base name */
109
+ function getBaseUri(tileset) {
110
+ return path.dirname(tileset.url);
93
111
  }
package/src/types.ts CHANGED
@@ -1,12 +1,12 @@
1
- import type {GLTFObject} from '@loaders.gl/gltf';
1
+ import type {GLTFPostprocessed} from '@loaders.gl/gltf';
2
2
  import {Matrix4, Vector3} from '@math.gl/core';
3
3
 
4
- export type BatchTableJson = {
4
+ export type FeatureTableJson = {
5
5
  [key: string]: any[];
6
6
  };
7
7
 
8
8
  export type B3DMContent = {
9
- batchTableJson?: BatchTableJson;
9
+ batchTableJson?: FeatureTableJson;
10
10
  byteLength: number;
11
11
  byteOffset: number;
12
12
  cartesianModelMatrix: Matrix4;
@@ -15,8 +15,8 @@ export type B3DMContent = {
15
15
  cartographicOrigin: Vector3;
16
16
  featureIds?: number[] | null;
17
17
  featureTableBinary?: Uint8Array;
18
- featureTableJson?: BatchTableJson;
19
- gltf?: GLTFObject;
18
+ featureTableJson?: FeatureTableJson;
19
+ gltf?: GLTFPostprocessed;
20
20
  gltfUpAxis: string;
21
21
  header: GLTFHeader;
22
22
  magic: number;
@@ -88,3 +88,18 @@ type BufferView = {
88
88
  byteOffset: number;
89
89
  byteLength: number;
90
90
  };
91
+
92
+ /**
93
+ * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling
94
+ */
95
+ export type ImplicitTilingExtension = {
96
+ subdivisionScheme: 'QUADTREE' | 'OCTREE';
97
+ maximumLevel?: number;
98
+ availableLevels: number;
99
+ subtreeLevels: number;
100
+ subtrees: SubtreeUri;
101
+ };
102
+
103
+ type SubtreeUri = {
104
+ uri: string;
105
+ };
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":"AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AACAC,UAAU,CAACC,OAAX,GAAqBD,UAAU,CAACC,OAAX,IAAsB,EAA3C;AACAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,OAAzB,EAAkCH,aAAlC,CAAjB","sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"file":"bundle.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cesium-ion-loader.ts"],"names":["Tiles3DLoader","getIonTilesetMetadata","preload","url","options","accessToken","assetId","Number","isFinite","matched","match","CesiumIonLoader","id","name","parse","data","context","loader"],"mappings":"AACA,SAAQA,aAAR,QAA4B,mBAA5B;AACA,SAAQC,qBAAR,QAAoC,eAApC;;AAEA,eAAeC,OAAf,CAAuBC,GAAvB,EAA4BC,OAAO,GAAG,EAAtC,EAA0C;AACxCA,EAAAA,OAAO,GAAGA,OAAO,CAAC,YAAD,CAAP,IAAyB,EAAnC;AAEA,QAAM;AAACC,IAAAA;AAAD,MAAgBD,OAAtB;AAEA,MAAIE,OAAO,GAAGF,OAAO,CAACE,OAAtB;;AACA,MAAI,CAACC,MAAM,CAACC,QAAP,CAAgBF,OAAhB,CAAL,EAA+B;AAC7B,UAAMG,OAAO,GAAGN,GAAG,CAACO,KAAJ,CAAU,0BAAV,CAAhB;AACAJ,IAAAA,OAAO,GAAGG,OAAO,IAAIA,OAAO,CAAC,CAAD,CAA5B;AACD;;AACD,SAAOR,qBAAqB,CAACI,WAAD,EAAcC,OAAd,CAA5B;AACD;;AAKD,OAAO,MAAMK,eAAiC,GAAG,EAC/C,GAAGX,aAD4C;AAE/CY,EAAAA,EAAE,EAAE,YAF2C;AAG/CC,EAAAA,IAAI,EAAE,YAHyC;AAK/CX,EAAAA,OAL+C;AAM/CY,EAAAA,KAAK,EAAE,OAAOC,IAAP,EAAaX,OAAb,EAAuBY,OAAvB,KAAoC;AACzCZ,IAAAA,OAAO,GAAG,EAAC,GAAGA;AAAJ,KAAV;AACAA,IAAAA,OAAO,CAAC,UAAD,CAAP,GAAsBA,OAAO,CAAC,YAAD,CAA7B;AAEAA,IAAAA,OAAO,CAACa,MAAR,GAAiBN,eAAjB;AACA,WAAOX,aAAa,CAACc,KAAd,CAAoBC,IAApB,EAA0BX,OAA1B,EAAmCY,OAAnC,CAAP;AACD,GAZ8C;AAa/CZ,EAAAA,OAAO,EAAE;AACP,kBAAc,EACZ,GAAGJ,aAAa,CAACI,OAAd,CAAsB,UAAtB,CADS;AAEZC,MAAAA,WAAW,EAAE;AAFD;AADP;AAbsC,CAA1C","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {Tiles3DLoader} from './tiles-3d-loader';\nimport {getIonTilesetMetadata} from './lib/ion/ion';\n\nasync function preload(url, options = {}) {\n options = options['cesium-ion'] || {};\n // @ts-ignore\n const {accessToken} = options;\n // @ts-ignore\n let assetId = options.assetId;\n if (!Number.isFinite(assetId)) {\n const matched = url.match(/\\/([0-9]+)\\/tileset.json/);\n assetId = matched && matched[1];\n }\n return getIonTilesetMetadata(accessToken, assetId);\n}\n\n/**\n * Loader for 3D tiles from Cesium ION\n */\nexport const CesiumIonLoader: LoaderWithParser = {\n ...Tiles3DLoader,\n id: 'cesium-ion',\n name: 'Cesium Ion',\n // @ts-ignore\n preload,\n parse: async (data, options?, context?) => {\n options = {...options};\n options['3d-tiles'] = options['cesium-ion'];\n // @ts-ignore\n options.loader = CesiumIonLoader;\n return Tiles3DLoader.parse(data, options, context); // , loader);\n },\n options: {\n 'cesium-ion': {\n ...Tiles3DLoader.options['3d-tiles'],\n accessToken: null\n }\n }\n};\n"],"file":"cesium-ion-loader.js"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["Tiles3DLoader","CesiumIonLoader","Tile3DSubtreeLoader","Tile3DWriter","default","Tile3DFeatureTable","Tile3DBatchTable","TILE3D_TYPE","getIonTilesetMetadata","_getIonTilesetMetadata"],"mappings":"AACA,SAAQA,aAAR,QAA4B,mBAA5B;AACA,SAAQC,eAAR,QAA8B,qBAA9B;AACA,SAAQC,mBAAR,QAAkC,0BAAlC;AAGA,SAAQC,YAAR,QAA2B,kBAA3B;AAGA,SAAQC,OAAO,IAAIC,kBAAnB,QAA4C,qCAA5C;AACA,SAAQD,OAAO,IAAIE,gBAAnB,QAA0C,mCAA1C;AAGA,SAAQC,WAAR,QAA0B,iBAA1B;AACA,SAAQC,qBAAqB,IAAIC,sBAAjC,QAA8D,eAA9D","sourcesContent":["// LOADERS\nexport {Tiles3DLoader} from './tiles-3d-loader';\nexport {CesiumIonLoader} from './cesium-ion-loader';\nexport {Tile3DSubtreeLoader} from './tile-3d-subtree-loader';\n\n// WRITERS\nexport {Tile3DWriter} from './tile-3d-writer';\n\n// CLASSES\nexport {default as Tile3DFeatureTable} from './lib/classes/tile-3d-feature-table';\nexport {default as Tile3DBatchTable} from './lib/classes/tile-3d-batch-table';\n\n// EXPERIMENTAL\nexport {TILE3D_TYPE} from './lib/constants';\nexport {getIonTilesetMetadata as _getIonTilesetMetadata} from './lib/ion/ion';\nexport type {BatchTableJson, B3DMContent, Node3D} from './types';\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/lib/classes/helpers/tile-3d-accessor-utils.ts"],"names":["GLType","assert","COMPONENTS_PER_ATTRIBUTE","SCALAR","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","UNPACKER","values","i","PACKER","x","createTypedArrayFromAccessor","tile3DAccessor","buffer","byteOffset","length","componentType","type","fromName","size","unpacker","packer","createTypedArray"],"mappings":"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","sourcesContent":["import {GLType} from '@loaders.gl/math'; // '@math.gl/geometry';\nimport {assert} from '@loaders.gl/loader-utils';\n\nconst COMPONENTS_PER_ATTRIBUTE = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4,\n MAT2: 4,\n MAT3: 9,\n MAT4: 16\n};\n\n// TODO - could just return typed array views...\n// prettier-ignore\nconst UNPACKER = {\n SCALAR: (values, i) => values[i],\n VEC2: (values, i) => [values[2 * i + 0], values[2 * i + 1]],\n VEC3: (values, i) => [values[3 * i + 0], values[3 * i + 1], values[3 * i + 2]],\n VEC4: (values, i) => [values[4 * i + 0], values[4 * i + 1], values[4 * i + 2], values[4 * i + 3]],\n // TODO: check column major\n MAT2: (values, i) => [\n values[4 * i + 0], values[4 * i + 1],\n values[4 * i + 2], values[4 * i + 3]\n ],\n MAT3: (values, i) => [\n values[9 * i + 0], values[9 * i + 1], values[9 * i + 2],\n values[9 * i + 3], values[9 * i + 4], values[9 * i + 5],\n values[9 * i + 6], values[9 * i + 7], values[9 * i + 8]\n ],\n MAT4: (values, i) => [\n values[16 * i + 0], values[16 * i + 1], values[16 * i + 2], values[16 * i + 3],\n values[16 * i + 4], values[16 * i + 5], values[16 * i + 6], values[16 * i + 7],\n values[16 * i + 8], values[16 * i + 9], values[16 * i + 10], values[16 * i + 11],\n values[16 * i + 12], values[16 * i + 13], values[16 * i + 14], values[16 * i + 15]\n ]\n};\n\nconst PACKER = {\n SCALAR: (x, values, i) => {\n values[i] = x;\n },\n VEC2: (x, values, i) => {\n values[2 * i + 0] = x[0];\n values[2 * i + 1] = x[1];\n },\n VEC3: (x, values, i) => {\n values[3 * i + 0] = x[0];\n values[3 * i + 1] = x[1];\n values[3 * i + 2] = x[2];\n },\n VEC4: (x, values, i) => {\n values[4 * i + 0] = x[0];\n values[4 * i + 1] = x[1];\n values[4 * i + 2] = x[2];\n values[4 * i + 3] = x[3];\n },\n // TODO: check column major correctness\n MAT2: (x, values, i) => {\n values[4 * i + 0] = x[0];\n values[4 * i + 1] = x[1];\n values[4 * i + 2] = x[2];\n values[4 * i + 3] = x[3];\n },\n MAT3: (x, values, i) => {\n values[9 * i + 0] = x[0];\n values[9 * i + 1] = x[1];\n values[9 * i + 2] = x[2];\n values[9 * i + 3] = x[3];\n values[9 * i + 4] = x[4];\n values[9 * i + 5] = x[5];\n values[9 * i + 6] = x[6];\n values[9 * i + 7] = x[7];\n values[9 * i + 8] = x[8];\n values[9 * i + 9] = x[9];\n },\n MAT4: (x, values, i) => {\n values[16 * i + 0] = x[0];\n values[16 * i + 1] = x[1];\n values[16 * i + 2] = x[2];\n values[16 * i + 3] = x[3];\n values[16 * i + 4] = x[4];\n values[16 * i + 5] = x[5];\n values[16 * i + 6] = x[6];\n values[16 * i + 7] = x[7];\n values[16 * i + 8] = x[8];\n values[16 * i + 9] = x[9];\n values[16 * i + 10] = x[10];\n values[16 * i + 11] = x[11];\n values[16 * i + 12] = x[12];\n values[16 * i + 13] = x[13];\n values[16 * i + 14] = x[14];\n values[16 * i + 15] = x[15];\n }\n};\n\nexport function createTypedArrayFromAccessor(tile3DAccessor, buffer, byteOffset, length) {\n const {componentType} = tile3DAccessor;\n assert(tile3DAccessor.componentType);\n const type = typeof componentType === 'string' ? GLType.fromName(componentType) : componentType;\n const size = COMPONENTS_PER_ATTRIBUTE[tile3DAccessor.type];\n const unpacker = UNPACKER[tile3DAccessor.type];\n const packer = PACKER[tile3DAccessor.type];\n\n byteOffset += tile3DAccessor.byteOffset;\n const values = GLType.createTypedArray(type, buffer, byteOffset, size * length);\n\n return {\n values,\n type,\n size,\n unpacker,\n packer\n };\n}\n"],"file":"tile-3d-accessor-utils.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/classes/tile-3d-batch-table-hierarchy.ts"],"names":["defined","x","undefined","initializeHierarchy","batchTable","jsonHeader","binaryBody","hierarchy","getExtension","legacyHierarchy","HIERARCHY","console","warn","extensions","initializeHierarchyValues","hierarchyJson","i","classId","binaryAccessor","instancesLength","classes","classIds","parentCounts","parentIds","parentIdsLength","byteOffset","componentType","defaultValue","GL","UNSIGNED_SHORT","type","AttributeType","SCALAR","getBinaryAccessor","createArrayBufferView","buffer","parentIndexes","Uint16Array","classesLength","length","classInstancesLength","properties","instances","binaryProperties","getBinaryProperties","combine","classCounts","Array","fill","classIndexes","validateHierarchy","traverseHierarchy","instanceIndex","endConditionCallback","traverseHierarchyMultipleParents","traverseHierarchySingleParent","visited","scratchVisited","Math","max","visitedMarker","marker","stack","scratchStack","push","pop","result","parentCount","parentIndex","parentId","hasParent","Error","scratchValidateStack","validateInstance","assert","indexOf"],"mappings":"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","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\n// TODO - Finish hierarchy suypport: this file is only half ported\n/* eslint-disable */\n// @ts-nocheck\nconst defined = (x) => x !== undefined;\n\nexport function initializeHierarchy(batchTable, jsonHeader, binaryBody) {\n if (!jsonHeader) {\n return null;\n }\n\n let hierarchy = batchTable.getExtension('3DTILES_batch_table_hierarchy');\n\n const legacyHierarchy = jsonHeader.HIERARCHY;\n if (legacyHierarchy) {\n // eslint-disable-next-line\n console.warn('3D Tile Parser: HIERARCHY is deprecated. Use 3DTILES_batch_table_hierarchy.');\n jsonHeader.extensions = jsonHeader.extensions || {};\n jsonHeader.extensions['3DTILES_batch_table_hierarchy'] = legacyHierarchy;\n hierarchy = legacyHierarchy;\n }\n\n if (!hierarchy) {\n return null;\n }\n\n return initializeHierarchyValues(hierarchy, binaryBody);\n}\n\n// eslint-disable-next-line max-statements\nfunction initializeHierarchyValues(hierarchyJson, binaryBody) {\n let i;\n let classId;\n let binaryAccessor;\n\n const instancesLength = hierarchyJson.instancesLength;\n const classes = hierarchyJson.classes;\n let classIds = hierarchyJson.classIds;\n let parentCounts = hierarchyJson.parentCounts;\n let parentIds = hierarchyJson.parentIds;\n let parentIdsLength = instancesLength;\n\n if (defined(classIds.byteOffset)) {\n classIds.componentType = defaultValue(classIds.componentType, GL.UNSIGNED_SHORT);\n classIds.type = AttributeType.SCALAR;\n binaryAccessor = getBinaryAccessor(classIds);\n classIds = binaryAccessor.createArrayBufferView(\n binaryBody.buffer,\n binaryBody.byteOffset + classIds.byteOffset,\n instancesLength\n );\n }\n\n let parentIndexes;\n if (defined(parentCounts)) {\n if (defined(parentCounts.byteOffset)) {\n parentCounts.componentType = defaultValue(parentCounts.componentType, GL.UNSIGNED_SHORT);\n parentCounts.type = AttributeType.SCALAR;\n binaryAccessor = getBinaryAccessor(parentCounts);\n parentCounts = binaryAccessor.createArrayBufferView(\n binaryBody.buffer,\n binaryBody.byteOffset + parentCounts.byteOffset,\n instancesLength\n );\n }\n parentIndexes = new Uint16Array(instancesLength);\n parentIdsLength = 0;\n for (i = 0; i < instancesLength; ++i) {\n parentIndexes[i] = parentIdsLength;\n parentIdsLength += parentCounts[i];\n }\n }\n\n if (defined(parentIds) && defined(parentIds.byteOffset)) {\n parentIds.componentType = defaultValue(parentIds.componentType, GL.UNSIGNED_SHORT);\n parentIds.type = AttributeType.SCALAR;\n binaryAccessor = getBinaryAccessor(parentIds);\n parentIds = binaryAccessor.createArrayBufferView(\n binaryBody.buffer,\n binaryBody.byteOffset + parentIds.byteOffset,\n parentIdsLength\n );\n }\n\n const classesLength = classes.length;\n for (i = 0; i < classesLength; ++i) {\n const classInstancesLength = classes[i].length;\n const properties = classes[i].instances;\n const binaryProperties = getBinaryProperties(classInstancesLength, properties, binaryBody);\n classes[i].instances = combine(binaryProperties, properties);\n }\n\n const classCounts = new Array(classesLength).fill(0);\n const classIndexes = new Uint16Array(instancesLength);\n for (i = 0; i < instancesLength; ++i) {\n classId = classIds[i];\n classIndexes[i] = classCounts[classId];\n ++classCounts[classId];\n }\n\n const hierarchy = {\n classes,\n classIds,\n classIndexes,\n parentCounts,\n parentIndexes,\n parentIds\n };\n\n validateHierarchy(hierarchy);\n\n return hierarchy;\n}\n\n// HELPER CODE\n\n// Traverse over the hierarchy and process each instance with the endConditionCallback.\n// When the endConditionCallback returns a value, the traversal stops and that value is returned.\nexport function traverseHierarchy(hierarchy, instanceIndex, endConditionCallback) {\n if (!hierarchy) {\n return;\n }\n\n const parentCounts = hierarchy.parentCounts;\n const parentIds = hierarchy.parentIds;\n if (parentIds) {\n return endConditionCallback(hierarchy, instanceIndex);\n }\n if (parentCounts > 0) {\n return traverseHierarchyMultipleParents(hierarchy, instanceIndex, endConditionCallback);\n }\n return traverseHierarchySingleParent(hierarchy, instanceIndex, endConditionCallback);\n}\n\n// eslint-disable-next-line max-statements\nfunction traverseHierarchyMultipleParents(hierarchy, instanceIndex, endConditionCallback) {\n const classIds = hierarchy.classIds;\n const parentCounts = hierarchy.parentCounts;\n const parentIds = hierarchy.parentIds;\n const parentIndexes = hierarchy.parentIndexes;\n const instancesLength = classIds.length;\n\n // Ignore instances that have already been visited. This occurs in diamond inheritance situations.\n // Use a marker value to indicate that an instance has been visited, which increments with each run.\n // This is more efficient than clearing the visited array every time.\n const visited = scratchVisited;\n visited.length = Math.max(visited.length, instancesLength);\n const visitedMarker = ++marker;\n\n const stack = scratchStack;\n stack.length = 0;\n stack.push(instanceIndex);\n\n while (stack.length > 0) {\n instanceIndex = stack.pop();\n if (visited[instanceIndex] === visitedMarker) {\n // This instance has already been visited, stop traversal\n continue;\n }\n visited[instanceIndex] = visitedMarker;\n const result = endConditionCallback(hierarchy, instanceIndex);\n if (defined(result)) {\n // The end condition was met, stop the traversal and return the result\n return result;\n }\n const parentCount = parentCounts[instanceIndex];\n const parentIndex = parentIndexes[instanceIndex];\n for (let i = 0; i < parentCount; ++i) {\n const parentId = parentIds[parentIndex + i];\n // Stop the traversal when the instance has no parent (its parentId equals itself)\n // else add the parent to the stack to continue the traversal.\n if (parentId !== instanceIndex) {\n stack.push(parentId);\n }\n }\n }\n\n return null;\n}\n\nfunction traverseHierarchySingleParent(hierarchy, instanceIndex, endConditionCallback) {\n let hasParent = true;\n while (hasParent) {\n const result = endConditionCallback(hierarchy, instanceIndex);\n if (defined(result)) {\n // The end condition was met, stop the traversal and return the result\n return result;\n }\n const parentId = hierarchy.parentIds[instanceIndex];\n hasParent = parentId !== instanceIndex;\n instanceIndex = parentId;\n }\n throw new Error('traverseHierarchySingleParent');\n}\n\n// DEBUG CODE\n\nfunction validateHierarchy(hierarchy) {\n const scratchValidateStack = [];\n\n const classIds = hierarchy.classIds;\n const instancesLength = classIds.length;\n\n for (let i = 0; i < instancesLength; ++i) {\n validateInstance(hierarchy, i, stack);\n }\n}\n\nfunction validateInstance(hierarchy, instanceIndex, stack) {\n const parentCounts = hierarchy.parentCounts;\n const parentIds = hierarchy.parentIds;\n const parentIndexes = hierarchy.parentIndexes;\n const classIds = hierarchy.classIds;\n const instancesLength = classIds.length;\n\n if (!defined(parentIds)) {\n // No need to validate if there are no parents\n return;\n }\n\n assert(\n instanceIndex < instancesLength,\n `Parent index ${instanceIndex} exceeds the total number of instances: ${instancesLength}`\n );\n assert(\n stack.indexOf(instanceIndex) === -1,\n 'Circular dependency detected in the batch table hierarchy.'\n );\n\n stack.push(instanceIndex);\n const parentCount = defined(parentCounts) ? parentCounts[instanceIndex] : 1;\n const parentIndex = defined(parentCounts) ? parentIndexes[instanceIndex] : instanceIndex;\n for (let i = 0; i < parentCount; ++i) {\n const parentId = parentIds[parentIndex + i];\n // Stop the traversal when the instance has no parent (its parentId equals itself), else continue the traversal.\n if (parentId !== instanceIndex) {\n validateInstance(hierarchy, parentId, stack);\n }\n }\n stack.pop(instanceIndex);\n}\n"],"file":"tile-3d-batch-table-hierarchy.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/classes/tile-3d-batch-table.ts"],"names":["assert","createTypedArrayFromAccessor","initializeHierarchy","traverseHierarchy","defined","x","undefined","clone","y","IGNORED_PROPERTY_FIELDS","HIERARCHY","extensions","extras","Tile3DBatchTableParser","constructor","json","binary","featureCount","options","_extensions","_properties","propertyName","_binaryProperties","_initializeBinaryProperties","_hierarchy","getExtension","extensionName","memorySizeInBytes","isClass","batchId","className","_checkBatchId","result","hierarchy","instanceIndex","classId","classIds","instanceClass","classes","name","isExactClass","getExactClassName","hasProperty","_hasPropertyInHierarchy","getPropertyNames","results","length","propertyNames","Object","keys","push","_getPropertyNamesInHierarchy","getProperty","binaryProperty","_getBinaryProperty","propertyValues","hierarchyProperty","_getHierarchyProperty","setProperty","value","_setBinaryProperty","_setHierarchyProperty","Array","valid","Error","index","unpack","typedArray","pack","binaryProperties","property","_initializeBinaryProperty","tile3DAccessor","type","accessor","buffer","byteOffset","values","componentCount","size","unpacker","packer","instances","hasOwnProperty","indexOf","indexInClass","classIndexes","batchTable"],"mappings":";AAGA,SAAQA,MAAR,QAAqB,0BAArB;AAEA,SAAQC,4BAAR,QAA2C,kCAA3C;AACA,SAAQC,mBAAR,EAA6BC,iBAA7B,QAAqD,iCAArD;;AAEA,SAASC,OAAT,CAAiBC,CAAjB,EAAoB;AAClB,SAAOA,CAAC,KAAKC,SAAN,IAAmBD,CAAC,KAAK,IAAhC;AACD;;AAED,MAAME,KAAK,GAAG,CAACF,CAAD,EAAIG,CAAJ,KAAUH,CAAxB;;AAGA,MAAMI,uBAAuB,GAAG;AAC9BC,EAAAA,SAAS,EAAE,IADmB;AAE9BC,EAAAA,UAAU,EAAE,IAFkB;AAG9BC,EAAAA,MAAM,EAAE;AAHsB,CAAhC;AAOA,eAAe,MAAMC,sBAAN,CAA6B;AAW1CC,EAAAA,WAAW,CAACC,IAAD,EAAOC,MAAP,EAAeC,YAAf,EAA6BC,OAAO,GAAG,EAAvC,EAA2C;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AACpDlB,IAAAA,MAAM,CAACiB,YAAY,IAAI,CAAjB,CAAN;AACA,SAAKF,IAAL,GAAYA,IAAI,IAAI,EAApB;AACA,SAAKC,MAAL,GAAcA,MAAd;AACA,SAAKC,YAAL,GAAoBA,YAApB;AAEA,SAAKE,WAAL,GAAmB,oBAAKJ,IAAL,0DAAWJ,UAAX,KAAyB,EAA5C;AAGA,SAAKS,WAAL,GAAmB,EAAnB;;AACA,SAAK,MAAMC,YAAX,IAA2B,KAAKN,IAAhC,EAAsC;AACpC,UAAI,CAACN,uBAAuB,CAACY,YAAD,CAA5B,EAA4C;AAC1C,aAAKD,WAAL,CAAiBC,YAAjB,IAAiC,KAAKN,IAAL,CAAUM,YAAV,CAAjC;AACD;AACF;;AAED,SAAKC,iBAAL,GAAyB,KAAKC,2BAAL,EAAzB;;AAGA,QAAIL,OAAO,CAAC,+BAAD,CAAX,EAA8C;AAC5C,WAAKM,UAAL,GAAkBtB,mBAAmB,CAAC,IAAD,EAAO,KAAKa,IAAZ,EAAkB,KAAKC,MAAvB,CAArC;AACD;AACF;;AAEDS,EAAAA,YAAY,CAACC,aAAD,EAAgB;AAC1B,WAAO,KAAKX,IAAL,IAAa,KAAKA,IAAL,CAAUJ,UAAvB,IAAqC,KAAKI,IAAL,CAAUJ,UAAV,CAAqBe,aAArB,CAA5C;AACD;;AAEDC,EAAAA,iBAAiB,GAAW;AAC1B,WAAO,CAAP;AACD;;AAEDC,EAAAA,OAAO,CAACC,OAAD,EAAUC,SAAV,EAAsC;AAC3C,SAAKC,aAAL,CAAmBF,OAAnB;;AACA7B,IAAAA,MAAM,CAAC,OAAO8B,SAAP,KAAqB,QAAtB,EAAgCA,SAAhC,CAAN;;AAGA,QAAI,KAAKN,UAAT,EAAqB;AAInB,YAAMQ,MAAM,GAAG7B,iBAAiB,CAAC,KAAKqB,UAAN,EAAkBK,OAAlB,EAA2B,CAACI,SAAD,EAAYC,aAAZ,KAA8B;AACvF,cAAMC,OAAO,GAAGF,SAAS,CAACG,QAAV,CAAmBF,aAAnB,CAAhB;AACA,cAAMG,aAAa,GAAGJ,SAAS,CAACK,OAAV,CAAkBH,OAAlB,CAAtB;AACA,eAAOE,aAAa,CAACE,IAAd,KAAuBT,SAA9B;AACD,OAJ+B,CAAhC;AAKA,aAAO1B,OAAO,CAAC4B,MAAD,CAAd;AACD;;AAED,WAAO,KAAP;AACD;;AAEDQ,EAAAA,YAAY,CAACX,OAAD,EAAUC,SAAV,EAAqB;AAC/B9B,IAAAA,MAAM,CAAC,OAAO8B,SAAP,KAAqB,QAAtB,EAAgCA,SAAhC,CAAN;AAEA,WAAO,KAAKW,iBAAL,CAAuBZ,OAAvB,MAAoCC,SAA3C;AACD;;AAEDW,EAAAA,iBAAiB,CAACZ,OAAD,EAAU;AACzB,SAAKE,aAAL,CAAmBF,OAAnB;;AAGA,QAAI,KAAKL,UAAT,EAAqB;AACnB,YAAMW,OAAO,GAAG,KAAKX,UAAL,CAAgBY,QAAhB,CAAyBP,OAAzB,CAAhB;AACA,YAAMQ,aAAa,GAAG,KAAKb,UAAL,CAAgBc,OAAhB,CAAwBH,OAAxB,CAAtB;AACA,aAAOE,aAAa,CAACE,IAArB;AACD;;AAED,WAAOjC,SAAP;AACD;;AAEDoC,EAAAA,WAAW,CAACb,OAAD,EAAUU,IAAV,EAAgB;AACzB,SAAKR,aAAL,CAAmBF,OAAnB;;AACA7B,IAAAA,MAAM,CAAC,OAAOuC,IAAP,KAAgB,QAAjB,EAA2BA,IAA3B,CAAN;AAEA,WAAOnC,OAAO,CAAC,KAAKgB,WAAL,CAAiBmB,IAAjB,CAAD,CAAP,IAAmC,KAAKI,uBAAL,CAA6Bd,OAA7B,EAAsCU,IAAtC,CAA1C;AACD;;AAEDK,EAAAA,gBAAgB,CAACf,OAAD,EAAUgB,OAAV,EAAmB;AACjC,SAAKd,aAAL,CAAmBF,OAAnB;;AAEAgB,IAAAA,OAAO,GAAGzC,OAAO,CAACyC,OAAD,CAAP,GAAmBA,OAAnB,GAA6B,EAAvC;AACAA,IAAAA,OAAO,CAACC,MAAR,GAAiB,CAAjB;AAEA,UAAMC,aAAa,GAAGC,MAAM,CAACC,IAAP,CAAY,KAAK7B,WAAjB,CAAtB;AACAyB,IAAAA,OAAO,CAACK,IAAR,CAAa,GAAGH,aAAhB;;AAEA,QAAI,KAAKvB,UAAT,EAAqB;AACnB,WAAK2B,4BAAL,CAAkCtB,OAAlC,EAA2CgB,OAA3C;AACD;;AAED,WAAOA,OAAP;AACD;;AAEDO,EAAAA,WAAW,CAACvB,OAAD,EAAUU,IAAV,EAAgB;AACzB,SAAKR,aAAL,CAAmBF,OAAnB;;AACA7B,IAAAA,MAAM,CAAC,OAAOuC,IAAP,KAAgB,QAAjB,EAA2BA,IAA3B,CAAN;;AAEA,QAAI,KAAKjB,iBAAT,EAA4B;AAC1B,YAAM+B,cAAc,GAAG,KAAK/B,iBAAL,CAAuBiB,IAAvB,CAAvB;;AACA,UAAInC,OAAO,CAACiD,cAAD,CAAX,EAA6B;AAC3B,eAAO,KAAKC,kBAAL,CAAwBD,cAAxB,EAAwCxB,OAAxC,CAAP;AACD;AACF;;AAED,UAAM0B,cAAc,GAAG,KAAKnC,WAAL,CAAiBmB,IAAjB,CAAvB;;AACA,QAAInC,OAAO,CAACmD,cAAD,CAAX,EAA6B;AAC3B,aAAOhD,KAAK,CAACgD,cAAc,CAAC1B,OAAD,CAAf,EAA0B,IAA1B,CAAZ;AACD;;AAGD,QAAI,KAAKL,UAAT,EAAqB;AACnB,YAAMgC,iBAAiB,GAAG,KAAKC,qBAAL,CAA2B5B,OAA3B,EAAoCU,IAApC,CAA1B;;AACA,UAAInC,OAAO,CAACoD,iBAAD,CAAX,EAAgC;AAC9B,eAAOA,iBAAP;AACD;AACF;;AAED,WAAOlD,SAAP;AACD;;AAEDoD,EAAAA,WAAW,CAAC7B,OAAD,EAAUU,IAAV,EAAgBoB,KAAhB,EAAuB;AAChC,UAAM1C,YAAY,GAAG,KAAKA,YAA1B;;AAEA,SAAKc,aAAL,CAAmBF,OAAnB;;AACA7B,IAAAA,MAAM,CAAC,OAAOuC,IAAP,KAAgB,QAAjB,EAA2BA,IAA3B,CAAN;;AAEA,QAAI,KAAKjB,iBAAT,EAA4B;AAC1B,YAAM+B,cAAc,GAAG,KAAK/B,iBAAL,CAAuBiB,IAAvB,CAAvB;;AACA,UAAIc,cAAJ,EAAoB;AAClB,aAAKO,kBAAL,CAAwBP,cAAxB,EAAwCxB,OAAxC,EAAiD8B,KAAjD;;AACA;AACD;AACF;;AAGD,QAAI,KAAKnC,UAAT,EAAqB;AACnB,UAAI,KAAKqC,qBAAL,CAA2B,IAA3B,EAAiChC,OAAjC,EAA0CU,IAA1C,EAAgDoB,KAAhD,CAAJ,EAA4D;AAC1D;AACD;AACF;;AAED,QAAIJ,cAAc,GAAG,KAAKnC,WAAL,CAAiBmB,IAAjB,CAArB;;AACA,QAAI,CAACnC,OAAO,CAACmD,cAAD,CAAZ,EAA8B;AAE5B,WAAKnC,WAAL,CAAiBmB,IAAjB,IAAyB,IAAIuB,KAAJ,CAAU7C,YAAV,CAAzB;AACAsC,MAAAA,cAAc,GAAG,KAAKnC,WAAL,CAAiBmB,IAAjB,CAAjB;AACD;;AAEDgB,IAAAA,cAAc,CAAC1B,OAAD,CAAd,GAA0BtB,KAAK,CAACoD,KAAD,EAAQ,IAAR,CAA/B;AACD;;AAID5B,EAAAA,aAAa,CAACF,OAAD,EAAU;AACrB,UAAMkC,KAAK,GAAGlC,OAAO,IAAI,CAAX,IAAgBA,OAAO,GAAG,KAAKZ,YAA7C;;AACA,QAAI,CAAC8C,KAAL,EAAY;AACV,YAAM,IAAIC,KAAJ,CAAU,6CAAV,CAAN;AACD;AACF;;AAEDV,EAAAA,kBAAkB,CAACD,cAAD,EAAiBY,KAAjB,EAAwB;AACxC,WAAOZ,cAAc,CAACa,MAAf,CAAsBb,cAAc,CAACc,UAArC,EAAiDF,KAAjD,CAAP;AACD;;AAEDL,EAAAA,kBAAkB,CAACP,cAAD,EAAiBY,KAAjB,EAAwBN,KAAxB,EAA+B;AAC/CN,IAAAA,cAAc,CAACe,IAAf,CAAoBT,KAApB,EAA2BN,cAAc,CAACc,UAA1C,EAAsDF,KAAtD;AACD;;AAED1C,EAAAA,2BAA2B,GAAG;AAC5B,QAAI8C,gBAA4C,GAAG,IAAnD;;AACA,SAAK,MAAM9B,IAAX,IAAmB,KAAKnB,WAAxB,EAAqC;AACnC,YAAMkD,QAAQ,GAAG,KAAKlD,WAAL,CAAiBmB,IAAjB,CAAjB;;AACA,YAAMc,cAAc,GAAG,KAAKkB,yBAAL,CAA+BhC,IAA/B,EAAqC+B,QAArC,CAAvB;;AAGA,UAAIjB,cAAJ,EAAoB;AAClBgB,QAAAA,gBAAgB,GAAGA,gBAAgB,IAAI,EAAvC;AACAA,QAAAA,gBAAgB,CAAC9B,IAAD,CAAhB,GAAyBc,cAAzB;AACD;AACF;;AACD,WAAOgB,gBAAP;AACD;;AAEDE,EAAAA,yBAAyB,CAAChC,IAAD,EAAO+B,QAAP,EAAiB;AACxC,QAAI,gBAAgBA,QAApB,EAA8B;AAE5B,YAAME,cAAc,GAAGF,QAAvB;AAEAtE,MAAAA,MAAM,CAAC,KAAKgB,MAAN,qBAA0BuB,IAA1B,qCAAN;AACAvC,MAAAA,MAAM,CAACwE,cAAc,CAACC,IAAhB,qBAAkClC,IAAlC,uBAAN;AAEA,YAAMmC,QAAQ,GAAGzE,4BAA4B,CAC3CuE,cAD2C,EAE3C,KAAKxD,MAAL,CAAY2D,MAF+B,EAG3C,KAAK3D,MAAL,CAAY4D,UAAZ,GAAyB,CAHkB,EAI3C,KAAK3D,YAJsC,CAA7C;AASA,aAAO;AACLkD,QAAAA,UAAU,EAAEO,QAAQ,CAACG,MADhB;AAELC,QAAAA,cAAc,EAAEJ,QAAQ,CAACK,IAFpB;AAGLb,QAAAA,MAAM,EAAEQ,QAAQ,CAACM,QAHZ;AAILZ,QAAAA,IAAI,EAAEM,QAAQ,CAACO;AAJV,OAAP;AAMD;;AAED,WAAO,IAAP;AACD;;AAIDtC,EAAAA,uBAAuB,CAACd,OAAD,EAAUU,IAAV,EAAgB;AACrC,QAAI,CAAC,KAAKf,UAAV,EAAsB;AACpB,aAAO,KAAP;AACD;;AAED,UAAMQ,MAAM,GAAG7B,iBAAiB,CAAC,KAAKqB,UAAN,EAAkBK,OAAlB,EAA2B,CAACI,SAAD,EAAYC,aAAZ,KAA8B;AACvF,YAAMC,OAAO,GAAGF,SAAS,CAACG,QAAV,CAAmBF,aAAnB,CAAhB;AACA,YAAMgD,SAAS,GAAGjD,SAAS,CAACK,OAAV,CAAkBH,OAAlB,EAA2B+C,SAA7C;AACA,aAAO9E,OAAO,CAAC8E,SAAS,CAAC3C,IAAD,CAAV,CAAd;AACD,KAJ+B,CAAhC;AAMA,WAAOnC,OAAO,CAAC4B,MAAD,CAAd;AACD;;AAEDmB,EAAAA,4BAA4B,CAACtB,OAAD,EAAUgB,OAAV,EAAmB;AAC7C1C,IAAAA,iBAAiB,CAAC,KAAKqB,UAAN,EAAkBK,OAAlB,EAA2B,CAACI,SAAD,EAAYC,aAAZ,KAA8B;AACxE,YAAMC,OAAO,GAAGF,SAAS,CAACG,QAAV,CAAmBF,aAAnB,CAAhB;AACA,YAAMgD,SAAS,GAAGjD,SAAS,CAACK,OAAV,CAAkBH,OAAlB,EAA2B+C,SAA7C;;AACA,WAAK,MAAM3C,IAAX,IAAmB2C,SAAnB,EAA8B;AAC5B,YAAIA,SAAS,CAACC,cAAV,CAAyB5C,IAAzB,CAAJ,EAAoC;AAClC,cAAIM,OAAO,CAACuC,OAAR,CAAgB7C,IAAhB,MAA0B,CAAC,CAA/B,EAAkC;AAChCM,YAAAA,OAAO,CAACK,IAAR,CAAaX,IAAb;AACD;AACF;AACF;AACF,KAVgB,CAAjB;AAWD;;AAEDkB,EAAAA,qBAAqB,CAAC5B,OAAD,EAAUU,IAAV,EAAgB;AACnC,WAAOpC,iBAAiB,CAAC,KAAKqB,UAAN,EAAkBK,OAAlB,EAA2B,CAACI,SAAD,EAAYC,aAAZ,KAA8B;AAC/E,YAAMC,OAAO,GAAGF,SAAS,CAACG,QAAV,CAAmBF,aAAnB,CAAhB;AACA,YAAMG,aAAa,GAAGJ,SAAS,CAACK,OAAV,CAAkBH,OAAlB,CAAtB;AACA,YAAMkD,YAAY,GAAGpD,SAAS,CAACqD,YAAV,CAAuBpD,aAAvB,CAArB;AACA,YAAMqB,cAAc,GAAGlB,aAAa,CAAC6C,SAAd,CAAwB3C,IAAxB,CAAvB;;AACA,UAAInC,OAAO,CAACmD,cAAD,CAAX,EAA6B;AAC3B,YAAInD,OAAO,CAACmD,cAAc,CAACY,UAAhB,CAAX,EAAwC;AACtC,iBAAO,KAAKb,kBAAL,CAAwBC,cAAxB,EAAwC8B,YAAxC,CAAP;AACD;;AACD,eAAO9E,KAAK,CAACgD,cAAc,CAAC8B,YAAD,CAAf,EAA+B,IAA/B,CAAZ;AACD;;AACD,aAAO,IAAP;AACD,KAZuB,CAAxB;AAaD;;AAEDxB,EAAAA,qBAAqB,CAAC0B,UAAD,EAAa1D,OAAb,EAAsBU,IAAtB,EAA4BoB,KAA5B,EAAmC;AACtD,UAAM3B,MAAM,GAAG7B,iBAAiB,CAAC,KAAKqB,UAAN,EAAkBK,OAAlB,EAA2B,CAACI,SAAD,EAAYC,aAAZ,KAA8B;AACvF,YAAMC,OAAO,GAAGF,SAAS,CAACG,QAAV,CAAmBF,aAAnB,CAAhB;AACA,YAAMG,aAAa,GAAGJ,SAAS,CAACK,OAAV,CAAkBH,OAAlB,CAAtB;AACA,YAAMkD,YAAY,GAAGpD,SAAS,CAACqD,YAAV,CAAuBpD,aAAvB,CAArB;AACA,YAAMqB,cAAc,GAAGlB,aAAa,CAAC6C,SAAd,CAAwB3C,IAAxB,CAAvB;;AACA,UAAInC,OAAO,CAACmD,cAAD,CAAX,EAA6B;AAC3BvD,QAAAA,MAAM,CAACkC,aAAa,KAAKL,OAAnB,iCAAmDU,IAAnD,sBAAN;;AACA,YAAInC,OAAO,CAACmD,cAAc,CAACY,UAAhB,CAAX,EAAwC;AACtC,eAAKP,kBAAL,CAAwBL,cAAxB,EAAwC8B,YAAxC,EAAsD1B,KAAtD;AACD,SAFD,MAEO;AACLJ,UAAAA,cAAc,CAAC8B,YAAD,CAAd,GAA+B9E,KAAK,CAACoD,KAAD,EAAQ,IAAR,CAApC;AACD;;AACD,eAAO,IAAP;AACD;;AACD,aAAO,KAAP;AACD,KAf+B,CAAhC;AAgBA,WAAOvD,OAAO,CAAC4B,MAAD,CAAd;AACD;;AA/RyC","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {assert} from '@loaders.gl/loader-utils';\n\nimport {createTypedArrayFromAccessor} from './helpers/tile-3d-accessor-utils';\nimport {initializeHierarchy, traverseHierarchy} from './tile-3d-batch-table-hierarchy';\n\nfunction defined(x) {\n return x !== undefined && x !== null;\n}\n\nconst clone = (x, y) => x;\n\n// These top level fields in the batch table json are not properties\nconst IGNORED_PROPERTY_FIELDS = {\n HIERARCHY: true, // Deprecated HIERARCHY property\n extensions: true,\n extras: true\n};\n\n// The size of this array equals the maximum instance count among all loaded tiles, which has the potential to be large.\nexport default class Tile3DBatchTableParser {\n json;\n binary;\n featureCount;\n _extensions;\n // Copy all top-level property fields from the json object, ignoring special fields\n _properties;\n _binaryProperties;\n // TODO: hierarchy support is only partially implemented and not tested\n _hierarchy;\n\n constructor(json, binary, featureCount, options = {}) {\n assert(featureCount >= 0);\n this.json = json || {};\n this.binary = binary;\n this.featureCount = featureCount;\n\n this._extensions = this.json?.extensions || {};\n\n // Copy all top-level property fields from the json object, ignoring special fields\n this._properties = {};\n for (const propertyName in this.json) {\n if (!IGNORED_PROPERTY_FIELDS[propertyName]) {\n this._properties[propertyName] = this.json[propertyName];\n }\n }\n\n this._binaryProperties = this._initializeBinaryProperties();\n\n // TODO: hierarchy support is only partially implemented and not tested\n if (options['3DTILES_batch_table_hierarchy']) {\n this._hierarchy = initializeHierarchy(this, this.json, this.binary);\n }\n }\n\n getExtension(extensionName) {\n return this.json && this.json.extensions && this.json.extensions[extensionName];\n }\n\n memorySizeInBytes(): number {\n return 0;\n }\n\n isClass(batchId, className: string): boolean {\n this._checkBatchId(batchId);\n assert(typeof className === 'string', className);\n\n // extension: 3DTILES_batch_table_hierarchy\n if (this._hierarchy) {\n // PERFORMANCE_IDEA : cache results in the ancestor classes\n // to speed up this check if this area becomes a hotspot\n // PERFORMANCE_IDEA : treat class names as integers for faster comparisons\n const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instanceClass = hierarchy.classes[classId];\n return instanceClass.name === className;\n });\n return defined(result);\n }\n\n return false;\n }\n\n isExactClass(batchId, className) {\n assert(typeof className === 'string', className);\n\n return this.getExactClassName(batchId) === className;\n }\n\n getExactClassName(batchId) {\n this._checkBatchId(batchId);\n\n // extension: 3DTILES_batch_table_hierarchy\n if (this._hierarchy) {\n const classId = this._hierarchy.classIds[batchId];\n const instanceClass = this._hierarchy.classes[classId];\n return instanceClass.name;\n }\n\n return undefined;\n }\n\n hasProperty(batchId, name) {\n this._checkBatchId(batchId);\n assert(typeof name === 'string', name);\n\n return defined(this._properties[name]) || this._hasPropertyInHierarchy(batchId, name);\n }\n\n getPropertyNames(batchId, results) {\n this._checkBatchId(batchId);\n\n results = defined(results) ? results : [];\n results.length = 0;\n\n const propertyNames = Object.keys(this._properties);\n results.push(...propertyNames);\n\n if (this._hierarchy) {\n this._getPropertyNamesInHierarchy(batchId, results);\n }\n\n return results;\n }\n\n getProperty(batchId, name) {\n this._checkBatchId(batchId);\n assert(typeof name === 'string', name);\n\n if (this._binaryProperties) {\n const binaryProperty = this._binaryProperties[name];\n if (defined(binaryProperty)) {\n return this._getBinaryProperty(binaryProperty, batchId);\n }\n }\n\n const propertyValues = this._properties[name];\n if (defined(propertyValues)) {\n return clone(propertyValues[batchId], true);\n }\n\n // EXTENSION: 3DTILES_batch_table_hierarchy\n if (this._hierarchy) {\n const hierarchyProperty = this._getHierarchyProperty(batchId, name);\n if (defined(hierarchyProperty)) {\n return hierarchyProperty;\n }\n }\n\n return undefined;\n }\n\n setProperty(batchId, name, value) {\n const featureCount = this.featureCount;\n\n this._checkBatchId(batchId);\n assert(typeof name === 'string', name);\n\n if (this._binaryProperties) {\n const binaryProperty = this._binaryProperties[name];\n if (binaryProperty) {\n this._setBinaryProperty(binaryProperty, batchId, value);\n return;\n }\n }\n\n // EXTENSION: 3DTILES_batch_table_hierarchy\n if (this._hierarchy) {\n if (this._setHierarchyProperty(this, batchId, name, value)) {\n return;\n }\n }\n\n let propertyValues = this._properties[name];\n if (!defined(propertyValues)) {\n // Property does not exist. Create it.\n this._properties[name] = new Array(featureCount);\n propertyValues = this._properties[name];\n }\n\n propertyValues[batchId] = clone(value, true);\n }\n\n // PRIVATE METHODS\n\n _checkBatchId(batchId) {\n const valid = batchId >= 0 && batchId < this.featureCount;\n if (!valid) {\n throw new Error('batchId not in range [0, featureCount - 1].');\n }\n }\n\n _getBinaryProperty(binaryProperty, index) {\n return binaryProperty.unpack(binaryProperty.typedArray, index);\n }\n\n _setBinaryProperty(binaryProperty, index, value) {\n binaryProperty.pack(value, binaryProperty.typedArray, index);\n }\n\n _initializeBinaryProperties() {\n let binaryProperties: Record<string, any> | null = null;\n for (const name in this._properties) {\n const property = this._properties[name];\n const binaryProperty = this._initializeBinaryProperty(name, property);\n // Store any information needed to access the binary data, including the typed array,\n // componentCount (e.g. a VEC4 would be 4), and the type used to pack and unpack (e.g. Cartesian4).\n if (binaryProperty) {\n binaryProperties = binaryProperties || {};\n binaryProperties[name] = binaryProperty;\n }\n }\n return binaryProperties;\n }\n\n _initializeBinaryProperty(name, property) {\n if ('byteOffset' in property) {\n // This is a binary property\n const tile3DAccessor = property;\n\n assert(this.binary, `Property ${name} requires a batch table binary.`);\n assert(tile3DAccessor.type, `Property ${name} requires a type.`);\n\n const accessor = createTypedArrayFromAccessor(\n tile3DAccessor,\n this.binary.buffer,\n this.binary.byteOffset | 0,\n this.featureCount\n );\n\n // Store any information needed to access the binary data, including the typed array,\n // componentCount (e.g. a VEC4 would be 4), and the type used to pack and unpack (e.g. Cartesian4).\n return {\n typedArray: accessor.values,\n componentCount: accessor.size,\n unpack: accessor.unpacker,\n pack: accessor.packer\n };\n }\n\n return null;\n }\n\n // EXTENSION SUPPORT: 3DTILES_batch_table_hierarchy\n\n _hasPropertyInHierarchy(batchId, name) {\n if (!this._hierarchy) {\n return false;\n }\n\n const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instances = hierarchy.classes[classId].instances;\n return defined(instances[name]);\n });\n\n return defined(result);\n }\n\n _getPropertyNamesInHierarchy(batchId, results) {\n traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instances = hierarchy.classes[classId].instances;\n for (const name in instances) {\n if (instances.hasOwnProperty(name)) {\n if (results.indexOf(name) === -1) {\n results.push(name);\n }\n }\n }\n });\n }\n\n _getHierarchyProperty(batchId, name) {\n return traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instanceClass = hierarchy.classes[classId];\n const indexInClass = hierarchy.classIndexes[instanceIndex];\n const propertyValues = instanceClass.instances[name];\n if (defined(propertyValues)) {\n if (defined(propertyValues.typedArray)) {\n return this._getBinaryProperty(propertyValues, indexInClass);\n }\n return clone(propertyValues[indexInClass], true);\n }\n return null;\n });\n }\n\n _setHierarchyProperty(batchTable, batchId, name, value) {\n const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instanceClass = hierarchy.classes[classId];\n const indexInClass = hierarchy.classIndexes[instanceIndex];\n const propertyValues = instanceClass.instances[name];\n if (defined(propertyValues)) {\n assert(instanceIndex === batchId, `Inherited property \"${name}\" is read-only.`);\n if (defined(propertyValues.typedArray)) {\n this._setBinaryProperty(propertyValues, indexInClass, value);\n } else {\n propertyValues[indexInClass] = clone(value, true);\n }\n return true;\n }\n return false;\n });\n return defined(result);\n }\n}\n"],"file":"tile-3d-batch-table.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/classes/tile-3d-feature-table.ts"],"names":["GL","GLType","Tile3DFeatureTable","constructor","featureTableJson","featureTableBinary","json","buffer","getExtension","extensionName","extensions","hasProperty","propertyName","Boolean","getGlobalProperty","componentType","UNSIGNED_INT","componentLength","jsonValue","Number","isFinite","byteOffset","_getTypedArrayFromBinary","getPropertyArray","fromName","featuresLength","_getTypedArrayFromArray","getProperty","featureId","result","typedArray","i","count","cachedTypedArrays","_cachedTypedArrays","createTypedArray","array"],"mappings":"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","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {GL, GLType} from '@loaders.gl/math';\n\n// Reference:\n// https://github.com/AnalyticalGraphicsInc/cesium/blob/1de96d087f0b17575eb1a3f736407b348c765d59/Source/Scene/Cesium3DTileFeatureTable.js\nexport default class Tile3DFeatureTable {\n json;\n buffer;\n featuresLength = 0;\n _cachedTypedArrays = {};\n\n constructor(featureTableJson, featureTableBinary) {\n this.json = featureTableJson;\n this.buffer = featureTableBinary;\n }\n\n getExtension(extensionName) {\n return this.json.extensions && this.json.extensions[extensionName];\n }\n\n hasProperty(propertyName) {\n return Boolean(this.json[propertyName]);\n }\n\n getGlobalProperty(propertyName, componentType = GL.UNSIGNED_INT, componentLength = 1) {\n const jsonValue = this.json[propertyName];\n\n if (jsonValue && Number.isFinite(jsonValue.byteOffset)) {\n return this._getTypedArrayFromBinary(\n propertyName,\n componentType,\n componentLength,\n 1,\n jsonValue.byteOffset\n );\n }\n\n return jsonValue;\n }\n\n getPropertyArray(propertyName, componentType, componentLength) {\n const jsonValue = this.json[propertyName];\n\n if (jsonValue && Number.isFinite(jsonValue.byteOffset)) {\n if ('componentType' in jsonValue) {\n componentType = GLType.fromName(jsonValue.componentType);\n }\n return this._getTypedArrayFromBinary(\n propertyName,\n componentType,\n componentLength,\n this.featuresLength,\n jsonValue.byteOffset\n );\n }\n\n return this._getTypedArrayFromArray(propertyName, componentType, jsonValue);\n }\n\n getProperty(propertyName, componentType, componentLength, featureId, result) {\n const jsonValue = this.json[propertyName];\n if (!jsonValue) {\n return jsonValue;\n }\n\n const typedArray = this.getPropertyArray(propertyName, componentType, componentLength);\n\n if (componentLength === 1) {\n return typedArray[featureId];\n }\n\n for (let i = 0; i < componentLength; ++i) {\n result[i] = typedArray[componentLength * featureId + i];\n }\n\n return result;\n }\n\n // HELPERS\n\n _getTypedArrayFromBinary(propertyName, componentType, componentLength, count, byteOffset) {\n const cachedTypedArrays = this._cachedTypedArrays;\n let typedArray = cachedTypedArrays[propertyName];\n if (!typedArray) {\n typedArray = GLType.createTypedArray(\n componentType,\n this.buffer.buffer,\n this.buffer.byteOffset + byteOffset,\n count * componentLength\n );\n cachedTypedArrays[propertyName] = typedArray;\n }\n return typedArray;\n }\n\n _getTypedArrayFromArray(propertyName, componentType, array) {\n const cachedTypedArrays = this._cachedTypedArrays;\n let typedArray = cachedTypedArrays[propertyName];\n if (!typedArray) {\n typedArray = GLType.createTypedArray(componentType, array);\n cachedTypedArrays[propertyName] = typedArray;\n }\n return typedArray;\n }\n}\n"],"file":"tile-3d-feature-table.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lib/constants.ts"],"names":["TILE3D_TYPE","COMPOSITE","POINT_CLOUD","BATCHED_3D_MODEL","INSTANCED_3D_MODEL","GEOMETRY","VECTOR","GLTF","TILE3D_TYPES","Object","keys","MAGIC_ARRAY","BATCHED_MODEL","INSTANCED_MODEL","TILE3D_OPTIMIZATION_HINT","NOT_COMPUTED","USE_OPTIMIZATION","SKIP_OPTIMIZATION"],"mappings":"AAEA,OAAO,MAAMA,WAAW,GAAG;AACzBC,EAAAA,SAAS,EAAE,MADc;AAEzBC,EAAAA,WAAW,EAAE,MAFY;AAGzBC,EAAAA,gBAAgB,EAAE,MAHO;AAIzBC,EAAAA,kBAAkB,EAAE,MAJK;AAKzBC,EAAAA,QAAQ,EAAE,MALe;AAMzBC,EAAAA,MAAM,EAAE,MANiB;AAOzBC,EAAAA,IAAI,EAAE;AAPmB,CAApB;AAUP,OAAO,MAAMC,YAAY,GAAGC,MAAM,CAACC,IAAP,CAAYV,WAAZ,CAArB;AAEP,OAAO,MAAMW,WAAW,GAAG;AACzBC,EAAAA,aAAa,EAAE,CAAC,EAAD,EAAK,EAAL,EAAS,GAAT,EAAc,GAAd,CADU;AAEzBC,EAAAA,eAAe,EAAE,CAAC,GAAD,EAAM,EAAN,EAAU,GAAV,EAAe,GAAf,CAFQ;AAGzBX,EAAAA,WAAW,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,CAHY;AAIzBD,EAAAA,SAAS,EAAE,CAAC,EAAD,EAAK,GAAL,EAAU,GAAV,EAAe,GAAf;AAJc,CAApB;AAQP,OAAO,MAAMa,wBAAwB,GAAG;AACtCC,EAAAA,YAAY,EAAE,CAAC,CADuB;AAEtCC,EAAAA,gBAAgB,EAAE,CAFoB;AAGtCC,EAAAA,iBAAiB,EAAE;AAHmB,CAAjC","sourcesContent":["// TILE TYPES\n\nexport const TILE3D_TYPE = {\n COMPOSITE: 'cmpt',\n POINT_CLOUD: 'pnts',\n BATCHED_3D_MODEL: 'b3dm',\n INSTANCED_3D_MODEL: 'i3dm',\n GEOMETRY: 'geom',\n VECTOR: 'vect',\n GLTF: 'glTF'\n};\n\nexport const TILE3D_TYPES = Object.keys(TILE3D_TYPE);\n\nexport const MAGIC_ARRAY = {\n BATCHED_MODEL: [98, 51, 100, 109],\n INSTANCED_MODEL: [105, 51, 100, 109],\n POINT_CLOUD: [112, 110, 116, 115],\n COMPOSITE: [99, 109, 112, 116]\n};\n\n// TILE CONSTANTS\nexport const TILE3D_OPTIMIZATION_HINT = {\n NOT_COMPUTED: -1,\n USE_OPTIMIZATION: 1,\n SKIP_OPTIMIZATION: 0\n};\n"],"file":"constants.js"}