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

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 (245) hide show
  1. package/dist/bundle.d.ts +2 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +10008 -0
  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 +40 -0
  7. package/dist/es5/bundle.js +1 -1
  8. package/dist/es5/bundle.js.map +1 -1
  9. package/dist/es5/cesium-ion-loader.js +23 -78
  10. package/dist/es5/cesium-ion-loader.js.map +1 -1
  11. package/dist/es5/index.js +15 -7
  12. package/dist/es5/index.js.map +1 -1
  13. package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js +30 -42
  14. package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
  15. package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js +57 -59
  16. package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
  17. package/dist/es5/lib/classes/tile-3d-batch-table.js +209 -237
  18. package/dist/es5/lib/classes/tile-3d-batch-table.js.map +1 -1
  19. package/dist/es5/lib/classes/tile-3d-feature-table.js +67 -79
  20. package/dist/es5/lib/classes/tile-3d-feature-table.js.map +1 -1
  21. package/dist/es5/lib/constants.js +4 -4
  22. package/dist/es5/lib/constants.js.map +1 -1
  23. package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js +15 -22
  24. package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
  25. package/dist/es5/lib/encoders/encode-3d-tile-composite.js +6 -13
  26. package/dist/es5/lib/encoders/encode-3d-tile-composite.js.map +1 -1
  27. package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js +14 -23
  28. package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
  29. package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js +15 -22
  30. package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
  31. package/dist/es5/lib/encoders/encode-3d-tile.js +3 -3
  32. package/dist/es5/lib/encoders/encode-3d-tile.js.map +1 -1
  33. package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js +6 -6
  34. package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
  35. package/dist/es5/lib/ion/ion.js +69 -197
  36. package/dist/es5/lib/ion/ion.js.map +1 -1
  37. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js +17 -18
  38. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
  39. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js +3 -3
  40. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
  41. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js +3 -3
  42. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
  43. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +27 -67
  44. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
  45. package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js +3 -4
  46. package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
  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 +19 -17
  50. package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
  51. package/dist/es5/lib/parsers/helpers/parse-utils.js +7 -8
  52. package/dist/es5/lib/parsers/helpers/parse-utils.js.map +1 -1
  53. package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js +10 -36
  54. package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
  55. package/dist/es5/lib/parsers/parse-3d-tile-composite.js +12 -48
  56. package/dist/es5/lib/parsers/parse-3d-tile-composite.js.map +1 -1
  57. package/dist/es5/lib/parsers/parse-3d-tile-header.js +14 -30
  58. package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -1
  59. package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js +38 -63
  60. package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
  61. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js +117 -198
  62. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
  63. package/dist/es5/lib/parsers/parse-3d-tile.js +15 -65
  64. package/dist/es5/lib/parsers/parse-3d-tile.js.map +1 -1
  65. package/dist/es5/lib/utils/version.js +1 -1
  66. package/dist/es5/lib/utils/version.js.map +1 -1
  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 +5 -5
  70. package/dist/es5/tile-3d-writer.js.map +1 -1
  71. package/dist/es5/tiles-3d-loader.js +37 -117
  72. package/dist/es5/tiles-3d-loader.js.map +1 -1
  73. package/dist/esm/index.js +1 -0
  74. package/dist/esm/index.js.map +1 -1
  75. package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
  76. package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js +1 -1
  77. package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
  78. package/dist/esm/lib/classes/tile-3d-batch-table.js +19 -4
  79. package/dist/esm/lib/classes/tile-3d-batch-table.js.map +1 -1
  80. package/dist/esm/lib/classes/tile-3d-feature-table.js +9 -2
  81. package/dist/esm/lib/classes/tile-3d-feature-table.js.map +1 -1
  82. package/dist/esm/lib/constants.js.map +1 -1
  83. package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
  84. package/dist/esm/lib/encoders/encode-3d-tile-composite.js.map +1 -1
  85. package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
  86. package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
  87. package/dist/esm/lib/encoders/encode-3d-tile.js.map +1 -1
  88. package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
  89. package/dist/esm/lib/ion/ion.js +6 -6
  90. package/dist/esm/lib/ion/ion.js.map +1 -1
  91. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
  92. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
  93. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
  94. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js +2 -2
  95. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
  96. package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js +1 -1
  97. package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
  98. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js +64 -0
  99. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -0
  100. package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js +1 -1
  101. package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
  102. package/dist/esm/lib/parsers/helpers/parse-utils.js +1 -5
  103. package/dist/esm/lib/parsers/helpers/parse-utils.js.map +1 -1
  104. package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
  105. package/dist/esm/lib/parsers/parse-3d-tile-composite.js.map +1 -1
  106. package/dist/esm/lib/parsers/parse-3d-tile-header.js +1 -1
  107. package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -1
  108. package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js +1 -1
  109. package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
  110. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js +1 -1
  111. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
  112. package/dist/esm/lib/parsers/parse-3d-tile.js +1 -1
  113. package/dist/esm/lib/parsers/parse-3d-tile.js.map +1 -1
  114. package/dist/esm/lib/utils/version.js +1 -1
  115. package/dist/esm/lib/utils/version.js.map +1 -1
  116. package/dist/esm/tile-3d-subtree-loader.js +14 -0
  117. package/dist/esm/tile-3d-subtree-loader.js.map +1 -0
  118. package/dist/index.d.ts +10 -0
  119. package/dist/index.d.ts.map +1 -0
  120. package/dist/index.js +26 -0
  121. package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts +8 -0
  122. package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts.map +1 -0
  123. package/dist/lib/classes/helpers/tile-3d-accessor-utils.js +113 -0
  124. package/dist/lib/classes/tile-3d-batch-table-hierarchy.d.ts +10 -0
  125. package/dist/lib/classes/tile-3d-batch-table-hierarchy.d.ts.map +1 -0
  126. package/dist/lib/classes/tile-3d-batch-table-hierarchy.js +197 -0
  127. package/dist/lib/classes/tile-3d-batch-table.d.ts +34 -0
  128. package/dist/lib/classes/tile-3d-batch-table.d.ts.map +1 -0
  129. package/dist/lib/classes/tile-3d-batch-table.js +245 -0
  130. package/dist/lib/classes/tile-3d-feature-table.d.ts +15 -0
  131. package/dist/lib/classes/tile-3d-feature-table.d.ts.map +1 -0
  132. package/dist/lib/classes/tile-3d-feature-table.js +72 -0
  133. package/dist/lib/constants.d.ts +21 -0
  134. package/dist/lib/constants.d.ts.map +1 -0
  135. package/dist/lib/constants.js +25 -0
  136. package/dist/lib/encoders/encode-3d-tile-batched-model.d.ts +2 -0
  137. package/dist/lib/encoders/encode-3d-tile-batched-model.d.ts.map +1 -0
  138. package/dist/lib/encoders/encode-3d-tile-batched-model.js +46 -0
  139. package/dist/lib/encoders/encode-3d-tile-composite.d.ts +2 -0
  140. package/dist/lib/encoders/encode-3d-tile-composite.d.ts.map +1 -0
  141. package/dist/lib/encoders/encode-3d-tile-composite.js +24 -0
  142. package/dist/lib/encoders/encode-3d-tile-instanced-model.d.ts +2 -0
  143. package/dist/lib/encoders/encode-3d-tile-instanced-model.d.ts.map +1 -0
  144. package/dist/lib/encoders/encode-3d-tile-instanced-model.js +38 -0
  145. package/dist/lib/encoders/encode-3d-tile-point-cloud.d.ts +2 -0
  146. package/dist/lib/encoders/encode-3d-tile-point-cloud.d.ts.map +1 -0
  147. package/dist/lib/encoders/encode-3d-tile-point-cloud.js +39 -0
  148. package/dist/lib/encoders/encode-3d-tile.d.ts +2 -0
  149. package/dist/lib/encoders/encode-3d-tile.d.ts.map +1 -0
  150. package/dist/lib/encoders/encode-3d-tile.js +33 -0
  151. package/dist/lib/encoders/helpers/encode-3d-tile-header.d.ts +3 -0
  152. package/dist/lib/encoders/helpers/encode-3d-tile-header.d.ts.map +1 -0
  153. package/dist/lib/encoders/helpers/encode-3d-tile-header.js +30 -0
  154. package/dist/lib/ion/ion.d.ts +4 -0
  155. package/dist/lib/ion/ion.d.ts.map +1 -0
  156. package/dist/lib/ion/ion.js +68 -0
  157. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.d.ts +7 -0
  158. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.d.ts.map +1 -0
  159. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.js +65 -0
  160. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.d.ts +6 -0
  161. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.d.ts.map +1 -0
  162. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.js +30 -0
  163. package/dist/lib/parsers/helpers/normalize-3d-tile-positions.d.ts +2 -0
  164. package/dist/lib/parsers/helpers/normalize-3d-tile-positions.d.ts.map +1 -0
  165. package/dist/lib/parsers/helpers/normalize-3d-tile-positions.js +42 -0
  166. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.d.ts +7 -0
  167. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.d.ts.map +1 -0
  168. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.js +88 -0
  169. package/dist/lib/parsers/helpers/parse-3d-tile-header.d.ts +2 -0
  170. package/dist/lib/parsers/helpers/parse-3d-tile-header.d.ts.map +1 -0
  171. package/dist/lib/parsers/helpers/parse-3d-tile-header.js +28 -0
  172. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts +9 -0
  173. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts.map +1 -0
  174. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js +74 -0
  175. package/dist/lib/parsers/helpers/parse-3d-tile-tables.d.ts +3 -0
  176. package/dist/lib/parsers/helpers/parse-3d-tile-tables.d.ts.map +1 -0
  177. package/dist/lib/parsers/helpers/parse-3d-tile-tables.js +93 -0
  178. package/dist/lib/parsers/helpers/parse-utils.d.ts +4 -0
  179. package/dist/lib/parsers/helpers/parse-utils.d.ts.map +1 -0
  180. package/dist/lib/parsers/helpers/parse-utils.js +32 -0
  181. package/dist/lib/parsers/parse-3d-tile-batched-model.d.ts +2 -0
  182. package/dist/lib/parsers/parse-3d-tile-batched-model.d.ts.map +1 -0
  183. package/dist/lib/parsers/parse-3d-tile-batched-model.js +33 -0
  184. package/dist/lib/parsers/parse-3d-tile-composite.d.ts +2 -0
  185. package/dist/lib/parsers/parse-3d-tile-composite.d.ts.map +1 -0
  186. package/dist/lib/parsers/parse-3d-tile-composite.js +26 -0
  187. package/dist/lib/parsers/parse-3d-tile-header.d.ts +3 -0
  188. package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -0
  189. package/dist/lib/parsers/parse-3d-tile-header.js +66 -0
  190. package/dist/lib/parsers/parse-3d-tile-instanced-model.d.ts +2 -0
  191. package/dist/lib/parsers/parse-3d-tile-instanced-model.d.ts.map +1 -0
  192. package/dist/lib/parsers/parse-3d-tile-instanced-model.js +186 -0
  193. package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts +3 -0
  194. package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts.map +1 -0
  195. package/dist/lib/parsers/parse-3d-tile-point-cloud.js +411 -0
  196. package/dist/lib/parsers/parse-3d-tile.d.ts +2 -0
  197. package/dist/lib/parsers/parse-3d-tile.d.ts.map +1 -0
  198. package/dist/lib/parsers/parse-3d-tile.js +34 -0
  199. package/dist/lib/utils/version.d.ts +2 -0
  200. package/dist/lib/utils/version.d.ts.map +1 -0
  201. package/dist/lib/utils/version.js +7 -0
  202. package/dist/tile-3d-subtree-loader.d.ts +7 -0
  203. package/dist/tile-3d-subtree-loader.d.ts.map +1 -0
  204. package/dist/tile-3d-subtree-loader.js +23 -0
  205. package/dist/tile-3d-writer.d.ts +6 -0
  206. package/dist/tile-3d-writer.d.ts.map +1 -0
  207. package/dist/tile-3d-writer.js +27 -0
  208. package/dist/tiles-3d-loader.d.ts +6 -0
  209. package/dist/tiles-3d-loader.d.ts.map +1 -0
  210. package/dist/tiles-3d-loader.js +73 -0
  211. package/dist/types.d.ts +75 -0
  212. package/dist/types.d.ts.map +1 -0
  213. package/dist/types.js +2 -0
  214. package/package.json +12 -10
  215. package/src/index.ts +1 -0
  216. package/src/lib/classes/helpers/{tile-3d-accessor-utils.js → tile-3d-accessor-utils.ts} +0 -0
  217. package/src/lib/classes/{tile-3d-batch-table-hierarchy.js → tile-3d-batch-table-hierarchy.ts} +0 -0
  218. package/src/lib/classes/{tile-3d-batch-table.js → tile-3d-batch-table.ts} +14 -4
  219. package/src/lib/classes/{tile-3d-feature-table.js → tile-3d-feature-table.ts} +5 -2
  220. package/src/lib/{constants.js → constants.ts} +0 -0
  221. package/src/lib/encoders/{encode-3d-tile-batched-model.js → encode-3d-tile-batched-model.ts} +0 -0
  222. package/src/lib/encoders/{encode-3d-tile-composite.js → encode-3d-tile-composite.ts} +0 -0
  223. package/src/lib/encoders/{encode-3d-tile-instanced-model.js → encode-3d-tile-instanced-model.ts} +0 -0
  224. package/src/lib/encoders/{encode-3d-tile-point-cloud.js → encode-3d-tile-point-cloud.ts} +0 -0
  225. package/src/lib/encoders/{encode-3d-tile.js → encode-3d-tile.ts} +0 -0
  226. package/src/lib/encoders/helpers/{encode-3d-tile-header.js → encode-3d-tile-header.ts} +0 -0
  227. package/src/lib/parsers/helpers/{normalize-3d-tile-colors.js → normalize-3d-tile-colors.ts} +1 -1
  228. package/src/lib/parsers/helpers/{normalize-3d-tile-normals.js → normalize-3d-tile-normals.ts} +0 -0
  229. package/src/lib/parsers/helpers/{normalize-3d-tile-positions.js → normalize-3d-tile-positions.ts} +0 -0
  230. package/src/lib/parsers/helpers/{parse-3d-tile-gltf-view.js → parse-3d-tile-gltf-view.ts} +1 -1
  231. package/src/lib/parsers/helpers/{parse-3d-tile-header.js → parse-3d-tile-header.ts} +0 -0
  232. package/src/lib/parsers/helpers/parse-3d-tile-subtree.ts +104 -0
  233. package/src/lib/parsers/helpers/{parse-3d-tile-tables.js → parse-3d-tile-tables.ts} +1 -1
  234. package/src/lib/parsers/helpers/{parse-utils.js → parse-utils.ts} +0 -0
  235. package/src/lib/parsers/{parse-3d-tile-batched-model.js → parse-3d-tile-batched-model.ts} +0 -0
  236. package/src/lib/parsers/{parse-3d-tile-composite.js → parse-3d-tile-composite.ts} +0 -0
  237. package/src/lib/parsers/{parse-3d-tile-header.js → parse-3d-tile-header.ts} +1 -1
  238. package/src/lib/parsers/{parse-3d-tile-instanced-model.js → parse-3d-tile-instanced-model.ts} +6 -0
  239. package/src/lib/parsers/{parse-3d-tile-point-cloud.js → parse-3d-tile-point-cloud.ts} +2 -2
  240. package/src/lib/parsers/{parse-3d-tile.js → parse-3d-tile.ts} +4 -0
  241. package/src/lib/utils/{version.js → version.ts} +0 -0
  242. package/src/tile-3d-subtree-loader.ts +19 -0
  243. package/src/types.ts +33 -0
  244. package/dist/dist.min.js +0 -2
  245. package/dist/dist.min.js.map +0 -1
