@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
@@ -7,11 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
-
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
11
 
16
12
  var _loaderUtils = require("@loaders.gl/loader-utils");
17
13
 
@@ -23,22 +19,25 @@ function defined(x) {
23
19
  return x !== undefined && x !== null;
24
20
  }
25
21
 
26
- var clone = function clone(x, y) {
27
- return x;
28
- };
22
+ const clone = (x, y) => x;
29
23
 
30
- var IGNORED_PROPERTY_FIELDS = {
24
+ const IGNORED_PROPERTY_FIELDS = {
31
25
  HIERARCHY: true,
32
26
  extensions: true,
33
27
  extras: true
34
28
  };
35
29
 
36
- var Tile3DBatchTableParser = function () {
37
- function Tile3DBatchTableParser(json, binary, featureCount) {
30
+ class Tile3DBatchTableParser {
31
+ constructor(json, binary, featureCount, options = {}) {
38
32
  var _this$json;
39
33
 
40
- var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
41
- (0, _classCallCheck2.default)(this, Tile3DBatchTableParser);
34
+ (0, _defineProperty2.default)(this, "json", void 0);
35
+ (0, _defineProperty2.default)(this, "binary", void 0);
36
+ (0, _defineProperty2.default)(this, "featureCount", void 0);
37
+ (0, _defineProperty2.default)(this, "_extensions", void 0);
38
+ (0, _defineProperty2.default)(this, "_properties", void 0);
39
+ (0, _defineProperty2.default)(this, "_binaryProperties", void 0);
40
+ (0, _defineProperty2.default)(this, "_hierarchy", void 0);
42
41
  (0, _loaderUtils.assert)(featureCount >= 0);
43
42
  this.json = json || {};
44
43
  this.binary = binary;
@@ -46,7 +45,7 @@ var Tile3DBatchTableParser = function () {
46
45
  this._extensions = ((_this$json = this.json) === null || _this$json === void 0 ? void 0 : _this$json.extensions) || {};
47
46
  this._properties = {};
48
47
 
49
- for (var propertyName in this.json) {
48
+ for (const propertyName in this.json) {
50
49
  if (!IGNORED_PROPERTY_FIELDS[propertyName]) {
51
50
  this._properties[propertyName] = this.json[propertyName];
52
51
  }
@@ -59,282 +58,255 @@ var Tile3DBatchTableParser = function () {
59
58
  }
60
59
  }
61
60
 
62
- (0, _createClass2.default)(Tile3DBatchTableParser, [{
63
- key: "getExtension",
64
- value: function getExtension(extensionName) {
65
- return this.json && this.json.extensions && this.json.extensions[extensionName];
66
- }
67
- }, {
68
- key: "memorySizeInBytes",
69
- value: function memorySizeInBytes() {
70
- return 0;
71
- }
72
- }, {
73
- key: "isClass",
74
- value: function isClass(batchId, className) {
75
- this._checkBatchId(batchId);
76
-
77
- (0, _loaderUtils.assert)(typeof className === 'string', className);
78
-
79
- if (this._hierarchy) {
80
- var result = (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, function (hierarchy, instanceIndex) {
81
- var classId = hierarchy.classIds[instanceIndex];
82
- var instanceClass = hierarchy.classes[classId];
83
- return instanceClass.name === className;
84
- });
85
- return defined(result);
86
- }
61
+ getExtension(extensionName) {
62
+ return this.json && this.json.extensions && this.json.extensions[extensionName];
63
+ }
87
64
 
88
- return false;
89
- }
90
- }, {
91
- key: "isExactClass",
92
- value: function isExactClass(batchId, className) {
93
- (0, _loaderUtils.assert)(typeof className === 'string', className);
94
- return this.getExactClassName(batchId) === className;
95
- }
96
- }, {
97
- key: "getExactClassName",
98
- value: function getExactClassName(batchId) {
99
- this._checkBatchId(batchId);
100
-
101
- if (this._hierarchy) {
102
- var classId = this._hierarchy.classIds[batchId];
103
- var instanceClass = this._hierarchy.classes[classId];
104
- return instanceClass.name;
105
- }
65
+ memorySizeInBytes() {
66
+ return 0;
67
+ }
106
68
 
107
- return undefined;
69
+ isClass(batchId, className) {
70
+ this._checkBatchId(batchId);
71
+
72
+ (0, _loaderUtils.assert)(typeof className === 'string', className);
73
+
74
+ if (this._hierarchy) {
75
+ const result = (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
76
+ const classId = hierarchy.classIds[instanceIndex];
77
+ const instanceClass = hierarchy.classes[classId];
78
+ return instanceClass.name === className;
79
+ });
80
+ return defined(result);
108
81
  }
109
- }, {
110
- key: "hasProperty",
111
- value: function hasProperty(batchId, name) {
112
- this._checkBatchId(batchId);
113
82
 
114
- (0, _loaderUtils.assert)(typeof name === 'string', name);
115
- return defined(this._properties[name]) || this._hasPropertyInHierarchy(batchId, name);
83
+ return false;
84
+ }
85
+
86
+ isExactClass(batchId, className) {
87
+ (0, _loaderUtils.assert)(typeof className === 'string', className);
88
+ return this.getExactClassName(batchId) === className;
89
+ }
90
+
91
+ getExactClassName(batchId) {
92
+ this._checkBatchId(batchId);
93
+
94
+ if (this._hierarchy) {
95
+ const classId = this._hierarchy.classIds[batchId];
96
+ const instanceClass = this._hierarchy.classes[classId];
97
+ return instanceClass.name;
116
98
  }
117
- }, {
118
- key: "getPropertyNames",
119
- value: function getPropertyNames(batchId, results) {
120
- var _results;
121
99
 
122
- this._checkBatchId(batchId);
100
+ return undefined;
101
+ }
123
102
 
124
- results = defined(results) ? results : [];
125
- results.length = 0;
126
- var propertyNames = Object.keys(this._properties);
103
+ hasProperty(batchId, name) {
104
+ this._checkBatchId(batchId);
127
105
 
128
- (_results = results).push.apply(_results, (0, _toConsumableArray2.default)(propertyNames));
106
+ (0, _loaderUtils.assert)(typeof name === 'string', name);
107
+ return defined(this._properties[name]) || this._hasPropertyInHierarchy(batchId, name);
108
+ }
129
109
 
130
- if (this._hierarchy) {
131
- this._getPropertyNamesInHierarchy(batchId, results);
132
- }
110
+ getPropertyNames(batchId, results) {
111
+ this._checkBatchId(batchId);
133
112
 
134
- return results;
113
+ results = defined(results) ? results : [];
114
+ results.length = 0;
115
+ const propertyNames = Object.keys(this._properties);
116
+ results.push(...propertyNames);
117
+
118
+ if (this._hierarchy) {
119
+ this._getPropertyNamesInHierarchy(batchId, results);
135
120
  }
136
- }, {
137
- key: "getProperty",
138
- value: function getProperty(batchId, name) {
139
- this._checkBatchId(batchId);
140
121
 
141
- (0, _loaderUtils.assert)(typeof name === 'string', name);
122
+ return results;
123
+ }
142
124
 
143
- if (this._binaryProperties) {
144
- var binaryProperty = this._binaryProperties[name];
125
+ getProperty(batchId, name) {
126
+ this._checkBatchId(batchId);
145
127
 
146
- if (defined(binaryProperty)) {
147
- return this._getBinaryProperty(binaryProperty, batchId);
148
- }
149
- }
128
+ (0, _loaderUtils.assert)(typeof name === 'string', name);
150
129
 
151
- var propertyValues = this._properties[name];
130
+ if (this._binaryProperties) {
131
+ const binaryProperty = this._binaryProperties[name];
152
132
 
153
- if (defined(propertyValues)) {
154
- return clone(propertyValues[batchId], true);
133
+ if (defined(binaryProperty)) {
134
+ return this._getBinaryProperty(binaryProperty, batchId);
155
135
  }
136
+ }
156
137
 
157
- if (this._hierarchy) {
158
- var hierarchyProperty = this._getHierarchyProperty(batchId, name);
138
+ const propertyValues = this._properties[name];
159
139
 
160
- if (defined(hierarchyProperty)) {
161
- return hierarchyProperty;
162
- }
163
- }
140
+ if (defined(propertyValues)) {
141
+ return clone(propertyValues[batchId], true);
142
+ }
164
143
 
165
- return undefined;
144
+ if (this._hierarchy) {
145
+ const hierarchyProperty = this._getHierarchyProperty(batchId, name);
146
+
147
+ if (defined(hierarchyProperty)) {
148
+ return hierarchyProperty;
149
+ }
166
150
  }
167
- }, {
168
- key: "setProperty",
169
- value: function setProperty(batchId, name, value) {
170
- var featureCount = this.featureCount;
171
151
 
172
- this._checkBatchId(batchId);
152
+ return undefined;
153
+ }
173
154
 
174
- (0, _loaderUtils.assert)(typeof name === 'string', name);
155
+ setProperty(batchId, name, value) {
156
+ const featureCount = this.featureCount;
175
157
 
176
- if (this._binaryProperties) {
177
- var binaryProperty = this._binaryProperties[name];
158
+ this._checkBatchId(batchId);
178
159
 
179
- if (binaryProperty) {
180
- this._setBinaryProperty(binaryProperty, batchId, value);
160
+ (0, _loaderUtils.assert)(typeof name === 'string', name);
181
161
 
182
- return;
183
- }
162
+ if (this._binaryProperties) {
163
+ const binaryProperty = this._binaryProperties[name];
164
+
165
+ if (binaryProperty) {
166
+ this._setBinaryProperty(binaryProperty, batchId, value);
167
+
168
+ return;
184
169
  }
170
+ }
185
171
 
186
- if (this._hierarchy) {
187
- if (this._setHierarchyProperty(this, batchId, name, value)) {
188
- return;
189
- }
172
+ if (this._hierarchy) {
173
+ if (this._setHierarchyProperty(this, batchId, name, value)) {
174
+ return;
190
175
  }
176
+ }
191
177
 
192
- var propertyValues = this._properties[name];
178
+ let propertyValues = this._properties[name];
193
179
 
194
- if (!defined(propertyValues)) {
195
- this._properties[name] = new Array(featureCount);
196
- propertyValues = this._properties[name];
197
- }
180
+ if (!defined(propertyValues)) {
181
+ this._properties[name] = new Array(featureCount);
182
+ propertyValues = this._properties[name];
183
+ }
184
+
185
+ propertyValues[batchId] = clone(value, true);
186
+ }
187
+
188
+ _checkBatchId(batchId) {
189
+ const valid = batchId >= 0 && batchId < this.featureCount;
198
190
 
199
- propertyValues[batchId] = clone(value, true);
191
+ if (!valid) {
192
+ throw new Error('batchId not in range [0, featureCount - 1].');
200
193
  }
201
- }, {
202
- key: "_checkBatchId",
203
- value: function _checkBatchId(batchId) {
204
- var valid = batchId >= 0 && batchId < this.featureCount;
194
+ }
195
+
196
+ _getBinaryProperty(binaryProperty, index) {
197
+ return binaryProperty.unpack(binaryProperty.typedArray, index);
198
+ }
199
+
200
+ _setBinaryProperty(binaryProperty, index, value) {
201
+ binaryProperty.pack(value, binaryProperty.typedArray, index);
202
+ }
203
+
204
+ _initializeBinaryProperties() {
205
+ let binaryProperties = null;
205
206
 
206
- if (!valid) {
207
- throw new Error("batchId not in range [0, featureCount - 1].");
207
+ for (const name in this._properties) {
208
+ const property = this._properties[name];
209
+
210
+ const binaryProperty = this._initializeBinaryProperty(name, property);
211
+
212
+ if (binaryProperty) {
213
+ binaryProperties = binaryProperties || {};
214
+ binaryProperties[name] = binaryProperty;
208
215
  }
209
216
  }
210
- }, {
211
- key: "_getBinaryProperty",
212
- value: function _getBinaryProperty(binaryProperty, index) {
213
- return binaryProperty.unpack(binaryProperty.typedArray, index);
217
+
218
+ return binaryProperties;
219
+ }
220
+
221
+ _initializeBinaryProperty(name, property) {
222
+ if ('byteOffset' in property) {
223
+ const tile3DAccessor = property;
224
+ (0, _loaderUtils.assert)(this.binary, "Property ".concat(name, " requires a batch table binary."));
225
+ (0, _loaderUtils.assert)(tile3DAccessor.type, "Property ".concat(name, " requires a type."));
226
+ const accessor = (0, _tile3dAccessorUtils.createTypedArrayFromAccessor)(tile3DAccessor, this.binary.buffer, this.binary.byteOffset | 0, this.featureCount);
227
+ return {
228
+ typedArray: accessor.values,
229
+ componentCount: accessor.size,
230
+ unpack: accessor.unpacker,
231
+ pack: accessor.packer
232
+ };
214
233
  }
215
- }, {
216
- key: "_setBinaryProperty",
217
- value: function _setBinaryProperty(binaryProperty, index, value) {
218
- binaryProperty.pack(value, binaryProperty.typedArray, index);
234
+
235
+ return null;
236
+ }
237
+
238
+ _hasPropertyInHierarchy(batchId, name) {
239
+ if (!this._hierarchy) {
240
+ return false;
219
241
  }
220
- }, {
221
- key: "_initializeBinaryProperties",
222
- value: function _initializeBinaryProperties() {
223
- var binaryProperties = null;
224
242
 
225
- for (var name in this._properties) {
226
- var property = this._properties[name];
243
+ const result = (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
244
+ const classId = hierarchy.classIds[instanceIndex];
245
+ const instances = hierarchy.classes[classId].instances;
246
+ return defined(instances[name]);
247
+ });
248
+ return defined(result);
249
+ }
227
250
 
228
- var binaryProperty = this._initializeBinaryProperty(name, property);
251
+ _getPropertyNamesInHierarchy(batchId, results) {
252
+ (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
253
+ const classId = hierarchy.classIds[instanceIndex];
254
+ const instances = hierarchy.classes[classId].instances;
229
255
 
230
- if (binaryProperty) {
231
- binaryProperties = binaryProperties || {};
232
- binaryProperties[name] = binaryProperty;
256
+ for (const name in instances) {
257
+ if (instances.hasOwnProperty(name)) {
258
+ if (results.indexOf(name) === -1) {
259
+ results.push(name);
260
+ }
233
261
  }
234
262
  }
263
+ });
264
+ }
235
265
 
236
- return binaryProperties;
237
- }
238
- }, {
239
- key: "_initializeBinaryProperty",
240
- value: function _initializeBinaryProperty(name, property) {
241
- if ('byteOffset' in property) {
242
- var tile3DAccessor = property;
243
- (0, _loaderUtils.assert)(this.binary, "Property ".concat(name, " requires a batch table binary."));
244
- (0, _loaderUtils.assert)(tile3DAccessor.type, "Property ".concat(name, " requires a type."));
245
- var accessor = (0, _tile3dAccessorUtils.createTypedArrayFromAccessor)(tile3DAccessor, this.binary.buffer, this.binary.byteOffset | 0, this.featureCount);
246
- return {
247
- typedArray: accessor.values,
248
- componentCount: accessor.size,
249
- unpack: accessor.unpacker,
250
- pack: accessor.packer
251
- };
266
+ _getHierarchyProperty(batchId, name) {
267
+ return (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
268
+ const classId = hierarchy.classIds[instanceIndex];
269
+ const instanceClass = hierarchy.classes[classId];
270
+ const indexInClass = hierarchy.classIndexes[instanceIndex];
271
+ const propertyValues = instanceClass.instances[name];
272
+
273
+ if (defined(propertyValues)) {
274
+ if (defined(propertyValues.typedArray)) {
275
+ return this._getBinaryProperty(propertyValues, indexInClass);
276
+ }
277
+
278
+ return clone(propertyValues[indexInClass], true);
252
279
  }
253
280
 
254
281
  return null;
255
- }
256
- }, {
257
- key: "_hasPropertyInHierarchy",
258
- value: function _hasPropertyInHierarchy(batchId, name) {
259
- if (!this._hierarchy) {
260
- return false;
261
- }
282
+ });
283
+ }
262
284
 
263
- var result = (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, function (hierarchy, instanceIndex) {
264
- var classId = hierarchy.classIds[instanceIndex];
265
- var instances = hierarchy.classes[classId].instances;
266
- return defined(instances[name]);
267
- });
268
- return defined(result);
269
- }
270
- }, {
271
- key: "_getPropertyNamesInHierarchy",
272
- value: function _getPropertyNamesInHierarchy(batchId, results) {
273
- (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, function (hierarchy, instanceIndex) {
274
- var classId = hierarchy.classIds[instanceIndex];
275
- var instances = hierarchy.classes[classId].instances;
276
-
277
- for (var name in instances) {
278
- if (instances.hasOwnProperty(name)) {
279
- if (results.indexOf(name) === -1) {
280
- results.push(name);
281
- }
282
- }
283
- }
284
- });
285
- }
286
- }, {
287
- key: "_getHierarchyProperty",
288
- value: function _getHierarchyProperty(batchId, name) {
289
- var _this = this;
290
-
291
- return (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, function (hierarchy, instanceIndex) {
292
- var classId = hierarchy.classIds[instanceIndex];
293
- var instanceClass = hierarchy.classes[classId];
294
- var indexInClass = hierarchy.classIndexes[instanceIndex];
295
- var propertyValues = instanceClass.instances[name];
296
-
297
- if (defined(propertyValues)) {
298
- if (defined(propertyValues.typedArray)) {
299
- return _this._getBinaryProperty(propertyValues, indexInClass);
300
- }
285
+ _setHierarchyProperty(batchTable, batchId, name, value) {
286
+ const result = (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
287
+ const classId = hierarchy.classIds[instanceIndex];
288
+ const instanceClass = hierarchy.classes[classId];
289
+ const indexInClass = hierarchy.classIndexes[instanceIndex];
290
+ const propertyValues = instanceClass.instances[name];
291
+
292
+ if (defined(propertyValues)) {
293
+ (0, _loaderUtils.assert)(instanceIndex === batchId, "Inherited property \"".concat(name, "\" is read-only."));
301
294
 
302
- return clone(propertyValues[indexInClass], true);
295
+ if (defined(propertyValues.typedArray)) {
296
+ this._setBinaryProperty(propertyValues, indexInClass, value);
297
+ } else {
298
+ propertyValues[indexInClass] = clone(value, true);
303
299
  }
304
300
 
305
- return null;
306
- });
307
- }
308
- }, {
309
- key: "_setHierarchyProperty",
310
- value: function _setHierarchyProperty(batchTable, batchId, name, value) {
311
- var _this2 = this;
312
-
313
- var result = (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, function (hierarchy, instanceIndex) {
314
- var classId = hierarchy.classIds[instanceIndex];
315
- var instanceClass = hierarchy.classes[classId];
316
- var indexInClass = hierarchy.classIndexes[instanceIndex];
317
- var propertyValues = instanceClass.instances[name];
318
-
319
- if (defined(propertyValues)) {
320
- (0, _loaderUtils.assert)(instanceIndex === batchId, "Inherited property \"".concat(name, "\" is read-only."));
321
-
322
- if (defined(propertyValues.typedArray)) {
323
- _this2._setBinaryProperty(propertyValues, indexInClass, value);
324
- } else {
325
- propertyValues[indexInClass] = clone(value, true);
326
- }
301
+ return true;
302
+ }
327
303
 
328
- return true;
329
- }
304
+ return false;
305
+ });
306
+ return defined(result);
307
+ }
330
308
 
331
- return false;
332
- });
333
- return defined(result);
334
- }
335
- }]);
336
- return Tile3DBatchTableParser;
337
- }();
309
+ }
338
310
 
339
311
  exports.default = Tile3DBatchTableParser;
340
312
  //# sourceMappingURL=tile-3d-batch-table.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/classes/tile-3d-batch-table.js"],"names":["defined","x","undefined","clone","y","IGNORED_PROPERTY_FIELDS","HIERARCHY","extensions","extras","Tile3DBatchTableParser","json","binary","featureCount","options","_extensions","_properties","propertyName","_binaryProperties","_initializeBinaryProperties","_hierarchy","extensionName","batchId","className","_checkBatchId","result","hierarchy","instanceIndex","classId","classIds","instanceClass","classes","name","getExactClassName","_hasPropertyInHierarchy","results","length","propertyNames","Object","keys","push","_getPropertyNamesInHierarchy","binaryProperty","_getBinaryProperty","propertyValues","hierarchyProperty","_getHierarchyProperty","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":"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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 {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 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() {\n return 0;\n }\n\n isClass(batchId, className) {\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 = null;\n for (const name in this._properties) {\n const property = this._properties[name];\n const binaryProperty = this._initializeBinaryProperty(name, property);\n // Store any information needed to access the binary data, including the typed array,\n // componentCount (e.g. a VEC4 would be 4), and the type used to pack and unpack (e.g. Cartesian4).\n if (binaryProperty) {\n binaryProperties = binaryProperties || {};\n binaryProperties[name] = binaryProperty;\n }\n }\n return binaryProperties;\n }\n\n _initializeBinaryProperty(name, property) {\n if ('byteOffset' in property) {\n // This is a binary property\n const tile3DAccessor = property;\n\n assert(this.binary, `Property ${name} requires a batch table binary.`);\n assert(tile3DAccessor.type, `Property ${name} requires a type.`);\n\n const accessor = createTypedArrayFromAccessor(\n tile3DAccessor,\n this.binary.buffer,\n this.binary.byteOffset | 0,\n this.featureCount\n );\n\n // Store any information needed to access the binary data, including the typed array,\n // componentCount (e.g. a VEC4 would be 4), and the type used to pack and unpack (e.g. Cartesian4).\n return {\n typedArray: accessor.values,\n componentCount: accessor.size,\n unpack: accessor.unpacker,\n pack: accessor.packer\n };\n }\n\n return null;\n }\n\n // EXTENSION SUPPORT: 3DTILES_batch_table_hierarchy\n\n _hasPropertyInHierarchy(batchId, name) {\n if (!this._hierarchy) {\n return false;\n }\n\n const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instances = hierarchy.classes[classId].instances;\n return defined(instances[name]);\n });\n\n return defined(result);\n }\n\n _getPropertyNamesInHierarchy(batchId, results) {\n traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instances = hierarchy.classes[classId].instances;\n for (const name in instances) {\n if (instances.hasOwnProperty(name)) {\n if (results.indexOf(name) === -1) {\n results.push(name);\n }\n }\n }\n });\n }\n\n _getHierarchyProperty(batchId, name) {\n return traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instanceClass = hierarchy.classes[classId];\n const indexInClass = hierarchy.classIndexes[instanceIndex];\n const propertyValues = instanceClass.instances[name];\n if (defined(propertyValues)) {\n if (defined(propertyValues.typedArray)) {\n return this._getBinaryProperty(propertyValues, indexInClass);\n }\n return clone(propertyValues[indexInClass], true);\n }\n return null;\n });\n }\n\n _setHierarchyProperty(batchTable, batchId, name, value) {\n const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {\n const classId = hierarchy.classIds[instanceIndex];\n const instanceClass = hierarchy.classes[classId];\n const indexInClass = hierarchy.classIndexes[instanceIndex];\n const propertyValues = instanceClass.instances[name];\n if (defined(propertyValues)) {\n assert(instanceIndex === batchId, `Inherited property \"${name}\" is read-only.`);\n if (defined(propertyValues.typedArray)) {\n this._setBinaryProperty(propertyValues, indexInClass, value);\n } else {\n propertyValues[indexInClass] = clone(value, true);\n }\n return true;\n }\n return false;\n });\n return defined(result);\n }\n}\n"],"file":"tile-3d-batch-table.js"}
1
+ {"version":3,"sources":["../../../../src/lib/classes/tile-3d-batch-table.ts"],"names":["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":"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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 {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"}