@loaders.gl/3d-tiles 3.1.0-alpha.3 → 3.1.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/dist/bundle.d.ts +2 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +9972 -4
  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 +36 -32
  7. package/dist/es5/bundle.js +7 -0
  8. package/dist/es5/bundle.js.map +1 -0
  9. package/dist/es5/cesium-ion-loader.js +45 -0
  10. package/dist/es5/cesium-ion-loader.js.map +1 -0
  11. package/dist/es5/index.js +72 -0
  12. package/dist/es5/index.js.map +1 -0
  13. package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js +108 -0
  14. package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -0
  15. package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js +223 -0
  16. package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -0
  17. package/dist/es5/lib/classes/tile-3d-batch-table.js +312 -0
  18. package/dist/es5/lib/classes/tile-3d-batch-table.js.map +1 -0
  19. package/dist/es5/lib/classes/tile-3d-feature-table.js +103 -0
  20. package/dist/es5/lib/classes/tile-3d-feature-table.js.map +1 -0
  21. package/dist/es5/lib/constants.js +31 -0
  22. package/dist/es5/lib/constants.js.map +1 -0
  23. package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js +56 -0
  24. package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js.map +1 -0
  25. package/dist/es5/lib/encoders/encode-3d-tile-composite.js +34 -0
  26. package/dist/es5/lib/encoders/encode-3d-tile-composite.js.map +1 -0
  27. package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js +48 -0
  28. package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -0
  29. package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js +52 -0
  30. package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -0
  31. package/dist/es5/lib/encoders/encode-3d-tile.js +48 -0
  32. package/dist/es5/lib/encoders/encode-3d-tile.js.map +1 -0
  33. package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js +41 -0
  34. package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -0
  35. package/dist/es5/lib/ion/ion.js +91 -0
  36. package/dist/es5/lib/ion/ion.js.map +1 -0
  37. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js +75 -0
  38. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -0
  39. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js +40 -0
  40. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -0
  41. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js +40 -0
  42. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -0
  43. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +83 -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 +24 -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 +73 -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 +100 -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 +31 -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 +43 -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 +25 -0
  56. package/dist/es5/lib/parsers/parse-3d-tile-composite.js.map +1 -0
  57. package/dist/es5/lib/parsers/parse-3d-tile-header.js +86 -0
  58. package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -0
  59. package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js +195 -0
  60. package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -0
  61. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js +265 -0
  62. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -0
  63. package/dist/es5/lib/parsers/parse-3d-tile.js +41 -0
  64. package/dist/es5/lib/parsers/parse-3d-tile.js.map +1 -0
  65. package/dist/es5/lib/utils/version.js +9 -0
  66. package/dist/es5/lib/utils/version.js.map +1 -0
  67. package/dist/es5/tile-3d-subtree-loader.js +26 -0
  68. package/dist/es5/tile-3d-subtree-loader.js.map +1 -0
  69. package/dist/es5/tile-3d-writer.js +32 -0
  70. package/dist/es5/tile-3d-writer.js.map +1 -0
  71. package/dist/es5/tiles-3d-loader.js +85 -0
  72. package/dist/es5/tiles-3d-loader.js.map +1 -0
  73. package/dist/es5/types.js +2 -0
  74. package/dist/{types.js.map → es5/types.js.map} +0 -0
  75. package/dist/esm/bundle.js +5 -0
  76. package/dist/esm/bundle.js.map +1 -0
  77. package/dist/esm/cesium-ion-loader.js +36 -0
  78. package/dist/esm/cesium-ion-loader.js.map +1 -0
  79. package/dist/esm/index.js +9 -0
  80. package/dist/esm/index.js.map +1 -0
  81. package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js +96 -0
  82. package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -0
  83. package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js +215 -0
  84. package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -0
  85. package/dist/esm/lib/classes/tile-3d-batch-table.js +304 -0
  86. package/dist/esm/lib/classes/tile-3d-batch-table.js.map +1 -0
  87. package/dist/esm/lib/classes/tile-3d-feature-table.js +94 -0
  88. package/dist/esm/lib/classes/tile-3d-feature-table.js.map +1 -0
  89. package/dist/esm/lib/constants.js +21 -0
  90. package/dist/esm/lib/constants.js.map +1 -0
  91. package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js +46 -0
  92. package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js.map +1 -0
  93. package/dist/esm/lib/encoders/encode-3d-tile-composite.js +25 -0
  94. package/dist/esm/lib/encoders/encode-3d-tile-composite.js.map +1 -0
  95. package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js +38 -0
  96. package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -0
  97. package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js +41 -0
  98. package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -0
  99. package/dist/esm/lib/encoders/encode-3d-tile.js +35 -0
  100. package/dist/esm/lib/encoders/encode-3d-tile.js.map +1 -0
  101. package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js +31 -0
  102. package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -0
  103. package/dist/esm/lib/ion/ion.js +77 -0
  104. package/dist/esm/lib/ion/ion.js.map +1 -0
  105. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js +67 -0
  106. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -0
  107. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js +30 -0
  108. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -0
  109. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js +31 -0
  110. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -0
  111. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js +69 -0
  112. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -0
  113. package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js +17 -0
  114. package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -0
  115. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js +64 -0
  116. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -0
  117. package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js +89 -0
  118. package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -0
  119. package/dist/esm/lib/parsers/helpers/parse-utils.js +19 -0
  120. package/dist/esm/lib/parsers/helpers/parse-utils.js.map +1 -0
  121. package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js +29 -0
  122. package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js.map +1 -0
  123. package/dist/esm/lib/parsers/parse-3d-tile-composite.js +17 -0
  124. package/dist/esm/lib/parsers/parse-3d-tile-composite.js.map +1 -0
  125. package/dist/esm/lib/parsers/parse-3d-tile-header.js +77 -0
  126. package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -0
  127. package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js +177 -0
  128. package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -0
  129. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js +245 -0
  130. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -0
  131. package/dist/esm/lib/parsers/parse-3d-tile.js +28 -0
  132. package/dist/esm/lib/parsers/parse-3d-tile.js.map +1 -0
  133. package/dist/esm/lib/utils/version.js +2 -0
  134. package/dist/esm/lib/utils/version.js.map +1 -0
  135. package/dist/esm/tile-3d-subtree-loader.js +14 -0
  136. package/dist/esm/tile-3d-subtree-loader.js.map +1 -0
  137. package/dist/esm/tile-3d-writer.js +20 -0
  138. package/dist/esm/tile-3d-writer.js.map +1 -0
  139. package/dist/esm/tiles-3d-loader.js +72 -0
  140. package/dist/esm/tiles-3d-loader.js.map +1 -0
  141. package/dist/esm/types.js +2 -0
  142. package/dist/esm/types.js.map +1 -0
  143. package/dist/index.d.ts +10 -0
  144. package/dist/index.d.ts.map +1 -0
  145. package/dist/index.js +26 -8
  146. package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts +8 -0
  147. package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts.map +1 -0
  148. package/dist/lib/classes/helpers/tile-3d-accessor-utils.js +106 -89
  149. package/dist/lib/classes/tile-3d-batch-table-hierarchy.d.ts +10 -0
  150. package/dist/lib/classes/tile-3d-batch-table-hierarchy.d.ts.map +1 -0
  151. package/dist/lib/classes/tile-3d-batch-table-hierarchy.js +184 -202
  152. package/dist/lib/classes/tile-3d-batch-table.d.ts +34 -0
  153. package/dist/lib/classes/tile-3d-batch-table.d.ts.map +1 -0
  154. package/dist/lib/classes/tile-3d-batch-table.js +223 -267
  155. package/dist/lib/classes/tile-3d-feature-table.d.ts +15 -0
  156. package/dist/lib/classes/tile-3d-feature-table.d.ts.map +1 -0
  157. package/dist/lib/classes/tile-3d-feature-table.js +64 -79
  158. package/dist/lib/constants.d.ts +21 -0
  159. package/dist/lib/constants.d.ts.map +1 -0
  160. package/dist/lib/constants.js +22 -18
  161. package/dist/lib/encoders/encode-3d-tile-batched-model.d.ts +2 -0
  162. package/dist/lib/encoders/encode-3d-tile-batched-model.d.ts.map +1 -0
  163. package/dist/lib/encoders/encode-3d-tile-batched-model.js +45 -45
  164. package/dist/lib/encoders/encode-3d-tile-composite.d.ts +2 -0
  165. package/dist/lib/encoders/encode-3d-tile-composite.d.ts.map +1 -0
  166. package/dist/lib/encoders/encode-3d-tile-composite.js +23 -24
  167. package/dist/lib/encoders/encode-3d-tile-instanced-model.d.ts +2 -0
  168. package/dist/lib/encoders/encode-3d-tile-instanced-model.d.ts.map +1 -0
  169. package/dist/lib/encoders/encode-3d-tile-instanced-model.js +37 -37
  170. package/dist/lib/encoders/encode-3d-tile-point-cloud.d.ts +2 -0
  171. package/dist/lib/encoders/encode-3d-tile-point-cloud.d.ts.map +1 -0
  172. package/dist/lib/encoders/encode-3d-tile-point-cloud.js +36 -38
  173. package/dist/lib/encoders/encode-3d-tile.d.ts +2 -0
  174. package/dist/lib/encoders/encode-3d-tile.d.ts.map +1 -0
  175. package/dist/lib/encoders/encode-3d-tile.js +30 -32
  176. package/dist/lib/encoders/helpers/encode-3d-tile-header.d.ts +3 -0
  177. package/dist/lib/encoders/helpers/encode-3d-tile-header.d.ts.map +1 -0
  178. package/dist/lib/encoders/helpers/encode-3d-tile-header.js +28 -29
  179. package/dist/lib/ion/ion.d.ts +4 -0
  180. package/dist/lib/ion/ion.d.ts.map +1 -0
  181. package/dist/lib/ion/ion.js +60 -69
  182. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.d.ts +7 -0
  183. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.d.ts.map +1 -0
  184. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.js +60 -62
  185. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.d.ts +6 -0
  186. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.d.ts.map +1 -0
  187. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.js +26 -26
  188. package/dist/lib/parsers/helpers/normalize-3d-tile-positions.d.ts +2 -0
  189. package/dist/lib/parsers/helpers/normalize-3d-tile-positions.d.ts.map +1 -0
  190. package/dist/lib/parsers/helpers/normalize-3d-tile-positions.js +39 -28
  191. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.d.ts +7 -0
  192. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.d.ts.map +1 -0
  193. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.js +82 -63
  194. package/dist/lib/parsers/helpers/parse-3d-tile-header.d.ts +2 -0
  195. package/dist/lib/parsers/helpers/parse-3d-tile-header.d.ts.map +1 -0
  196. package/dist/lib/parsers/helpers/parse-3d-tile-header.js +26 -15
  197. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts +9 -0
  198. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts.map +1 -0
  199. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js +74 -0
  200. package/dist/lib/parsers/helpers/parse-3d-tile-tables.d.ts +3 -0
  201. package/dist/lib/parsers/helpers/parse-3d-tile-tables.d.ts.map +1 -0
  202. package/dist/lib/parsers/helpers/parse-3d-tile-tables.js +85 -81
  203. package/dist/lib/parsers/helpers/parse-utils.d.ts +4 -0
  204. package/dist/lib/parsers/helpers/parse-utils.d.ts.map +1 -0
  205. package/dist/lib/parsers/helpers/parse-utils.js +25 -16
  206. package/dist/lib/parsers/parse-3d-tile-batched-model.d.ts +2 -0
  207. package/dist/lib/parsers/parse-3d-tile-batched-model.d.ts.map +1 -0
  208. package/dist/lib/parsers/parse-3d-tile-batched-model.js +30 -26
  209. package/dist/lib/parsers/parse-3d-tile-composite.d.ts +2 -0
  210. package/dist/lib/parsers/parse-3d-tile-composite.d.ts.map +1 -0
  211. package/dist/lib/parsers/parse-3d-tile-composite.js +25 -16
  212. package/dist/lib/parsers/parse-3d-tile-header.d.ts +3 -0
  213. package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -0
  214. package/dist/lib/parsers/parse-3d-tile-header.js +59 -70
  215. package/dist/lib/parsers/parse-3d-tile-instanced-model.d.ts +2 -0
  216. package/dist/lib/parsers/parse-3d-tile-instanced-model.d.ts.map +1 -0
  217. package/dist/lib/parsers/parse-3d-tile-instanced-model.js +179 -170
  218. package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts +3 -0
  219. package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts.map +1 -0
  220. package/dist/lib/parsers/parse-3d-tile-point-cloud.js +350 -184
  221. package/dist/lib/parsers/parse-3d-tile.d.ts +2 -0
  222. package/dist/lib/parsers/parse-3d-tile.d.ts.map +1 -0
  223. package/dist/lib/parsers/parse-3d-tile.js +33 -27
  224. package/dist/lib/utils/version.d.ts +2 -0
  225. package/dist/lib/utils/version.d.ts.map +1 -0
  226. package/dist/lib/utils/version.js +7 -2
  227. package/dist/tile-3d-subtree-loader.d.ts +7 -0
  228. package/dist/tile-3d-subtree-loader.d.ts.map +1 -0
  229. package/dist/tile-3d-subtree-loader.js +23 -0
  230. package/dist/tile-3d-writer.d.ts +6 -0
  231. package/dist/tile-3d-writer.d.ts.map +1 -0
  232. package/dist/tile-3d-writer.js +24 -17
  233. package/dist/tiles-3d-loader.d.ts +6 -0
  234. package/dist/tiles-3d-loader.d.ts.map +1 -0
  235. package/dist/tiles-3d-loader.js +63 -62
  236. package/dist/types.d.ts +75 -0
  237. package/dist/types.d.ts.map +1 -0
  238. package/dist/types.js +2 -2
  239. package/package.json +14 -12
  240. package/src/index.ts +1 -0
  241. package/src/lib/classes/helpers/{tile-3d-accessor-utils.js → tile-3d-accessor-utils.ts} +0 -0
  242. package/src/lib/classes/{tile-3d-batch-table-hierarchy.js → tile-3d-batch-table-hierarchy.ts} +0 -0
  243. package/src/lib/classes/{tile-3d-batch-table.js → tile-3d-batch-table.ts} +14 -4
  244. package/src/lib/classes/{tile-3d-feature-table.js → tile-3d-feature-table.ts} +5 -2
  245. package/src/lib/{constants.js → constants.ts} +0 -0
  246. package/src/lib/encoders/{encode-3d-tile-batched-model.js → encode-3d-tile-batched-model.ts} +0 -0
  247. package/src/lib/encoders/{encode-3d-tile-composite.js → encode-3d-tile-composite.ts} +0 -0
  248. package/src/lib/encoders/{encode-3d-tile-instanced-model.js → encode-3d-tile-instanced-model.ts} +0 -0
  249. package/src/lib/encoders/{encode-3d-tile-point-cloud.js → encode-3d-tile-point-cloud.ts} +0 -0
  250. package/src/lib/encoders/{encode-3d-tile.js → encode-3d-tile.ts} +0 -0
  251. package/src/lib/encoders/helpers/{encode-3d-tile-header.js → encode-3d-tile-header.ts} +0 -0
  252. package/src/lib/parsers/helpers/{normalize-3d-tile-colors.js → normalize-3d-tile-colors.ts} +1 -1
  253. package/src/lib/parsers/helpers/{normalize-3d-tile-normals.js → normalize-3d-tile-normals.ts} +0 -0
  254. package/src/lib/parsers/helpers/{normalize-3d-tile-positions.js → normalize-3d-tile-positions.ts} +0 -0
  255. package/src/lib/parsers/helpers/{parse-3d-tile-gltf-view.js → parse-3d-tile-gltf-view.ts} +1 -1
  256. package/src/lib/parsers/helpers/{parse-3d-tile-header.js → parse-3d-tile-header.ts} +0 -0
  257. package/src/lib/parsers/helpers/parse-3d-tile-subtree.ts +104 -0
  258. package/src/lib/parsers/helpers/{parse-3d-tile-tables.js → parse-3d-tile-tables.ts} +1 -1
  259. package/src/lib/parsers/helpers/{parse-utils.js → parse-utils.ts} +0 -0
  260. package/src/lib/parsers/{parse-3d-tile-batched-model.js → parse-3d-tile-batched-model.ts} +0 -0
  261. package/src/lib/parsers/{parse-3d-tile-composite.js → parse-3d-tile-composite.ts} +0 -0
  262. package/src/lib/parsers/{parse-3d-tile-header.js → parse-3d-tile-header.ts} +1 -1
  263. package/src/lib/parsers/{parse-3d-tile-instanced-model.js → parse-3d-tile-instanced-model.ts} +6 -0
  264. package/src/lib/parsers/{parse-3d-tile-point-cloud.js → parse-3d-tile-point-cloud.ts} +2 -2
  265. package/src/lib/parsers/{parse-3d-tile.js → parse-3d-tile.ts} +4 -0
  266. package/src/lib/utils/{version.js → version.ts} +0 -0
  267. package/src/tile-3d-subtree-loader.ts +19 -0
  268. package/src/types.ts +33 -0
  269. package/dist/bundle.js.map +0 -1
  270. package/dist/cesium-ion-loader.js.map +0 -1
  271. package/dist/dist.min.js +0 -2
  272. package/dist/dist.min.js.map +0 -1
  273. package/dist/index.js.map +0 -1
  274. package/dist/lib/classes/helpers/tile-3d-accessor-utils.js.map +0 -1
  275. package/dist/lib/classes/tile-3d-batch-table-hierarchy.js.map +0 -1
  276. package/dist/lib/classes/tile-3d-batch-table.js.map +0 -1
  277. package/dist/lib/classes/tile-3d-feature-table.js.map +0 -1
  278. package/dist/lib/constants.js.map +0 -1
  279. package/dist/lib/encoders/encode-3d-tile-batched-model.js.map +0 -1
  280. package/dist/lib/encoders/encode-3d-tile-composite.js.map +0 -1
  281. package/dist/lib/encoders/encode-3d-tile-instanced-model.js.map +0 -1
  282. package/dist/lib/encoders/encode-3d-tile-point-cloud.js.map +0 -1
  283. package/dist/lib/encoders/encode-3d-tile.js.map +0 -1
  284. package/dist/lib/encoders/helpers/encode-3d-tile-header.js.map +0 -1
  285. package/dist/lib/ion/ion.js.map +0 -1
  286. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.js.map +0 -1
  287. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.js.map +0 -1
  288. package/dist/lib/parsers/helpers/normalize-3d-tile-positions.js.map +0 -1
  289. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +0 -1
  290. package/dist/lib/parsers/helpers/parse-3d-tile-header.js.map +0 -1
  291. package/dist/lib/parsers/helpers/parse-3d-tile-tables.js.map +0 -1
  292. package/dist/lib/parsers/helpers/parse-utils.js.map +0 -1
  293. package/dist/lib/parsers/parse-3d-tile-batched-model.js.map +0 -1
  294. package/dist/lib/parsers/parse-3d-tile-composite.js.map +0 -1
  295. package/dist/lib/parsers/parse-3d-tile-header.js.map +0 -1
  296. package/dist/lib/parsers/parse-3d-tile-instanced-model.js.map +0 -1
  297. package/dist/lib/parsers/parse-3d-tile-point-cloud.js.map +0 -1
  298. package/dist/lib/parsers/parse-3d-tile.js.map +0 -1
  299. package/dist/lib/utils/version.js.map +0 -1
  300. package/dist/tile-3d-writer.js.map +0 -1
  301. package/dist/tiles-3d-loader.js.map +0 -1