@@ -6,17 +6,15 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.initializeHierarchy = initializeHierarchy;
7
7
  exports.traverseHierarchy = traverseHierarchy;
8
8
 
9
- var defined = function defined(x) {
10
- return x !== undefined;
11
- };
9
+ const defined = x => x !== undefined;
12
10
 
13
11
  function initializeHierarchy(batchTable, jsonHeader, binaryBody) {
14
12
  if (!jsonHeader) {
15
13
  return null;
16
14
  }
17
15
 
18
- var hierarchy = batchTable.getExtension('3DTILES_batch_table_hierarchy');
19
- var legacyHierarchy = jsonHeader.HIERARCHY;
16
+ let hierarchy = batchTable.getExtension('3DTILES_batch_table_hierarchy');
17
+ const legacyHierarchy = jsonHeader.HIERARCHY;
20
18
 
21
19
  if (legacyHierarchy) {
22
20
  console.warn('3D Tile Parser: HIERARCHY is deprecated. Use 3DTILES_batch_table_hierarchy.');
@@ -33,15 +31,15 @@ function initializeHierarchy(batchTable, jsonHeader, binaryBody) {
33
31
  }
34
32
 
35
33
  function initializeHierarchyValues(hierarchyJson, binaryBody) {
36
- var i;
37
- var classId;
38
- var binaryAccessor;
39
- var instancesLength = hierarchyJson.instancesLength;
40
- var classes = hierarchyJson.classes;
41
- var classIds = hierarchyJson.classIds;
42
- var parentCounts = hierarchyJson.parentCounts;
43
- var parentIds = hierarchyJson.parentIds;
44
- var parentIdsLength = instancesLength;
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;
45
43
 
46
44
  if (defined(classIds.byteOffset)) {
47
45
  classIds.componentType = defaultValue(classIds.componentType, GL.UNSIGNED_SHORT);
@@ -50,7 +48,7 @@ function initializeHierarchyValues(hierarchyJson, binaryBody) {
50
48
  classIds = binaryAccessor.createArrayBufferView(binaryBody.buffer, binaryBody.byteOffset + classIds.byteOffset, instancesLength);
51
49
  }
52
50
 
53
- var parentIndexes;
51
+ let parentIndexes;
54
52
 
55
53
  if (defined(parentCounts)) {
56
54
  if (defined(parentCounts.byteOffset)) {
@@ -76,17 +74,17 @@ function initializeHierarchyValues(hierarchyJson, binaryBody) {
76
74
  parentIds = binaryAccessor.createArrayBufferView(binaryBody.buffer, binaryBody.byteOffset + parentIds.byteOffset, parentIdsLength);
77
75
  }
78
76
 
79
- var classesLength = classes.length;
77
+ const classesLength = classes.length;
80
78
 
81
79
  for (i = 0; i < classesLength; ++i) {
82
- var classInstancesLength = classes[i].length;
83
- var properties = classes[i].instances;
84
- var binaryProperties = getBinaryProperties(classInstancesLength, properties, binaryBody);
80
+ const classInstancesLength = classes[i].length;
81
+ const properties = classes[i].instances;
82
+ const binaryProperties = getBinaryProperties(classInstancesLength, properties, binaryBody);
85
83
  classes[i].instances = combine(binaryProperties, properties);
86
84
  }
87
85
 
88
- var classCounts = new Array(classesLength).fill(0);
89
- var classIndexes = new Uint16Array(instancesLength);
86
+ const classCounts = new Array(classesLength).fill(0);
87
+ const classIndexes = new Uint16Array(instancesLength);
90
88
 
91
89
  for (i = 0; i < instancesLength; ++i) {
92
90
  classId = classIds[i];
@@ -94,13 +92,13 @@ function initializeHierarchyValues(hierarchyJson, binaryBody) {
94
92
  ++classCounts[classId];
95
93
  }
96
94
 
97
- var hierarchy = {
98
- classes: classes,
99
- classIds: classIds,
100
- classIndexes: classIndexes,
101
- parentCounts: parentCounts,
102
- parentIndexes: parentIndexes,
103
- parentIds: parentIds
95
+ const hierarchy = {
96
+ classes,
97
+ classIds,
98
+ classIndexes,
99
+ parentCounts,
100
+ parentIndexes,
101
+ parentIds
104
102
  };
105
103
  validateHierarchy(hierarchy);
106
104
  return hierarchy;
@@ -111,8 +109,8 @@ function traverseHierarchy(hierarchy, instanceIndex, endConditionCallback) {
111
109
  return;
112
110
  }
113
111
 
114
- var parentCounts = hierarchy.parentCounts;
115
- var parentIds = hierarchy.parentIds;
112
+ const parentCounts = hierarchy.parentCounts;
113
+ const parentIds = hierarchy.parentIds;
116
114
 
117
115
  if (parentIds) {
118
116
  return endConditionCallback(hierarchy, instanceIndex);
@@ -126,15 +124,15 @@ function traverseHierarchy(hierarchy, instanceIndex, endConditionCallback) {
126
124
  }
127
125
 
128
126
  function traverseHierarchyMultipleParents(hierarchy, instanceIndex, endConditionCallback) {
129
- var classIds = hierarchy.classIds;
130
- var parentCounts = hierarchy.parentCounts;
131
- var parentIds = hierarchy.parentIds;
132
- var parentIndexes = hierarchy.parentIndexes;
133
- var instancesLength = classIds.length;
134
- var visited = scratchVisited;
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;
135
133
  visited.length = Math.max(visited.length, instancesLength);
136
- var visitedMarker = ++marker;
137
- var stack = scratchStack;
134
+ const visitedMarker = ++marker;
135
+ const stack = scratchStack;
138
136
  stack.length = 0;
139
137
  stack.push(instanceIndex);
140
138
 
@@ -146,17 +144,17 @@ function traverseHierarchyMultipleParents(hierarchy, instanceIndex, endCondition
146
144
  }
147
145
 
148
146
  visited[instanceIndex] = visitedMarker;
149
- var result = endConditionCallback(hierarchy, instanceIndex);
147
+ const result = endConditionCallback(hierarchy, instanceIndex);
150
148
 
151
149
  if (defined(result)) {
152
150
  return result;
153
151
  }
154
152
 
155
- var parentCount = parentCounts[instanceIndex];
156
- var parentIndex = parentIndexes[instanceIndex];
153
+ const parentCount = parentCounts[instanceIndex];
154
+ const parentIndex = parentIndexes[instanceIndex];
157
155
 
158
- for (var i = 0; i < parentCount; ++i) {
159
- var parentId = parentIds[parentIndex + i];
156
+ for (let i = 0; i < parentCount; ++i) {
157
+ const parentId = parentIds[parentIndex + i];
160
158
 
161
159
  if (parentId !== instanceIndex) {
162
160
  stack.push(parentId);
@@ -168,16 +166,16 @@ function traverseHierarchyMultipleParents(hierarchy, instanceIndex, endCondition
168
166
  }
169
167
 
170
168
  function traverseHierarchySingleParent(hierarchy, instanceIndex, endConditionCallback) {
171
- var hasParent = true;
169
+ let hasParent = true;
172
170
 
173
171
  while (hasParent) {
174
- var result = endConditionCallback(hierarchy, instanceIndex);
172
+ const result = endConditionCallback(hierarchy, instanceIndex);
175
173
 
176
174
  if (defined(result)) {
177
175
  return result;
178
176
  }
179
177
 
180
- var parentId = hierarchy.parentIds[instanceIndex];
178
+ const parentId = hierarchy.parentIds[instanceIndex];
181
179
  hasParent = parentId !== instanceIndex;
182
180
  instanceIndex = parentId;
183
181
  }
@@ -186,21 +184,21 @@ function traverseHierarchySingleParent(hierarchy, instanceIndex, endConditionCal
186
184
  }
187
185
 
188
186
  function validateHierarchy(hierarchy) {
189
- var scratchValidateStack = [];
190
- var classIds = hierarchy.classIds;
191
- var instancesLength = classIds.length;
187
+ const scratchValidateStack = [];
188
+ const classIds = hierarchy.classIds;
189
+ const instancesLength = classIds.length;
192
190
 
193
- for (var i = 0; i < instancesLength; ++i) {
191
+ for (let i = 0; i < instancesLength; ++i) {
194
192
  validateInstance(hierarchy, i, stack);
195
193
  }
196
194
  }
197
195
 
198
196
  function validateInstance(hierarchy, instanceIndex, stack) {
199
- var parentCounts = hierarchy.parentCounts;
200
- var parentIds = hierarchy.parentIds;
201
- var parentIndexes = hierarchy.parentIndexes;
202
- var classIds = hierarchy.classIds;
203
- var instancesLength = classIds.length;
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;
204
202
 
205
203
  if (!defined(parentIds)) {
206
204
  return;
@@ -209,11 +207,11 @@ function validateInstance(hierarchy, instanceIndex, stack) {
209
207
  assert(instanceIndex < instancesLength, "Parent index ".concat(instanceIndex, " exceeds the total number of instances: ").concat(instancesLength));
210
208
  assert(stack.indexOf(instanceIndex) === -1, 'Circular dependency detected in the batch table hierarchy.');
211
209
  stack.push(instanceIndex);
212
- var parentCount = defined(parentCounts) ? parentCounts[instanceIndex] : 1;
213
- var parentIndex = defined(parentCounts) ? parentIndexes[instanceIndex] : instanceIndex;
210
+ const parentCount = defined(parentCounts) ? parentCounts[instanceIndex] : 1;
211
+ const parentIndex = defined(parentCounts) ? parentIndexes[instanceIndex] : instanceIndex;
214
212
 
215
- for (var i = 0; i < parentCount; ++i) {
216
- var parentId = parentIds[parentIndex + i];
213
+ for (let i = 0; i < parentCount; ++i) {
214
+ const parentId = parentIds[parentIndex + i];
217
215
 
218
216
  if (parentId !== instanceIndex) {
219
217
  validateInstance(hierarchy, parentId, stack);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/classes/tile-3d-batch-table-hierarchy.js"],"names":["defined","x","undefined","initializeHierarchy","batchTable","jsonHeader","binaryBody","hierarchy","getExtension","legacyHierarchy","HIERARCHY","console","warn","extensions","initializeHierarchyValues","hierarchyJson","i","classId","binaryAccessor","instancesLength","classes","classIds","parentCounts","parentIds","parentIdsLength","byteOffset","componentType","defaultValue","GL","UNSIGNED_SHORT","type","AttributeType","SCALAR","getBinaryAccessor","createArrayBufferView","buffer","parentIndexes","Uint16Array","classesLength","length","classInstancesLength","properties","instances","binaryProperties","getBinaryProperties","combine","classCounts","Array","fill","classIndexes","validateHierarchy","traverseHierarchy","instanceIndex","endConditionCallback","traverseHierarchyMultipleParents","traverseHierarchySingleParent","visited","scratchVisited","Math","max","visitedMarker","marker","stack","scratchStack","push","pop","result","parentCount","parentIndex","parentId","hasParent","Error","scratchValidateStack","validateInstance","assert","indexOf"],"mappings":"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","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\n// TODO - Finish hierarchy suypport: this file is only half ported\n/* eslint-disable */\n// @ts-nocheck\nconst defined = (x) => x !== undefined;\n\nexport function initializeHierarchy(batchTable, jsonHeader, binaryBody) {\n if (!jsonHeader) {\n return null;\n }\n\n let hierarchy = batchTable.getExtension('3DTILES_batch_table_hierarchy');\n\n const legacyHierarchy = jsonHeader.HIERARCHY;\n if (legacyHierarchy) {\n // eslint-disable-next-line\n console.warn('3D Tile Parser: HIERARCHY is deprecated. Use 3DTILES_batch_table_hierarchy.');\n jsonHeader.extensions = jsonHeader.extensions || {};\n jsonHeader.extensions['3DTILES_batch_table_hierarchy'] = legacyHierarchy;\n hierarchy = legacyHierarchy;\n }\n\n if (!hierarchy) {\n return null;\n }\n\n return initializeHierarchyValues(hierarchy, binaryBody);\n}\n\n// eslint-disable-next-line max-statements\nfunction initializeHierarchyValues(hierarchyJson, binaryBody) {\n let i;\n let classId;\n let binaryAccessor;\n\n const instancesLength = hierarchyJson.instancesLength;\n const classes = hierarchyJson.classes;\n let classIds = hierarchyJson.classIds;\n let parentCounts = hierarchyJson.parentCounts;\n let parentIds = hierarchyJson.parentIds;\n let parentIdsLength = instancesLength;\n\n if (defined(classIds.byteOffset)) {\n classIds.componentType = defaultValue(classIds.componentType, GL.UNSIGNED_SHORT);\n classIds.type = AttributeType.SCALAR;\n binaryAccessor = getBinaryAccessor(classIds);\n classIds = binaryAccessor.createArrayBufferView(\n binaryBody.buffer,\n binaryBody.byteOffset + classIds.byteOffset,\n instancesLength\n );\n }\n\n let parentIndexes;\n if (defined(parentCounts)) {\n if (defined(parentCounts.byteOffset)) {\n parentCounts.componentType = defaultValue(parentCounts.componentType, GL.UNSIGNED_SHORT);\n parentCounts.type = AttributeType.SCALAR;\n binaryAccessor = getBinaryAccessor(parentCounts);\n parentCounts = binaryAccessor.createArrayBufferView(\n binaryBody.buffer,\n binaryBody.byteOffset + parentCounts.byteOffset,\n instancesLength\n );\n }\n parentIndexes = new Uint16Array(instancesLength);\n parentIdsLength = 0;\n for (i = 0; i < instancesLength; ++i) {\n parentIndexes[i] = parentIdsLength;\n parentIdsLength += parentCounts[i];\n }\n }\n\n if (defined(parentIds) && defined(parentIds.byteOffset)) {\n parentIds.componentType = defaultValue(parentIds.componentType, GL.UNSIGNED_SHORT);\n parentIds.type = AttributeType.SCALAR;\n binaryAccessor = getBinaryAccessor(parentIds);\n parentIds = binaryAccessor.createArrayBufferView(\n binaryBody.buffer,\n binaryBody.byteOffset + parentIds.byteOffset,\n parentIdsLength\n );\n }\n\n const classesLength = classes.length;\n for (i = 0; i < classesLength; ++i) {\n const classInstancesLength = classes[i].length;\n const properties = classes[i].instances;\n const binaryProperties = getBinaryProperties(classInstancesLength, properties, binaryBody);\n classes[i].instances = combine(binaryProperties, properties);\n }\n\n const classCounts = new Array(classesLength).fill(0);\n const classIndexes = new Uint16Array(instancesLength);\n for (i = 0; i < instancesLength; ++i) {\n classId = classIds[i];\n classIndexes[i] = classCounts[classId];\n ++classCounts[classId];\n }\n\n const hierarchy = {\n classes,\n classIds,\n classIndexes,\n parentCounts,\n parentIndexes,\n parentIds\n };\n\n validateHierarchy(hierarchy);\n\n return hierarchy;\n}\n\n// HELPER CODE\n\n// Traverse over the hierarchy and process each instance with the endConditionCallback.\n// When the endConditionCallback returns a value, the traversal stops and that value is returned.\nexport function traverseHierarchy(hierarchy, instanceIndex, endConditionCallback) {\n if (!hierarchy) {\n return;\n }\n\n const parentCounts = hierarchy.parentCounts;\n const parentIds = hierarchy.parentIds;\n if (parentIds) {\n return endConditionCallback(hierarchy, instanceIndex);\n }\n if (parentCounts > 0) {\n return traverseHierarchyMultipleParents(hierarchy, instanceIndex, endConditionCallback);\n }\n return traverseHierarchySingleParent(hierarchy, instanceIndex, endConditionCallback);\n}\n\n// eslint-disable-next-line max-statements\nfunction traverseHierarchyMultipleParents(hierarchy, instanceIndex, endConditionCallback) {\n const classIds = hierarchy.classIds;\n const parentCounts = hierarchy.parentCounts;\n const parentIds = hierarchy.parentIds;\n const parentIndexes = hierarchy.parentIndexes;\n const instancesLength = classIds.length;\n\n // Ignore instances that have already been visited. This occurs in diamond inheritance situations.\n // Use a marker value to indicate that an instance has been visited, which increments with each run.\n // This is more efficient than clearing the visited array every time.\n const visited = scratchVisited;\n visited.length = Math.max(visited.length, instancesLength);\n const visitedMarker = ++marker;\n\n const stack = scratchStack;\n stack.length = 0;\n stack.push(instanceIndex);\n\n while (stack.length > 0) {\n instanceIndex = stack.pop();\n if (visited[instanceIndex] === visitedMarker) {\n // This instance has already been visited, stop traversal\n continue;\n }\n visited[instanceIndex] = visitedMarker;\n const result = endConditionCallback(hierarchy, instanceIndex);\n if (defined(result)) {\n // The end condition was met, stop the traversal and return the result\n return result;\n }\n const parentCount = parentCounts[instanceIndex];\n const parentIndex = parentIndexes[instanceIndex];\n for (let i = 0; i < parentCount; ++i) {\n const parentId = parentIds[parentIndex + i];\n // Stop the traversal when the instance has no parent (its parentId equals itself)\n // else add the parent to the stack to continue the traversal.\n if (parentId !== instanceIndex) {\n stack.push(parentId);\n }\n }\n }\n\n return null;\n}\n\nfunction traverseHierarchySingleParent(hierarchy, instanceIndex, endConditionCallback) {\n let hasParent = true;\n while (hasParent) {\n const result = endConditionCallback(hierarchy, instanceIndex);\n if (defined(result)) {\n // The end condition was met, stop the traversal and return the result\n return result;\n }\n const parentId = hierarchy.parentIds[instanceIndex];\n hasParent = parentId !== instanceIndex;\n instanceIndex = parentId;\n }\n throw new Error('traverseHierarchySingleParent');\n}\n\n// DEBUG CODE\n\nfunction validateHierarchy(hierarchy) {\n const scratchValidateStack = [];\n\n const classIds = hierarchy.classIds;\n const instancesLength = classIds.length;\n\n for (let i = 0; i < instancesLength; ++i) {\n validateInstance(hierarchy, i, stack);\n }\n}\n\nfunction validateInstance(hierarchy, instanceIndex, stack) {\n const parentCounts = hierarchy.parentCounts;\n const parentIds = hierarchy.parentIds;\n const parentIndexes = hierarchy.parentIndexes;\n const classIds = hierarchy.classIds;\n const instancesLength = classIds.length;\n\n if (!defined(parentIds)) {\n // No need to validate if there are no parents\n return;\n }\n\n assert(\n instanceIndex < instancesLength,\n `Parent index ${instanceIndex} exceeds the total number of instances: ${instancesLength}`\n );\n assert(\n stack.indexOf(instanceIndex) === -1,\n 'Circular dependency detected in the batch table hierarchy.'\n );\n\n stack.push(instanceIndex);\n const parentCount = defined(parentCounts) ? parentCounts[instanceIndex] : 1;\n const parentIndex = defined(parentCounts) ? parentIndexes[instanceIndex] : instanceIndex;\n for (let i = 0; i < parentCount; ++i) {\n const parentId = parentIds[parentIndex + i];\n // Stop the traversal when the instance has no parent (its parentId equals itself), else continue the traversal.\n if (parentId !== instanceIndex) {\n validateInstance(hierarchy, parentId, stack);\n }\n }\n stack.pop(instanceIndex);\n}\n"],"file":"tile-3d-batch-table-hierarchy.js"}
1
+ {"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":";;;;;;;;AAMA,MAAMA,OAAO,GAAIC,CAAD,IAAOA,CAAC,KAAKC,SAA7B;;AAEO,SAASC,mBAAT,CAA6BC,UAA7B,EAAyCC,UAAzC,EAAqDC,UAArD,EAAiE;AACtE,MAAI,CAACD,UAAL,EAAiB;AACf,WAAO,IAAP;AACD;;AAED,MAAIE,SAAS,GAAGH,UAAU,CAACI,YAAX,CAAwB,+BAAxB,CAAhB;AAEA,QAAMC,eAAe,GAAGJ,UAAU,CAACK,SAAnC;;AACA,MAAID,eAAJ,EAAqB;AAEnBE,IAAAA,OAAO,CAACC,IAAR,CAAa,6EAAb;AACAP,IAAAA,UAAU,CAACQ,UAAX,GAAwBR,UAAU,CAACQ,UAAX,IAAyB,EAAjD;AACAR,IAAAA,UAAU,CAACQ,UAAX,CAAsB,+BAAtB,IAAyDJ,eAAzD;AACAF,IAAAA,SAAS,GAAGE,eAAZ;AACD;;AAED,MAAI,CAACF,SAAL,EAAgB;AACd,WAAO,IAAP;AACD;;AAED,SAAOO,yBAAyB,CAACP,SAAD,EAAYD,UAAZ,CAAhC;AACD;;AAGD,SAASQ,yBAAT,CAAmCC,aAAnC,EAAkDT,UAAlD,EAA8D;AAC5D,MAAIU,CAAJ;AACA,MAAIC,OAAJ;AACA,MAAIC,cAAJ;AAEA,QAAMC,eAAe,GAAGJ,aAAa,CAACI,eAAtC;AACA,QAAMC,OAAO,GAAGL,aAAa,CAACK,OAA9B;AACA,MAAIC,QAAQ,GAAGN,aAAa,CAACM,QAA7B;AACA,MAAIC,YAAY,GAAGP,aAAa,CAACO,YAAjC;AACA,MAAIC,SAAS,GAAGR,aAAa,CAACQ,SAA9B;AACA,MAAIC,eAAe,GAAGL,eAAtB;;AAEA,MAAInB,OAAO,CAACqB,QAAQ,CAACI,UAAV,CAAX,EAAkC;AAChCJ,IAAAA,QAAQ,CAACK,aAAT,GAAyBC,YAAY,CAACN,QAAQ,CAACK,aAAV,EAAyBE,EAAE,CAACC,cAA5B,CAArC;AACAR,IAAAA,QAAQ,CAACS,IAAT,GAAgBC,aAAa,CAACC,MAA9B;AACAd,IAAAA,cAAc,GAAGe,iBAAiB,CAACZ,QAAD,CAAlC;AACAA,IAAAA,QAAQ,GAAGH,cAAc,CAACgB,qBAAf,CACT5B,UAAU,CAAC6B,MADF,EAET7B,UAAU,CAACmB,UAAX,GAAwBJ,QAAQ,CAACI,UAFxB,EAGTN,eAHS,CAAX;AAKD;;AAED,MAAIiB,aAAJ;;AACA,MAAIpC,OAAO,CAACsB,YAAD,CAAX,EAA2B;AACzB,QAAItB,OAAO,CAACsB,YAAY,CAACG,UAAd,CAAX,EAAsC;AACpCH,MAAAA,YAAY,CAACI,aAAb,GAA6BC,YAAY,CAACL,YAAY,CAACI,aAAd,EAA6BE,EAAE,CAACC,cAAhC,CAAzC;AACAP,MAAAA,YAAY,CAACQ,IAAb,GAAoBC,aAAa,CAACC,MAAlC;AACAd,MAAAA,cAAc,GAAGe,iBAAiB,CAACX,YAAD,CAAlC;AACAA,MAAAA,YAAY,GAAGJ,cAAc,CAACgB,qBAAf,CACb5B,UAAU,CAAC6B,MADE,EAEb7B,UAAU,CAACmB,UAAX,GAAwBH,YAAY,CAACG,UAFxB,EAGbN,eAHa,CAAf;AAKD;;AACDiB,IAAAA,aAAa,GAAG,IAAIC,WAAJ,CAAgBlB,eAAhB,CAAhB;AACAK,IAAAA,eAAe,GAAG,CAAlB;;AACA,SAAKR,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGG,eAAhB,EAAiC,EAAEH,CAAnC,EAAsC;AACpCoB,MAAAA,aAAa,CAACpB,CAAD,CAAb,GAAmBQ,eAAnB;AACAA,MAAAA,eAAe,IAAIF,YAAY,CAACN,CAAD,CAA/B;AACD;AACF;;AAED,MAAIhB,OAAO,CAACuB,SAAD,CAAP,IAAsBvB,OAAO,CAACuB,SAAS,CAACE,UAAX,CAAjC,EAAyD;AACvDF,IAAAA,SAAS,CAACG,aAAV,GAA0BC,YAAY,CAACJ,SAAS,CAACG,aAAX,EAA0BE,EAAE,CAACC,cAA7B,CAAtC;AACAN,IAAAA,SAAS,CAACO,IAAV,GAAiBC,aAAa,CAACC,MAA/B;AACAd,IAAAA,cAAc,GAAGe,iBAAiB,CAACV,SAAD,CAAlC;AACAA,IAAAA,SAAS,GAAGL,cAAc,CAACgB,qBAAf,CACV5B,UAAU,CAAC6B,MADD,EAEV7B,UAAU,CAACmB,UAAX,GAAwBF,SAAS,CAACE,UAFxB,EAGVD,eAHU,CAAZ;AAKD;;AAED,QAAMc,aAAa,GAAGlB,OAAO,CAACmB,MAA9B;;AACA,OAAKvB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGsB,aAAhB,EAA+B,EAAEtB,CAAjC,EAAoC;AAClC,UAAMwB,oBAAoB,GAAGpB,OAAO,CAACJ,CAAD,CAAP,CAAWuB,MAAxC;AACA,UAAME,UAAU,GAAGrB,OAAO,CAACJ,CAAD,CAAP,CAAW0B,SAA9B;AACA,UAAMC,gBAAgB,GAAGC,mBAAmB,CAACJ,oBAAD,EAAuBC,UAAvB,EAAmCnC,UAAnC,CAA5C;AACAc,IAAAA,OAAO,CAACJ,CAAD,CAAP,CAAW0B,SAAX,GAAuBG,OAAO,CAACF,gBAAD,EAAmBF,UAAnB,CAA9B;AACD;;AAED,QAAMK,WAAW,GAAG,IAAIC,KAAJ,CAAUT,aAAV,EAAyBU,IAAzB,CAA8B,CAA9B,CAApB;AACA,QAAMC,YAAY,GAAG,IAAIZ,WAAJ,CAAgBlB,eAAhB,CAArB;;AACA,OAAKH,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGG,eAAhB,EAAiC,EAAEH,CAAnC,EAAsC;AACpCC,IAAAA,OAAO,GAAGI,QAAQ,CAACL,CAAD,CAAlB;AACAiC,IAAAA,YAAY,CAACjC,CAAD,CAAZ,GAAkB8B,WAAW,CAAC7B,OAAD,CAA7B;AACA,MAAE6B,WAAW,CAAC7B,OAAD,CAAb;AACD;;AAED,QAAMV,SAAS,GAAG;AAChBa,IAAAA,OADgB;AAEhBC,IAAAA,QAFgB;AAGhB4B,IAAAA,YAHgB;AAIhB3B,IAAAA,YAJgB;AAKhBc,IAAAA,aALgB;AAMhBb,IAAAA;AANgB,GAAlB;AASA2B,EAAAA,iBAAiB,CAAC3C,SAAD,CAAjB;AAEA,SAAOA,SAAP;AACD;;AAMM,SAAS4C,iBAAT,CAA2B5C,SAA3B,EAAsC6C,aAAtC,EAAqDC,oBAArD,EAA2E;AAChF,MAAI,CAAC9C,SAAL,EAAgB;AACd;AACD;;AAED,QAAMe,YAAY,GAAGf,SAAS,CAACe,YAA/B;AACA,QAAMC,SAAS,GAAGhB,SAAS,CAACgB,SAA5B;;AACA,MAAIA,SAAJ,EAAe;AACb,WAAO8B,oBAAoB,CAAC9C,SAAD,EAAY6C,aAAZ,CAA3B;AACD;;AACD,MAAI9B,YAAY,GAAG,CAAnB,EAAsB;AACpB,WAAOgC,gCAAgC,CAAC/C,SAAD,EAAY6C,aAAZ,EAA2BC,oBAA3B,CAAvC;AACD;;AACD,SAAOE,6BAA6B,CAAChD,SAAD,EAAY6C,aAAZ,EAA2BC,oBAA3B,CAApC;AACD;;AAGD,SAASC,gCAAT,CAA0C/C,SAA1C,EAAqD6C,aAArD,EAAoEC,oBAApE,EAA0F;AACxF,QAAMhC,QAAQ,GAAGd,SAAS,CAACc,QAA3B;AACA,QAAMC,YAAY,GAAGf,SAAS,CAACe,YAA/B;AACA,QAAMC,SAAS,GAAGhB,SAAS,CAACgB,SAA5B;AACA,QAAMa,aAAa,GAAG7B,SAAS,CAAC6B,aAAhC;AACA,QAAMjB,eAAe,GAAGE,QAAQ,CAACkB,MAAjC;AAKA,QAAMiB,OAAO,GAAGC,cAAhB;AACAD,EAAAA,OAAO,CAACjB,MAAR,GAAiBmB,IAAI,CAACC,GAAL,CAASH,OAAO,CAACjB,MAAjB,EAAyBpB,eAAzB,CAAjB;AACA,QAAMyC,aAAa,GAAG,EAAEC,MAAxB;AAEA,QAAMC,KAAK,GAAGC,YAAd;AACAD,EAAAA,KAAK,CAACvB,MAAN,GAAe,CAAf;AACAuB,EAAAA,KAAK,CAACE,IAAN,CAAWZ,aAAX;;AAEA,SAAOU,KAAK,CAACvB,MAAN,GAAe,CAAtB,EAAyB;AACvBa,IAAAA,aAAa,GAAGU,KAAK,CAACG,GAAN,EAAhB;;AACA,QAAIT,OAAO,CAACJ,aAAD,CAAP,KAA2BQ,aAA/B,EAA8C;AAE5C;AACD;;AACDJ,IAAAA,OAAO,CAACJ,aAAD,CAAP,GAAyBQ,aAAzB;AACA,UAAMM,MAAM,GAAGb,oBAAoB,CAAC9C,SAAD,EAAY6C,aAAZ,CAAnC;;AACA,QAAIpD,OAAO,CAACkE,MAAD,CAAX,EAAqB;AAEnB,aAAOA,MAAP;AACD;;AACD,UAAMC,WAAW,GAAG7C,YAAY,CAAC8B,aAAD,CAAhC;AACA,UAAMgB,WAAW,GAAGhC,aAAa,CAACgB,aAAD,CAAjC;;AACA,SAAK,IAAIpC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmD,WAApB,EAAiC,EAAEnD,CAAnC,EAAsC;AACpC,YAAMqD,QAAQ,GAAG9C,SAAS,CAAC6C,WAAW,GAAGpD,CAAf,CAA1B;;AAGA,UAAIqD,QAAQ,KAAKjB,aAAjB,EAAgC;AAC9BU,QAAAA,KAAK,CAACE,IAAN,CAAWK,QAAX;AACD;AACF;AACF;;AAED,SAAO,IAAP;AACD;;AAED,SAASd,6BAAT,CAAuChD,SAAvC,EAAkD6C,aAAlD,EAAiEC,oBAAjE,EAAuF;AACrF,MAAIiB,SAAS,GAAG,IAAhB;;AACA,SAAOA,SAAP,EAAkB;AAChB,UAAMJ,MAAM,GAAGb,oBAAoB,CAAC9C,SAAD,EAAY6C,aAAZ,CAAnC;;AACA,QAAIpD,OAAO,CAACkE,MAAD,CAAX,EAAqB;AAEnB,aAAOA,MAAP;AACD;;AACD,UAAMG,QAAQ,GAAG9D,SAAS,CAACgB,SAAV,CAAoB6B,aAApB,CAAjB;AACAkB,IAAAA,SAAS,GAAGD,QAAQ,KAAKjB,aAAzB;AACAA,IAAAA,aAAa,GAAGiB,QAAhB;AACD;;AACD,QAAM,IAAIE,KAAJ,CAAU,+BAAV,CAAN;AACD;;AAID,SAASrB,iBAAT,CAA2B3C,SAA3B,EAAsC;AACpC,QAAMiE,oBAAoB,GAAG,EAA7B;AAEA,QAAMnD,QAAQ,GAAGd,SAAS,CAACc,QAA3B;AACA,QAAMF,eAAe,GAAGE,QAAQ,CAACkB,MAAjC;;AAEA,OAAK,IAAIvB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGG,eAApB,EAAqC,EAAEH,CAAvC,EAA0C;AACxCyD,IAAAA,gBAAgB,CAAClE,SAAD,EAAYS,CAAZ,EAAe8C,KAAf,CAAhB;AACD;AACF;;AAED,SAASW,gBAAT,CAA0BlE,SAA1B,EAAqC6C,aAArC,EAAoDU,KAApD,EAA2D;AACzD,QAAMxC,YAAY,GAAGf,SAAS,CAACe,YAA/B;AACA,QAAMC,SAAS,GAAGhB,SAAS,CAACgB,SAA5B;AACA,QAAMa,aAAa,GAAG7B,SAAS,CAAC6B,aAAhC;AACA,QAAMf,QAAQ,GAAGd,SAAS,CAACc,QAA3B;AACA,QAAMF,eAAe,GAAGE,QAAQ,CAACkB,MAAjC;;AAEA,MAAI,CAACvC,OAAO,CAACuB,SAAD,CAAZ,EAAyB;AAEvB;AACD;;AAEDmD,EAAAA,MAAM,CACJtB,aAAa,GAAGjC,eADZ,yBAEYiC,aAFZ,qDAEoEjC,eAFpE,EAAN;AAIAuD,EAAAA,MAAM,CACJZ,KAAK,CAACa,OAAN,CAAcvB,aAAd,MAAiC,CAAC,CAD9B,EAEJ,4DAFI,CAAN;AAKAU,EAAAA,KAAK,CAACE,IAAN,CAAWZ,aAAX;AACA,QAAMe,WAAW,GAAGnE,OAAO,CAACsB,YAAD,CAAP,GAAwBA,YAAY,CAAC8B,aAAD,CAApC,GAAsD,CAA1E;AACA,QAAMgB,WAAW,GAAGpE,OAAO,CAACsB,YAAD,CAAP,GAAwBc,aAAa,CAACgB,aAAD,CAArC,GAAuDA,aAA3E;;AACA,OAAK,IAAIpC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmD,WAApB,EAAiC,EAAEnD,CAAnC,EAAsC;AACpC,UAAMqD,QAAQ,GAAG9C,SAAS,CAAC6C,WAAW,GAAGpD,CAAf,CAA1B;;AAEA,QAAIqD,QAAQ,KAAKjB,aAAjB,EAAgC;AAC9BqB,MAAAA,gBAAgB,CAAClE,SAAD,EAAY8D,QAAZ,EAAsBP,KAAtB,CAAhB;AACD;AACF;;AACDA,EAAAA,KAAK,CAACG,GAAN,CAAUb,aAAV;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\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"}