@loaders.gl/3d-tiles 4.0.0-alpha.1 → 4.0.0-alpha.11

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 (393) hide show
  1. package/dist/bundle.d.ts +2 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +2 -2
  4. package/dist/cesium-ion-loader.d.ts +6 -0
  5. package/dist/cesium-ion-loader.d.ts.map +1 -0
  6. package/dist/cesium-ion-loader.js +37 -32
  7. package/dist/dist.min.js +14805 -0
  8. package/dist/es5/bundle.js +6 -0
  9. package/dist/es5/bundle.js.map +1 -0
  10. package/dist/es5/cesium-ion-loader.js +77 -0
  11. package/dist/es5/cesium-ion-loader.js.map +1 -0
  12. package/dist/es5/index.js +63 -0
  13. package/dist/es5/index.js.map +1 -0
  14. package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js +114 -0
  15. package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -0
  16. package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js +180 -0
  17. package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -0
  18. package/dist/es5/lib/classes/tile-3d-batch-table.js +285 -0
  19. package/dist/es5/lib/classes/tile-3d-batch-table.js.map +1 -0
  20. package/dist/es5/lib/classes/tile-3d-feature-table.js +97 -0
  21. package/dist/es5/lib/classes/tile-3d-feature-table.js.map +1 -0
  22. package/dist/es5/lib/constants.js +32 -0
  23. package/dist/es5/lib/constants.js.map +1 -0
  24. package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js +49 -0
  25. package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js.map +1 -0
  26. package/dist/es5/lib/encoders/encode-3d-tile-composite.js +30 -0
  27. package/dist/es5/lib/encoders/encode-3d-tile-composite.js.map +1 -0
  28. package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js +47 -0
  29. package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -0
  30. package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js +48 -0
  31. package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -0
  32. package/dist/es5/lib/encoders/encode-3d-tile.js +35 -0
  33. package/dist/es5/lib/encoders/encode-3d-tile.js.map +1 -0
  34. package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js +35 -0
  35. package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -0
  36. package/dist/es5/lib/ion/ion.js +170 -0
  37. package/dist/es5/lib/ion/ion.js.map +1 -0
  38. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js +65 -0
  39. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -0
  40. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js +32 -0
  41. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -0
  42. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js +32 -0
  43. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -0
  44. package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js +280 -0
  45. package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -0
  46. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +110 -0
  47. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -0
  48. package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js +22 -0
  49. package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -0
  50. package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js +145 -0
  51. package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -0
  52. package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js +85 -0
  53. package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -0
  54. package/dist/es5/lib/parsers/helpers/parse-utils.js +28 -0
  55. package/dist/es5/lib/parsers/helpers/parse-utils.js.map +1 -0
  56. package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js +51 -0
  57. package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js.map +1 -0
  58. package/dist/es5/lib/parsers/parse-3d-tile-composite.js +48 -0
  59. package/dist/es5/lib/parsers/parse-3d-tile-composite.js.map +1 -0
  60. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js +52 -0
  61. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js.map +1 -0
  62. package/dist/es5/lib/parsers/parse-3d-tile-header.js +289 -0
  63. package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -0
  64. package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js +163 -0
  65. package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -0
  66. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js +295 -0
  67. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -0
  68. package/dist/es5/lib/parsers/parse-3d-tile.js +74 -0
  69. package/dist/es5/lib/parsers/parse-3d-tile.js.map +1 -0
  70. package/dist/es5/lib/utils/obb/s2-corners-to-obb.js +30 -0
  71. package/dist/es5/lib/utils/obb/s2-corners-to-obb.js.map +1 -0
  72. package/dist/es5/lib/utils/s2/converters/s2-to-boundary.js +44 -0
  73. package/dist/es5/lib/utils/s2/converters/s2-to-boundary.js.map +1 -0
  74. package/dist/es5/lib/utils/s2/converters/s2-to-obb-points.js +30 -0
  75. package/dist/es5/lib/utils/s2/converters/s2-to-obb-points.js.map +1 -0
  76. package/dist/es5/lib/utils/s2/converters/s2-to-region.js +52 -0
  77. package/dist/es5/lib/utils/s2/converters/s2-to-region.js.map +1 -0
  78. package/dist/es5/lib/utils/s2/index.js +90 -0
  79. package/dist/es5/lib/utils/s2/index.js.map +1 -0
  80. package/dist/es5/lib/utils/s2/s2-geometry-functions.js +19 -0
  81. package/dist/es5/lib/utils/s2/s2-geometry-functions.js.map +1 -0
  82. package/dist/es5/lib/utils/s2/s2-token-functions.js +41 -0
  83. package/dist/es5/lib/utils/s2/s2-token-functions.js.map +1 -0
  84. package/dist/es5/lib/utils/s2/s2geometry/s2-cell-utils.js +22 -0
  85. package/dist/es5/lib/utils/s2/s2geometry/s2-cell-utils.js.map +1 -0
  86. package/dist/es5/lib/utils/s2/s2geometry/s2-geometry.js +207 -0
  87. package/dist/es5/lib/utils/s2/s2geometry/s2-geometry.js.map +1 -0
  88. package/dist/es5/lib/utils/version.js +9 -0
  89. package/dist/es5/lib/utils/version.js.map +1 -0
  90. package/dist/es5/tile-3d-subtree-loader.js +22 -0
  91. package/dist/es5/tile-3d-subtree-loader.js.map +1 -0
  92. package/dist/es5/tile-3d-writer.js +26 -0
  93. package/dist/es5/tile-3d-writer.js.map +1 -0
  94. package/dist/es5/tiles-3d-loader.js +133 -0
  95. package/dist/es5/tiles-3d-loader.js.map +1 -0
  96. package/dist/es5/types.js +2 -0
  97. package/dist/es5/types.js.map +1 -0
  98. package/dist/esm/bundle.js +4 -0
  99. package/dist/esm/bundle.js.map +1 -0
  100. package/dist/esm/cesium-ion-loader.js +36 -0
  101. package/dist/esm/cesium-ion-loader.js.map +1 -0
  102. package/dist/esm/index.js +9 -0
  103. package/dist/esm/index.js.map +1 -0
  104. package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js +96 -0
  105. package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -0
  106. package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js +171 -0
  107. package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -0
  108. package/dist/esm/lib/classes/tile-3d-batch-table.js +231 -0
  109. package/dist/esm/lib/classes/tile-3d-batch-table.js.map +1 -0
  110. package/dist/esm/lib/classes/tile-3d-feature-table.js +70 -0
  111. package/dist/esm/lib/classes/tile-3d-feature-table.js.map +1 -0
  112. package/dist/esm/lib/constants.js +22 -0
  113. package/dist/esm/lib/constants.js.map +1 -0
  114. package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js +40 -0
  115. package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js.map +1 -0
  116. package/dist/esm/lib/encoders/encode-3d-tile-composite.js +21 -0
  117. package/dist/esm/lib/encoders/encode-3d-tile-composite.js.map +1 -0
  118. package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js +36 -0
  119. package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -0
  120. package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js +39 -0
  121. package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -0
  122. package/dist/esm/lib/encoders/encode-3d-tile.js +29 -0
  123. package/dist/esm/lib/encoders/encode-3d-tile.js.map +1 -0
  124. package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js +28 -0
  125. package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -0
  126. package/dist/esm/lib/ion/ion.js +70 -0
  127. package/dist/esm/lib/ion/ion.js.map +1 -0
  128. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js +58 -0
  129. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -0
  130. package/{src → dist/esm}/lib/parsers/helpers/normalize-3d-tile-normals.js +5 -10
  131. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -0
  132. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js +26 -0
  133. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -0
  134. package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js +241 -0
  135. package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -0
  136. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js +67 -0
  137. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -0
  138. package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js +16 -0
  139. package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -0
  140. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js +67 -0
  141. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -0
  142. package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js +80 -0
  143. package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -0
  144. package/dist/esm/lib/parsers/helpers/parse-utils.js +20 -0
  145. package/dist/esm/lib/parsers/helpers/parse-utils.js.map +1 -0
  146. package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js +25 -0
  147. package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js.map +1 -0
  148. package/dist/esm/lib/parsers/parse-3d-tile-composite.js +15 -0
  149. package/dist/esm/lib/parsers/parse-3d-tile-composite.js.map +1 -0
  150. package/dist/esm/lib/parsers/parse-3d-tile-gltf.js +20 -0
  151. package/dist/esm/lib/parsers/parse-3d-tile-gltf.js.map +1 -0
  152. package/dist/esm/lib/parsers/parse-3d-tile-header.js +181 -0
  153. package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -0
  154. package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js +138 -0
  155. package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -0
  156. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js +232 -0
  157. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -0
  158. package/dist/esm/lib/parsers/parse-3d-tile.js +30 -0
  159. package/dist/esm/lib/parsers/parse-3d-tile.js.map +1 -0
  160. package/dist/esm/lib/utils/obb/s2-corners-to-obb.js +23 -0
  161. package/dist/esm/lib/utils/obb/s2-corners-to-obb.js.map +1 -0
  162. package/dist/esm/lib/utils/s2/converters/s2-to-boundary.js +40 -0
  163. package/dist/esm/lib/utils/s2/converters/s2-to-boundary.js.map +1 -0
  164. package/dist/esm/lib/utils/s2/converters/s2-to-obb-points.js +24 -0
  165. package/dist/esm/lib/utils/s2/converters/s2-to-obb-points.js.map +1 -0
  166. package/dist/esm/lib/utils/s2/converters/s2-to-region.js +42 -0
  167. package/dist/esm/lib/utils/s2/converters/s2-to-region.js.map +1 -0
  168. package/dist/esm/lib/utils/s2/index.js +7 -0
  169. package/dist/esm/lib/utils/s2/index.js.map +1 -0
  170. package/dist/esm/lib/utils/s2/s2-geometry-functions.js +12 -0
  171. package/dist/esm/lib/utils/s2/s2-geometry-functions.js.map +1 -0
  172. package/dist/esm/lib/utils/s2/s2-token-functions.js +32 -0
  173. package/dist/esm/lib/utils/s2/s2-token-functions.js.map +1 -0
  174. package/dist/esm/lib/utils/s2/s2geometry/s2-cell-utils.js +15 -0
  175. package/dist/esm/lib/utils/s2/s2geometry/s2-cell-utils.js.map +1 -0
  176. package/dist/esm/lib/utils/s2/s2geometry/s2-geometry.js +186 -0
  177. package/dist/esm/lib/utils/s2/s2geometry/s2-geometry.js.map +1 -0
  178. package/dist/esm/lib/utils/version.js +2 -0
  179. package/dist/esm/lib/utils/version.js.map +1 -0
  180. package/dist/esm/tile-3d-subtree-loader.js +14 -0
  181. package/dist/esm/tile-3d-subtree-loader.js.map +1 -0
  182. package/dist/esm/tile-3d-writer.js +19 -0
  183. package/dist/esm/tile-3d-writer.js.map +1 -0
  184. package/dist/esm/tiles-3d-loader.js +68 -0
  185. package/dist/esm/tiles-3d-loader.js.map +1 -0
  186. package/dist/esm/types.js +2 -0
  187. package/dist/esm/types.js.map +1 -0
  188. package/dist/index.d.ts +11 -0
  189. package/dist/index.d.ts.map +1 -0
  190. package/dist/index.js +26 -8
  191. package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts +8 -0
  192. package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts.map +1 -0
  193. package/dist/lib/classes/helpers/tile-3d-accessor-utils.js +106 -89
  194. package/dist/lib/classes/tile-3d-batch-table-hierarchy.d.ts +10 -0
  195. package/dist/lib/classes/tile-3d-batch-table-hierarchy.d.ts.map +1 -0
  196. package/dist/lib/classes/tile-3d-batch-table-hierarchy.js +184 -202
  197. package/dist/lib/classes/tile-3d-batch-table.d.ts +34 -0
  198. package/dist/lib/classes/tile-3d-batch-table.d.ts.map +1 -0
  199. package/dist/lib/classes/tile-3d-batch-table.js +223 -267
  200. package/dist/lib/classes/tile-3d-feature-table.d.ts +15 -0
  201. package/dist/lib/classes/tile-3d-feature-table.d.ts.map +1 -0
  202. package/dist/lib/classes/tile-3d-feature-table.js +64 -79
  203. package/dist/lib/constants.d.ts +22 -0
  204. package/dist/lib/constants.d.ts.map +1 -0
  205. package/dist/lib/constants.js +23 -18
  206. package/dist/lib/encoders/encode-3d-tile-batched-model.d.ts +2 -0
  207. package/dist/lib/encoders/encode-3d-tile-batched-model.d.ts.map +1 -0
  208. package/dist/lib/encoders/encode-3d-tile-batched-model.js +45 -45
  209. package/dist/lib/encoders/encode-3d-tile-composite.d.ts +2 -0
  210. package/dist/lib/encoders/encode-3d-tile-composite.d.ts.map +1 -0
  211. package/dist/lib/encoders/encode-3d-tile-composite.js +23 -24
  212. package/dist/lib/encoders/encode-3d-tile-instanced-model.d.ts +2 -0
  213. package/dist/lib/encoders/encode-3d-tile-instanced-model.d.ts.map +1 -0
  214. package/dist/lib/encoders/encode-3d-tile-instanced-model.js +37 -37
  215. package/dist/lib/encoders/encode-3d-tile-point-cloud.d.ts +2 -0
  216. package/dist/lib/encoders/encode-3d-tile-point-cloud.d.ts.map +1 -0
  217. package/dist/lib/encoders/encode-3d-tile-point-cloud.js +36 -38
  218. package/dist/lib/encoders/encode-3d-tile.d.ts +2 -0
  219. package/dist/lib/encoders/encode-3d-tile.d.ts.map +1 -0
  220. package/dist/lib/encoders/encode-3d-tile.js +30 -32
  221. package/dist/lib/encoders/helpers/encode-3d-tile-header.d.ts +3 -0
  222. package/dist/lib/encoders/helpers/encode-3d-tile-header.d.ts.map +1 -0
  223. package/dist/lib/encoders/helpers/encode-3d-tile-header.js +28 -29
  224. package/dist/lib/ion/ion.d.ts +4 -0
  225. package/dist/lib/ion/ion.d.ts.map +1 -0
  226. package/dist/lib/ion/ion.js +60 -69
  227. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.d.ts +9 -0
  228. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.d.ts.map +1 -0
  229. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.js +60 -62
  230. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.d.ts +7 -0
  231. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.d.ts.map +1 -0
  232. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.js +26 -26
  233. package/dist/lib/parsers/helpers/normalize-3d-tile-positions.d.ts +2 -0
  234. package/dist/lib/parsers/helpers/normalize-3d-tile-positions.d.ts.map +1 -0
  235. package/dist/lib/parsers/helpers/normalize-3d-tile-positions.js +39 -28
  236. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts +57 -0
  237. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts.map +1 -0
  238. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.js +266 -0
  239. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.d.ts +10 -0
  240. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.d.ts.map +1 -0
  241. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.js +90 -63
  242. package/dist/lib/parsers/helpers/parse-3d-tile-header.d.ts +3 -0
  243. package/dist/lib/parsers/helpers/parse-3d-tile-header.d.ts.map +1 -0
  244. package/dist/lib/parsers/helpers/parse-3d-tile-header.js +26 -15
  245. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts +10 -0
  246. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts.map +1 -0
  247. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js +104 -0
  248. package/dist/lib/parsers/helpers/parse-3d-tile-tables.d.ts +5 -0
  249. package/dist/lib/parsers/helpers/parse-3d-tile-tables.d.ts.map +1 -0
  250. package/dist/lib/parsers/helpers/parse-3d-tile-tables.js +85 -81
  251. package/dist/lib/parsers/helpers/parse-utils.d.ts +4 -0
  252. package/dist/lib/parsers/helpers/parse-utils.d.ts.map +1 -0
  253. package/dist/lib/parsers/helpers/parse-utils.js +29 -16
  254. package/dist/lib/parsers/parse-3d-tile-batched-model.d.ts +5 -0
  255. package/dist/lib/parsers/parse-3d-tile-batched-model.d.ts.map +1 -0
  256. package/dist/lib/parsers/parse-3d-tile-batched-model.js +30 -26
  257. package/dist/lib/parsers/parse-3d-tile-composite.d.ts +8 -0
  258. package/dist/lib/parsers/parse-3d-tile-composite.d.ts.map +1 -0
  259. package/dist/lib/parsers/parse-3d-tile-composite.js +23 -16
  260. package/dist/lib/parsers/parse-3d-tile-gltf.d.ts +5 -0
  261. package/dist/lib/parsers/parse-3d-tile-gltf.d.ts.map +1 -0
  262. package/dist/lib/parsers/parse-3d-tile-gltf.js +28 -0
  263. package/dist/lib/parsers/parse-3d-tile-header.d.ts +20 -0
  264. package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -0
  265. package/dist/lib/parsers/parse-3d-tile-header.js +186 -71
  266. package/dist/lib/parsers/parse-3d-tile-instanced-model.d.ts +5 -0
  267. package/dist/lib/parsers/parse-3d-tile-instanced-model.d.ts.map +1 -0
  268. package/dist/lib/parsers/parse-3d-tile-instanced-model.js +165 -170
  269. package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts +6 -0
  270. package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts.map +1 -0
  271. package/dist/lib/parsers/parse-3d-tile-point-cloud.js +372 -184
  272. package/dist/lib/parsers/parse-3d-tile.d.ts +5 -0
  273. package/dist/lib/parsers/parse-3d-tile.d.ts.map +1 -0
  274. package/dist/lib/parsers/parse-3d-tile.js +32 -27
  275. package/dist/lib/utils/obb/s2-corners-to-obb.d.ts +15 -0
  276. package/dist/lib/utils/obb/s2-corners-to-obb.d.ts.map +1 -0
  277. package/dist/lib/utils/obb/s2-corners-to-obb.js +37 -0
  278. package/dist/lib/utils/s2/converters/s2-to-boundary.d.ts +9 -0
  279. package/dist/lib/utils/s2/converters/s2-to-boundary.d.ts.map +1 -0
  280. package/dist/lib/utils/s2/converters/s2-to-boundary.js +61 -0
  281. package/dist/lib/utils/s2/converters/s2-to-obb-points.d.ts +15 -0
  282. package/dist/lib/utils/s2/converters/s2-to-obb-points.d.ts.map +1 -0
  283. package/dist/lib/utils/s2/converters/s2-to-obb-points.js +36 -0
  284. package/dist/lib/utils/s2/converters/s2-to-region.d.ts +13 -0
  285. package/dist/lib/utils/s2/converters/s2-to-region.d.ts.map +1 -0
  286. package/dist/lib/utils/s2/converters/s2-to-region.js +59 -0
  287. package/dist/lib/utils/s2/index.d.ts +8 -0
  288. package/dist/lib/utils/s2/index.d.ts.map +1 -0
  289. package/dist/lib/utils/s2/index.js +23 -0
  290. package/dist/lib/utils/s2/s2-geometry-functions.d.ts +14 -0
  291. package/dist/lib/utils/s2/s2-geometry-functions.d.ts.map +1 -0
  292. package/dist/lib/utils/s2/s2-geometry-functions.js +29 -0
  293. package/dist/lib/utils/s2/s2-token-functions.d.ts +23 -0
  294. package/dist/lib/utils/s2/s2-token-functions.d.ts.map +1 -0
  295. package/dist/lib/utils/s2/s2-token-functions.js +68 -0
  296. package/dist/lib/utils/s2/s2geometry/s2-cell-utils.d.ts +14 -0
  297. package/dist/lib/utils/s2/s2geometry/s2-cell-utils.d.ts.map +1 -0
  298. package/dist/lib/utils/s2/s2geometry/s2-cell-utils.js +32 -0
  299. package/dist/lib/utils/s2/s2geometry/s2-geometry.d.ts +52 -0
  300. package/dist/lib/utils/s2/s2geometry/s2-geometry.d.ts.map +1 -0
  301. package/dist/lib/utils/s2/s2geometry/s2-geometry.js +260 -0
  302. package/dist/lib/utils/version.d.ts +2 -0
  303. package/dist/lib/utils/version.d.ts.map +1 -0
  304. package/dist/lib/utils/version.js +7 -2
  305. package/dist/tile-3d-subtree-loader.d.ts +7 -0
  306. package/dist/tile-3d-subtree-loader.d.ts.map +1 -0
  307. package/dist/tile-3d-subtree-loader.js +23 -0
  308. package/dist/tile-3d-writer.d.ts +6 -0
  309. package/dist/tile-3d-writer.d.ts.map +1 -0
  310. package/dist/tile-3d-writer.js +24 -17
  311. package/dist/tiles-3d-loader.d.ts +20 -0
  312. package/dist/tiles-3d-loader.d.ts.map +1 -0
  313. package/dist/tiles-3d-loader.js +69 -65
  314. package/dist/types.d.ts +335 -0
  315. package/dist/types.d.ts.map +1 -0
  316. package/dist/types.js +2 -2
  317. package/package.json +14 -13
  318. package/src/cesium-ion-loader.ts +1 -0
  319. package/src/index.ts +13 -1
  320. package/src/lib/classes/{tile-3d-batch-table.js → tile-3d-batch-table.ts} +14 -4
  321. package/src/lib/classes/{tile-3d-feature-table.js → tile-3d-feature-table.ts} +5 -2
  322. package/src/lib/{constants.js → constants.ts} +2 -1
  323. package/src/lib/parsers/helpers/{normalize-3d-tile-colors.js → normalize-3d-tile-colors.ts} +10 -4
  324. package/src/lib/parsers/helpers/normalize-3d-tile-normals.ts +35 -0
  325. package/src/lib/parsers/helpers/parse-3d-implicit-tiles.ts +396 -0
  326. package/src/lib/parsers/helpers/{parse-3d-tile-gltf-view.js → parse-3d-tile-gltf-view.ts} +40 -16
  327. package/src/lib/parsers/helpers/{parse-3d-tile-header.js → parse-3d-tile-header.ts} +7 -1
  328. package/src/lib/parsers/helpers/parse-3d-tile-subtree.ts +148 -0
  329. package/src/lib/parsers/helpers/{parse-3d-tile-tables.js → parse-3d-tile-tables.ts} +33 -12
  330. package/src/lib/parsers/{parse-3d-tile-batched-model.js → parse-3d-tile-batched-model.ts} +18 -3
  331. package/src/lib/parsers/{parse-3d-tile-composite.js → parse-3d-tile-composite.ts} +20 -8
  332. package/src/lib/parsers/parse-3d-tile-gltf.ts +33 -0
  333. package/src/lib/parsers/parse-3d-tile-header.ts +253 -0
  334. package/src/lib/parsers/{parse-3d-tile-instanced-model.js → parse-3d-tile-instanced-model.ts} +41 -30
  335. package/src/lib/parsers/{parse-3d-tile-point-cloud.js → parse-3d-tile-point-cloud.ts} +73 -14
  336. package/src/lib/parsers/{parse-3d-tile.js → parse-3d-tile.ts} +14 -1
  337. package/src/lib/utils/obb/s2-corners-to-obb.ts +51 -0
  338. package/src/lib/utils/s2/converters/s2-to-boundary.ts +67 -0
  339. package/src/lib/utils/s2/converters/s2-to-obb-points.ts +46 -0
  340. package/src/lib/utils/s2/converters/s2-to-region.ts +69 -0
  341. package/src/lib/utils/s2/index.ts +17 -0
  342. package/src/lib/utils/s2/s2-geometry-functions.ts +28 -0
  343. package/src/lib/utils/s2/s2-token-functions.ts +67 -0
  344. package/src/lib/utils/s2/s2geometry/s2-cell-utils.ts +33 -0
  345. package/src/lib/utils/s2/s2geometry/s2-geometry.ts +296 -0
  346. package/src/tile-3d-subtree-loader.ts +19 -0
  347. package/src/tiles-3d-loader.ts +68 -37
  348. package/src/types.ts +321 -13
  349. package/dist/bundle.js.map +0 -1
  350. package/dist/cesium-ion-loader.js.map +0 -1
  351. package/dist/index.js.map +0 -1
  352. package/dist/lib/classes/helpers/tile-3d-accessor-utils.js.map +0 -1
  353. package/dist/lib/classes/tile-3d-batch-table-hierarchy.js.map +0 -1
  354. package/dist/lib/classes/tile-3d-batch-table.js.map +0 -1
  355. package/dist/lib/classes/tile-3d-feature-table.js.map +0 -1
  356. package/dist/lib/constants.js.map +0 -1
  357. package/dist/lib/encoders/encode-3d-tile-batched-model.js.map +0 -1
  358. package/dist/lib/encoders/encode-3d-tile-composite.js.map +0 -1
  359. package/dist/lib/encoders/encode-3d-tile-instanced-model.js.map +0 -1
  360. package/dist/lib/encoders/encode-3d-tile-point-cloud.js.map +0 -1
  361. package/dist/lib/encoders/encode-3d-tile.js.map +0 -1
  362. package/dist/lib/encoders/helpers/encode-3d-tile-header.js.map +0 -1
  363. package/dist/lib/ion/ion.js.map +0 -1
  364. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.js.map +0 -1
  365. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.js.map +0 -1
  366. package/dist/lib/parsers/helpers/normalize-3d-tile-positions.js.map +0 -1
  367. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +0 -1
  368. package/dist/lib/parsers/helpers/parse-3d-tile-header.js.map +0 -1
  369. package/dist/lib/parsers/helpers/parse-3d-tile-tables.js.map +0 -1
  370. package/dist/lib/parsers/helpers/parse-utils.js.map +0 -1
  371. package/dist/lib/parsers/parse-3d-tile-batched-model.js.map +0 -1
  372. package/dist/lib/parsers/parse-3d-tile-composite.js.map +0 -1
  373. package/dist/lib/parsers/parse-3d-tile-header.js.map +0 -1
  374. package/dist/lib/parsers/parse-3d-tile-instanced-model.js.map +0 -1
  375. package/dist/lib/parsers/parse-3d-tile-point-cloud.js.map +0 -1
  376. package/dist/lib/parsers/parse-3d-tile.js.map +0 -1
  377. package/dist/lib/utils/version.js.map +0 -1
  378. package/dist/tile-3d-writer.js.map +0 -1
  379. package/dist/tiles-3d-loader.js.map +0 -1
  380. package/dist/types.js.map +0 -1
  381. package/src/lib/parsers/parse-3d-tile-header.js +0 -69
  382. /package/src/lib/classes/helpers/{tile-3d-accessor-utils.js → tile-3d-accessor-utils.ts} +0 -0
  383. /package/src/lib/classes/{tile-3d-batch-table-hierarchy.js → tile-3d-batch-table-hierarchy.ts} +0 -0
  384. /package/src/lib/encoders/{encode-3d-tile-batched-model.js → encode-3d-tile-batched-model.ts} +0 -0
  385. /package/src/lib/encoders/{encode-3d-tile-composite.js → encode-3d-tile-composite.ts} +0 -0
  386. /package/src/lib/encoders/{encode-3d-tile-instanced-model.js → encode-3d-tile-instanced-model.ts} +0 -0
  387. /package/src/lib/encoders/{encode-3d-tile-point-cloud.js → encode-3d-tile-point-cloud.ts} +0 -0
  388. /package/src/lib/encoders/{encode-3d-tile.js → encode-3d-tile.ts} +0 -0
  389. /package/src/lib/encoders/helpers/{encode-3d-tile-header.js → encode-3d-tile-header.ts} +0 -0
  390. /package/src/lib/ion/{ion.js → ion.ts} +0 -0
  391. /package/src/lib/parsers/helpers/{normalize-3d-tile-positions.js → normalize-3d-tile-positions.ts} +0 -0
  392. /package/src/lib/parsers/helpers/{parse-utils.js → parse-utils.ts} +0 -0
  393. /package/src/lib/utils/{version.js → version.ts} +0 -0
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.loadDraco = loadDraco;
8
+ exports.parsePointCloud3DTile = parsePointCloud3DTile;
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
+ var _draco = require("@loaders.gl/draco");
13
+ var _math = require("@loaders.gl/math");
14
+ var _core = require("@math.gl/core");
15
+ var _tile3dFeatureTable = _interopRequireDefault(require("../classes/tile-3d-feature-table"));
16
+ var _tile3dBatchTable = _interopRequireDefault(require("../classes/tile-3d-batch-table"));
17
+ var _parse3dTileHeader = require("./helpers/parse-3d-tile-header");
18
+ var _parse3dTileTables = require("./helpers/parse-3d-tile-tables");
19
+ var _normalize3dTileColors = require("./helpers/normalize-3d-tile-colors");
20
+ var _normalize3dTileNormals = require("./helpers/normalize-3d-tile-normals");
21
+ var _normalize3dTilePositions = require("./helpers/normalize-3d-tile-positions");
22
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
23
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
24
+ function parsePointCloud3DTile(_x, _x2, _x3, _x4, _x5) {
25
+ return _parsePointCloud3DTile.apply(this, arguments);
26
+ }
27
+ function _parsePointCloud3DTile() {
28
+ _parsePointCloud3DTile = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tile, arrayBuffer, byteOffset, options, context) {
29
+ var _parsePointCloudTable, featureTable, batchTable;
30
+ return _regenerator.default.wrap(function _callee$(_context) {
31
+ while (1) switch (_context.prev = _context.next) {
32
+ case 0:
33
+ byteOffset = (0, _parse3dTileHeader.parse3DTileHeaderSync)(tile, arrayBuffer, byteOffset);
34
+ byteOffset = (0, _parse3dTileTables.parse3DTileTablesHeaderSync)(tile, arrayBuffer, byteOffset);
35
+ byteOffset = (0, _parse3dTileTables.parse3DTileTablesSync)(tile, arrayBuffer, byteOffset, options);
36
+ initializeTile(tile);
37
+ _parsePointCloudTable = parsePointCloudTables(tile), featureTable = _parsePointCloudTable.featureTable, batchTable = _parsePointCloudTable.batchTable;
38
+ _context.next = 7;
39
+ return parseDraco(tile, featureTable, batchTable, options, context);
40
+ case 7:
41
+ parsePositions(tile, featureTable, options);
42
+ parseColors(tile, featureTable, batchTable);
43
+ parseNormals(tile, featureTable);
44
+ return _context.abrupt("return", byteOffset);
45
+ case 11:
46
+ case "end":
47
+ return _context.stop();
48
+ }
49
+ }, _callee);
50
+ }));
51
+ return _parsePointCloud3DTile.apply(this, arguments);
52
+ }
53
+ function initializeTile(tile) {
54
+ tile.attributes = {
55
+ positions: null,
56
+ colors: null,
57
+ normals: null,
58
+ batchIds: null
59
+ };
60
+ tile.isQuantized = false;
61
+ tile.isTranslucent = false;
62
+ tile.isRGB565 = false;
63
+ tile.isOctEncoded16P = false;
64
+ }
65
+ function parsePointCloudTables(tile) {
66
+ var featureTable = new _tile3dFeatureTable.default(tile.featureTableJson, tile.featureTableBinary);
67
+ var pointsLength = featureTable.getGlobalProperty('POINTS_LENGTH');
68
+ if (!Number.isFinite(pointsLength)) {
69
+ throw new Error('POINTS_LENGTH must be defined');
70
+ }
71
+ featureTable.featuresLength = pointsLength;
72
+ tile.featuresLength = pointsLength;
73
+ tile.pointsLength = pointsLength;
74
+ tile.pointCount = pointsLength;
75
+ tile.rtcCenter = featureTable.getGlobalProperty('RTC_CENTER', _math.GL.FLOAT, 3);
76
+ var batchTable = parseBatchIds(tile, featureTable);
77
+ return {
78
+ featureTable: featureTable,
79
+ batchTable: batchTable
80
+ };
81
+ }
82
+ function parsePositions(tile, featureTable, options) {
83
+ tile.attributes = tile.attributes || {
84
+ positions: null,
85
+ colors: null,
86
+ normals: null,
87
+ batchIds: null
88
+ };
89
+ if (!tile.attributes.positions) {
90
+ if (featureTable.hasProperty('POSITION')) {
91
+ tile.attributes.positions = featureTable.getPropertyArray('POSITION', _math.GL.FLOAT, 3);
92
+ } else if (featureTable.hasProperty('POSITION_QUANTIZED')) {
93
+ var positions = featureTable.getPropertyArray('POSITION_QUANTIZED', _math.GL.UNSIGNED_SHORT, 3);
94
+ tile.isQuantized = true;
95
+ tile.quantizedRange = (1 << 16) - 1;
96
+ tile.quantizedVolumeScale = featureTable.getGlobalProperty('QUANTIZED_VOLUME_SCALE', _math.GL.FLOAT, 3);
97
+ if (!tile.quantizedVolumeScale) {
98
+ throw new Error('QUANTIZED_VOLUME_SCALE must be defined for quantized positions.');
99
+ }
100
+ tile.quantizedVolumeOffset = featureTable.getGlobalProperty('QUANTIZED_VOLUME_OFFSET', _math.GL.FLOAT, 3);
101
+ if (!tile.quantizedVolumeOffset) {
102
+ throw new Error('QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.');
103
+ }
104
+ tile.attributes.positions = (0, _normalize3dTilePositions.normalize3DTilePositionAttribute)(tile, positions, options);
105
+ }
106
+ }
107
+ if (!tile.attributes.positions) {
108
+ throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');
109
+ }
110
+ }
111
+ function parseColors(tile, featureTable, batchTable) {
112
+ tile.attributes = tile.attributes || {
113
+ positions: null,
114
+ colors: null,
115
+ normals: null,
116
+ batchIds: null
117
+ };
118
+ if (!tile.attributes.colors) {
119
+ var colors = null;
120
+ if (featureTable.hasProperty('RGBA')) {
121
+ colors = featureTable.getPropertyArray('RGBA', _math.GL.UNSIGNED_BYTE, 4);
122
+ tile.isTranslucent = true;
123
+ } else if (featureTable.hasProperty('RGB')) {
124
+ colors = featureTable.getPropertyArray('RGB', _math.GL.UNSIGNED_BYTE, 3);
125
+ } else if (featureTable.hasProperty('RGB565')) {
126
+ colors = featureTable.getPropertyArray('RGB565', _math.GL.UNSIGNED_SHORT, 1);
127
+ tile.isRGB565 = true;
128
+ }
129
+ tile.attributes.colors = (0, _normalize3dTileColors.normalize3DTileColorAttribute)(tile, colors, batchTable);
130
+ }
131
+ if (featureTable.hasProperty('CONSTANT_RGBA')) {
132
+ tile.constantRGBA = featureTable.getGlobalProperty('CONSTANT_RGBA', _math.GL.UNSIGNED_BYTE, 4);
133
+ }
134
+ }
135
+ function parseNormals(tile, featureTable) {
136
+ tile.attributes = tile.attributes || {
137
+ positions: null,
138
+ colors: null,
139
+ normals: null,
140
+ batchIds: null
141
+ };
142
+ if (!tile.attributes.normals) {
143
+ var normals = null;
144
+ if (featureTable.hasProperty('NORMAL')) {
145
+ normals = featureTable.getPropertyArray('NORMAL', _math.GL.FLOAT, 3);
146
+ } else if (featureTable.hasProperty('NORMAL_OCT16P')) {
147
+ normals = featureTable.getPropertyArray('NORMAL_OCT16P', _math.GL.UNSIGNED_BYTE, 2);
148
+ tile.isOctEncoded16P = true;
149
+ }
150
+ tile.attributes.normals = (0, _normalize3dTileNormals.normalize3DTileNormalAttribute)(tile, normals);
151
+ }
152
+ }
153
+ function parseBatchIds(tile, featureTable) {
154
+ var batchTable = null;
155
+ if (!tile.batchIds && featureTable.hasProperty('BATCH_ID')) {
156
+ tile.batchIds = featureTable.getPropertyArray('BATCH_ID', _math.GL.UNSIGNED_SHORT, 1);
157
+ if (tile.batchIds) {
158
+ var batchFeatureLength = featureTable.getGlobalProperty('BATCH_LENGTH');
159
+ if (!batchFeatureLength) {
160
+ throw new Error('Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.');
161
+ }
162
+ var batchTableJson = tile.batchTableJson,
163
+ batchTableBinary = tile.batchTableBinary;
164
+ batchTable = new _tile3dBatchTable.default(batchTableJson, batchTableBinary, batchFeatureLength);
165
+ }
166
+ }
167
+ return batchTable;
168
+ }
169
+ function parseDraco(_x6, _x7, _x8, _x9, _x10) {
170
+ return _parseDraco.apply(this, arguments);
171
+ }
172
+ function _parseDraco() {
173
+ _parseDraco = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(tile, featureTable, batchTable, options, context) {
174
+ var dracoBuffer, dracoFeatureTableProperties, dracoBatchTableProperties, batchTableDraco, featureTableDraco, dracoByteOffset, dracoByteLength, dracoData;
175
+ return _regenerator.default.wrap(function _callee2$(_context2) {
176
+ while (1) switch (_context2.prev = _context2.next) {
177
+ case 0:
178
+ batchTableDraco = tile.batchTableJson && tile.batchTableJson.extensions && tile.batchTableJson.extensions['3DTILES_draco_point_compression'];
179
+ if (batchTableDraco) {
180
+ dracoBatchTableProperties = batchTableDraco.properties;
181
+ }
182
+ featureTableDraco = featureTable.getExtension('3DTILES_draco_point_compression');
183
+ if (!featureTableDraco) {
184
+ _context2.next = 15;
185
+ break;
186
+ }
187
+ dracoFeatureTableProperties = featureTableDraco.properties;
188
+ dracoByteOffset = featureTableDraco.byteOffset;
189
+ dracoByteLength = featureTableDraco.byteLength;
190
+ if (!(!dracoFeatureTableProperties || !Number.isFinite(dracoByteOffset) || !dracoByteLength)) {
191
+ _context2.next = 9;
192
+ break;
193
+ }
194
+ throw new Error('Draco properties, byteOffset, and byteLength must be defined');
195
+ case 9:
196
+ dracoBuffer = (tile.featureTableBinary || []).slice(dracoByteOffset, dracoByteOffset + dracoByteLength);
197
+ tile.hasPositions = Number.isFinite(dracoFeatureTableProperties.POSITION);
198
+ tile.hasColors = Number.isFinite(dracoFeatureTableProperties.RGB) || Number.isFinite(dracoFeatureTableProperties.RGBA);
199
+ tile.hasNormals = Number.isFinite(dracoFeatureTableProperties.NORMAL);
200
+ tile.hasBatchIds = Number.isFinite(dracoFeatureTableProperties.BATCH_ID);
201
+ tile.isTranslucent = Number.isFinite(dracoFeatureTableProperties.RGBA);
202
+ case 15:
203
+ if (dracoBuffer) {
204
+ _context2.next = 17;
205
+ break;
206
+ }
207
+ return _context2.abrupt("return", true);
208
+ case 17:
209
+ dracoData = {
210
+ buffer: dracoBuffer,
211
+ properties: _objectSpread(_objectSpread({}, dracoFeatureTableProperties), dracoBatchTableProperties),
212
+ featureTableProperties: dracoFeatureTableProperties,
213
+ batchTableProperties: dracoBatchTableProperties,
214
+ dequantizeInShader: false
215
+ };
216
+ _context2.next = 20;
217
+ return loadDraco(tile, dracoData, options, context);
218
+ case 20:
219
+ return _context2.abrupt("return", _context2.sent);
220
+ case 21:
221
+ case "end":
222
+ return _context2.stop();
223
+ }
224
+ }, _callee2);
225
+ }));
226
+ return _parseDraco.apply(this, arguments);
227
+ }
228
+ function loadDraco(_x11, _x12, _x13, _x14) {
229
+ return _loadDraco.apply(this, arguments);
230
+ }
231
+ function _loadDraco() {
232
+ _loadDraco = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(tile, dracoData, options, context) {
233
+ var parse, dracoOptions, data, decodedPositions, decodedColors, decodedNormals, decodedBatchIds, isQuantizedDraco, isOctEncodedDraco, quantization, range, batchTableAttributes, _i, _Object$keys, attributeName;
234
+ return _regenerator.default.wrap(function _callee3$(_context3) {
235
+ while (1) switch (_context3.prev = _context3.next) {
236
+ case 0:
237
+ if (context) {
238
+ _context3.next = 2;
239
+ break;
240
+ }
241
+ return _context3.abrupt("return");
242
+ case 2:
243
+ parse = context.parse;
244
+ dracoOptions = _objectSpread(_objectSpread({}, options), {}, {
245
+ draco: _objectSpread(_objectSpread({}, options === null || options === void 0 ? void 0 : options.draco), {}, {
246
+ extraAttributes: dracoData.batchTableProperties || {}
247
+ })
248
+ });
249
+ delete dracoOptions['3d-tiles'];
250
+ _context3.next = 7;
251
+ return parse(dracoData.buffer, _draco.DracoLoader, dracoOptions);
252
+ case 7:
253
+ data = _context3.sent;
254
+ decodedPositions = data.attributes.POSITION && data.attributes.POSITION.value;
255
+ decodedColors = data.attributes.COLOR_0 && data.attributes.COLOR_0.value;
256
+ decodedNormals = data.attributes.NORMAL && data.attributes.NORMAL.value;
257
+ decodedBatchIds = data.attributes.BATCH_ID && data.attributes.BATCH_ID.value;
258
+ isQuantizedDraco = decodedPositions && data.attributes.POSITION.value.quantization;
259
+ isOctEncodedDraco = decodedNormals && data.attributes.NORMAL.value.quantization;
260
+ if (isQuantizedDraco) {
261
+ quantization = data.POSITION.data.quantization;
262
+ range = quantization.range;
263
+ tile.quantizedVolumeScale = new _core.Vector3(range, range, range);
264
+ tile.quantizedVolumeOffset = new _core.Vector3(quantization.minValues);
265
+ tile.quantizedRange = (1 << quantization.quantizationBits) - 1.0;
266
+ tile.isQuantizedDraco = true;
267
+ }
268
+ if (isOctEncodedDraco) {
269
+ tile.octEncodedRange = (1 << data.NORMAL.data.quantization.quantizationBits) - 1.0;
270
+ tile.isOctEncodedDraco = true;
271
+ }
272
+ batchTableAttributes = {};
273
+ if (dracoData.batchTableProperties) {
274
+ for (_i = 0, _Object$keys = Object.keys(dracoData.batchTableProperties); _i < _Object$keys.length; _i++) {
275
+ attributeName = _Object$keys[_i];
276
+ if (data.attributes[attributeName] && data.attributes[attributeName].value) {
277
+ batchTableAttributes[attributeName.toLowerCase()] = data.attributes[attributeName].value;
278
+ }
279
+ }
280
+ }
281
+ tile.attributes = _objectSpread({
282
+ positions: decodedPositions,
283
+ colors: (0, _normalize3dTileColors.normalize3DTileColorAttribute)(tile, decodedColors, undefined),
284
+ normals: decodedNormals,
285
+ batchIds: decodedBatchIds
286
+ }, batchTableAttributes);
287
+ case 19:
288
+ case "end":
289
+ return _context3.stop();
290
+ }
291
+ }, _callee3);
292
+ }));
293
+ return _loadDraco.apply(this, arguments);
294
+ }
295
+ //# sourceMappingURL=parse-3d-tile-point-cloud.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-3d-tile-point-cloud.js","names":["_draco","require","_math","_core","_tile3dFeatureTable","_interopRequireDefault","_tile3dBatchTable","_parse3dTileHeader","_parse3dTileTables","_normalize3dTileColors","_normalize3dTileNormals","_normalize3dTilePositions","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","parsePointCloud3DTile","_x","_x2","_x3","_x4","_x5","_parsePointCloud3DTile","_asyncToGenerator2","_regenerator","mark","_callee","tile","arrayBuffer","byteOffset","options","context","_parsePointCloudTable","featureTable","batchTable","wrap","_callee$","_context","prev","next","parse3DTileHeaderSync","parse3DTileTablesHeaderSync","parse3DTileTablesSync","initializeTile","parsePointCloudTables","parseDraco","parsePositions","parseColors","parseNormals","abrupt","stop","attributes","positions","colors","normals","batchIds","isQuantized","isTranslucent","isRGB565","isOctEncoded16P","Tile3DFeatureTable","featureTableJson","featureTableBinary","pointsLength","getGlobalProperty","Number","isFinite","Error","featuresLength","pointCount","rtcCenter","GL","FLOAT","parseBatchIds","hasProperty","getPropertyArray","UNSIGNED_SHORT","quantizedRange","quantizedVolumeScale","quantizedVolumeOffset","normalize3DTilePositionAttribute","UNSIGNED_BYTE","normalize3DTileColorAttribute","constantRGBA","normalize3DTileNormalAttribute","batchFeatureLength","batchTableJson","batchTableBinary","Tile3DBatchTable","_x6","_x7","_x8","_x9","_x10","_parseDraco","_callee2","dracoBuffer","dracoFeatureTableProperties","dracoBatchTableProperties","batchTableDraco","featureTableDraco","dracoByteOffset","dracoByteLength","dracoData","_callee2$","_context2","extensions","properties","getExtension","byteLength","slice","hasPositions","POSITION","hasColors","RGB","RGBA","hasNormals","NORMAL","hasBatchIds","BATCH_ID","buffer","featureTableProperties","batchTableProperties","dequantizeInShader","loadDraco","sent","_x11","_x12","_x13","_x14","_loadDraco","_callee3","parse","dracoOptions","data","decodedPositions","decodedColors","decodedNormals","decodedBatchIds","isQuantizedDraco","isOctEncodedDraco","quantization","range","batchTableAttributes","_i","_Object$keys","attributeName","_callee3$","_context3","draco","extraAttributes","DracoLoader","value","COLOR_0","Vector3","minValues","quantizationBits","octEncodedRange","toLowerCase","undefined"],"sources":["../../../../src/lib/parsers/parse-3d-tile-point-cloud.ts"],"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 {DracoLoader} from '@loaders.gl/draco';\nimport {GL} from '@loaders.gl/math';\nimport {Vector3} from '@math.gl/core';\n\nimport Tile3DFeatureTable from '../classes/tile-3d-feature-table';\nimport Tile3DBatchTable from '../classes/tile-3d-batch-table';\nimport {parse3DTileHeaderSync} from './helpers/parse-3d-tile-header';\nimport {parse3DTileTablesHeaderSync, parse3DTileTablesSync} from './helpers/parse-3d-tile-tables';\nimport {normalize3DTileColorAttribute} from './helpers/normalize-3d-tile-colors';\nimport {normalize3DTileNormalAttribute} from './helpers/normalize-3d-tile-normals';\nimport {normalize3DTilePositionAttribute} from './helpers/normalize-3d-tile-positions';\nimport {Tiles3DLoaderOptions} from '../../tiles-3d-loader';\nimport {LoaderContext} from '@loaders.gl/loader-utils';\nimport {Tiles3DTileContent} from '../../types';\n\nexport async function parsePointCloud3DTile(\n tile: Tiles3DTileContent,\n arrayBuffer: ArrayBuffer,\n byteOffset: number,\n options?: Tiles3DLoaderOptions,\n context?: LoaderContext\n): Promise<number> {\n byteOffset = parse3DTileHeaderSync(tile, arrayBuffer, byteOffset);\n byteOffset = parse3DTileTablesHeaderSync(tile, arrayBuffer, byteOffset);\n byteOffset = parse3DTileTablesSync(tile, arrayBuffer, byteOffset, options);\n initializeTile(tile);\n\n const {featureTable, batchTable} = parsePointCloudTables(tile);\n\n await parseDraco(tile, featureTable, batchTable, options, context);\n\n parsePositions(tile, featureTable, options);\n // @ts-expect-error TODO - do we need to assert on the batch table?\n parseColors(tile, featureTable, batchTable);\n parseNormals(tile, featureTable);\n\n return byteOffset;\n}\n\nfunction initializeTile(tile: Tiles3DTileContent): void {\n // Initialize point cloud tile defaults\n tile.attributes = {\n positions: null,\n colors: null,\n normals: null,\n batchIds: null\n };\n tile.isQuantized = false;\n tile.isTranslucent = false;\n tile.isRGB565 = false;\n tile.isOctEncoded16P = false;\n}\n\nfunction parsePointCloudTables(tile: Tiles3DTileContent): {\n featureTable: Tile3DFeatureTable;\n batchTable: Tile3DBatchTable | null;\n} {\n const featureTable = new Tile3DFeatureTable(tile.featureTableJson, tile.featureTableBinary);\n\n const pointsLength = featureTable.getGlobalProperty('POINTS_LENGTH');\n if (!Number.isFinite(pointsLength)) {\n throw new Error('POINTS_LENGTH must be defined');\n }\n featureTable.featuresLength = pointsLength;\n\n tile.featuresLength = pointsLength;\n tile.pointsLength = pointsLength;\n tile.pointCount = pointsLength;\n\n tile.rtcCenter = featureTable.getGlobalProperty('RTC_CENTER', GL.FLOAT, 3);\n\n const batchTable = parseBatchIds(tile, featureTable);\n\n return {featureTable, batchTable};\n}\n\nfunction parsePositions(\n tile: Tiles3DTileContent,\n featureTable: Tile3DFeatureTable,\n options: Tiles3DLoaderOptions | undefined\n): void {\n tile.attributes = tile.attributes || {\n positions: null,\n colors: null,\n normals: null,\n batchIds: null\n };\n if (!tile.attributes.positions) {\n if (featureTable.hasProperty('POSITION')) {\n tile.attributes.positions = featureTable.getPropertyArray('POSITION', GL.FLOAT, 3);\n } else if (featureTable.hasProperty('POSITION_QUANTIZED')) {\n const positions = featureTable.getPropertyArray('POSITION_QUANTIZED', GL.UNSIGNED_SHORT, 3);\n\n tile.isQuantized = true;\n tile.quantizedRange = (1 << 16) - 1;\n\n tile.quantizedVolumeScale = featureTable.getGlobalProperty(\n 'QUANTIZED_VOLUME_SCALE',\n GL.FLOAT,\n 3\n );\n if (!tile.quantizedVolumeScale) {\n throw new Error('QUANTIZED_VOLUME_SCALE must be defined for quantized positions.');\n }\n\n tile.quantizedVolumeOffset = featureTable.getGlobalProperty(\n 'QUANTIZED_VOLUME_OFFSET',\n GL.FLOAT,\n 3\n );\n if (!tile.quantizedVolumeOffset) {\n throw new Error('QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.');\n }\n\n tile.attributes.positions = normalize3DTilePositionAttribute(tile, positions, options);\n }\n }\n\n if (!tile.attributes.positions) {\n throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');\n }\n}\n\nfunction parseColors(\n tile: Tiles3DTileContent,\n featureTable: Tile3DFeatureTable,\n batchTable: Tile3DBatchTable\n): void {\n tile.attributes = tile.attributes || {\n positions: null,\n colors: null,\n normals: null,\n batchIds: null\n };\n if (!tile.attributes.colors) {\n let colors = null;\n if (featureTable.hasProperty('RGBA')) {\n colors = featureTable.getPropertyArray('RGBA', GL.UNSIGNED_BYTE, 4);\n tile.isTranslucent = true;\n } else if (featureTable.hasProperty('RGB')) {\n colors = featureTable.getPropertyArray('RGB', GL.UNSIGNED_BYTE, 3);\n } else if (featureTable.hasProperty('RGB565')) {\n colors = featureTable.getPropertyArray('RGB565', GL.UNSIGNED_SHORT, 1);\n tile.isRGB565 = true;\n }\n\n tile.attributes.colors = normalize3DTileColorAttribute(tile, colors, batchTable);\n }\n\n if (featureTable.hasProperty('CONSTANT_RGBA')) {\n tile.constantRGBA = featureTable.getGlobalProperty('CONSTANT_RGBA', GL.UNSIGNED_BYTE, 4);\n }\n}\n\nfunction parseNormals(tile: Tiles3DTileContent, featureTable: Tile3DFeatureTable): void {\n tile.attributes = tile.attributes || {\n positions: null,\n colors: null,\n normals: null,\n batchIds: null\n };\n if (!tile.attributes.normals) {\n let normals = null;\n if (featureTable.hasProperty('NORMAL')) {\n normals = featureTable.getPropertyArray('NORMAL', GL.FLOAT, 3);\n } else if (featureTable.hasProperty('NORMAL_OCT16P')) {\n normals = featureTable.getPropertyArray('NORMAL_OCT16P', GL.UNSIGNED_BYTE, 2);\n tile.isOctEncoded16P = true;\n }\n\n tile.attributes.normals = normalize3DTileNormalAttribute(tile, normals);\n }\n}\n\nfunction parseBatchIds(\n tile: Tiles3DTileContent,\n featureTable: Tile3DFeatureTable\n): Tile3DBatchTable | null {\n let batchTable: Tile3DBatchTable | null = null;\n if (!tile.batchIds && featureTable.hasProperty('BATCH_ID')) {\n tile.batchIds = featureTable.getPropertyArray('BATCH_ID', GL.UNSIGNED_SHORT, 1);\n\n if (tile.batchIds) {\n const batchFeatureLength = featureTable.getGlobalProperty('BATCH_LENGTH');\n if (!batchFeatureLength) {\n throw new Error('Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.');\n }\n const {batchTableJson, batchTableBinary} = tile;\n batchTable = new Tile3DBatchTable(batchTableJson, batchTableBinary, batchFeatureLength);\n }\n }\n return batchTable;\n}\n\n// eslint-disable-next-line complexity\nasync function parseDraco(\n tile: Tiles3DTileContent,\n featureTable: Tile3DFeatureTable,\n batchTable,\n options?: Tiles3DLoaderOptions,\n context?: LoaderContext\n) {\n let dracoBuffer;\n let dracoFeatureTableProperties;\n let dracoBatchTableProperties;\n const batchTableDraco =\n tile.batchTableJson &&\n tile.batchTableJson.extensions &&\n tile.batchTableJson.extensions['3DTILES_draco_point_compression'];\n if (batchTableDraco) {\n dracoBatchTableProperties = batchTableDraco.properties;\n }\n\n const featureTableDraco = featureTable.getExtension('3DTILES_draco_point_compression');\n if (featureTableDraco) {\n dracoFeatureTableProperties = featureTableDraco.properties;\n const dracoByteOffset = featureTableDraco.byteOffset;\n const dracoByteLength = featureTableDraco.byteLength;\n if (!dracoFeatureTableProperties || !Number.isFinite(dracoByteOffset) || !dracoByteLength) {\n throw new Error('Draco properties, byteOffset, and byteLength must be defined');\n }\n\n dracoBuffer = (tile.featureTableBinary || []).slice(\n dracoByteOffset,\n dracoByteOffset + dracoByteLength\n );\n\n tile.hasPositions = Number.isFinite(dracoFeatureTableProperties.POSITION);\n tile.hasColors =\n Number.isFinite(dracoFeatureTableProperties.RGB) ||\n Number.isFinite(dracoFeatureTableProperties.RGBA);\n tile.hasNormals = Number.isFinite(dracoFeatureTableProperties.NORMAL);\n tile.hasBatchIds = Number.isFinite(dracoFeatureTableProperties.BATCH_ID);\n tile.isTranslucent = Number.isFinite(dracoFeatureTableProperties.RGBA);\n }\n\n if (!dracoBuffer) {\n return true;\n }\n\n const dracoData = {\n buffer: dracoBuffer,\n properties: {...dracoFeatureTableProperties, ...dracoBatchTableProperties},\n featureTableProperties: dracoFeatureTableProperties,\n batchTableProperties: dracoBatchTableProperties,\n dequantizeInShader: false\n };\n\n return await loadDraco(tile, dracoData, options, context);\n}\n\n// eslint-disable-next-line complexity, max-statements\nexport async function loadDraco(\n tile: Tiles3DTileContent,\n dracoData,\n options?: Tiles3DLoaderOptions,\n context?: LoaderContext\n): Promise<void> {\n if (!context) {\n return;\n }\n const {parse} = context;\n const dracoOptions = {\n ...options,\n draco: {\n ...options?.draco,\n extraAttributes: dracoData.batchTableProperties || {}\n }\n };\n\n // The entire tileset might be included, too expensive to serialize\n delete dracoOptions['3d-tiles'];\n\n const data = await parse(dracoData.buffer, DracoLoader, dracoOptions);\n\n const decodedPositions = data.attributes.POSITION && data.attributes.POSITION.value;\n const decodedColors = data.attributes.COLOR_0 && data.attributes.COLOR_0.value;\n const decodedNormals = data.attributes.NORMAL && data.attributes.NORMAL.value;\n const decodedBatchIds = data.attributes.BATCH_ID && data.attributes.BATCH_ID.value;\n const isQuantizedDraco = decodedPositions && data.attributes.POSITION.value.quantization;\n const isOctEncodedDraco = decodedNormals && data.attributes.NORMAL.value.quantization;\n if (isQuantizedDraco) {\n // Draco quantization range == quantized volume scale - size in meters of the quantized volume\n // Internal quantized range is the range of values of the quantized data, e.g. 255 for 8-bit, 1023 for 10-bit, etc\n const quantization = data.POSITION.data.quantization;\n const range = quantization.range;\n tile.quantizedVolumeScale = new Vector3(range, range, range);\n tile.quantizedVolumeOffset = new Vector3(quantization.minValues);\n tile.quantizedRange = (1 << quantization.quantizationBits) - 1.0;\n tile.isQuantizedDraco = true;\n }\n if (isOctEncodedDraco) {\n tile.octEncodedRange = (1 << data.NORMAL.data.quantization.quantizationBits) - 1.0;\n tile.isOctEncodedDraco = true;\n }\n\n // Extra batch table attributes\n const batchTableAttributes = {};\n if (dracoData.batchTableProperties) {\n for (const attributeName of Object.keys(dracoData.batchTableProperties)) {\n if (data.attributes[attributeName] && data.attributes[attributeName].value) {\n batchTableAttributes[attributeName.toLowerCase()] = data.attributes[attributeName].value;\n }\n }\n }\n\n tile.attributes = {\n positions: decodedPositions,\n colors: normalize3DTileColorAttribute(tile, decodedColors, undefined),\n normals: decodedNormals,\n batchIds: decodedBatchIds,\n ...batchTableAttributes\n };\n}\n\n// TODO - this is the remaining code from Cesium's parser\n/*\n const batchTable = new Tile3DBatchTable(tile);\n\n // parseDracoBuffer(tile, featureTable, batchTable);\n\n if (!tile.attributes.positions) {\n throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');\n }\n}\n/*\n\n if (!tile.attributes.positions) {\n if (featureTable.hasProperty('POSITION')) {\n tile.attributes.positions = featureTable.getPropertyArray('POSITION', GL.FLOAT, 3);\n } else if (featureTable.hasProperty('POSITION_QUANTIZED')) {\n tile.attributes.positions = featureTable.getPropertyArray('POSITION_QUANTIZED', GL.UNSIGNED_SHORT, 3);\n\n\n if (!tile.colors) {\n if (featureTable.hasProperty('RGBA')) {\n tile.colors = featureTable.getPropertyArray('RGBA', GL.UNSIGNED_BYTE, 4);\n tile.isTranslucent = true;\n } else if (featureTable.hasProperty('RGB')) {\n tile.colors = featureTable.getPropertyArray('RGB', GL.UNSIGNED_BYTE, 3);\n } else if (featureTable.hasPropertry('RGB565')) {\n tile.colors = featureTable.getPropertyArray('RGB565', GL.UNSIGNED_SHORT, 1);\n tile.isRGB565 = true;\n }\n }\n\n if (!tile.attributes.normals) {\n if (featureTable.getPropertry('NORMAL')) {\n tile.attributes.normals = featureTable.getPropertyArray('NORMAL', GL.FLOAT, 3);\n } else if (featureTable.getProperty('NORMAL_OCT16P')) {\n tile.attributes.normals = featureTable.getPropertyArray('NORMAL_OCT16P', GL.UNSIGNED_BYTE, 2);\n tile.isOctEncoded16P = true;\n }\n }\n\n if (!tile.batchIds) {\n if (featureTable.hasProperty('BATCH_ID')) {\n tile.batchIds = featureTable.getPropertyArray('BATCH_ID', GL.UNSIGNED_SHORT, 1);\n }\n }\n\n if (!tile.attributes.positions) {\n throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');\n }\n\n if (featureTable.getPropertry('CONSTANT_RGBA')) {\n tile.constantRGBA = featureTable.getGlobalProperty('CONSTANT_RGBA', GL.UNSIGNED_BYTE, 4);\n }\n\n if (tile.batchIds) {\n const batchLength = featureTable.getGlobalProperty('BATCH_LENGTH');\n if (!defined(batchLength)) {\n throw new Error('Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.');\n }\n\n if (defined(batchTableBinary)) {\n // Copy the batchTableBinary section and let the underlying ArrayBuffer be freed\n batchTableBinary = new Uint8Array(batchTableBinary);\n }\n\n if (defined(pointCloud._batchTableLoaded)) {\n pointCloud._batchTableLoaded(batchLength, batchTableJson, batchTableBinary);\n }\n }\n\n // If points are not batched and there are per-point properties, use these properties for styling purposes\n var styleableProperties;\n if (!hasBatchIds && defined(batchTableBinary)) {\n tile.styleableProperties = Cesium3DTileBatchTable.getBinaryProperties(\n pointsLength,\n batchTableJson,\n batchTableBinary\n );\n }\n\n tile.draco = draco;\n}\n\n// Separate parsing and decoding of Draco\nexport function parseDracoBuffer(tile, featureTable, batchTable) {\n let dracoBuffer;\n let dracoFeatureTableProperties;\n let dracoBatchTableProperties;\n\n const batchTableDraco = batchTable.getExtension('3DTILES_draco_point_compression');\n if (batchTableDraco) {\n dracoBatchTableProperties = batchTableDraco.properties;\n }\n\n const featureTableDraco = featureTable.getExtension('3DTILES_draco_point_compression');\n if (featureTableDraco) {\n dracoFeatureTableProperties = featureTableDraco.properties;\n const dracoByteOffset = featureTableDraco.byteOffset;\n const dracoByteLength = featureTableDraco.byteLength;\n if (!dracoFeatureTableProperties || !dracoByteOffset || !dracoByteLength) {\n throw new Error('Draco properties, byteOffset, and byteLength must be defined');\n }\n\n dracoBuffer = arraySlice(\n featureTableBinary,\n dracoByteOffset,\n dracoByteOffset + dracoByteLength\n );\n tile.hasPositions = dracoFeatureTableProperties.POSITION;\n tile.hasColors = dracoFeatureTableProperties.RGB || dracoFeatureTableProperties.RGBA;\n tile.hasNormals = dracoFeatureTableProperties.NORMAL;\n tile.hasBatchIds = dracoFeatureTableProperties.BATCH_ID;\n tile.isTranslucent = dracoFeatureTableProperties.RGBA;\n }\n\n if (dracoBuffer) {\n tile.draco = {\n buffer: dracoBuffer,\n properties: {...dracoFeatureTableProperties, ...dracoBatchTableProperties},\n featureTableProperties: dracoFeatureTableProperties,\n batchTableProperties: dracoBatchTableProperties,\n dequantizeInShader: false\n };\n\n tile.decodingState = DECODING_STATE.NEEDS_DECODE;\n }\n}\n\n/*\nfunction decodeDraco(tile, context) {\n if (tile.decodingState === DECODING_STATE.READY) {\n return false;\n }\n if (tile.decodingState === DECODING_STATE.NEEDS_DECODE) {\n var parsedContent = tile._parsedContent;\n var draco = parsedContent.draco;\n var decodePromise = DracoLoader.decodePointCloud(draco, context);\n if (defined(decodePromise)) {\n tile.decodingState = DECODING_STATE.DECODING;\n decodePromise.then(function(result) {\n tile.decodingState = DECODING_STATE.READY;\n var decodedPositions = defined(result.POSITION) ? result.POSITION.array : undefined;\n var decodedRgb = defined(result.RGB) ? result.RGB.array : undefined;\n var decodedRgba = defined(result.RGBA) ? result.RGBA.array : undefined;\n var decodedNormals = defined(result.NORMAL) ? result.NORMAL.array : undefined;\n var decodedBatchIds = defined(result.BATCH_ID) ? result.BATCH_ID.array : undefined;\n var isQuantizedDraco = defined(decodedPositions) && defined(result.POSITION.data.quantization);\n var isOctEncodedDraco = defined(decodedNormals) && defined(result.NORMAL.data.quantization);\n if (isQuantizedDraco) {\n // Draco quantization range == quantized volume scale - size in meters of the quantized volume\n // Internal quantized range is the range of values of the quantized data, e.g. 255 for 8-bit, 1023 for 10-bit, etc\n var quantization = result.POSITION.data.quantization;\n var range = quantization.range;\n tile._quantizedVolumeScale = Cartesian3.fromElements(range, range, range);\n tile._quantizedVolumeOffset = Cartesian3.unpack(quantization.minValues);\n tile._quantizedRange = (1 << quantization.quantizationBits) - 1.0;\n tile._isQuantizedDraco = true;\n }\n if (isOctEncodedDraco) {\n tile._octEncodedRange = (1 << result.NORMAL.data.quantization.quantizationBits) - 1.0;\n tile._isOctEncodedDraco = true;\n }\n var styleableProperties = parsedContent.styleableProperties;\n var batchTableProperties = draco.batchTableProperties;\n for (var name in batchTableProperties) {\n if (batchTableProperties.hasOwnProperty(name)) {\n var property = result[name];\n if (!defined(styleableProperties)) {\n styleableProperties = {};\n }\n styleableProperties[name] = {\n typedArray : property.array,\n componentCount : property.data.componentsPerAttribute\n };\n }\n }\n parsedContent.positions = defaultValue(decodedPositions, parsedContent.positions);\n parsedContent.colors = defaultValue(defaultValue(decodedRgba, decodedRgb), parsedContent.colors);\n parsedContent.normals = defaultValue(decodedNormals, parsedContent.normals);\n parsedContent.batchIds = defaultValue(decodedBatchIds, parsedContent.batchIds);\n parsedContent.styleableProperties = styleableProperties;\n }).otherwise(function(error) {\n tile.decodingState = DECODING_STATE.FAILED;\n tile._readyPromise.reject(error);\n });\n }\n }\n return true;\n}\n*/\n"],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.parse3DTile = parse3DTile;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+ var _constants = require("../constants");
11
+ var _parseUtils = require("./helpers/parse-utils");
12
+ var _parse3dTilePointCloud = require("./parse-3d-tile-point-cloud");
13
+ var _parse3dTileBatchedModel = require("./parse-3d-tile-batched-model");
14
+ var _parse3dTileInstancedModel = require("./parse-3d-tile-instanced-model");
15
+ var _parse3dTileComposite = require("./parse-3d-tile-composite");
16
+ var _parse3dTileGltf = require("./parse-3d-tile-gltf");
17
+ function parse3DTile(_x) {
18
+ return _parse3DTile.apply(this, arguments);
19
+ }
20
+ function _parse3DTile() {
21
+ _parse3DTile = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer) {
22
+ var byteOffset,
23
+ options,
24
+ context,
25
+ tile,
26
+ _args = arguments;
27
+ return _regenerator.default.wrap(function _callee$(_context) {
28
+ while (1) switch (_context.prev = _context.next) {
29
+ case 0:
30
+ byteOffset = _args.length > 1 && _args[1] !== undefined ? _args[1] : 0;
31
+ options = _args.length > 2 ? _args[2] : undefined;
32
+ context = _args.length > 3 ? _args[3] : undefined;
33
+ tile = _args.length > 4 && _args[4] !== undefined ? _args[4] : {};
34
+ tile.byteOffset = byteOffset;
35
+ tile.type = (0, _parseUtils.getMagicString)(arrayBuffer, byteOffset);
36
+ _context.t0 = tile.type;
37
+ _context.next = _context.t0 === _constants.TILE3D_TYPE.COMPOSITE ? 9 : _context.t0 === _constants.TILE3D_TYPE.BATCHED_3D_MODEL ? 12 : _context.t0 === _constants.TILE3D_TYPE.GLTF ? 15 : _context.t0 === _constants.TILE3D_TYPE.INSTANCED_3D_MODEL ? 18 : _context.t0 === _constants.TILE3D_TYPE.POINT_CLOUD ? 21 : 24;
38
+ break;
39
+ case 9:
40
+ _context.next = 11;
41
+ return (0, _parse3dTileComposite.parseComposite3DTile)(tile, arrayBuffer, byteOffset, options, context, parse3DTile);
42
+ case 11:
43
+ return _context.abrupt("return", _context.sent);
44
+ case 12:
45
+ _context.next = 14;
46
+ return (0, _parse3dTileBatchedModel.parseBatchedModel3DTile)(tile, arrayBuffer, byteOffset, options, context);
47
+ case 14:
48
+ return _context.abrupt("return", _context.sent);
49
+ case 15:
50
+ _context.next = 17;
51
+ return (0, _parse3dTileGltf.parseGltf3DTile)(tile, arrayBuffer, options, context);
52
+ case 17:
53
+ return _context.abrupt("return", _context.sent);
54
+ case 18:
55
+ _context.next = 20;
56
+ return (0, _parse3dTileInstancedModel.parseInstancedModel3DTile)(tile, arrayBuffer, byteOffset, options, context);
57
+ case 20:
58
+ return _context.abrupt("return", _context.sent);
59
+ case 21:
60
+ _context.next = 23;
61
+ return (0, _parse3dTilePointCloud.parsePointCloud3DTile)(tile, arrayBuffer, byteOffset, options, context);
62
+ case 23:
63
+ return _context.abrupt("return", _context.sent);
64
+ case 24:
65
+ throw new Error("3DTileLoader: unknown type ".concat(tile.type));
66
+ case 25:
67
+ case "end":
68
+ return _context.stop();
69
+ }
70
+ }, _callee);
71
+ }));
72
+ return _parse3DTile.apply(this, arguments);
73
+ }
74
+ //# sourceMappingURL=parse-3d-tile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-3d-tile.js","names":["_constants","require","_parseUtils","_parse3dTilePointCloud","_parse3dTileBatchedModel","_parse3dTileInstancedModel","_parse3dTileComposite","_parse3dTileGltf","parse3DTile","_x","_parse3DTile","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","arrayBuffer","byteOffset","options","context","tile","_args","wrap","_callee$","_context","prev","next","length","undefined","type","getMagicString","t0","TILE3D_TYPE","COMPOSITE","BATCHED_3D_MODEL","GLTF","INSTANCED_3D_MODEL","POINT_CLOUD","parseComposite3DTile","abrupt","sent","parseBatchedModel3DTile","parseGltf3DTile","parseInstancedModel3DTile","parsePointCloud3DTile","Error","concat","stop"],"sources":["../../../../src/lib/parsers/parse-3d-tile.ts"],"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 {TILE3D_TYPE} from '../constants';\nimport {getMagicString} from './helpers/parse-utils';\n\nimport {parsePointCloud3DTile} from './parse-3d-tile-point-cloud';\nimport {parseBatchedModel3DTile} from './parse-3d-tile-batched-model';\nimport {parseInstancedModel3DTile} from './parse-3d-tile-instanced-model';\nimport {parseComposite3DTile} from './parse-3d-tile-composite';\nimport {parseGltf3DTile} from './parse-3d-tile-gltf';\nimport {LoaderContext} from '@loaders.gl/loader-utils';\nimport {Tiles3DLoaderOptions} from '../../tiles-3d-loader';\nimport {Tiles3DTileContent} from '../../types';\n\n// Extracts\nexport async function parse3DTile(\n arrayBuffer: ArrayBuffer,\n byteOffset = 0,\n options: Tiles3DLoaderOptions | undefined,\n context: LoaderContext | undefined,\n tile: Tiles3DTileContent = {}\n) {\n tile.byteOffset = byteOffset;\n tile.type = getMagicString(arrayBuffer, byteOffset);\n\n switch (tile.type) {\n case TILE3D_TYPE.COMPOSITE:\n // Note: We pass this function as argument so that embedded tiles can be parsed recursively\n return await parseComposite3DTile(\n tile,\n arrayBuffer,\n byteOffset,\n options,\n context,\n parse3DTile\n );\n\n case TILE3D_TYPE.BATCHED_3D_MODEL:\n return await parseBatchedModel3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n case TILE3D_TYPE.GLTF:\n return await parseGltf3DTile(tile, arrayBuffer, options, context);\n\n case TILE3D_TYPE.INSTANCED_3D_MODEL:\n return await parseInstancedModel3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n case TILE3D_TYPE.POINT_CLOUD:\n return await parsePointCloud3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n default:\n throw new Error(`3DTileLoader: unknown type ${tile.type}`); // eslint-disable-line\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.convertS2BoundingVolumetoOBB = convertS2BoundingVolumetoOBB;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _core = require("@math.gl/core");
10
+ var _culling = require("@math.gl/culling");
11
+ var _index = require("../../utils/s2/index");
12
+ var _geospatial = require("@math.gl/geospatial");
13
+ function convertS2BoundingVolumetoOBB(s2VolumeInfo) {
14
+ var token = s2VolumeInfo.token;
15
+ var heightInfo = {
16
+ minimumHeight: s2VolumeInfo.minimumHeight,
17
+ maximumHeight: s2VolumeInfo.maximumHeight
18
+ };
19
+ var corners = (0, _index.getS2OrientedBoundingBoxCornerPoints)(token, heightInfo);
20
+ var center = (0, _index.getS2LngLat)(token);
21
+ var centerLng = center[0];
22
+ var centerLat = center[1];
23
+ var point = _geospatial.Ellipsoid.WGS84.cartographicToCartesian([centerLng, centerLat, heightInfo.maximumHeight]);
24
+ var centerPointAdditional = new _core.Vector3(point[0], point[1], point[2]);
25
+ corners.push(centerPointAdditional);
26
+ var obb = (0, _culling.makeOrientedBoundingBoxFromPoints)(corners);
27
+ var box = [].concat((0, _toConsumableArray2.default)(obb.center), (0, _toConsumableArray2.default)(obb.halfAxes));
28
+ return box;
29
+ }
30
+ //# sourceMappingURL=s2-corners-to-obb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s2-corners-to-obb.js","names":["_core","require","_culling","_index","_geospatial","convertS2BoundingVolumetoOBB","s2VolumeInfo","token","heightInfo","minimumHeight","maximumHeight","corners","getS2OrientedBoundingBoxCornerPoints","center","getS2LngLat","centerLng","centerLat","point","Ellipsoid","WGS84","cartographicToCartesian","centerPointAdditional","Vector3","push","obb","makeOrientedBoundingBoxFromPoints","box","concat","_toConsumableArray2","default","halfAxes"],"sources":["../../../../../src/lib/utils/obb/s2-corners-to-obb.ts"],"sourcesContent":["import {Vector3} from '@math.gl/core';\nimport {OrientedBoundingBox, makeOrientedBoundingBoxFromPoints} from '@math.gl/culling';\n\nimport type {S2HeightInfo} from '../../utils/s2/index';\nimport {getS2OrientedBoundingBoxCornerPoints} from '../../utils/s2/index';\n\nimport {getS2LngLat} from '../../utils/s2/index';\nimport {Ellipsoid} from '@math.gl/geospatial';\n\nexport type S2VolumeInfo = {\n /** S2 key or token */\n token: string;\n /** minimum height in meters */\n minimumHeight: number;\n /** maximum height in meters */\n maximumHeight: number;\n};\n\n/**\n * Converts S2VolumeInfo to OrientedBoundingBox\n * @param {S2VolumeInfo} s2VolumeInfo - s2 volume to convert\n * @returns Oriented Bounding Box of type Box\n */\nexport function convertS2BoundingVolumetoOBB(s2VolumeInfo: S2VolumeInfo): number[] {\n const token: string = s2VolumeInfo.token;\n const heightInfo: S2HeightInfo = {\n minimumHeight: s2VolumeInfo.minimumHeight,\n maximumHeight: s2VolumeInfo.maximumHeight\n };\n\n const corners: Vector3[] = getS2OrientedBoundingBoxCornerPoints(token, heightInfo);\n\n // Add a point that doesn't allow the box dive under the Earth\n\n const center = getS2LngLat(token);\n const centerLng: number = center[0];\n const centerLat: number = center[1];\n const point = Ellipsoid.WGS84.cartographicToCartesian([\n centerLng,\n centerLat,\n heightInfo.maximumHeight\n ]);\n const centerPointAdditional = new Vector3(point[0], point[1], point[2]);\n corners.push(centerPointAdditional);\n\n // corners should be an array of Vector3 (XYZ)\n const obb: OrientedBoundingBox = makeOrientedBoundingBoxFromPoints(corners);\n const box: number[] = [...obb.center, ...obb.halfAxes];\n\n return box;\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAGA,IAAAE,MAAA,GAAAF,OAAA;AAGA,IAAAG,WAAA,GAAAH,OAAA;AAgBO,SAASI,4BAA4BA,CAACC,YAA0B,EAAY;EACjF,IAAMC,KAAa,GAAGD,YAAY,CAACC,KAAK;EACxC,IAAMC,UAAwB,GAAG;IAC/BC,aAAa,EAAEH,YAAY,CAACG,aAAa;IACzCC,aAAa,EAAEJ,YAAY,CAACI;EAC9B,CAAC;EAED,IAAMC,OAAkB,GAAG,IAAAC,2CAAoC,EAACL,KAAK,EAAEC,UAAU,CAAC;EAIlF,IAAMK,MAAM,GAAG,IAAAC,kBAAW,EAACP,KAAK,CAAC;EACjC,IAAMQ,SAAiB,GAAGF,MAAM,CAAC,CAAC,CAAC;EACnC,IAAMG,SAAiB,GAAGH,MAAM,CAAC,CAAC,CAAC;EACnC,IAAMI,KAAK,GAAGC,qBAAS,CAACC,KAAK,CAACC,uBAAuB,CAAC,CACpDL,SAAS,EACTC,SAAS,EACTR,UAAU,CAACE,aAAa,CACzB,CAAC;EACF,IAAMW,qBAAqB,GAAG,IAAIC,aAAO,CAACL,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC;EACvEN,OAAO,CAACY,IAAI,CAACF,qBAAqB,CAAC;EAGnC,IAAMG,GAAwB,GAAG,IAAAC,0CAAiC,EAACd,OAAO,CAAC;EAC3E,IAAMe,GAAa,MAAAC,MAAA,KAAAC,mBAAA,CAAAC,OAAA,EAAOL,GAAG,CAACX,MAAM,OAAAe,mBAAA,CAAAC,OAAA,EAAKL,GAAG,CAACM,QAAQ,EAAC;EAEtD,OAAOJ,GAAG;AACZ"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getS2BoundaryFlatFromS2Cell = getS2BoundaryFlatFromS2Cell;
7
+ var _s2Geometry = require("../s2geometry/s2-geometry");
8
+ var MAX_RESOLUTION = 100;
9
+ function getS2BoundaryFlatFromS2Cell(s2cell) {
10
+ var face = s2cell.face,
11
+ ij = s2cell.ij,
12
+ level = s2cell.level;
13
+ var offsets = [[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]];
14
+ var resolution = Math.max(1, Math.ceil(MAX_RESOLUTION * Math.pow(2, -level)));
15
+ var result = new Float64Array(4 * resolution * 2 + 2);
16
+ var ptIndex = 0;
17
+ var prevLng = 0;
18
+ for (var i = 0; i < 4; i++) {
19
+ var offset = offsets[i].slice(0);
20
+ var nextOffset = offsets[i + 1];
21
+ var stepI = (nextOffset[0] - offset[0]) / resolution;
22
+ var stepJ = (nextOffset[1] - offset[1]) / resolution;
23
+ for (var j = 0; j < resolution; j++) {
24
+ offset[0] += stepI;
25
+ offset[1] += stepJ;
26
+ var st = (0, _s2Geometry.IJToST)(ij, level, offset);
27
+ var uv = (0, _s2Geometry.STToUV)(st);
28
+ var xyz = (0, _s2Geometry.FaceUVToXYZ)(face, uv);
29
+ var lngLat = (0, _s2Geometry.XYZToLngLat)(xyz);
30
+ if (Math.abs(lngLat[1]) > 89.999) {
31
+ lngLat[0] = prevLng;
32
+ }
33
+ var deltaLng = lngLat[0] - prevLng;
34
+ lngLat[0] += deltaLng > 180 ? -360 : deltaLng < -180 ? 360 : 0;
35
+ result[ptIndex++] = lngLat[0];
36
+ result[ptIndex++] = lngLat[1];
37
+ prevLng = lngLat[0];
38
+ }
39
+ }
40
+ result[ptIndex++] = result[0];
41
+ result[ptIndex++] = result[1];
42
+ return result;
43
+ }
44
+ //# sourceMappingURL=s2-to-boundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s2-to-boundary.js","names":["_s2Geometry","require","MAX_RESOLUTION","getS2BoundaryFlatFromS2Cell","s2cell","face","ij","level","offsets","resolution","Math","max","ceil","pow","result","Float64Array","ptIndex","prevLng","i","offset","slice","nextOffset","stepI","stepJ","j","st","IJToST","uv","STToUV","xyz","FaceUVToXYZ","lngLat","XYZToLngLat","abs","deltaLng"],"sources":["../../../../../../src/lib/utils/s2/converters/s2-to-boundary.ts"],"sourcesContent":["import type {S2Cell} from '../s2geometry/s2-geometry';\nimport {IJToST, STToUV, FaceUVToXYZ, XYZToLngLat} from '../s2geometry/s2-geometry';\n\nconst MAX_RESOLUTION = 100;\n\n/**\n * Get a polygon with corner coordinates for an S2 cell\n * @param s2cell {S2Cell} S2 cell\n * @return {Float64Array} - a simple polygon in flat array format: [lng0, lat0, lng1, lat1, ...]\n * - the polygon is closed, i.e. last coordinate is a copy of the first coordinate\n */\n// eslint-disable-next-line max-statements\nexport function getS2BoundaryFlatFromS2Cell(s2cell: S2Cell): Float64Array {\n const {face, ij, level} = s2cell;\n const offsets = [\n [0, 0],\n [0, 1],\n [1, 1],\n [1, 0],\n [0, 0]\n ];\n\n // The S2 cell edge is curved: http://s2geometry.io/\n // This is more prominent at lower levels\n // resolution is the number of segments to generate per edge.\n // We exponentially reduce resolution as level increases so it doesn't affect perf\n // when there are a large number of cells\n const resolution = Math.max(1, Math.ceil(MAX_RESOLUTION * Math.pow(2, -level)));\n const result = new Float64Array(4 * resolution * 2 + 2);\n let ptIndex = 0;\n let prevLng = 0;\n\n for (let i = 0; i < 4; i++) {\n const offset = offsets[i].slice(0) as [number, number];\n const nextOffset = offsets[i + 1];\n const stepI = (nextOffset[0] - offset[0]) / resolution;\n const stepJ = (nextOffset[1] - offset[1]) / resolution;\n\n for (let j = 0; j < resolution; j++) {\n offset[0] += stepI;\n offset[1] += stepJ;\n // Cell can be represented by coordinates IJ, ST, UV, XYZ\n // http://s2geometry.io/devguide/s2cell_hierarchy#coordinate-systems\n const st = IJToST(ij, level, offset);\n const uv = STToUV(st);\n const xyz = FaceUVToXYZ(face, uv);\n const lngLat = XYZToLngLat(xyz);\n\n // Adjust longitude for Web Mercator projection\n\n if (Math.abs(lngLat[1]) > 89.999) {\n lngLat[0] = prevLng;\n }\n\n const deltaLng = lngLat[0] - prevLng;\n lngLat[0] += deltaLng > 180 ? -360 : deltaLng < -180 ? 360 : 0;\n\n result[ptIndex++] = lngLat[0];\n result[ptIndex++] = lngLat[1];\n prevLng = lngLat[0];\n }\n }\n // close the loop\n result[ptIndex++] = result[0];\n result[ptIndex++] = result[1];\n return result;\n}\n"],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getS2OrientedBoundingBoxCornerPoints = getS2OrientedBoundingBoxCornerPoints;
7
+ var _s2CellUtils = require("../s2geometry/s2-cell-utils");
8
+ var _s2ToRegion = require("./s2-to-region");
9
+ var _core = require("@math.gl/core");
10
+ function getS2OrientedBoundingBoxCornerPoints(tokenOrKey, heightInfo) {
11
+ var min = (heightInfo === null || heightInfo === void 0 ? void 0 : heightInfo.minimumHeight) || 0;
12
+ var max = (heightInfo === null || heightInfo === void 0 ? void 0 : heightInfo.maximumHeight) || 0;
13
+ var s2cell = (0, _s2CellUtils.getS2Cell)(tokenOrKey);
14
+ var region = (0, _s2ToRegion.getS2Region)(s2cell);
15
+ var W = region.west;
16
+ var S = region.south;
17
+ var E = region.east;
18
+ var N = region.north;
19
+ var points = [];
20
+ points.push(new _core.Vector3(W, N, min));
21
+ points.push(new _core.Vector3(E, N, min));
22
+ points.push(new _core.Vector3(E, S, min));
23
+ points.push(new _core.Vector3(W, S, min));
24
+ points.push(new _core.Vector3(W, N, max));
25
+ points.push(new _core.Vector3(E, N, max));
26
+ points.push(new _core.Vector3(E, S, max));
27
+ points.push(new _core.Vector3(W, S, max));
28
+ return points;
29
+ }
30
+ //# sourceMappingURL=s2-to-obb-points.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s2-to-obb-points.js","names":["_s2CellUtils","require","_s2ToRegion","_core","getS2OrientedBoundingBoxCornerPoints","tokenOrKey","heightInfo","min","minimumHeight","max","maximumHeight","s2cell","getS2Cell","region","getS2Region","W","west","S","south","E","east","N","north","points","push","Vector3"],"sources":["../../../../../../src/lib/utils/s2/converters/s2-to-obb-points.ts"],"sourcesContent":["import {getS2Cell} from '../s2geometry/s2-cell-utils';\nimport {getS2Region} from './s2-to-region';\nimport {Vector3} from '@math.gl/core';\n\nexport type S2HeightInfo = {\n minimumHeight: number;\n maximumHeight: number;\n};\n\n/**\n * Converts S2HeightInfo to corner points of an oriented bounding box\n * Can be used to constuct an OrientedBoundingBox instance\n * @param tokenOrKey {string} A string that is the cell's hex token or the Hilbert quad key (containing /)\n * @param heightInfo {S2HeightInfo} min and max height of the box\n * @returns corner points of the oriented bounding box\n */\nexport function getS2OrientedBoundingBoxCornerPoints(\n tokenOrKey: string, // This can be an S2 key or token\n heightInfo?: S2HeightInfo\n): Vector3[] {\n const min: number = heightInfo?.minimumHeight || 0;\n const max: number = heightInfo?.maximumHeight || 0;\n\n const s2cell = getS2Cell(tokenOrKey);\n const region = getS2Region(s2cell);\n\n // region lng/lat are in degrees\n const W = region.west;\n const S = region.south;\n const E = region.east;\n const N = region.north;\n\n const points: Vector3[] = [];\n\n points.push(new Vector3(W, N, min));\n points.push(new Vector3(E, N, min));\n points.push(new Vector3(E, S, min));\n points.push(new Vector3(W, S, min));\n\n points.push(new Vector3(W, N, max));\n points.push(new Vector3(E, N, max));\n points.push(new Vector3(E, S, max));\n points.push(new Vector3(W, S, max));\n\n return points;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAcO,SAASG,oCAAoCA,CAClDC,UAAkB,EAClBC,UAAyB,EACd;EACX,IAAMC,GAAW,GAAG,CAAAD,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEE,aAAa,KAAI,CAAC;EAClD,IAAMC,GAAW,GAAG,CAAAH,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEI,aAAa,KAAI,CAAC;EAElD,IAAMC,MAAM,GAAG,IAAAC,sBAAS,EAACP,UAAU,CAAC;EACpC,IAAMQ,MAAM,GAAG,IAAAC,uBAAW,EAACH,MAAM,CAAC;EAGlC,IAAMI,CAAC,GAAGF,MAAM,CAACG,IAAI;EACrB,IAAMC,CAAC,GAAGJ,MAAM,CAACK,KAAK;EACtB,IAAMC,CAAC,GAAGN,MAAM,CAACO,IAAI;EACrB,IAAMC,CAAC,GAAGR,MAAM,CAACS,KAAK;EAEtB,IAAMC,MAAiB,GAAG,EAAE;EAE5BA,MAAM,CAACC,IAAI,CAAC,IAAIC,aAAO,CAACV,CAAC,EAAEM,CAAC,EAAEd,GAAG,CAAC,CAAC;EACnCgB,MAAM,CAACC,IAAI,CAAC,IAAIC,aAAO,CAACN,CAAC,EAAEE,CAAC,EAAEd,GAAG,CAAC,CAAC;EACnCgB,MAAM,CAACC,IAAI,CAAC,IAAIC,aAAO,CAACN,CAAC,EAAEF,CAAC,EAAEV,GAAG,CAAC,CAAC;EACnCgB,MAAM,CAACC,IAAI,CAAC,IAAIC,aAAO,CAACV,CAAC,EAAEE,CAAC,EAAEV,GAAG,CAAC,CAAC;EAEnCgB,MAAM,CAACC,IAAI,CAAC,IAAIC,aAAO,CAACV,CAAC,EAAEM,CAAC,EAAEZ,GAAG,CAAC,CAAC;EACnCc,MAAM,CAACC,IAAI,CAAC,IAAIC,aAAO,CAACN,CAAC,EAAEE,CAAC,EAAEZ,GAAG,CAAC,CAAC;EACnCc,MAAM,CAACC,IAAI,CAAC,IAAIC,aAAO,CAACN,CAAC,EAAEF,CAAC,EAAER,GAAG,CAAC,CAAC;EACnCc,MAAM,CAACC,IAAI,CAAC,IAAIC,aAAO,CAACV,CAAC,EAAEE,CAAC,EAAER,GAAG,CAAC,CAAC;EAEnC,OAAOc,MAAM;AACf"}