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

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 (302) hide show
  1. package/dist/bundle.d.ts +2 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +9971 -5
  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/bundle.ts +2 -3
  241. package/src/index.ts +1 -0
  242. package/src/lib/classes/helpers/{tile-3d-accessor-utils.js → tile-3d-accessor-utils.ts} +0 -0
  243. package/src/lib/classes/{tile-3d-batch-table-hierarchy.js → tile-3d-batch-table-hierarchy.ts} +0 -0
  244. package/src/lib/classes/{tile-3d-batch-table.js → tile-3d-batch-table.ts} +14 -4
  245. package/src/lib/classes/{tile-3d-feature-table.js → tile-3d-feature-table.ts} +5 -2
  246. package/src/lib/{constants.js → constants.ts} +0 -0
  247. package/src/lib/encoders/{encode-3d-tile-batched-model.js → encode-3d-tile-batched-model.ts} +0 -0
  248. package/src/lib/encoders/{encode-3d-tile-composite.js → encode-3d-tile-composite.ts} +0 -0
  249. package/src/lib/encoders/{encode-3d-tile-instanced-model.js → encode-3d-tile-instanced-model.ts} +0 -0
  250. package/src/lib/encoders/{encode-3d-tile-point-cloud.js → encode-3d-tile-point-cloud.ts} +0 -0
  251. package/src/lib/encoders/{encode-3d-tile.js → encode-3d-tile.ts} +0 -0
  252. package/src/lib/encoders/helpers/{encode-3d-tile-header.js → encode-3d-tile-header.ts} +0 -0
  253. package/src/lib/parsers/helpers/{normalize-3d-tile-colors.js → normalize-3d-tile-colors.ts} +1 -1
  254. package/src/lib/parsers/helpers/{normalize-3d-tile-normals.js → normalize-3d-tile-normals.ts} +0 -0
  255. package/src/lib/parsers/helpers/{normalize-3d-tile-positions.js → normalize-3d-tile-positions.ts} +0 -0
  256. package/src/lib/parsers/helpers/{parse-3d-tile-gltf-view.js → parse-3d-tile-gltf-view.ts} +1 -1
  257. package/src/lib/parsers/helpers/{parse-3d-tile-header.js → parse-3d-tile-header.ts} +0 -0
  258. package/src/lib/parsers/helpers/parse-3d-tile-subtree.ts +104 -0
  259. package/src/lib/parsers/helpers/{parse-3d-tile-tables.js → parse-3d-tile-tables.ts} +1 -1
  260. package/src/lib/parsers/helpers/{parse-utils.js → parse-utils.ts} +0 -0
  261. package/src/lib/parsers/{parse-3d-tile-batched-model.js → parse-3d-tile-batched-model.ts} +0 -0
  262. package/src/lib/parsers/{parse-3d-tile-composite.js → parse-3d-tile-composite.ts} +0 -0
  263. package/src/lib/parsers/{parse-3d-tile-header.js → parse-3d-tile-header.ts} +1 -1
  264. package/src/lib/parsers/{parse-3d-tile-instanced-model.js → parse-3d-tile-instanced-model.ts} +6 -0
  265. package/src/lib/parsers/{parse-3d-tile-point-cloud.js → parse-3d-tile-point-cloud.ts} +2 -2
  266. package/src/lib/parsers/{parse-3d-tile.js → parse-3d-tile.ts} +4 -0
  267. package/src/lib/utils/{version.js → version.ts} +0 -0
  268. package/src/tile-3d-subtree-loader.ts +19 -0
  269. package/src/types.ts +33 -0
  270. package/dist/bundle.js.map +0 -1
  271. package/dist/cesium-ion-loader.js.map +0 -1
  272. package/dist/dist.min.js +0 -2
  273. package/dist/dist.min.js.map +0 -1
  274. package/dist/index.js.map +0 -1
  275. package/dist/lib/classes/helpers/tile-3d-accessor-utils.js.map +0 -1
  276. package/dist/lib/classes/tile-3d-batch-table-hierarchy.js.map +0 -1
  277. package/dist/lib/classes/tile-3d-batch-table.js.map +0 -1
  278. package/dist/lib/classes/tile-3d-feature-table.js.map +0 -1
  279. package/dist/lib/constants.js.map +0 -1
  280. package/dist/lib/encoders/encode-3d-tile-batched-model.js.map +0 -1
  281. package/dist/lib/encoders/encode-3d-tile-composite.js.map +0 -1
  282. package/dist/lib/encoders/encode-3d-tile-instanced-model.js.map +0 -1
  283. package/dist/lib/encoders/encode-3d-tile-point-cloud.js.map +0 -1
  284. package/dist/lib/encoders/encode-3d-tile.js.map +0 -1
  285. package/dist/lib/encoders/helpers/encode-3d-tile-header.js.map +0 -1
  286. package/dist/lib/ion/ion.js.map +0 -1
  287. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.js.map +0 -1
  288. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.js.map +0 -1
  289. package/dist/lib/parsers/helpers/normalize-3d-tile-positions.js.map +0 -1
  290. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +0 -1
  291. package/dist/lib/parsers/helpers/parse-3d-tile-header.js.map +0 -1
  292. package/dist/lib/parsers/helpers/parse-3d-tile-tables.js.map +0 -1
  293. package/dist/lib/parsers/helpers/parse-utils.js.map +0 -1
  294. package/dist/lib/parsers/parse-3d-tile-batched-model.js.map +0 -1
  295. package/dist/lib/parsers/parse-3d-tile-composite.js.map +0 -1
  296. package/dist/lib/parsers/parse-3d-tile-header.js.map +0 -1
  297. package/dist/lib/parsers/parse-3d-tile-instanced-model.js.map +0 -1
  298. package/dist/lib/parsers/parse-3d-tile-point-cloud.js.map +0 -1
  299. package/dist/lib/parsers/parse-3d-tile.js.map +0 -1
  300. package/dist/lib/utils/version.js.map +0 -1
  301. package/dist/tile-3d-writer.js.map +0 -1
  302. package/dist/tiles-3d-loader.js.map +0 -1