@@ -0,0 +1,6 @@
1
+ import type { LoaderWithParser } from '@loaders.gl/loader-utils';
2
+ /**
3
+ * Loader for 3D tiles from Cesium ION
4
+ */
5
+ export declare const CesiumIonLoader: LoaderWithParser;
6
+ //# sourceMappingURL=cesium-ion-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cesium-ion-loader.d.ts","sourceRoot":"","sources":["../src/cesium-ion-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAiB/D;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,gBAmB7B,CAAC"}
@@ -1,36 +1,40 @@
1
- import { Tiles3DLoader } from './tiles-3d-loader';
2
- import { getIonTilesetMetadata } from './lib/ion/ion';
3
-
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CesiumIonLoader = void 0;
4
+ const tiles_3d_loader_1 = require("./tiles-3d-loader");
5
+ const ion_1 = require("./lib/ion/ion");
4
6
  async function preload(url, options = {}) {
5
- options = options['cesium-ion'] || {};
6
- const {
7
- accessToken
8
- } = options;
9
- let assetId = options.assetId;
10
-
11
- if (!Number.isFinite(assetId)) {
12
- const matched = url.match(/\/([0-9]+)\/tileset.json/);
13
- assetId = matched && matched[1];
14
- }
15
-
16
- return getIonTilesetMetadata(accessToken, assetId);
7
+ options = options['cesium-ion'] || {};
8
+ // @ts-ignore
9
+ const { accessToken } = options;
10
+ // @ts-ignore
11
+ let assetId = options.assetId;
12
+ if (!Number.isFinite(assetId)) {
13
+ const matched = url.match(/\/([0-9]+)\/tileset.json/);
14
+ assetId = matched && matched[1];
15
+ }
16
+ return (0, ion_1.getIonTilesetMetadata)(accessToken, assetId);
17
17
  }
18
-
19
- export const CesiumIonLoader = { ...Tiles3DLoader,
20
- id: 'cesium-ion',
21
- name: 'Cesium Ion',
22
- preload,
23
- parse: async (data, options, context) => {
24
- options = { ...options
25
- };
26
- options['3d-tiles'] = options['cesium-ion'];
27
- options.loader = CesiumIonLoader;
28
- return Tiles3DLoader.parse(data, options, context);
29
- },
30
- options: {
31
- 'cesium-ion': { ...Tiles3DLoader.options['3d-tiles'],
32
- accessToken: null
18
+ /**
19
+ * Loader for 3D tiles from Cesium ION
20
+ */
21
+ exports.CesiumIonLoader = {
22
+ ...tiles_3d_loader_1.Tiles3DLoader,
23
+ id: 'cesium-ion',
24
+ name: 'Cesium Ion',
25
+ // @ts-ignore
26
+ preload,
27
+ parse: async (data, options, context) => {
28
+ options = { ...options };
29
+ options['3d-tiles'] = options['cesium-ion'];
30
+ // @ts-ignore
31
+ options.loader = exports.CesiumIonLoader;
32
+ return tiles_3d_loader_1.Tiles3DLoader.parse(data, options, context); // , loader);
33
+ },
34
+ options: {
35
+ 'cesium-ion': {
36
+ ...tiles_3d_loader_1.Tiles3DLoader.options['3d-tiles'],
37
+ accessToken: null
38
+ }
33
39
  }
34
- }
35
40
  };
36
- //# sourceMappingURL=cesium-ion-loader.js.map
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ const moduleExports = require('./index');
4
+
5
+ globalThis.loaders = globalThis.loaders || {};
6
+ module.exports = Object.assign(globalThis.loaders, moduleExports);
7
+ //# sourceMappingURL=bundle.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CesiumIonLoader = void 0;
7
+
8
+ var _tiles3dLoader = require("./tiles-3d-loader");
9
+
10
+ var _ion = require("./lib/ion/ion");
11
+
12
+ async function preload(url, options = {}) {
13
+ options = options['cesium-ion'] || {};
14
+ const {
15
+ accessToken
16
+ } = options;
17
+ let assetId = options.assetId;
18
+
19
+ if (!Number.isFinite(assetId)) {
20
+ const matched = url.match(/\/([0-9]+)\/tileset.json/);
21
+ assetId = matched && matched[1];
22
+ }
23
+
24
+ return (0, _ion.getIonTilesetMetadata)(accessToken, assetId);
25
+ }
26
+
27
+ const CesiumIonLoader = { ..._tiles3dLoader.Tiles3DLoader,
28
+ id: 'cesium-ion',
29
+ name: 'Cesium Ion',
30
+ preload,
31
+ parse: async (data, options, context) => {
32
+ options = { ...options
33
+ };
34
+ options['3d-tiles'] = options['cesium-ion'];
35
+ options.loader = CesiumIonLoader;
36
+ return _tiles3dLoader.Tiles3DLoader.parse(data, options, context);
37
+ },
38
+ options: {
39
+ 'cesium-ion': { ..._tiles3dLoader.Tiles3DLoader.options['3d-tiles'],
40
+ accessToken: null
41
+ }
42
+ }
43
+ };
44
+ exports.CesiumIonLoader = CesiumIonLoader;
45
+ //# sourceMappingURL=cesium-ion-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cesium-ion-loader.ts"],"names":["preload","url","options","accessToken","assetId","Number","isFinite","matched","match","CesiumIonLoader","Tiles3DLoader","id","name","parse","data","context","loader"],"mappings":";;;;;;;AACA;;AACA;;AAEA,eAAeA,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,SAAO,gCAAsBJ,WAAtB,EAAmCC,OAAnC,CAAP;AACD;;AAKM,MAAMK,eAAiC,GAAG,EAC/C,GAAGC,4BAD4C;AAE/CC,EAAAA,EAAE,EAAE,YAF2C;AAG/CC,EAAAA,IAAI,EAAE,YAHyC;AAK/CZ,EAAAA,OAL+C;AAM/Ca,EAAAA,KAAK,EAAE,OAAOC,IAAP,EAAaZ,OAAb,EAAuBa,OAAvB,KAAoC;AACzCb,IAAAA,OAAO,GAAG,EAAC,GAAGA;AAAJ,KAAV;AACAA,IAAAA,OAAO,CAAC,UAAD,CAAP,GAAsBA,OAAO,CAAC,YAAD,CAA7B;AAEAA,IAAAA,OAAO,CAACc,MAAR,GAAiBP,eAAjB;AACA,WAAOC,6BAAcG,KAAd,CAAoBC,IAApB,EAA0BZ,OAA1B,EAAmCa,OAAnC,CAAP;AACD,GAZ8C;AAa/Cb,EAAAA,OAAO,EAAE;AACP,kBAAc,EACZ,GAAGQ,6BAAcR,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"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ Object.defineProperty(exports, "Tiles3DLoader", {
9
+ enumerable: true,
10
+ get: function () {
11
+ return _tiles3dLoader.Tiles3DLoader;
12
+ }
13
+ });
14
+ Object.defineProperty(exports, "CesiumIonLoader", {
15
+ enumerable: true,
16
+ get: function () {
17
+ return _cesiumIonLoader.CesiumIonLoader;
18
+ }
19
+ });
20
+ Object.defineProperty(exports, "Tile3DSubtreeLoader", {
21
+ enumerable: true,
22
+ get: function () {
23
+ return _tile3dSubtreeLoader.Tile3DSubtreeLoader;
24
+ }
25
+ });
26
+ Object.defineProperty(exports, "Tile3DWriter", {
27
+ enumerable: true,
28
+ get: function () {
29
+ return _tile3dWriter.Tile3DWriter;
30
+ }
31
+ });
32
+ Object.defineProperty(exports, "Tile3DFeatureTable", {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _tile3dFeatureTable.default;
36
+ }
37
+ });
38
+ Object.defineProperty(exports, "Tile3DBatchTable", {
39
+ enumerable: true,
40
+ get: function () {
41
+ return _tile3dBatchTable.default;
42
+ }
43
+ });
44
+ Object.defineProperty(exports, "TILE3D_TYPE", {
45
+ enumerable: true,
46
+ get: function () {
47
+ return _constants.TILE3D_TYPE;
48
+ }
49
+ });
50
+ Object.defineProperty(exports, "_getIonTilesetMetadata", {
51
+ enumerable: true,
52
+ get: function () {
53
+ return _ion.getIonTilesetMetadata;
54
+ }
55
+ });
56
+
57
+ var _tiles3dLoader = require("./tiles-3d-loader");
58
+
59
+ var _cesiumIonLoader = require("./cesium-ion-loader");
60
+
61
+ var _tile3dSubtreeLoader = require("./tile-3d-subtree-loader");
62
+
63
+ var _tile3dWriter = require("./tile-3d-writer");
64
+
65
+ var _tile3dFeatureTable = _interopRequireDefault(require("./lib/classes/tile-3d-feature-table"));
66
+
67
+ var _tile3dBatchTable = _interopRequireDefault(require("./lib/classes/tile-3d-batch-table"));
68
+
69
+ var _constants = require("./lib/constants");
70
+
71
+ var _ion = require("./lib/ion/ion");
72
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AACA;;AAGA;;AAGA;;AACA;;AAGA;;AACA","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"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createTypedArrayFromAccessor = createTypedArrayFromAccessor;
7
+
8
+ var _math = require("@loaders.gl/math");
9
+
10
+ var _loaderUtils = require("@loaders.gl/loader-utils");
11
+
12
+ const COMPONENTS_PER_ATTRIBUTE = {
13
+ SCALAR: 1,
14
+ VEC2: 2,
15
+ VEC3: 3,
16
+ VEC4: 4,
17
+ MAT2: 4,
18
+ MAT3: 9,
19
+ MAT4: 16
20
+ };
21
+ const UNPACKER = {
22
+ SCALAR: (values, i) => values[i],
23
+ VEC2: (values, i) => [values[2 * i + 0], values[2 * i + 1]],
24
+ VEC3: (values, i) => [values[3 * i + 0], values[3 * i + 1], values[3 * i + 2]],
25
+ VEC4: (values, i) => [values[4 * i + 0], values[4 * i + 1], values[4 * i + 2], values[4 * i + 3]],
26
+ MAT2: (values, i) => [values[4 * i + 0], values[4 * i + 1], values[4 * i + 2], values[4 * i + 3]],
27
+ MAT3: (values, i) => [values[9 * i + 0], values[9 * i + 1], values[9 * i + 2], values[9 * i + 3], values[9 * i + 4], values[9 * i + 5], values[9 * i + 6], values[9 * i + 7], values[9 * i + 8]],
28
+ MAT4: (values, i) => [values[16 * i + 0], values[16 * i + 1], values[16 * i + 2], values[16 * i + 3], values[16 * i + 4], values[16 * i + 5], values[16 * i + 6], values[16 * i + 7], values[16 * i + 8], values[16 * i + 9], values[16 * i + 10], values[16 * i + 11], values[16 * i + 12], values[16 * i + 13], values[16 * i + 14], values[16 * i + 15]]
29
+ };
30
+ const PACKER = {
31
+ SCALAR: (x, values, i) => {
32
+ values[i] = x;
33
+ },
34
+ VEC2: (x, values, i) => {
35
+ values[2 * i + 0] = x[0];
36
+ values[2 * i + 1] = x[1];
37
+ },
38
+ VEC3: (x, values, i) => {
39
+ values[3 * i + 0] = x[0];
40
+ values[3 * i + 1] = x[1];
41
+ values[3 * i + 2] = x[2];
42
+ },
43
+ VEC4: (x, values, i) => {
44
+ values[4 * i + 0] = x[0];
45
+ values[4 * i + 1] = x[1];
46
+ values[4 * i + 2] = x[2];
47
+ values[4 * i + 3] = x[3];
48
+ },
49
+ MAT2: (x, values, i) => {
50
+ values[4 * i + 0] = x[0];
51
+ values[4 * i + 1] = x[1];
52
+ values[4 * i + 2] = x[2];
53
+ values[4 * i + 3] = x[3];
54
+ },
55
+ MAT3: (x, values, i) => {
56
+ values[9 * i + 0] = x[0];
57
+ values[9 * i + 1] = x[1];
58
+ values[9 * i + 2] = x[2];
59
+ values[9 * i + 3] = x[3];
60
+ values[9 * i + 4] = x[4];
61
+ values[9 * i + 5] = x[5];
62
+ values[9 * i + 6] = x[6];
63
+ values[9 * i + 7] = x[7];
64
+ values[9 * i + 8] = x[8];
65
+ values[9 * i + 9] = x[9];
66
+ },
67
+ MAT4: (x, values, i) => {
68
+ values[16 * i + 0] = x[0];
69
+ values[16 * i + 1] = x[1];
70
+ values[16 * i + 2] = x[2];
71
+ values[16 * i + 3] = x[3];
72
+ values[16 * i + 4] = x[4];
73
+ values[16 * i + 5] = x[5];
74
+ values[16 * i + 6] = x[6];
75
+ values[16 * i + 7] = x[7];
76
+ values[16 * i + 8] = x[8];
77
+ values[16 * i + 9] = x[9];
78
+ values[16 * i + 10] = x[10];
79
+ values[16 * i + 11] = x[11];
80
+ values[16 * i + 12] = x[12];
81
+ values[16 * i + 13] = x[13];
82
+ values[16 * i + 14] = x[14];
83
+ values[16 * i + 15] = x[15];
84
+ }
85
+ };
86
+
87
+ function createTypedArrayFromAccessor(tile3DAccessor, buffer, byteOffset, length) {
88
+ const {
89
+ componentType
90
+ } = tile3DAccessor;
91
+ (0, _loaderUtils.assert)(tile3DAccessor.componentType);
92
+ const type = typeof componentType === 'string' ? _math.GLType.fromName(componentType) : componentType;
93
+ const size = COMPONENTS_PER_ATTRIBUTE[tile3DAccessor.type];
94
+ const unpacker = UNPACKER[tile3DAccessor.type];
95
+ const packer = PACKER[tile3DAccessor.type];
96
+ byteOffset += tile3DAccessor.byteOffset;
97
+
98
+ const values = _math.GLType.createTypedArray(type, buffer, byteOffset, size * length);
99
+
100
+ return {
101
+ values,
102
+ type,
103
+ size,
104
+ unpacker,
105
+ packer
106
+ };
107
+ }
108
+ //# sourceMappingURL=tile-3d-accessor-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/lib/classes/helpers/tile-3d-accessor-utils.ts"],"names":["COMPONENTS_PER_ATTRIBUTE","SCALAR","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","UNPACKER","values","i","PACKER","x","createTypedArrayFromAccessor","tile3DAccessor","buffer","byteOffset","length","componentType","type","GLType","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"}
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.initializeHierarchy = initializeHierarchy;
7
+ exports.traverseHierarchy = traverseHierarchy;
8
+
9
+ const defined = x => x !== undefined;
10
+
11
+ function initializeHierarchy(batchTable, jsonHeader, binaryBody) {
12
+ if (!jsonHeader) {
13
+ return null;
14
+ }
15
+
16
+ let hierarchy = batchTable.getExtension('3DTILES_batch_table_hierarchy');
17
+ const legacyHierarchy = jsonHeader.HIERARCHY;
18
+
19
+ if (legacyHierarchy) {
20
+ console.warn('3D Tile Parser: HIERARCHY is deprecated. Use 3DTILES_batch_table_hierarchy.');
21
+ jsonHeader.extensions = jsonHeader.extensions || {};
22
+ jsonHeader.extensions['3DTILES_batch_table_hierarchy'] = legacyHierarchy;
23
+ hierarchy = legacyHierarchy;
24
+ }
25
+
26
+ if (!hierarchy) {
27
+ return null;
28
+ }
29
+
30
+ return initializeHierarchyValues(hierarchy, binaryBody);
31
+ }
32
+
33
+ function initializeHierarchyValues(hierarchyJson, binaryBody) {
34
+ let i;
35
+ let classId;
36
+ let binaryAccessor;
37
+ const instancesLength = hierarchyJson.instancesLength;
38
+ const classes = hierarchyJson.classes;
39
+ let classIds = hierarchyJson.classIds;
40
+ let parentCounts = hierarchyJson.parentCounts;
41
+ let parentIds = hierarchyJson.parentIds;
42
+ let parentIdsLength = instancesLength;
43
+
44
+ if (defined(classIds.byteOffset)) {
45
+ classIds.componentType = defaultValue(classIds.componentType, GL.UNSIGNED_SHORT);
46
+ classIds.type = AttributeType.SCALAR;
47
+ binaryAccessor = getBinaryAccessor(classIds);
48
+ classIds = binaryAccessor.createArrayBufferView(binaryBody.buffer, binaryBody.byteOffset + classIds.byteOffset, instancesLength);
49
+ }
50
+
51
+ let parentIndexes;
52
+
53
+ if (defined(parentCounts)) {
54
+ if (defined(parentCounts.byteOffset)) {
55
+ parentCounts.componentType = defaultValue(parentCounts.componentType, GL.UNSIGNED_SHORT);
56
+ parentCounts.type = AttributeType.SCALAR;
57
+ binaryAccessor = getBinaryAccessor(parentCounts);
58
+ parentCounts = binaryAccessor.createArrayBufferView(binaryBody.buffer, binaryBody.byteOffset + parentCounts.byteOffset, instancesLength);
59
+ }
60
+
61
+ parentIndexes = new Uint16Array(instancesLength);
62
+ parentIdsLength = 0;
63
+
64
+ for (i = 0; i < instancesLength; ++i) {
65
+ parentIndexes[i] = parentIdsLength;
66
+ parentIdsLength += parentCounts[i];
67
+ }
68
+ }
69
+
70
+ if (defined(parentIds) && defined(parentIds.byteOffset)) {
71
+ parentIds.componentType = defaultValue(parentIds.componentType, GL.UNSIGNED_SHORT);
72
+ parentIds.type = AttributeType.SCALAR;
73
+ binaryAccessor = getBinaryAccessor(parentIds);
74
+ parentIds = binaryAccessor.createArrayBufferView(binaryBody.buffer, binaryBody.byteOffset + parentIds.byteOffset, parentIdsLength);
75
+ }
76
+
77
+ const classesLength = classes.length;
78
+
79
+ for (i = 0; i < classesLength; ++i) {
80
+ const classInstancesLength = classes[i].length;
81
+ const properties = classes[i].instances;
82
+ const binaryProperties = getBinaryProperties(classInstancesLength, properties, binaryBody);
83
+ classes[i].instances = combine(binaryProperties, properties);
84
+ }
85
+
86
+ const classCounts = new Array(classesLength).fill(0);
87
+ const classIndexes = new Uint16Array(instancesLength);
88
+
89
+ for (i = 0; i < instancesLength; ++i) {
90
+ classId = classIds[i];
91
+ classIndexes[i] = classCounts[classId];
92
+ ++classCounts[classId];
93
+ }
94
+
95
+ const hierarchy = {
96
+ classes,
97
+ classIds,
98
+ classIndexes,
99
+ parentCounts,
100
+ parentIndexes,
101
+ parentIds
102
+ };
103
+ validateHierarchy(hierarchy);
104
+ return hierarchy;
105
+ }
106
+
107
+ function traverseHierarchy(hierarchy, instanceIndex, endConditionCallback) {
108
+ if (!hierarchy) {
109
+ return;
110
+ }
111
+
112
+ const parentCounts = hierarchy.parentCounts;
113
+ const parentIds = hierarchy.parentIds;
114
+
115
+ if (parentIds) {
116
+ return endConditionCallback(hierarchy, instanceIndex);
117
+ }
118
+
119
+ if (parentCounts > 0) {
120
+ return traverseHierarchyMultipleParents(hierarchy, instanceIndex, endConditionCallback);
121
+ }
122
+
123
+ return traverseHierarchySingleParent(hierarchy, instanceIndex, endConditionCallback);
124
+ }
125
+
126
+ function traverseHierarchyMultipleParents(hierarchy, instanceIndex, endConditionCallback) {
127
+ const classIds = hierarchy.classIds;
128
+ const parentCounts = hierarchy.parentCounts;
129
+ const parentIds = hierarchy.parentIds;
130
+ const parentIndexes = hierarchy.parentIndexes;
131
+ const instancesLength = classIds.length;
132
+ const visited = scratchVisited;
133
+ visited.length = Math.max(visited.length, instancesLength);
134
+ const visitedMarker = ++marker;
135
+ const stack = scratchStack;
136
+ stack.length = 0;
137
+ stack.push(instanceIndex);
138
+
139
+ while (stack.length > 0) {
140
+ instanceIndex = stack.pop();
141
+
142
+ if (visited[instanceIndex] === visitedMarker) {
143
+ continue;
144
+ }
145
+
146
+ visited[instanceIndex] = visitedMarker;
147
+ const result = endConditionCallback(hierarchy, instanceIndex);
148
+
149
+ if (defined(result)) {
150
+ return result;
151
+ }
152
+
153
+ const parentCount = parentCounts[instanceIndex];
154
+ const parentIndex = parentIndexes[instanceIndex];
155
+
156
+ for (let i = 0; i < parentCount; ++i) {
157
+ const parentId = parentIds[parentIndex + i];
158
+
159
+ if (parentId !== instanceIndex) {
160
+ stack.push(parentId);
161
+ }
162
+ }
163
+ }
164
+
165
+ return null;
166
+ }
167
+
168
+ function traverseHierarchySingleParent(hierarchy, instanceIndex, endConditionCallback) {
169
+ let hasParent = true;
170
+
171
+ while (hasParent) {
172
+ const result = endConditionCallback(hierarchy, instanceIndex);
173
+
174
+ if (defined(result)) {
175
+ return result;
176
+ }
177
+
178
+ const parentId = hierarchy.parentIds[instanceIndex];
179
+ hasParent = parentId !== instanceIndex;
180
+ instanceIndex = parentId;
181
+ }
182
+
183
+ throw new Error('traverseHierarchySingleParent');
184
+ }
185
+
186
+ function validateHierarchy(hierarchy) {
187
+ const scratchValidateStack = [];
188
+ const classIds = hierarchy.classIds;
189
+ const instancesLength = classIds.length;
190
+
191
+ for (let i = 0; i < instancesLength; ++i) {
192
+ validateInstance(hierarchy, i, stack);
193
+ }
194
+ }
195
+
196
+ function validateInstance(hierarchy, instanceIndex, stack) {
197
+ const parentCounts = hierarchy.parentCounts;
198
+ const parentIds = hierarchy.parentIds;
199
+ const parentIndexes = hierarchy.parentIndexes;
200
+ const classIds = hierarchy.classIds;
201
+ const instancesLength = classIds.length;
202
+
203
+ if (!defined(parentIds)) {
204
+ return;
205
+ }
206
+
207
+ assert(instanceIndex < instancesLength, "Parent index ".concat(instanceIndex, " exceeds the total number of instances: ").concat(instancesLength));
208
+ assert(stack.indexOf(instanceIndex) === -1, 'Circular dependency detected in the batch table hierarchy.');
209
+ stack.push(instanceIndex);
210
+ const parentCount = defined(parentCounts) ? parentCounts[instanceIndex] : 1;
211
+ const parentIndex = defined(parentCounts) ? parentIndexes[instanceIndex] : instanceIndex;
212
+
213
+ for (let i = 0; i < parentCount; ++i) {
214
+ const parentId = parentIds[parentIndex + i];
215
+
216
+ if (parentId !== instanceIndex) {
217
+ validateInstance(hierarchy, parentId, stack);
218
+ }
219
+ }
220
+
221
+ stack.pop(instanceIndex);
222
+ }
223
+ //# sourceMappingURL=tile-3d-batch-table-hierarchy.js.map
@@ -0,0 +1 @@
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"}