@@ -0,0 +1,304 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import { assert } from '@loaders.gl/loader-utils';
3
+ import { createTypedArrayFromAccessor } from './helpers/tile-3d-accessor-utils';
4
+ import { initializeHierarchy, traverseHierarchy } from './tile-3d-batch-table-hierarchy';
5
+
6
+ function defined(x) {
7
+ return x !== undefined && x !== null;
8
+ }
9
+
10
+ const clone = (x, y) => x;
11
+
12
+ const IGNORED_PROPERTY_FIELDS = {
13
+ HIERARCHY: true,
14
+ extensions: true,
15
+ extras: true
16
+ };
17
+ export default class Tile3DBatchTableParser {
18
+ constructor(json, binary, featureCount, options = {}) {
19
+ var _this$json;
20
+
21
+ _defineProperty(this, "json", void 0);
22
+
23
+ _defineProperty(this, "binary", void 0);
24
+
25
+ _defineProperty(this, "featureCount", void 0);
26
+
27
+ _defineProperty(this, "_extensions", void 0);
28
+
29
+ _defineProperty(this, "_properties", void 0);
30
+
31
+ _defineProperty(this, "_binaryProperties", void 0);
32
+
33
+ _defineProperty(this, "_hierarchy", void 0);
34
+
35
+ assert(featureCount >= 0);
36
+ this.json = json || {};
37
+ this.binary = binary;
38
+ this.featureCount = featureCount;
39
+ this._extensions = ((_this$json = this.json) === null || _this$json === void 0 ? void 0 : _this$json.extensions) || {};
40
+ this._properties = {};
41
+
42
+ for (const propertyName in this.json) {
43
+ if (!IGNORED_PROPERTY_FIELDS[propertyName]) {
44
+ this._properties[propertyName] = this.json[propertyName];
45
+ }
46
+ }
47
+
48
+ this._binaryProperties = this._initializeBinaryProperties();
49
+
50
+ if (options['3DTILES_batch_table_hierarchy']) {
51
+ this._hierarchy = initializeHierarchy(this, this.json, this.binary);
52
+ }
53
+ }
54
+
55
+ getExtension(extensionName) {
56
+ return this.json && this.json.extensions && this.json.extensions[extensionName];
57
+ }
58
+
59
+ memorySizeInBytes() {
60
+ return 0;
61
+ }
62
+
63
+ isClass(batchId, className) {
64
+ this._checkBatchId(batchId);
65
+
66
+ assert(typeof className === 'string', className);
67
+
68
+ if (this._hierarchy) {
69
+ const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
70
+ const classId = hierarchy.classIds[instanceIndex];
71
+ const instanceClass = hierarchy.classes[classId];
72
+ return instanceClass.name === className;
73
+ });
74
+ return defined(result);
75
+ }
76
+
77
+ return false;
78
+ }
79
+
80
+ isExactClass(batchId, className) {
81
+ assert(typeof className === 'string', className);
82
+ return this.getExactClassName(batchId) === className;
83
+ }
84
+
85
+ getExactClassName(batchId) {
86
+ this._checkBatchId(batchId);
87
+
88
+ if (this._hierarchy) {
89
+ const classId = this._hierarchy.classIds[batchId];
90
+ const instanceClass = this._hierarchy.classes[classId];
91
+ return instanceClass.name;
92
+ }
93
+
94
+ return undefined;
95
+ }
96
+
97
+ hasProperty(batchId, name) {
98
+ this._checkBatchId(batchId);
99
+
100
+ assert(typeof name === 'string', name);
101
+ return defined(this._properties[name]) || this._hasPropertyInHierarchy(batchId, name);
102
+ }
103
+
104
+ getPropertyNames(batchId, results) {
105
+ this._checkBatchId(batchId);
106
+
107
+ results = defined(results) ? results : [];
108
+ results.length = 0;
109
+ const propertyNames = Object.keys(this._properties);
110
+ results.push(...propertyNames);
111
+
112
+ if (this._hierarchy) {
113
+ this._getPropertyNamesInHierarchy(batchId, results);
114
+ }
115
+
116
+ return results;
117
+ }
118
+
119
+ getProperty(batchId, name) {
120
+ this._checkBatchId(batchId);
121
+
122
+ assert(typeof name === 'string', name);
123
+
124
+ if (this._binaryProperties) {
125
+ const binaryProperty = this._binaryProperties[name];
126
+
127
+ if (defined(binaryProperty)) {
128
+ return this._getBinaryProperty(binaryProperty, batchId);
129
+ }
130
+ }
131
+
132
+ const propertyValues = this._properties[name];
133
+
134
+ if (defined(propertyValues)) {
135
+ return clone(propertyValues[batchId], true);
136
+ }
137
+
138
+ if (this._hierarchy) {
139
+ const hierarchyProperty = this._getHierarchyProperty(batchId, name);
140
+
141
+ if (defined(hierarchyProperty)) {
142
+ return hierarchyProperty;
143
+ }
144
+ }
145
+
146
+ return undefined;
147
+ }
148
+
149
+ setProperty(batchId, name, value) {
150
+ const featureCount = this.featureCount;
151
+
152
+ this._checkBatchId(batchId);
153
+
154
+ assert(typeof name === 'string', name);
155
+
156
+ if (this._binaryProperties) {
157
+ const binaryProperty = this._binaryProperties[name];
158
+
159
+ if (binaryProperty) {
160
+ this._setBinaryProperty(binaryProperty, batchId, value);
161
+
162
+ return;
163
+ }
164
+ }
165
+
166
+ if (this._hierarchy) {
167
+ if (this._setHierarchyProperty(this, batchId, name, value)) {
168
+ return;
169
+ }
170
+ }
171
+
172
+ let propertyValues = this._properties[name];
173
+
174
+ if (!defined(propertyValues)) {
175
+ this._properties[name] = new Array(featureCount);
176
+ propertyValues = this._properties[name];
177
+ }
178
+
179
+ propertyValues[batchId] = clone(value, true);
180
+ }
181
+
182
+ _checkBatchId(batchId) {
183
+ const valid = batchId >= 0 && batchId < this.featureCount;
184
+
185
+ if (!valid) {
186
+ throw new Error('batchId not in range [0, featureCount - 1].');
187
+ }
188
+ }
189
+
190
+ _getBinaryProperty(binaryProperty, index) {
191
+ return binaryProperty.unpack(binaryProperty.typedArray, index);
192
+ }
193
+
194
+ _setBinaryProperty(binaryProperty, index, value) {
195
+ binaryProperty.pack(value, binaryProperty.typedArray, index);
196
+ }
197
+
198
+ _initializeBinaryProperties() {
199
+ let binaryProperties = null;
200
+
201
+ for (const name in this._properties) {
202
+ const property = this._properties[name];
203
+
204
+ const binaryProperty = this._initializeBinaryProperty(name, property);
205
+
206
+ if (binaryProperty) {
207
+ binaryProperties = binaryProperties || {};
208
+ binaryProperties[name] = binaryProperty;
209
+ }
210
+ }
211
+
212
+ return binaryProperties;
213
+ }
214
+
215
+ _initializeBinaryProperty(name, property) {
216
+ if ('byteOffset' in property) {
217
+ const tile3DAccessor = property;
218
+ assert(this.binary, "Property ".concat(name, " requires a batch table binary."));
219
+ assert(tile3DAccessor.type, "Property ".concat(name, " requires a type."));
220
+ const accessor = createTypedArrayFromAccessor(tile3DAccessor, this.binary.buffer, this.binary.byteOffset | 0, this.featureCount);
221
+ return {
222
+ typedArray: accessor.values,
223
+ componentCount: accessor.size,
224
+ unpack: accessor.unpacker,
225
+ pack: accessor.packer
226
+ };
227
+ }
228
+
229
+ return null;
230
+ }
231
+
232
+ _hasPropertyInHierarchy(batchId, name) {
233
+ if (!this._hierarchy) {
234
+ return false;
235
+ }
236
+
237
+ const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
238
+ const classId = hierarchy.classIds[instanceIndex];
239
+ const instances = hierarchy.classes[classId].instances;
240
+ return defined(instances[name]);
241
+ });
242
+ return defined(result);
243
+ }
244
+
245
+ _getPropertyNamesInHierarchy(batchId, results) {
246
+ traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
247
+ const classId = hierarchy.classIds[instanceIndex];
248
+ const instances = hierarchy.classes[classId].instances;
249
+
250
+ for (const name in instances) {
251
+ if (instances.hasOwnProperty(name)) {
252
+ if (results.indexOf(name) === -1) {
253
+ results.push(name);
254
+ }
255
+ }
256
+ }
257
+ });
258
+ }
259
+
260
+ _getHierarchyProperty(batchId, name) {
261
+ return traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
262
+ const classId = hierarchy.classIds[instanceIndex];
263
+ const instanceClass = hierarchy.classes[classId];
264
+ const indexInClass = hierarchy.classIndexes[instanceIndex];
265
+ const propertyValues = instanceClass.instances[name];
266
+
267
+ if (defined(propertyValues)) {
268
+ if (defined(propertyValues.typedArray)) {
269
+ return this._getBinaryProperty(propertyValues, indexInClass);
270
+ }
271
+
272
+ return clone(propertyValues[indexInClass], true);
273
+ }
274
+
275
+ return null;
276
+ });
277
+ }
278
+
279
+ _setHierarchyProperty(batchTable, batchId, name, value) {
280
+ const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
281
+ const classId = hierarchy.classIds[instanceIndex];
282
+ const instanceClass = hierarchy.classes[classId];
283
+ const indexInClass = hierarchy.classIndexes[instanceIndex];
284
+ const propertyValues = instanceClass.instances[name];
285
+
286
+ if (defined(propertyValues)) {
287
+ assert(instanceIndex === batchId, "Inherited property \"".concat(name, "\" is read-only."));
288
+
289
+ if (defined(propertyValues.typedArray)) {
290
+ this._setBinaryProperty(propertyValues, indexInClass, value);
291
+ } else {
292
+ propertyValues[indexInClass] = clone(value, true);
293
+ }
294
+
295
+ return true;
296
+ }
297
+
298
+ return false;
299
+ });
300
+ return defined(result);
301
+ }
302
+
303
+ }
304
+ //# sourceMappingURL=tile-3d-batch-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/classes/tile-3d-batch-table.ts"],"names":["assert","createTypedArrayFromAccessor","initializeHierarchy","traverseHierarchy","defined","x","undefined","clone","y","IGNORED_PROPERTY_FIELDS","HIERARCHY","extensions","extras","Tile3DBatchTableParser","constructor","json","binary","featureCount","options","_extensions","_properties","propertyName","_binaryProperties","_initializeBinaryProperties","_hierarchy","getExtension","extensionName","memorySizeInBytes","isClass","batchId","className","_checkBatchId","result","hierarchy","instanceIndex","classId","classIds","instanceClass","classes","name","isExactClass","getExactClassName","hasProperty","_hasPropertyInHierarchy","getPropertyNames","results","length","propertyNames","Object","keys","push","_getPropertyNamesInHierarchy","getProperty","binaryProperty","_getBinaryProperty","propertyValues","hierarchyProperty","_getHierarchyProperty","setProperty","value","_setBinaryProperty","_setHierarchyProperty","Array","valid","Error","index","unpack","typedArray","pack","binaryProperties","property","_initializeBinaryProperty","tile3DAccessor","type","accessor","buffer","byteOffset","values","componentCount","size","unpacker","packer","instances","hasOwnProperty","indexOf","indexInClass","classIndexes","batchTable"],"mappings":";AAGA,SAAQA,MAAR,QAAqB,0BAArB;AAEA,SAAQC,4BAAR,QAA2C,kCAA3C;AACA,SAAQC,mBAAR,EAA6BC,iBAA7B,QAAqD,iCAArD;;AAEA,SAASC,OAAT,CAAiBC,CAAjB,EAAoB;AAClB,SAAOA,CAAC,KAAKC,SAAN,IAAmBD,CAAC,KAAK,IAAhC;AACD;;AAED,MAAME,KAAK,GAAG,CAACF,CAAD,EAAIG,CAAJ,KAAUH,CAAxB;;AAGA,MAAMI,uBAAuB,GAAG;AAC9BC,EAAAA,SAAS,EAAE,IADmB;AAE9BC,EAAAA,UAAU,EAAE,IAFkB;AAG9BC,EAAAA,MAAM,EAAE;AAHsB,CAAhC;AAOA,eAAe,MAAMC,sBAAN,CAA6B;AAW1CC,EAAAA,WAAW,CAACC,IAAD,EAAOC,MAAP,EAAeC,YAAf,EAA6BC,OAAO,GAAG,EAAvC,EAA2C;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AACpDlB,IAAAA,MAAM,CAACiB,YAAY,IAAI,CAAjB,CAAN;AACA,SAAKF,IAAL,GAAYA,IAAI,IAAI,EAApB;AACA,SAAKC,MAAL,GAAcA,MAAd;AACA,SAAKC,YAAL,GAAoBA,YAApB;AAEA,SAAKE,WAAL,GAAmB,oBAAKJ,IAAL,0DAAWJ,UAAX,KAAyB,EAA5C;AAGA,SAAKS,WAAL,GAAmB,EAAnB;;AACA,SAAK,MAAMC,YAAX,IAA2B,KAAKN,IAAhC,EAAsC;AACpC,UAAI,CAACN,uBAAuB,CAACY,YAAD,CAA5B,EAA4C;AAC1C,aAAKD,WAAL,CAAiBC,YAAjB,IAAiC,KAAKN,IAAL,CAAUM,YAAV,CAAjC;AACD;AACF;;AAED,SAAKC,iBAAL,GAAyB,KAAKC,2BAAL,EAAzB;;AAGA,QAAIL,OAAO,CAAC,+BAAD,CAAX,EAA8C;AAC5C,WAAKM,UAAL,GAAkBtB,mBAAmB,CAAC,IAAD,EAAO,KAAKa,IAAZ,EAAkB,KAAKC,MAAvB,CAArC;AACD;AACF;;AAEDS,EAAAA,YAAY,CAACC,aAAD,EAAgB;AAC1B,WAAO,KAAKX,IAAL,IAAa,KAAKA,IAAL,CAAUJ,UAAvB,IAAqC,KAAKI,IAAL,CAAUJ,UAAV,CAAqBe,aAArB,CAA5C;AACD;;AAEDC,EAAAA,iBAAiB,GAAW;AAC1B,WAAO,CAAP;AACD;;AAEDC,EAAAA,OAAO,CAACC,OAAD,EAAUC,SAAV,EAAsC;AAC3C,SAAKC,aAAL,CAAmBF,OAAnB;;AACA7B,IAAAA,MAAM,CAAC,OAAO8B,SAAP,KAAqB,QAAtB,EAAgCA,SAAhC,CAAN;;AAGA,QAAI,KAAKN,UAAT,EAAqB;AAInB,YAAMQ,MAAM,GAAG7B,iBAAiB,CAAC,KAAKqB,UAAN,EAAkBK,OAAlB,EAA2B,CAACI,SAAD,EAAYC,aAAZ,KAA8B;AACvF,cAAMC,OAAO,GAAGF,SAAS,CAACG,QAAV,CAAmBF,aAAnB,CAAhB;AACA,cAAMG,aAAa,GAAGJ,SAAS,CAACK,OAAV,CAAkBH,OAAlB,CAAtB;AACA,eAAOE,aAAa,CAACE,IAAd,KAAuBT,SAA9B;AACD,OAJ+B,CAAhC;AAKA,aAAO1B,OAAO,CAAC4B,MAAD,CAAd;AACD;;AAED,WAAO,KAAP;AACD;;AAEDQ,EAAAA,YAAY,CAACX,OAAD,EAAUC,SAAV,EAAqB;AAC/B9B,IAAAA,MAAM,CAAC,OAAO8B,SAAP,KAAqB,QAAtB,EAAgCA,SAAhC,CAAN;AAEA,WAAO,KAAKW,iBAAL,CAAuBZ,OAAvB,MAAoCC,SAA3C;AACD;;AAEDW,EAAAA,iBAAiB,CAACZ,OAAD,EAAU;AACzB,SAAKE,aAAL,CAAmBF,OAAnB;;AAGA,QAAI,KAAKL,UAAT,EAAqB;AACnB,YAAMW,OAAO,GAAG,KAAKX,UAAL,CAAgBY,QAAhB,CAAyBP,OAAzB,CAAhB;AACA,YAAMQ,aAAa,GAAG,KAAKb,UAAL,CAAgBc,OAAhB,CAAwBH,OAAxB,CAAtB;AACA,aAAOE,aAAa,CAACE,IAArB;AACD;;AAED,WAAOjC,SAAP;AACD;;AAEDoC,EAAAA,WAAW,CAACb,OAAD,EAAUU,IAAV,EAAgB;AACzB,SAAKR,aAAL,CAAmBF,OAAnB;;AACA7B,IAAAA,MAAM,CAAC,OAAOuC,IAAP,KAAgB,QAAjB,EAA2BA,IAA3B,CAAN;AAEA,WAAOnC,OAAO,CAAC,KAAKgB,WAAL,CAAiBmB,IAAjB,CAAD,CAAP,IAAmC,KAAKI,uBAAL,CAA6Bd,OAA7B,EAAsCU,IAAtC,CAA1C;AACD;;AAEDK,EAAAA,gBAAgB,CAACf,OAAD,EAAUgB,OAAV,EAAmB;AACjC,SAAKd,aAAL,CAAmBF,OAAnB;;AAEAgB,IAAAA,OAAO,GAAGzC,OAAO,CAACyC,OAAD,CAAP,GAAmBA,OAAnB,GAA6B,EAAvC;AACAA,IAAAA,OAAO,CAACC,MAAR,GAAiB,CAAjB;AAEA,UAAMC,aAAa,GAAGC,MAAM,CAACC,IAAP,CAAY,KAAK7B,WAAjB,CAAtB;AACAyB,IAAAA,OAAO,CAACK,IAAR,CAAa,GAAGH,aAAhB;;AAEA,QAAI,KAAKvB,UAAT,EAAqB;AACnB,WAAK2B,4BAAL,CAAkCtB,OAAlC,EAA2CgB,OAA3C;AACD;;AAED,WAAOA,OAAP;AACD;;AAEDO,EAAAA,WAAW,CAACvB,OAAD,EAAUU,IAAV,EAAgB;AACzB,SAAKR,aAAL,CAAmBF,OAAnB;;AACA7B,IAAAA,MAAM,CAAC,OAAOuC,IAAP,KAAgB,QAAjB,EAA2BA,IAA3B,CAAN;;AAEA,QAAI,KAAKjB,iBAAT,EAA4B;AAC1B,YAAM+B,cAAc,GAAG,KAAK/B,iBAAL,CAAuBiB,IAAvB,CAAvB;;AACA,UAAInC,OAAO,CAACiD,cAAD,CAAX,EAA6B;AAC3B,eAAO,KAAKC,kBAAL,CAAwBD,cAAxB,EAAwCxB,OAAxC,CAAP;AACD;AACF;;AAED,UAAM0B,cAAc,GAAG,KAAKnC,WAAL,CAAiBmB,IAAjB,CAAvB;;AACA,QAAInC,OAAO,CAACmD,cAAD,CAAX,EAA6B;AAC3B,aAAOhD,KAAK,CAACgD,cAAc,CAAC1B,OAAD,CAAf,EAA0B,IAA1B,CAAZ;AACD;;AAGD,QAAI,KAAKL,UAAT,EAAqB;AACnB,YAAMgC,iBAAiB,GAAG,KAAKC,qBAAL,CAA2B5B,OAA3B,EAAoCU,IAApC,CAA1B;;AACA,UAAInC,OAAO,CAACoD,iBAAD,CAAX,EAAgC;AAC9B,eAAOA,iBAAP;AACD;AACF;;AAED,WAAOlD,SAAP;AACD;;AAEDoD,EAAAA,WAAW,CAAC7B,OAAD,EAAUU,IAAV,EAAgBoB,KAAhB,EAAuB;AAChC,UAAM1C,YAAY,GAAG,KAAKA,YAA1B;;AAEA,SAAKc,aAAL,CAAmBF,OAAnB;;AACA7B,IAAAA,MAAM,CAAC,OAAOuC,IAAP,KAAgB,QAAjB,EAA2BA,IAA3B,CAAN;;AAEA,QAAI,KAAKjB,iBAAT,EAA4B;AAC1B,YAAM+B,cAAc,GAAG,KAAK/B,iBAAL,CAAuBiB,IAAvB,CAAvB;;AACA,UAAIc,cAAJ,EAAoB;AAClB,aAAKO,kBAAL,CAAwBP,cAAxB,EAAwCxB,OAAxC,EAAiD8B,KAAjD;;AACA;AACD;AACF;;AAGD,QAAI,KAAKnC,UAAT,EAAqB;AACnB,UAAI,KAAKqC,qBAAL,CAA2B,IAA3B,EAAiChC,OAAjC,EAA0CU,IAA1C,EAAgDoB,KAAhD,CAAJ,EAA4D;AAC1D;AACD;AACF;;AAED,QAAIJ,cAAc,GAAG,KAAKnC,WAAL,CAAiBmB,IAAjB,CAArB;;AACA,QAAI,CAACnC,OAAO,CAACmD,cAAD,CAAZ,EAA8B;AAE5B,WAAKnC,WAAL,CAAiBmB,IAAjB,IAAyB,IAAIuB,KAAJ,CAAU7C,YAAV,CAAzB;AACAsC,MAAAA,cAAc,GAAG,KAAKnC,WAAL,CAAiBmB,IAAjB,CAAjB;AACD;;AAEDgB,IAAAA,cAAc,CAAC1B,OAAD,CAAd,GAA0BtB,KAAK,CAACoD,KAAD,EAAQ,IAAR,CAA/B;AACD;;AAID5B,EAAAA,aAAa,CAACF,OAAD,EAAU;AACrB,UAAMkC,KAAK,GAAGlC,OAAO,IAAI,CAAX,IAAgBA,OAAO,GAAG,KAAKZ,YAA7C;;AACA,QAAI,CAAC8C,KAAL,EAAY;AACV,YAAM,IAAIC,KAAJ,CAAU,6CAAV,CAAN;AACD;AACF;;AAEDV,EAAAA,kBAAkB,CAACD,cAAD,EAAiBY,KAAjB,EAAwB;AACxC,WAAOZ,cAAc,CAACa,MAAf,CAAsBb,cAAc,CAACc,UAArC,EAAiDF,KAAjD,CAAP;AACD;;AAEDL,EAAAA,kBAAkB,CAACP,cAAD,EAAiBY,KAAjB,EAAwBN,KAAxB,EAA+B;AAC/CN,IAAAA,cAAc,CAACe,IAAf,CAAoBT,KAApB,EAA2BN,cAAc,CAACc,UAA1C,EAAsDF,KAAtD;AACD;;AAED1C,EAAAA,2BAA2B,GAAG;AAC5B,QAAI8C,gBAA4C,GAAG,IAAnD;;AACA,SAAK,MAAM9B,IAAX,IAAmB,KAAKnB,WAAxB,EAAqC;AACnC,YAAMkD,QAAQ,GAAG,KAAKlD,WAAL,CAAiBmB,IAAjB,CAAjB;;AACA,YAAMc,cAAc,GAAG,KAAKkB,yBAAL,CAA+BhC,IAA/B,EAAqC+B,QAArC,CAAvB;;AAGA,UAAIjB,cAAJ,EAAoB;AAClBgB,QAAAA,gBAAgB,GAAGA,gBAAgB,IAAI,EAAvC;AACAA,QAAAA,gBAAgB,CAAC9B,IAAD,CAAhB,GAAyBc,cAAzB;AACD;AACF;;AACD,WAAOgB,gBAAP;AACD;;AAEDE,EAAAA,yBAAyB,CAAChC,IAAD,EAAO+B,QAAP,EAAiB;AACxC,QAAI,gBAAgBA,QAApB,EAA8B;AAE5B,YAAME,cAAc,GAAGF,QAAvB;AAEAtE,MAAAA,MAAM,CAAC,KAAKgB,MAAN,qBAA0BuB,IAA1B,qCAAN;AACAvC,MAAAA,MAAM,CAACwE,cAAc,CAACC,IAAhB,qBAAkClC,IAAlC,uBAAN;AAEA,YAAMmC,QAAQ,GAAGzE,4BAA4B,CAC3CuE,cAD2C,EAE3C,KAAKxD,MAAL,CAAY2D,MAF+B,EAG3C,KAAK3D,MAAL,CAAY4D,UAAZ,GAAyB,CAHkB,EAI3C,KAAK3D,YAJsC,CAA7C;AASA,aAAO;AACLkD,QAAAA,UAAU,EAAEO,QAAQ,CAACG,MADhB;AAELC,QAAAA,cAAc,EAAEJ,QAAQ,CAACK,IAFpB;AAGLb,QAAAA,MAAM,EAAEQ,QAAQ,CAACM,QAHZ;AAILZ,QAAAA,IAAI,EAAEM,QAAQ,CAACO;AAJV,OAAP;AAMD;;AAED,WAAO,IAAP;AACD;;AAIDtC,EAAAA,uBAAuB,CAACd,OAAD,EAAUU,IAAV,EAAgB;AACrC,QAAI,CAAC,KAAKf,UAAV,EAAsB;AACpB,aAAO,KAAP;AACD;;AAED,UAAMQ,MAAM,GAAG7B,iBAAiB,CAAC,KAAKqB,UAAN,EAAkBK,OAAlB,EAA2B,CAACI,SAAD,EAAYC,aAAZ,KAA8B;AACvF,YAAMC,OAAO,GAAGF,SAAS,CAACG,QAAV,CAAmBF,aAAnB,CAAhB;AACA,YAAMgD,SAAS,GAAGjD,SAAS,CAACK,OAAV,CAAkBH,OAAlB,EAA2B+C,SAA7C;AACA,aAAO9E,OAAO,CAAC8E,SAAS,CAAC3C,IAAD,CAAV,CAAd;AACD,KAJ+B,CAAhC;AAMA,WAAOnC,OAAO,CAAC4B,MAAD,CAAd;AACD;;AAEDmB,EAAAA,4BAA4B,CAACtB,OAAD,EAAUgB,OAAV,EAAmB;AAC7C1C,IAAAA,iBAAiB,CAAC,KAAKqB,UAAN,EAAkBK,OAAlB,EAA2B,CAACI,SAAD,EAAYC,aAAZ,KAA8B;AACxE,YAAMC,OAAO,GAAGF,SAAS,CAACG,QAAV,CAAmBF,aAAnB,CAAhB;AACA,YAAMgD,SAAS,GAAGjD,SAAS,CAACK,OAAV,CAAkBH,OAAlB,EAA2B+C,SAA7C;;AACA,WAAK,MAAM3C,IAAX,IAAmB2C,SAAnB,EAA8B;AAC5B,YAAIA,SAAS,CAACC,cAAV,CAAyB5C,IAAzB,CAAJ,EAAoC;AAClC,cAAIM,OAAO,CAACuC,OAAR,CAAgB7C,IAAhB,MAA0B,CAAC,CAA/B,EAAkC;AAChCM,YAAAA,OAAO,CAACK,IAAR,CAAaX,IAAb;AACD;AACF;AACF;AACF,KAVgB,CAAjB;AAWD;;AAEDkB,EAAAA,qBAAqB,CAAC5B,OAAD,EAAUU,IAAV,EAAgB;AACnC,WAAOpC,iBAAiB,CAAC,KAAKqB,UAAN,EAAkBK,OAAlB,EAA2B,CAACI,SAAD,EAAYC,aAAZ,KAA8B;AAC/E,YAAMC,OAAO,GAAGF,SAAS,CAACG,QAAV,CAAmBF,aAAnB,CAAhB;AACA,YAAMG,aAAa,GAAGJ,SAAS,CAACK,OAAV,CAAkBH,OAAlB,CAAtB;AACA,YAAMkD,YAAY,GAAGpD,SAAS,CAACqD,YAAV,CAAuBpD,aAAvB,CAArB;AACA,YAAMqB,cAAc,GAAGlB,aAAa,CAAC6C,SAAd,CAAwB3C,IAAxB,CAAvB;;AACA,UAAInC,OAAO,CAACmD,cAAD,CAAX,EAA6B;AAC3B,YAAInD,OAAO,CAACmD,cAAc,CAACY,UAAhB,CAAX,EAAwC;AACtC,iBAAO,KAAKb,kBAAL,CAAwBC,cAAxB,EAAwC8B,YAAxC,CAAP;AACD;;AACD,eAAO9E,KAAK,CAACgD,cAAc,CAAC8B,YAAD,CAAf,EAA+B,IAA/B,CAAZ;AACD;;AACD,aAAO,IAAP;AACD,KAZuB,CAAxB;AAaD;;AAEDxB,EAAAA,qBAAqB,CAAC0B,UAAD,EAAa1D,OAAb,EAAsBU,IAAtB,EAA4BoB,KAA5B,EAAmC;AACtD,UAAM3B,MAAM,GAAG7B,iBAAiB,CAAC,KAAKqB,UAAN,EAAkBK,OAAlB,EAA2B,CAACI,SAAD,EAAYC,aAAZ,KAA8B;AACvF,YAAMC,OAAO,GAAGF,SAAS,CAACG,QAAV,CAAmBF,aAAnB,CAAhB;AACA,YAAMG,aAAa,GAAGJ,SAAS,CAACK,OAAV,CAAkBH,OAAlB,CAAtB;AACA,YAAMkD,YAAY,GAAGpD,SAAS,CAACqD,YAAV,CAAuBpD,aAAvB,CAArB;AACA,YAAMqB,cAAc,GAAGlB,aAAa,CAAC6C,SAAd,CAAwB3C,IAAxB,CAAvB;;AACA,UAAInC,OAAO,CAACmD,cAAD,CAAX,EAA6B;AAC3BvD,QAAAA,MAAM,CAACkC,aAAa,KAAKL,OAAnB,iCAAmDU,IAAnD,sBAAN;;AACA,YAAInC,OAAO,CAACmD,cAAc,CAACY,UAAhB,CAAX,EAAwC;AACtC,eAAKP,kBAAL,CAAwBL,cAAxB,EAAwC8B,YAAxC,EAAsD1B,KAAtD;AACD,SAFD,MAEO;AACLJ,UAAAA,cAAc,CAAC8B,YAAD,CAAd,GAA+B9E,KAAK,CAACoD,KAAD,EAAQ,IAAR,CAApC;AACD;;AACD,eAAO,IAAP;AACD;;AACD,aAAO,KAAP;AACD,KAf+B,CAAhC;AAgBA,WAAOvD,OAAO,CAAC4B,MAAD,CAAd;AACD;;AA/RyC","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {assert} from '@loaders.gl/loader-utils';\n\nimport {createTypedArrayFromAccessor} from './helpers/tile-3d-accessor-utils';\nimport {initializeHierarchy, traverseHierarchy} from './tile-3d-batch-table-hierarchy';\n\nfunction defined(x) {\n return x !== undefined && x !== null;\n}\n\nconst clone = (x, y) => x;\n\n// These top level fields in the batch table json are not properties\nconst IGNORED_PROPERTY_FIELDS = {\n HIERARCHY: true, // Deprecated HIERARCHY property\n extensions: true,\n extras: true\n};\n\n// The size of this array equals the maximum instance count among all loaded tiles, which has the potential to be large.\nexport default class Tile3DBatchTableParser {\n json;\n binary;\n featureCount;\n _extensions;\n // Copy all top-level property fields from the json object, ignoring special fields\n _properties;\n _binaryProperties;\n // TODO: hierarchy support is only partially implemented and not tested\n _hierarchy;\n\n constructor(json, binary, featureCount, options = {}) {\n assert(featureCount >= 0);\n this.json = json || {};\n this.binary = binary;\n this.featureCount = featureCount;\n\n this._extensions = this.json?.extensions || {};\n\n // Copy all top-level property fields from the json object, ignoring special fields\n this._properties = {};\n for (const propertyName in this.json) {\n if (!IGNORED_PROPERTY_FIELDS[propertyName]) {\n this._properties[propertyName] = this.json[propertyName];\n }\n }\n\n this._binaryProperties = this._initializeBinaryProperties();\n\n // TODO: hierarchy support is only partially implemented and not tested\n if (options['3DTILES_batch_table_hierarchy']) {\n this._hierarchy = initializeHierarchy(this, this.json, this.binary);\n }\n }\n\n getExtension(extensionName) {\n return this.json && this.json.extensions && this.json.extensions[extensionName];\n }\n\n memorySizeInBytes(): number {\n return 0;\n }\n\n isClass(batchId, className: string): boolean {\n this._checkBatchId(batchId);\n assert(typeof className === 'string', className);\n\n // extension: 3DTILES_batch_table_hierarchy\n if (this._hierarchy) {\n // PERFORMANCE_IDEA : cache results in the ancestor classes\n // to speed up this check if this area becomes a hotspot\n // PERFORMANCE_IDEA : treat class names as integers for faster comparisons\n const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instanceClass = hierarchy.classes[classId];\n return instanceClass.name === className;\n });\n return defined(result);\n }\n\n return false;\n }\n\n isExactClass(batchId, className) {\n assert(typeof className === 'string', className);\n\n return this.getExactClassName(batchId) === className;\n }\n\n getExactClassName(batchId) {\n this._checkBatchId(batchId);\n\n // extension: 3DTILES_batch_table_hierarchy\n if (this._hierarchy) {\n const classId = this._hierarchy.classIds[batchId];\n const instanceClass = this._hierarchy.classes[classId];\n return instanceClass.name;\n }\n\n return undefined;\n }\n\n hasProperty(batchId, name) {\n this._checkBatchId(batchId);\n assert(typeof name === 'string', name);\n\n return defined(this._properties[name]) || this._hasPropertyInHierarchy(batchId, name);\n }\n\n getPropertyNames(batchId, results) {\n this._checkBatchId(batchId);\n\n results = defined(results) ? results : [];\n results.length = 0;\n\n const propertyNames = Object.keys(this._properties);\n results.push(...propertyNames);\n\n if (this._hierarchy) {\n this._getPropertyNamesInHierarchy(batchId, results);\n }\n\n return results;\n }\n\n getProperty(batchId, name) {\n this._checkBatchId(batchId);\n assert(typeof name === 'string', name);\n\n if (this._binaryProperties) {\n const binaryProperty = this._binaryProperties[name];\n if (defined(binaryProperty)) {\n return this._getBinaryProperty(binaryProperty, batchId);\n }\n }\n\n const propertyValues = this._properties[name];\n if (defined(propertyValues)) {\n return clone(propertyValues[batchId], true);\n }\n\n // EXTENSION: 3DTILES_batch_table_hierarchy\n if (this._hierarchy) {\n const hierarchyProperty = this._getHierarchyProperty(batchId, name);\n if (defined(hierarchyProperty)) {\n return hierarchyProperty;\n }\n }\n\n return undefined;\n }\n\n setProperty(batchId, name, value) {\n const featureCount = this.featureCount;\n\n this._checkBatchId(batchId);\n assert(typeof name === 'string', name);\n\n if (this._binaryProperties) {\n const binaryProperty = this._binaryProperties[name];\n if (binaryProperty) {\n this._setBinaryProperty(binaryProperty, batchId, value);\n return;\n }\n }\n\n // EXTENSION: 3DTILES_batch_table_hierarchy\n if (this._hierarchy) {\n if (this._setHierarchyProperty(this, batchId, name, value)) {\n return;\n }\n }\n\n let propertyValues = this._properties[name];\n if (!defined(propertyValues)) {\n // Property does not exist. Create it.\n this._properties[name] = new Array(featureCount);\n propertyValues = this._properties[name];\n }\n\n propertyValues[batchId] = clone(value, true);\n }\n\n // PRIVATE METHODS\n\n _checkBatchId(batchId) {\n const valid = batchId >= 0 && batchId < this.featureCount;\n if (!valid) {\n throw new Error('batchId not in range [0, featureCount - 1].');\n }\n }\n\n _getBinaryProperty(binaryProperty, index) {\n return binaryProperty.unpack(binaryProperty.typedArray, index);\n }\n\n _setBinaryProperty(binaryProperty, index, value) {\n binaryProperty.pack(value, binaryProperty.typedArray, index);\n }\n\n _initializeBinaryProperties() {\n let binaryProperties: Record<string, any> | null = null;\n for (const name in this._properties) {\n const property = this._properties[name];\n const binaryProperty = this._initializeBinaryProperty(name, property);\n // Store any information needed to access the binary data, including the typed array,\n // componentCount (e.g. a VEC4 would be 4), and the type used to pack and unpack (e.g. Cartesian4).\n if (binaryProperty) {\n binaryProperties = binaryProperties || {};\n binaryProperties[name] = binaryProperty;\n }\n }\n return binaryProperties;\n }\n\n _initializeBinaryProperty(name, property) {\n if ('byteOffset' in property) {\n // This is a binary property\n const tile3DAccessor = property;\n\n assert(this.binary, `Property ${name} requires a batch table binary.`);\n assert(tile3DAccessor.type, `Property ${name} requires a type.`);\n\n const accessor = createTypedArrayFromAccessor(\n tile3DAccessor,\n this.binary.buffer,\n this.binary.byteOffset | 0,\n this.featureCount\n );\n\n // Store any information needed to access the binary data, including the typed array,\n // componentCount (e.g. a VEC4 would be 4), and the type used to pack and unpack (e.g. Cartesian4).\n return {\n typedArray: accessor.values,\n componentCount: accessor.size,\n unpack: accessor.unpacker,\n pack: accessor.packer\n };\n }\n\n return null;\n }\n\n // EXTENSION SUPPORT: 3DTILES_batch_table_hierarchy\n\n _hasPropertyInHierarchy(batchId, name) {\n if (!this._hierarchy) {\n return false;\n }\n\n const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instances = hierarchy.classes[classId].instances;\n return defined(instances[name]);\n });\n\n return defined(result);\n }\n\n _getPropertyNamesInHierarchy(batchId, results) {\n traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instances = hierarchy.classes[classId].instances;\n for (const name in instances) {\n if (instances.hasOwnProperty(name)) {\n if (results.indexOf(name) === -1) {\n results.push(name);\n }\n }\n }\n });\n }\n\n _getHierarchyProperty(batchId, name) {\n return traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instanceClass = hierarchy.classes[classId];\n const indexInClass = hierarchy.classIndexes[instanceIndex];\n const propertyValues = instanceClass.instances[name];\n if (defined(propertyValues)) {\n if (defined(propertyValues.typedArray)) {\n return this._getBinaryProperty(propertyValues, indexInClass);\n }\n return clone(propertyValues[indexInClass], true);\n }\n return null;\n });\n }\n\n _setHierarchyProperty(batchTable, batchId, name, value) {\n const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instanceClass = hierarchy.classes[classId];\n const indexInClass = hierarchy.classIndexes[instanceIndex];\n const propertyValues = instanceClass.instances[name];\n if (defined(propertyValues)) {\n assert(instanceIndex === batchId, `Inherited property \"${name}\" is read-only.`);\n if (defined(propertyValues.typedArray)) {\n this._setBinaryProperty(propertyValues, indexInClass, value);\n } else {\n propertyValues[indexInClass] = clone(value, true);\n }\n return true;\n }\n return false;\n });\n return defined(result);\n }\n}\n"],"file":"tile-3d-batch-table.js"}
@@ -0,0 +1,94 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import { GL, GLType } from '@loaders.gl/math';
3
+ export default class Tile3DFeatureTable {
4
+ constructor(featureTableJson, featureTableBinary) {
5
+ _defineProperty(this, "json", void 0);
6
+
7
+ _defineProperty(this, "buffer", void 0);
8
+
9
+ _defineProperty(this, "featuresLength", 0);
10
+
11
+ _defineProperty(this, "_cachedTypedArrays", {});
12
+
13
+ this.json = featureTableJson;
14
+ this.buffer = featureTableBinary;
15
+ }
16
+
17
+ getExtension(extensionName) {
18
+ return this.json.extensions && this.json.extensions[extensionName];
19
+ }
20
+
21
+ hasProperty(propertyName) {
22
+ return Boolean(this.json[propertyName]);
23
+ }
24
+
25
+ getGlobalProperty(propertyName, componentType = GL.UNSIGNED_INT, componentLength = 1) {
26
+ const jsonValue = this.json[propertyName];
27
+
28
+ if (jsonValue && Number.isFinite(jsonValue.byteOffset)) {
29
+ return this._getTypedArrayFromBinary(propertyName, componentType, componentLength, 1, jsonValue.byteOffset);
30
+ }
31
+
32
+ return jsonValue;
33
+ }
34
+
35
+ getPropertyArray(propertyName, componentType, componentLength) {
36
+ const jsonValue = this.json[propertyName];
37
+
38
+ if (jsonValue && Number.isFinite(jsonValue.byteOffset)) {
39
+ if ('componentType' in jsonValue) {
40
+ componentType = GLType.fromName(jsonValue.componentType);
41
+ }
42
+
43
+ return this._getTypedArrayFromBinary(propertyName, componentType, componentLength, this.featuresLength, jsonValue.byteOffset);
44
+ }
45
+
46
+ return this._getTypedArrayFromArray(propertyName, componentType, jsonValue);
47
+ }
48
+
49
+ getProperty(propertyName, componentType, componentLength, featureId, result) {
50
+ const jsonValue = this.json[propertyName];
51
+
52
+ if (!jsonValue) {
53
+ return jsonValue;
54
+ }
55
+
56
+ const typedArray = this.getPropertyArray(propertyName, componentType, componentLength);
57
+
58
+ if (componentLength === 1) {
59
+ return typedArray[featureId];
60
+ }
61
+
62
+ for (let i = 0; i < componentLength; ++i) {
63
+ result[i] = typedArray[componentLength * featureId + i];
64
+ }
65
+
66
+ return result;
67
+ }
68
+
69
+ _getTypedArrayFromBinary(propertyName, componentType, componentLength, count, byteOffset) {
70
+ const cachedTypedArrays = this._cachedTypedArrays;
71
+ let typedArray = cachedTypedArrays[propertyName];
72
+
73
+ if (!typedArray) {
74
+ typedArray = GLType.createTypedArray(componentType, this.buffer.buffer, this.buffer.byteOffset + byteOffset, count * componentLength);
75
+ cachedTypedArrays[propertyName] = typedArray;
76
+ }
77
+
78
+ return typedArray;
79
+ }
80
+
81
+ _getTypedArrayFromArray(propertyName, componentType, array) {
82
+ const cachedTypedArrays = this._cachedTypedArrays;
83
+ let typedArray = cachedTypedArrays[propertyName];
84
+
85
+ if (!typedArray) {
86
+ typedArray = GLType.createTypedArray(componentType, array);
87
+ cachedTypedArrays[propertyName] = typedArray;
88
+ }
89
+
90
+ return typedArray;
91
+ }
92
+
93
+ }
94
+ //# sourceMappingURL=tile-3d-feature-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/classes/tile-3d-feature-table.ts"],"names":["GL","GLType","Tile3DFeatureTable","constructor","featureTableJson","featureTableBinary","json","buffer","getExtension","extensionName","extensions","hasProperty","propertyName","Boolean","getGlobalProperty","componentType","UNSIGNED_INT","componentLength","jsonValue","Number","isFinite","byteOffset","_getTypedArrayFromBinary","getPropertyArray","fromName","featuresLength","_getTypedArrayFromArray","getProperty","featureId","result","typedArray","i","count","cachedTypedArrays","_cachedTypedArrays","createTypedArray","array"],"mappings":"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","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {GL, GLType} from '@loaders.gl/math';\n\n// Reference:\n// https://github.com/AnalyticalGraphicsInc/cesium/blob/1de96d087f0b17575eb1a3f736407b348c765d59/Source/Scene/Cesium3DTileFeatureTable.js\nexport default class Tile3DFeatureTable {\n json;\n buffer;\n featuresLength = 0;\n _cachedTypedArrays = {};\n\n constructor(featureTableJson, featureTableBinary) {\n this.json = featureTableJson;\n this.buffer = featureTableBinary;\n }\n\n getExtension(extensionName) {\n return this.json.extensions && this.json.extensions[extensionName];\n }\n\n hasProperty(propertyName) {\n return Boolean(this.json[propertyName]);\n }\n\n getGlobalProperty(propertyName, componentType = GL.UNSIGNED_INT, componentLength = 1) {\n const jsonValue = this.json[propertyName];\n\n if (jsonValue && Number.isFinite(jsonValue.byteOffset)) {\n return this._getTypedArrayFromBinary(\n propertyName,\n componentType,\n componentLength,\n 1,\n jsonValue.byteOffset\n );\n }\n\n return jsonValue;\n }\n\n getPropertyArray(propertyName, componentType, componentLength) {\n const jsonValue = this.json[propertyName];\n\n if (jsonValue && Number.isFinite(jsonValue.byteOffset)) {\n if ('componentType' in jsonValue) {\n componentType = GLType.fromName(jsonValue.componentType);\n }\n return this._getTypedArrayFromBinary(\n propertyName,\n componentType,\n componentLength,\n this.featuresLength,\n jsonValue.byteOffset\n );\n }\n\n return this._getTypedArrayFromArray(propertyName, componentType, jsonValue);\n }\n\n getProperty(propertyName, componentType, componentLength, featureId, result) {\n const jsonValue = this.json[propertyName];\n if (!jsonValue) {\n return jsonValue;\n }\n\n const typedArray = this.getPropertyArray(propertyName, componentType, componentLength);\n\n if (componentLength === 1) {\n return typedArray[featureId];\n }\n\n for (let i = 0; i < componentLength; ++i) {\n result[i] = typedArray[componentLength * featureId + i];\n }\n\n return result;\n }\n\n // HELPERS\n\n _getTypedArrayFromBinary(propertyName, componentType, componentLength, count, byteOffset) {\n const cachedTypedArrays = this._cachedTypedArrays;\n let typedArray = cachedTypedArrays[propertyName];\n if (!typedArray) {\n typedArray = GLType.createTypedArray(\n componentType,\n this.buffer.buffer,\n this.buffer.byteOffset + byteOffset,\n count * componentLength\n );\n cachedTypedArrays[propertyName] = typedArray;\n }\n return typedArray;\n }\n\n _getTypedArrayFromArray(propertyName, componentType, array) {\n const cachedTypedArrays = this._cachedTypedArrays;\n let typedArray = cachedTypedArrays[propertyName];\n if (!typedArray) {\n typedArray = GLType.createTypedArray(componentType, array);\n cachedTypedArrays[propertyName] = typedArray;\n }\n return typedArray;\n }\n}\n"],"file":"tile-3d-feature-table.js"}
@@ -0,0 +1,21 @@
1
+ export const TILE3D_TYPE = {
2
+ COMPOSITE: 'cmpt',
3
+ POINT_CLOUD: 'pnts',
4
+ BATCHED_3D_MODEL: 'b3dm',
5
+ INSTANCED_3D_MODEL: 'i3dm',
6
+ GEOMETRY: 'geom',
7
+ VECTOR: 'vect'
8
+ };
9
+ export const TILE3D_TYPES = Object.keys(TILE3D_TYPE);
10
+ export const MAGIC_ARRAY = {
11
+ BATCHED_MODEL: [98, 51, 100, 109],
12
+ INSTANCED_MODEL: [105, 51, 100, 109],
13
+ POINT_CLOUD: [112, 110, 116, 115],
14
+ COMPOSITE: [99, 109, 112, 116]
15
+ };
16
+ export const TILE3D_OPTIMIZATION_HINT = {
17
+ NOT_COMPUTED: -1,
18
+ USE_OPTIMIZATION: 1,
19
+ SKIP_OPTIMIZATION: 0
20
+ };
21
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/constants.ts"],"names":["TILE3D_TYPE","COMPOSITE","POINT_CLOUD","BATCHED_3D_MODEL","INSTANCED_3D_MODEL","GEOMETRY","VECTOR","TILE3D_TYPES","Object","keys","MAGIC_ARRAY","BATCHED_MODEL","INSTANCED_MODEL","TILE3D_OPTIMIZATION_HINT","NOT_COMPUTED","USE_OPTIMIZATION","SKIP_OPTIMIZATION"],"mappings":"AAEA,OAAO,MAAMA,WAAW,GAAG;AACzBC,EAAAA,SAAS,EAAE,MADc;AAEzBC,EAAAA,WAAW,EAAE,MAFY;AAGzBC,EAAAA,gBAAgB,EAAE,MAHO;AAIzBC,EAAAA,kBAAkB,EAAE,MAJK;AAKzBC,EAAAA,QAAQ,EAAE,MALe;AAMzBC,EAAAA,MAAM,EAAE;AANiB,CAApB;AASP,OAAO,MAAMC,YAAY,GAAGC,MAAM,CAACC,IAAP,CAAYT,WAAZ,CAArB;AAEP,OAAO,MAAMU,WAAW,GAAG;AACzBC,EAAAA,aAAa,EAAE,CAAC,EAAD,EAAK,EAAL,EAAS,GAAT,EAAc,GAAd,CADU;AAEzBC,EAAAA,eAAe,EAAE,CAAC,GAAD,EAAM,EAAN,EAAU,GAAV,EAAe,GAAf,CAFQ;AAGzBV,EAAAA,WAAW,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,CAHY;AAIzBD,EAAAA,SAAS,EAAE,CAAC,EAAD,EAAK,GAAL,EAAU,GAAV,EAAe,GAAf;AAJc,CAApB;AAQP,OAAO,MAAMY,wBAAwB,GAAG;AACtCC,EAAAA,YAAY,EAAE,CAAC,CADuB;AAEtCC,EAAAA,gBAAgB,EAAE,CAFoB;AAGtCC,EAAAA,iBAAiB,EAAE;AAHmB,CAAjC","sourcesContent":["// TILE TYPES\n\nexport const TILE3D_TYPE = {\n COMPOSITE: 'cmpt',\n POINT_CLOUD: 'pnts',\n BATCHED_3D_MODEL: 'b3dm',\n INSTANCED_3D_MODEL: 'i3dm',\n GEOMETRY: 'geom',\n VECTOR: 'vect'\n};\n\nexport const TILE3D_TYPES = Object.keys(TILE3D_TYPE);\n\nexport const MAGIC_ARRAY = {\n BATCHED_MODEL: [98, 51, 100, 109],\n INSTANCED_MODEL: [105, 51, 100, 109],\n POINT_CLOUD: [112, 110, 116, 115],\n COMPOSITE: [99, 109, 112, 116]\n};\n\n// TILE CONSTANTS\nexport const TILE3D_OPTIMIZATION_HINT = {\n NOT_COMPUTED: -1,\n USE_OPTIMIZATION: 1,\n SKIP_OPTIMIZATION: 0\n};\n"],"file":"constants.js"}
@@ -0,0 +1,46 @@
1
+ import { padToNBytes, copyBinaryToDataView, copyPaddedStringToDataView } from '@loaders.gl/loader-utils';
2
+ import { MAGIC_ARRAY } from '../constants';
3
+ import { encode3DTileHeader, encode3DTileByteLength } from './helpers/encode-3d-tile-header';
4
+ export function encodeBatchedModel3DTile(tile, dataView, byteOffset, options) {
5
+ const {
6
+ featuresLength = 0,
7
+ batchTable
8
+ } = tile;
9
+ const featureTableJson = {
10
+ BATCH_LENGTH: featuresLength
11
+ };
12
+ const featureTableJsonString = JSON.stringify(featureTableJson);
13
+ const batchTableJsonString = batchTable ? JSON.stringify(batchTable) : '';
14
+ const featureTableJsonByteLength = padToNBytes(featureTableJsonString.length, 8);
15
+ const batchTableJsonByteLength = batchTableJsonString ? padToNBytes(batchTableJsonString.length, 8) : 0;
16
+ tile = {
17
+ magic: MAGIC_ARRAY.BATCHED_MODEL,
18
+ ...tile
19
+ };
20
+ const byteOffsetStart = byteOffset;
21
+ byteOffset = encode3DTileHeader(tile, dataView, byteOffset);
22
+
23
+ if (dataView) {
24
+ dataView.setUint32(12, featureTableJsonByteLength, true);
25
+ dataView.setUint32(16, 0, true);
26
+ dataView.setUint32(20, batchTableJsonByteLength, true);
27
+ dataView.setUint32(24, 0, true);
28
+ }
29
+
30
+ byteOffset += 16;
31
+ byteOffset = copyPaddedStringToDataView(dataView, byteOffset, featureTableJsonString, 8);
32
+
33
+ if (batchTable) {
34
+ byteOffset = copyPaddedStringToDataView(dataView, byteOffset, batchTableJsonString, 8);
35
+ }
36
+
37
+ const gltfEncoded = tile.gltfEncoded;
38
+
39
+ if (gltfEncoded) {
40
+ byteOffset = copyBinaryToDataView(dataView, byteOffset, gltfEncoded, gltfEncoded.byteLength);
41
+ }
42
+
43
+ encode3DTileByteLength(dataView, byteOffsetStart, byteOffset - byteOffsetStart);
44
+ return byteOffset;
45
+ }
46
+ //# sourceMappingURL=encode-3d-tile-batched-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/encoders/encode-3d-tile-batched-model.ts"],"names":["padToNBytes","copyBinaryToDataView","copyPaddedStringToDataView","MAGIC_ARRAY","encode3DTileHeader","encode3DTileByteLength","encodeBatchedModel3DTile","tile","dataView","byteOffset","options","featuresLength","batchTable","featureTableJson","BATCH_LENGTH","featureTableJsonString","JSON","stringify","batchTableJsonString","featureTableJsonByteLength","length","batchTableJsonByteLength","magic","BATCHED_MODEL","byteOffsetStart","setUint32","gltfEncoded","byteLength"],"mappings":"AAGA,SACEA,WADF,EAEEC,oBAFF,EAGEC,0BAHF,QAIO,0BAJP;AAKA,SAAQC,WAAR,QAA0B,cAA1B;AACA,SAAQC,kBAAR,EAA4BC,sBAA5B,QAAyD,iCAAzD;AAGA,OAAO,SAASC,wBAAT,CAAkCC,IAAlC,EAAwCC,QAAxC,EAAkDC,UAAlD,EAA8DC,OAA9D,EAAuE;AAC5E,QAAM;AAACC,IAAAA,cAAc,GAAG,CAAlB;AAAqBC,IAAAA;AAArB,MAAmCL,IAAzC;AAEA,QAAMM,gBAAgB,GAAG;AACvBC,IAAAA,YAAY,EAAEH;AADS,GAAzB;AAGA,QAAMI,sBAAsB,GAAGC,IAAI,CAACC,SAAL,CAAeJ,gBAAf,CAA/B;AACA,QAAMK,oBAAoB,GAAGN,UAAU,GAAGI,IAAI,CAACC,SAAL,CAAeL,UAAf,CAAH,GAAgC,EAAvE;AACA,QAAMO,0BAA0B,GAAGnB,WAAW,CAACe,sBAAsB,CAACK,MAAxB,EAAgC,CAAhC,CAA9C;AACA,QAAMC,wBAAwB,GAAGH,oBAAoB,GACjDlB,WAAW,CAACkB,oBAAoB,CAACE,MAAtB,EAA8B,CAA9B,CADsC,GAEjD,CAFJ;AAKAb,EAAAA,IAAI,GAAG;AAACe,IAAAA,KAAK,EAAEnB,WAAW,CAACoB,aAApB;AAAmC,OAAGhB;AAAtC,GAAP;AAEA,QAAMiB,eAAe,GAAGf,UAAxB;AAEAA,EAAAA,UAAU,GAAGL,kBAAkB,CAACG,IAAD,EAAOC,QAAP,EAAiBC,UAAjB,CAA/B;;AAEA,MAAID,QAAJ,EAAc;AACZA,IAAAA,QAAQ,CAACiB,SAAT,CAAmB,EAAnB,EAAuBN,0BAAvB,EAAmD,IAAnD;AACAX,IAAAA,QAAQ,CAACiB,SAAT,CAAmB,EAAnB,EAAuB,CAAvB,EAA0B,IAA1B;AACAjB,IAAAA,QAAQ,CAACiB,SAAT,CAAmB,EAAnB,EAAuBJ,wBAAvB,EAAiD,IAAjD;AACAb,IAAAA,QAAQ,CAACiB,SAAT,CAAmB,EAAnB,EAAuB,CAAvB,EAA0B,IAA1B;AACD;;AACDhB,EAAAA,UAAU,IAAI,EAAd;AAGAA,EAAAA,UAAU,GAAGP,0BAA0B,CAACM,QAAD,EAAWC,UAAX,EAAuBM,sBAAvB,EAA+C,CAA/C,CAAvC;;AAEA,MAAIH,UAAJ,EAAgB;AACdH,IAAAA,UAAU,GAAGP,0BAA0B,CAACM,QAAD,EAAWC,UAAX,EAAuBS,oBAAvB,EAA6C,CAA7C,CAAvC;AACD;;AAGD,QAAMQ,WAAW,GAAGnB,IAAI,CAACmB,WAAzB;;AACA,MAAIA,WAAJ,EAAiB;AACfjB,IAAAA,UAAU,GAAGR,oBAAoB,CAACO,QAAD,EAAWC,UAAX,EAAuBiB,WAAvB,EAAoCA,WAAW,CAACC,UAAhD,CAAjC;AACD;;AAGDtB,EAAAA,sBAAsB,CAACG,QAAD,EAAWgB,eAAX,EAA4Bf,UAAU,GAAGe,eAAzC,CAAtB;AAEA,SAAOf,UAAP;AACD","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 {\n padToNBytes,\n copyBinaryToDataView,\n copyPaddedStringToDataView\n} from '@loaders.gl/loader-utils';\nimport {MAGIC_ARRAY} from '../constants';\nimport {encode3DTileHeader, encode3DTileByteLength} from './helpers/encode-3d-tile-header';\n\n// Procedurally encode the tile array dataView for testing purposes\nexport function encodeBatchedModel3DTile(tile, dataView, byteOffset, options) {\n const {featuresLength = 0, batchTable} = tile;\n\n const featureTableJson = {\n BATCH_LENGTH: featuresLength\n };\n const featureTableJsonString = JSON.stringify(featureTableJson);\n const batchTableJsonString = batchTable ? JSON.stringify(batchTable) : '';\n const featureTableJsonByteLength = padToNBytes(featureTableJsonString.length, 8);\n const batchTableJsonByteLength = batchTableJsonString\n ? padToNBytes(batchTableJsonString.length, 8)\n : 0;\n\n // Add default magic for this tile type\n tile = {magic: MAGIC_ARRAY.BATCHED_MODEL, ...tile};\n\n const byteOffsetStart = byteOffset;\n\n byteOffset = encode3DTileHeader(tile, dataView, byteOffset);\n\n if (dataView) {\n dataView.setUint32(12, featureTableJsonByteLength, true); // featureTableJsonByteLength\n dataView.setUint32(16, 0, true); // featureTableBinaryByteLength\n dataView.setUint32(20, batchTableJsonByteLength, true); // batchTableJsonByteLength\n dataView.setUint32(24, 0, true); // batchTableBinaryByteLength\n }\n byteOffset += 16;\n\n // TODO feature table binary\n byteOffset = copyPaddedStringToDataView(dataView, byteOffset, featureTableJsonString, 8);\n\n if (batchTable) {\n byteOffset = copyPaddedStringToDataView(dataView, byteOffset, batchTableJsonString, 8);\n }\n\n // Add encoded GLTF to the end of data\n const gltfEncoded = tile.gltfEncoded;\n if (gltfEncoded) {\n byteOffset = copyBinaryToDataView(dataView, byteOffset, gltfEncoded, gltfEncoded.byteLength);\n }\n\n // Go \"back\" and rewrite the tile's `byteLength` now that we know the value\n encode3DTileByteLength(dataView, byteOffsetStart, byteOffset - byteOffsetStart);\n\n return byteOffset;\n}\n"],"file":"encode-3d-tile-batched-model.js"}
@@ -0,0 +1,25 @@
1
+ import { MAGIC_ARRAY } from '../constants';
2
+ import { encode3DTileHeader, encode3DTileByteLength } from './helpers/encode-3d-tile-header';
3
+ export function encodeComposite3DTile(tile, dataView, byteOffset, options, encode3DTile) {
4
+ tile = {
5
+ magic: MAGIC_ARRAY.COMPOSITE,
6
+ tiles: [],
7
+ ...tile
8
+ };
9
+ const byteOffsetStart = byteOffset;
10
+ byteOffset += encode3DTileHeader(tile, dataView, byteOffset);
11
+
12
+ if (dataView) {
13
+ dataView.setUint32(byteOffset, tile.tiles.length, true);
14
+ }
15
+
16
+ byteOffset += 4;
17
+
18
+ for (let i = 0; i < tile.tiles.length; ++i) {
19
+ byteOffset += encode3DTile(tile.tiles[i], dataView, byteOffset, options);
20
+ }
21
+
22
+ encode3DTileByteLength(dataView, byteOffsetStart, byteOffset - byteOffsetStart);
23
+ return byteOffset;
24
+ }
25
+ //# sourceMappingURL=encode-3d-tile-composite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/encoders/encode-3d-tile-composite.ts"],"names":["MAGIC_ARRAY","encode3DTileHeader","encode3DTileByteLength","encodeComposite3DTile","tile","dataView","byteOffset","options","encode3DTile","magic","COMPOSITE","tiles","byteOffsetStart","setUint32","length","i"],"mappings":"AAGA,SAAQA,WAAR,QAA0B,cAA1B;AACA,SAAQC,kBAAR,EAA4BC,sBAA5B,QAAyD,iCAAzD;AAEA,OAAO,SAASC,qBAAT,CAA+BC,IAA/B,EAAqCC,QAArC,EAA+CC,UAA/C,EAA2DC,OAA3D,EAAoEC,YAApE,EAAkF;AAEvFJ,EAAAA,IAAI,GAAG;AAACK,IAAAA,KAAK,EAAET,WAAW,CAACU,SAApB;AAA+BC,IAAAA,KAAK,EAAE,EAAtC;AAA0C,OAAGP;AAA7C,GAAP;AAEA,QAAMQ,eAAe,GAAGN,UAAxB;AAEAA,EAAAA,UAAU,IAAIL,kBAAkB,CAACG,IAAD,EAAOC,QAAP,EAAiBC,UAAjB,CAAhC;;AAEA,MAAID,QAAJ,EAAc;AACZA,IAAAA,QAAQ,CAACQ,SAAT,CAAmBP,UAAnB,EAA+BF,IAAI,CAACO,KAAL,CAAWG,MAA1C,EAAkD,IAAlD;AACD;;AACDR,EAAAA,UAAU,IAAI,CAAd;;AAEA,OAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGX,IAAI,CAACO,KAAL,CAAWG,MAA/B,EAAuC,EAAEC,CAAzC,EAA4C;AAC1CT,IAAAA,UAAU,IAAIE,YAAY,CAACJ,IAAI,CAACO,KAAL,CAAWI,CAAX,CAAD,EAAgBV,QAAhB,EAA0BC,UAA1B,EAAsCC,OAAtC,CAA1B;AACD;;AAGDL,EAAAA,sBAAsB,CAACG,QAAD,EAAWO,eAAX,EAA4BN,UAAU,GAAGM,eAAzC,CAAtB;AAEA,SAAON,UAAP;AACD","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 {MAGIC_ARRAY} from '../constants';\nimport {encode3DTileHeader, encode3DTileByteLength} from './helpers/encode-3d-tile-header';\n\nexport function encodeComposite3DTile(tile, dataView, byteOffset, options, encode3DTile) {\n // Add default magic for this tile type\n tile = {magic: MAGIC_ARRAY.COMPOSITE, tiles: [], ...tile};\n\n const byteOffsetStart = byteOffset;\n\n byteOffset += encode3DTileHeader(tile, dataView, byteOffset);\n\n if (dataView) {\n dataView.setUint32(byteOffset, tile.tiles.length, true); // tilesLength\n }\n byteOffset += 4;\n\n for (let i = 0; i < tile.tiles.length; ++i) {\n byteOffset += encode3DTile(tile.tiles[i], dataView, byteOffset, options);\n }\n\n // Go \"back\" and rewrite the tile's `byteLength` now that we know the value\n encode3DTileByteLength(dataView, byteOffsetStart, byteOffset - byteOffsetStart);\n\n return byteOffset;\n}\n"],"file":"encode-3d-tile-composite.js"}
@@ -0,0 +1,38 @@
1
+ import { copyStringToDataView } from '@loaders.gl/loader-utils';
2
+ import { MAGIC_ARRAY } from '../constants';
3
+ import { encode3DTileHeader, encode3DTileByteLength } from './helpers/encode-3d-tile-header';
4
+ export function encodeInstancedModel3DTile(tile, dataView, byteOffset, options) {
5
+ const {
6
+ featuresLength = 1,
7
+ gltfFormat = 1,
8
+ gltfUri = ''
9
+ } = tile;
10
+ const gltfUriByteLength = gltfUri.length;
11
+ const featureTableJson = {
12
+ INSTANCES_LENGTH: featuresLength,
13
+ POSITION: new Array(featuresLength * 3).fill(0)
14
+ };
15
+ const featureTableJsonString = JSON.stringify(featureTableJson);
16
+ const featureTableJsonByteLength = featureTableJsonString.length;
17
+ tile = {
18
+ magic: MAGIC_ARRAY.INSTANCED_MODEL,
19
+ ...tile
20
+ };
21
+ const byteOffsetStart = byteOffset;
22
+ byteOffset = encode3DTileHeader(tile, dataView, 0);
23
+
24
+ if (dataView) {
25
+ dataView.setUint32(12, featureTableJsonByteLength, true);
26
+ dataView.setUint32(16, 0, true);
27
+ dataView.setUint32(20, 0, true);
28
+ dataView.setUint32(24, 0, true);
29
+ dataView.setUint32(28, gltfFormat, true);
30
+ }
31
+
32
+ byteOffset += 20;
33
+ byteOffset += copyStringToDataView(dataView, byteOffset, featureTableJsonString, featureTableJsonByteLength);
34
+ byteOffset += copyStringToDataView(dataView, byteOffset, gltfUri, gltfUriByteLength);
35
+ encode3DTileByteLength(dataView, byteOffsetStart, byteOffset - byteOffsetStart);
36
+ return byteOffset;
37
+ }
38
+ //# sourceMappingURL=encode-3d-tile-instanced-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/encoders/encode-3d-tile-instanced-model.ts"],"names":["copyStringToDataView","MAGIC_ARRAY","encode3DTileHeader","encode3DTileByteLength","encodeInstancedModel3DTile","tile","dataView","byteOffset","options","featuresLength","gltfFormat","gltfUri","gltfUriByteLength","length","featureTableJson","INSTANCES_LENGTH","POSITION","Array","fill","featureTableJsonString","JSON","stringify","featureTableJsonByteLength","magic","INSTANCED_MODEL","byteOffsetStart","setUint32"],"mappings":"AAGA,SAAQA,oBAAR,QAAmC,0BAAnC;AACA,SAAQC,WAAR,QAA0B,cAA1B;AACA,SAAQC,kBAAR,EAA4BC,sBAA5B,QAAyD,iCAAzD;AAIA,OAAO,SAASC,0BAAT,CAAoCC,IAApC,EAA0CC,QAA1C,EAAoDC,UAApD,EAAgEC,OAAhE,EAAyE;AAC9E,QAAM;AAACC,IAAAA,cAAc,GAAG,CAAlB;AAAqBC,IAAAA,UAAU,GAAG,CAAlC;AAAqCC,IAAAA,OAAO,GAAG;AAA/C,MAAqDN,IAA3D;AAEA,QAAMO,iBAAiB,GAAGD,OAAO,CAACE,MAAlC;AAEA,QAAMC,gBAAgB,GAAG;AACvBC,IAAAA,gBAAgB,EAAEN,cADK;AAEvBO,IAAAA,QAAQ,EAAE,IAAIC,KAAJ,CAAUR,cAAc,GAAG,CAA3B,EAA8BS,IAA9B,CAAmC,CAAnC;AAFa,GAAzB;AAIA,QAAMC,sBAAsB,GAAGC,IAAI,CAACC,SAAL,CAAeP,gBAAf,CAA/B;AACA,QAAMQ,0BAA0B,GAAGH,sBAAsB,CAACN,MAA1D;AAGAR,EAAAA,IAAI,GAAG;AAACkB,IAAAA,KAAK,EAAEtB,WAAW,CAACuB,eAApB;AAAqC,OAAGnB;AAAxC,GAAP;AAEA,QAAMoB,eAAe,GAAGlB,UAAxB;AAEAA,EAAAA,UAAU,GAAGL,kBAAkB,CAACG,IAAD,EAAOC,QAAP,EAAiB,CAAjB,CAA/B;;AAEA,MAAIA,QAAJ,EAAc;AACZA,IAAAA,QAAQ,CAACoB,SAAT,CAAmB,EAAnB,EAAuBJ,0BAAvB,EAAmD,IAAnD;AACAhB,IAAAA,QAAQ,CAACoB,SAAT,CAAmB,EAAnB,EAAuB,CAAvB,EAA0B,IAA1B;AACApB,IAAAA,QAAQ,CAACoB,SAAT,CAAmB,EAAnB,EAAuB,CAAvB,EAA0B,IAA1B;AACApB,IAAAA,QAAQ,CAACoB,SAAT,CAAmB,EAAnB,EAAuB,CAAvB,EAA0B,IAA1B;AACApB,IAAAA,QAAQ,CAACoB,SAAT,CAAmB,EAAnB,EAAuBhB,UAAvB,EAAmC,IAAnC;AACD;;AAEDH,EAAAA,UAAU,IAAI,EAAd;AAEAA,EAAAA,UAAU,IAAIP,oBAAoB,CAChCM,QADgC,EAEhCC,UAFgC,EAGhCY,sBAHgC,EAIhCG,0BAJgC,CAAlC;AAMAf,EAAAA,UAAU,IAAIP,oBAAoB,CAACM,QAAD,EAAWC,UAAX,EAAuBI,OAAvB,EAAgCC,iBAAhC,CAAlC;AAGAT,EAAAA,sBAAsB,CAACG,QAAD,EAAWmB,eAAX,EAA4BlB,UAAU,GAAGkB,eAAzC,CAAtB;AAEA,SAAOlB,UAAP;AACD","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 {copyStringToDataView} from '@loaders.gl/loader-utils';\nimport {MAGIC_ARRAY} from '../constants';\nimport {encode3DTileHeader, encode3DTileByteLength} from './helpers/encode-3d-tile-header';\n\n// Procedurally encode the tile array buffer for testing purposes\n// eslint-disable-next-line max-statements\nexport function encodeInstancedModel3DTile(tile, dataView, byteOffset, options) {\n const {featuresLength = 1, gltfFormat = 1, gltfUri = ''} = tile;\n\n const gltfUriByteLength = gltfUri.length;\n\n const featureTableJson = {\n INSTANCES_LENGTH: featuresLength,\n POSITION: new Array(featuresLength * 3).fill(0)\n };\n const featureTableJsonString = JSON.stringify(featureTableJson);\n const featureTableJsonByteLength = featureTableJsonString.length;\n\n // Add default magic for this tile type\n tile = {magic: MAGIC_ARRAY.INSTANCED_MODEL, ...tile};\n\n const byteOffsetStart = byteOffset;\n\n byteOffset = encode3DTileHeader(tile, dataView, 0);\n\n if (dataView) {\n dataView.setUint32(12, featureTableJsonByteLength, true); // featureTableJsonByteLength\n dataView.setUint32(16, 0, true); // featureTableBinaryByteLength\n dataView.setUint32(20, 0, true); // batchTableJsonByteLength\n dataView.setUint32(24, 0, true); // batchTableBinaryByteLength\n dataView.setUint32(28, gltfFormat, true); // gltfFormat\n }\n\n byteOffset += 20;\n\n byteOffset += copyStringToDataView(\n dataView,\n byteOffset,\n featureTableJsonString,\n featureTableJsonByteLength\n );\n byteOffset += copyStringToDataView(dataView, byteOffset, gltfUri, gltfUriByteLength);\n\n // Go \"back\" and rewrite the tile's `byteLength` now that we know the value\n encode3DTileByteLength(dataView, byteOffsetStart, byteOffset - byteOffsetStart);\n\n return byteOffset;\n}\n"],"file":"encode-3d-tile-instanced-model.js"}