@loaders.gl/3d-tiles 3.3.0-alpha.5 → 3.3.0-alpha.6

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 (145) hide show
  1. package/dist/dist.min.js +924 -1372
  2. package/dist/es5/bundle.js +0 -1
  3. package/dist/es5/bundle.js.map +1 -1
  4. package/dist/es5/cesium-ion-loader.js +7 -26
  5. package/dist/es5/cesium-ion-loader.js.map +1 -1
  6. package/dist/es5/index.js +14 -23
  7. package/dist/es5/index.js.map +1 -1
  8. package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js +1 -5
  9. package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
  10. package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js +1 -40
  11. package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
  12. package/dist/es5/lib/classes/tile-3d-batch-table.js +12 -59
  13. package/dist/es5/lib/classes/tile-3d-batch-table.js.map +1 -1
  14. package/dist/es5/lib/classes/tile-3d-feature-table.js +4 -23
  15. package/dist/es5/lib/classes/tile-3d-feature-table.js.map +1 -1
  16. package/dist/es5/lib/constants.js +3 -1
  17. package/dist/es5/lib/constants.js.map +1 -1
  18. package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js +7 -16
  19. package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
  20. package/dist/es5/lib/encoders/encode-3d-tile-composite.js +2 -11
  21. package/dist/es5/lib/encoders/encode-3d-tile-composite.js.map +1 -1
  22. package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js +10 -17
  23. package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
  24. package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js +8 -16
  25. package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
  26. package/dist/es5/lib/encoders/encode-3d-tile.js +0 -12
  27. package/dist/es5/lib/encoders/encode-3d-tile.js.map +1 -1
  28. package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js +6 -9
  29. package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
  30. package/dist/es5/lib/ion/ion.js +5 -46
  31. package/dist/es5/lib/ion/ion.js.map +1 -1
  32. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js +2 -11
  33. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
  34. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js +0 -8
  35. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
  36. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js +0 -5
  37. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
  38. package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js +17 -51
  39. package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
  40. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +6 -25
  41. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
  42. package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js +1 -1
  43. package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
  44. package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js +0 -38
  45. package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
  46. package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js +6 -14
  47. package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
  48. package/dist/es5/lib/parsers/helpers/parse-utils.js +1 -3
  49. package/dist/es5/lib/parsers/helpers/parse-utils.js.map +1 -1
  50. package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js +0 -16
  51. package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
  52. package/dist/es5/lib/parsers/parse-3d-tile-composite.js +1 -11
  53. package/dist/es5/lib/parsers/parse-3d-tile-composite.js.map +1 -1
  54. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js +0 -8
  55. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
  56. package/dist/es5/lib/parsers/parse-3d-tile-header.js +2 -70
  57. package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -1
  58. package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js +5 -41
  59. package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
  60. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js +4 -71
  61. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
  62. package/dist/es5/lib/parsers/parse-3d-tile.js +5 -28
  63. package/dist/es5/lib/parsers/parse-3d-tile.js.map +1 -1
  64. package/dist/es5/lib/utils/version.js +1 -1
  65. package/dist/es5/lib/utils/version.js.map +1 -1
  66. package/dist/es5/tile-3d-subtree-loader.js +0 -4
  67. package/dist/es5/tile-3d-subtree-loader.js.map +1 -1
  68. package/dist/es5/tile-3d-writer.js +0 -6
  69. package/dist/es5/tile-3d-writer.js.map +1 -1
  70. package/dist/es5/tiles-3d-loader.js +0 -29
  71. package/dist/es5/tiles-3d-loader.js.map +1 -1
  72. package/dist/es5/types.js.map +1 -1
  73. package/dist/esm/bundle.js +1 -1
  74. package/dist/esm/bundle.js.map +1 -1
  75. package/dist/esm/cesium-ion-loader.js +9 -7
  76. package/dist/esm/cesium-ion-loader.js.map +1 -1
  77. package/dist/esm/index.js +4 -0
  78. package/dist/esm/index.js.map +1 -1
  79. package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js +1 -0
  80. package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
  81. package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js +3 -40
  82. package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
  83. package/dist/esm/lib/classes/tile-3d-batch-table.js +7 -67
  84. package/dist/esm/lib/classes/tile-3d-batch-table.js.map +1 -1
  85. package/dist/esm/lib/classes/tile-3d-feature-table.js +5 -26
  86. package/dist/esm/lib/classes/tile-3d-feature-table.js.map +1 -1
  87. package/dist/esm/lib/constants.js +3 -0
  88. package/dist/esm/lib/constants.js.map +1 -1
  89. package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js +5 -3
  90. package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
  91. package/dist/esm/lib/encoders/encode-3d-tile-composite.js +2 -2
  92. package/dist/esm/lib/encoders/encode-3d-tile-composite.js.map +1 -1
  93. package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js +5 -1
  94. package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
  95. package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js +4 -1
  96. package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
  97. package/dist/esm/lib/encoders/encode-3d-tile.js +2 -6
  98. package/dist/esm/lib/encoders/encode-3d-tile.js.map +1 -1
  99. package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js +3 -3
  100. package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
  101. package/dist/esm/lib/ion/ion.js +10 -8
  102. package/dist/esm/lib/ion/ion.js.map +1 -1
  103. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js +1 -6
  104. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
  105. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js +0 -4
  106. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
  107. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js +1 -2
  108. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
  109. package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js +2 -16
  110. package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
  111. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js +6 -9
  112. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
  113. package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js +5 -2
  114. package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
  115. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js +1 -13
  116. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
  117. package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js +4 -7
  118. package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
  119. package/dist/esm/lib/parsers/helpers/parse-utils.js +6 -1
  120. package/dist/esm/lib/parsers/helpers/parse-utils.js.map +1 -1
  121. package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js +3 -4
  122. package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
  123. package/dist/esm/lib/parsers/parse-3d-tile-composite.js +5 -1
  124. package/dist/esm/lib/parsers/parse-3d-tile-composite.js.map +1 -1
  125. package/dist/esm/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
  126. package/dist/esm/lib/parsers/parse-3d-tile-header.js +3 -26
  127. package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -1
  128. package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js +7 -25
  129. package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
  130. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js +9 -37
  131. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
  132. package/dist/esm/lib/parsers/parse-3d-tile.js +8 -6
  133. package/dist/esm/lib/parsers/parse-3d-tile.js.map +1 -1
  134. package/dist/esm/lib/utils/version.js +2 -1
  135. package/dist/esm/lib/utils/version.js.map +1 -1
  136. package/dist/esm/tile-3d-subtree-loader.js +1 -0
  137. package/dist/esm/tile-3d-subtree-loader.js.map +1 -1
  138. package/dist/esm/tile-3d-writer.js +1 -1
  139. package/dist/esm/tile-3d-writer.js.map +1 -1
  140. package/dist/esm/tiles-3d-loader.js +1 -8
  141. package/dist/esm/tiles-3d-loader.js.map +1 -1
  142. package/dist/esm/types.js.map +1 -1
  143. package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts +1 -1
  144. package/dist/lib/classes/tile-3d-batch-table.d.ts +1 -1
  145. package/package.json +7 -7
@@ -1,12 +1,11 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+
2
3
  import { assert } from '@loaders.gl/loader-utils';
3
4
  import { createTypedArrayFromAccessor } from './helpers/tile-3d-accessor-utils';
4
5
  import { initializeHierarchy, traverseHierarchy } from './tile-3d-batch-table-hierarchy';
5
-
6
6
  function defined(x) {
7
7
  return x !== undefined && x !== null;
8
8
  }
9
-
10
9
  const clone = (x, y) => x;
11
10
 
12
11
  const IGNORED_PROPERTY_FIELDS = {
@@ -14,55 +13,45 @@ const IGNORED_PROPERTY_FIELDS = {
14
13
  extensions: true,
15
14
  extras: true
16
15
  };
16
+
17
17
  export default class Tile3DBatchTableParser {
18
- constructor(json, binary, featureCount, options = {}) {
19
- var _this$json;
20
18
 
19
+ constructor(json, binary, featureCount) {
20
+ var _this$json;
21
+ let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
21
22
  _defineProperty(this, "json", void 0);
22
-
23
23
  _defineProperty(this, "binary", void 0);
24
-
25
24
  _defineProperty(this, "featureCount", void 0);
26
-
27
25
  _defineProperty(this, "_extensions", void 0);
28
-
29
26
  _defineProperty(this, "_properties", void 0);
30
-
31
27
  _defineProperty(this, "_binaryProperties", void 0);
32
-
33
28
  _defineProperty(this, "_hierarchy", void 0);
34
-
35
29
  assert(featureCount >= 0);
36
30
  this.json = json || {};
37
31
  this.binary = binary;
38
32
  this.featureCount = featureCount;
39
33
  this._extensions = ((_this$json = this.json) === null || _this$json === void 0 ? void 0 : _this$json.extensions) || {};
40
- this._properties = {};
41
34
 
35
+ this._properties = {};
42
36
  for (const propertyName in this.json) {
43
37
  if (!IGNORED_PROPERTY_FIELDS[propertyName]) {
44
38
  this._properties[propertyName] = this.json[propertyName];
45
39
  }
46
40
  }
47
-
48
41
  this._binaryProperties = this._initializeBinaryProperties();
49
42
 
50
43
  if (options['3DTILES_batch_table_hierarchy']) {
51
44
  this._hierarchy = initializeHierarchy(this, this.json, this.binary);
52
45
  }
53
46
  }
54
-
55
47
  getExtension(extensionName) {
56
48
  return this.json && this.json.extensions && this.json.extensions[extensionName];
57
49
  }
58
-
59
50
  memorySizeInBytes() {
60
51
  return 0;
61
52
  }
62
-
63
53
  isClass(batchId, className) {
64
54
  this._checkBatchId(batchId);
65
-
66
55
  assert(typeof className === 'string', className);
67
56
 
68
57
  if (this._hierarchy) {
@@ -73,15 +62,12 @@ export default class Tile3DBatchTableParser {
73
62
  });
74
63
  return defined(result);
75
64
  }
76
-
77
65
  return false;
78
66
  }
79
-
80
67
  isExactClass(batchId, className) {
81
68
  assert(typeof className === 'string', className);
82
69
  return this.getExactClassName(batchId) === className;
83
70
  }
84
-
85
71
  getExactClassName(batchId) {
86
72
  this._checkBatchId(batchId);
87
73
 
@@ -90,75 +76,54 @@ export default class Tile3DBatchTableParser {
90
76
  const instanceClass = this._hierarchy.classes[classId];
91
77
  return instanceClass.name;
92
78
  }
93
-
94
79
  return undefined;
95
80
  }
96
-
97
81
  hasProperty(batchId, name) {
98
82
  this._checkBatchId(batchId);
99
-
100
83
  assert(typeof name === 'string', name);
101
84
  return defined(this._properties[name]) || this._hasPropertyInHierarchy(batchId, name);
102
85
  }
103
-
104
86
  getPropertyNames(batchId, results) {
105
87
  this._checkBatchId(batchId);
106
-
107
88
  results = defined(results) ? results : [];
108
89
  results.length = 0;
109
90
  const propertyNames = Object.keys(this._properties);
110
91
  results.push(...propertyNames);
111
-
112
92
  if (this._hierarchy) {
113
93
  this._getPropertyNamesInHierarchy(batchId, results);
114
94
  }
115
-
116
95
  return results;
117
96
  }
118
-
119
97
  getProperty(batchId, name) {
120
98
  this._checkBatchId(batchId);
121
-
122
99
  assert(typeof name === 'string', name);
123
-
124
100
  if (this._binaryProperties) {
125
101
  const binaryProperty = this._binaryProperties[name];
126
-
127
102
  if (defined(binaryProperty)) {
128
103
  return this._getBinaryProperty(binaryProperty, batchId);
129
104
  }
130
105
  }
131
-
132
106
  const propertyValues = this._properties[name];
133
-
134
107
  if (defined(propertyValues)) {
135
108
  return clone(propertyValues[batchId], true);
136
109
  }
137
110
 
138
111
  if (this._hierarchy) {
139
112
  const hierarchyProperty = this._getHierarchyProperty(batchId, name);
140
-
141
113
  if (defined(hierarchyProperty)) {
142
114
  return hierarchyProperty;
143
115
  }
144
116
  }
145
-
146
117
  return undefined;
147
118
  }
148
-
149
119
  setProperty(batchId, name, value) {
150
120
  const featureCount = this.featureCount;
151
-
152
121
  this._checkBatchId(batchId);
153
-
154
122
  assert(typeof name === 'string', name);
155
-
156
123
  if (this._binaryProperties) {
157
124
  const binaryProperty = this._binaryProperties[name];
158
-
159
125
  if (binaryProperty) {
160
126
  this._setBinaryProperty(binaryProperty, batchId, value);
161
-
162
127
  return;
163
128
  }
164
129
  }
@@ -168,56 +133,45 @@ export default class Tile3DBatchTableParser {
168
133
  return;
169
134
  }
170
135
  }
171
-
172
136
  let propertyValues = this._properties[name];
173
-
174
137
  if (!defined(propertyValues)) {
175
138
  this._properties[name] = new Array(featureCount);
176
139
  propertyValues = this._properties[name];
177
140
  }
178
-
179
141
  propertyValues[batchId] = clone(value, true);
180
142
  }
181
143
 
182
144
  _checkBatchId(batchId) {
183
145
  const valid = batchId >= 0 && batchId < this.featureCount;
184
-
185
146
  if (!valid) {
186
147
  throw new Error('batchId not in range [0, featureCount - 1].');
187
148
  }
188
149
  }
189
-
190
150
  _getBinaryProperty(binaryProperty, index) {
191
151
  return binaryProperty.unpack(binaryProperty.typedArray, index);
192
152
  }
193
-
194
153
  _setBinaryProperty(binaryProperty, index, value) {
195
154
  binaryProperty.pack(value, binaryProperty.typedArray, index);
196
155
  }
197
-
198
156
  _initializeBinaryProperties() {
199
157
  let binaryProperties = null;
200
-
201
158
  for (const name in this._properties) {
202
159
  const property = this._properties[name];
203
-
204
160
  const binaryProperty = this._initializeBinaryProperty(name, property);
205
-
206
161
  if (binaryProperty) {
207
162
  binaryProperties = binaryProperties || {};
208
163
  binaryProperties[name] = binaryProperty;
209
164
  }
210
165
  }
211
-
212
166
  return binaryProperties;
213
167
  }
214
-
215
168
  _initializeBinaryProperty(name, property) {
216
169
  if ('byteOffset' in property) {
217
170
  const tile3DAccessor = property;
218
171
  assert(this.binary, "Property ".concat(name, " requires a batch table binary."));
219
172
  assert(tile3DAccessor.type, "Property ".concat(name, " requires a type."));
220
173
  const accessor = createTypedArrayFromAccessor(tile3DAccessor, this.binary.buffer, this.binary.byteOffset | 0, this.featureCount);
174
+
221
175
  return {
222
176
  typedArray: accessor.values,
223
177
  componentCount: accessor.size,
@@ -225,7 +179,6 @@ export default class Tile3DBatchTableParser {
225
179
  pack: accessor.packer
226
180
  };
227
181
  }
228
-
229
182
  return null;
230
183
  }
231
184
 
@@ -233,7 +186,6 @@ export default class Tile3DBatchTableParser {
233
186
  if (!this._hierarchy) {
234
187
  return false;
235
188
  }
236
-
237
189
  const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
238
190
  const classId = hierarchy.classIds[instanceIndex];
239
191
  const instances = hierarchy.classes[classId].instances;
@@ -241,12 +193,10 @@ export default class Tile3DBatchTableParser {
241
193
  });
242
194
  return defined(result);
243
195
  }
244
-
245
196
  _getPropertyNamesInHierarchy(batchId, results) {
246
197
  traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
247
198
  const classId = hierarchy.classIds[instanceIndex];
248
199
  const instances = hierarchy.classes[classId].instances;
249
-
250
200
  for (const name in instances) {
251
201
  if (instances.hasOwnProperty(name)) {
252
202
  if (results.indexOf(name) === -1) {
@@ -256,49 +206,39 @@ export default class Tile3DBatchTableParser {
256
206
  }
257
207
  });
258
208
  }
259
-
260
209
  _getHierarchyProperty(batchId, name) {
261
210
  return traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
262
211
  const classId = hierarchy.classIds[instanceIndex];
263
212
  const instanceClass = hierarchy.classes[classId];
264
213
  const indexInClass = hierarchy.classIndexes[instanceIndex];
265
214
  const propertyValues = instanceClass.instances[name];
266
-
267
215
  if (defined(propertyValues)) {
268
216
  if (defined(propertyValues.typedArray)) {
269
217
  return this._getBinaryProperty(propertyValues, indexInClass);
270
218
  }
271
-
272
219
  return clone(propertyValues[indexInClass], true);
273
220
  }
274
-
275
221
  return null;
276
222
  });
277
223
  }
278
-
279
224
  _setHierarchyProperty(batchTable, batchId, name, value) {
280
225
  const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
281
226
  const classId = hierarchy.classIds[instanceIndex];
282
227
  const instanceClass = hierarchy.classes[classId];
283
228
  const indexInClass = hierarchy.classIndexes[instanceIndex];
284
229
  const propertyValues = instanceClass.instances[name];
285
-
286
230
  if (defined(propertyValues)) {
287
231
  assert(instanceIndex === batchId, "Inherited property \"".concat(name, "\" is read-only."));
288
-
289
232
  if (defined(propertyValues.typedArray)) {
290
233
  this._setBinaryProperty(propertyValues, indexInClass, value);
291
234
  } else {
292
235
  propertyValues[indexInClass] = clone(value, true);
293
236
  }
294
-
295
237
  return true;
296
238
  }
297
-
298
239
  return false;
299
240
  });
300
241
  return defined(result);
301
242
  }
302
-
303
243
  }
304
244
  //# sourceMappingURL=tile-3d-batch-table.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/classes/tile-3d-batch-table.ts"],"names":["assert","createTypedArrayFromAccessor","initializeHierarchy","traverseHierarchy","defined","x","undefined","clone","y","IGNORED_PROPERTY_FIELDS","HIERARCHY","extensions","extras","Tile3DBatchTableParser","constructor","json","binary","featureCount","options","_extensions","_properties","propertyName","_binaryProperties","_initializeBinaryProperties","_hierarchy","getExtension","extensionName","memorySizeInBytes","isClass","batchId","className","_checkBatchId","result","hierarchy","instanceIndex","classId","classIds","instanceClass","classes","name","isExactClass","getExactClassName","hasProperty","_hasPropertyInHierarchy","getPropertyNames","results","length","propertyNames","Object","keys","push","_getPropertyNamesInHierarchy","getProperty","binaryProperty","_getBinaryProperty","propertyValues","hierarchyProperty","_getHierarchyProperty","setProperty","value","_setBinaryProperty","_setHierarchyProperty","Array","valid","Error","index","unpack","typedArray","pack","binaryProperties","property","_initializeBinaryProperty","tile3DAccessor","type","accessor","buffer","byteOffset","values","componentCount","size","unpacker","packer","instances","hasOwnProperty","indexOf","indexInClass","classIndexes","batchTable"],"mappings":"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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"}
1
+ {"version":3,"file":"tile-3d-batch-table.js","names":["assert","createTypedArrayFromAccessor","initializeHierarchy","traverseHierarchy","defined","x","undefined","clone","y","IGNORED_PROPERTY_FIELDS","HIERARCHY","extensions","extras","Tile3DBatchTableParser","constructor","json","binary","featureCount","options","_extensions","_properties","propertyName","_binaryProperties","_initializeBinaryProperties","_hierarchy","getExtension","extensionName","memorySizeInBytes","isClass","batchId","className","_checkBatchId","result","hierarchy","instanceIndex","classId","classIds","instanceClass","classes","name","isExactClass","getExactClassName","hasProperty","_hasPropertyInHierarchy","getPropertyNames","results","length","propertyNames","Object","keys","push","_getPropertyNamesInHierarchy","getProperty","binaryProperty","_getBinaryProperty","propertyValues","hierarchyProperty","_getHierarchyProperty","setProperty","value","_setBinaryProperty","_setHierarchyProperty","Array","valid","Error","index","unpack","typedArray","pack","binaryProperties","property","_initializeBinaryProperty","tile3DAccessor","type","accessor","buffer","byteOffset","values","componentCount","size","unpacker","packer","instances","hasOwnProperty","indexOf","indexInClass","classIndexes","batchTable"],"sources":["../../../../src/lib/classes/tile-3d-batch-table.ts"],"sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {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"],"mappings":"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"}
@@ -1,94 +1,73 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+
2
3
  import { GL, GLType } from '@loaders.gl/math';
4
+
3
5
  export default class Tile3DFeatureTable {
4
6
  constructor(featureTableJson, featureTableBinary) {
5
7
  _defineProperty(this, "json", void 0);
6
-
7
8
  _defineProperty(this, "buffer", void 0);
8
-
9
9
  _defineProperty(this, "featuresLength", 0);
10
-
11
10
  _defineProperty(this, "_cachedTypedArrays", {});
12
-
13
11
  this.json = featureTableJson;
14
12
  this.buffer = featureTableBinary;
15
13
  }
16
-
17
14
  getExtension(extensionName) {
18
15
  return this.json.extensions && this.json.extensions[extensionName];
19
16
  }
20
-
21
17
  hasProperty(propertyName) {
22
18
  return Boolean(this.json[propertyName]);
23
19
  }
24
-
25
- getGlobalProperty(propertyName, componentType = GL.UNSIGNED_INT, componentLength = 1) {
20
+ getGlobalProperty(propertyName) {
21
+ let componentType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : GL.UNSIGNED_INT;
22
+ let componentLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
26
23
  const jsonValue = this.json[propertyName];
27
-
28
24
  if (jsonValue && Number.isFinite(jsonValue.byteOffset)) {
29
25
  return this._getTypedArrayFromBinary(propertyName, componentType, componentLength, 1, jsonValue.byteOffset);
30
26
  }
31
-
32
27
  return jsonValue;
33
28
  }
34
-
35
29
  getPropertyArray(propertyName, componentType, componentLength) {
36
30
  const jsonValue = this.json[propertyName];
37
-
38
31
  if (jsonValue && Number.isFinite(jsonValue.byteOffset)) {
39
32
  if ('componentType' in jsonValue) {
40
33
  componentType = GLType.fromName(jsonValue.componentType);
41
34
  }
42
-
43
35
  return this._getTypedArrayFromBinary(propertyName, componentType, componentLength, this.featuresLength, jsonValue.byteOffset);
44
36
  }
45
-
46
37
  return this._getTypedArrayFromArray(propertyName, componentType, jsonValue);
47
38
  }
48
-
49
39
  getProperty(propertyName, componentType, componentLength, featureId, result) {
50
40
  const jsonValue = this.json[propertyName];
51
-
52
41
  if (!jsonValue) {
53
42
  return jsonValue;
54
43
  }
55
-
56
44
  const typedArray = this.getPropertyArray(propertyName, componentType, componentLength);
57
-
58
45
  if (componentLength === 1) {
59
46
  return typedArray[featureId];
60
47
  }
61
-
62
48
  for (let i = 0; i < componentLength; ++i) {
63
49
  result[i] = typedArray[componentLength * featureId + i];
64
50
  }
65
-
66
51
  return result;
67
52
  }
68
53
 
69
54
  _getTypedArrayFromBinary(propertyName, componentType, componentLength, count, byteOffset) {
70
55
  const cachedTypedArrays = this._cachedTypedArrays;
71
56
  let typedArray = cachedTypedArrays[propertyName];
72
-
73
57
  if (!typedArray) {
74
58
  typedArray = GLType.createTypedArray(componentType, this.buffer.buffer, this.buffer.byteOffset + byteOffset, count * componentLength);
75
59
  cachedTypedArrays[propertyName] = typedArray;
76
60
  }
77
-
78
61
  return typedArray;
79
62
  }
80
-
81
63
  _getTypedArrayFromArray(propertyName, componentType, array) {
82
64
  const cachedTypedArrays = this._cachedTypedArrays;
83
65
  let typedArray = cachedTypedArrays[propertyName];
84
-
85
66
  if (!typedArray) {
86
67
  typedArray = GLType.createTypedArray(componentType, array);
87
68
  cachedTypedArrays[propertyName] = typedArray;
88
69
  }
89
-
90
70
  return typedArray;
91
71
  }
92
-
93
72
  }
94
73
  //# sourceMappingURL=tile-3d-feature-table.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/classes/tile-3d-feature-table.ts"],"names":["GL","GLType","Tile3DFeatureTable","constructor","featureTableJson","featureTableBinary","json","buffer","getExtension","extensionName","extensions","hasProperty","propertyName","Boolean","getGlobalProperty","componentType","UNSIGNED_INT","componentLength","jsonValue","Number","isFinite","byteOffset","_getTypedArrayFromBinary","getPropertyArray","fromName","featuresLength","_getTypedArrayFromArray","getProperty","featureId","result","typedArray","i","count","cachedTypedArrays","_cachedTypedArrays","createTypedArray","array"],"mappings":"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","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {GL, GLType} from '@loaders.gl/math';\n\n// Reference:\n// https://github.com/AnalyticalGraphicsInc/cesium/blob/1de96d087f0b17575eb1a3f736407b348c765d59/Source/Scene/Cesium3DTileFeatureTable.js\nexport default class Tile3DFeatureTable {\n json;\n buffer;\n featuresLength = 0;\n _cachedTypedArrays = {};\n\n constructor(featureTableJson, featureTableBinary) {\n this.json = featureTableJson;\n this.buffer = featureTableBinary;\n }\n\n getExtension(extensionName) {\n return this.json.extensions && this.json.extensions[extensionName];\n }\n\n hasProperty(propertyName) {\n return Boolean(this.json[propertyName]);\n }\n\n getGlobalProperty(propertyName, componentType = GL.UNSIGNED_INT, componentLength = 1) {\n const jsonValue = this.json[propertyName];\n\n if (jsonValue && Number.isFinite(jsonValue.byteOffset)) {\n return this._getTypedArrayFromBinary(\n propertyName,\n componentType,\n componentLength,\n 1,\n jsonValue.byteOffset\n );\n }\n\n return jsonValue;\n }\n\n getPropertyArray(propertyName, componentType, componentLength) {\n const jsonValue = this.json[propertyName];\n\n if (jsonValue && Number.isFinite(jsonValue.byteOffset)) {\n if ('componentType' in jsonValue) {\n componentType = GLType.fromName(jsonValue.componentType);\n }\n return this._getTypedArrayFromBinary(\n propertyName,\n componentType,\n componentLength,\n this.featuresLength,\n jsonValue.byteOffset\n );\n }\n\n return this._getTypedArrayFromArray(propertyName, componentType, jsonValue);\n }\n\n getProperty(propertyName, componentType, componentLength, featureId, result) {\n const jsonValue = this.json[propertyName];\n if (!jsonValue) {\n return jsonValue;\n }\n\n const typedArray = this.getPropertyArray(propertyName, componentType, componentLength);\n\n if (componentLength === 1) {\n return typedArray[featureId];\n }\n\n for (let i = 0; i < componentLength; ++i) {\n result[i] = typedArray[componentLength * featureId + i];\n }\n\n return result;\n }\n\n // HELPERS\n\n _getTypedArrayFromBinary(propertyName, componentType, componentLength, count, byteOffset) {\n const cachedTypedArrays = this._cachedTypedArrays;\n let typedArray = cachedTypedArrays[propertyName];\n if (!typedArray) {\n typedArray = GLType.createTypedArray(\n componentType,\n this.buffer.buffer,\n this.buffer.byteOffset + byteOffset,\n count * componentLength\n );\n cachedTypedArrays[propertyName] = typedArray;\n }\n return typedArray;\n }\n\n _getTypedArrayFromArray(propertyName, componentType, array) {\n const cachedTypedArrays = this._cachedTypedArrays;\n let typedArray = cachedTypedArrays[propertyName];\n if (!typedArray) {\n typedArray = GLType.createTypedArray(componentType, array);\n cachedTypedArrays[propertyName] = typedArray;\n }\n return typedArray;\n }\n}\n"],"file":"tile-3d-feature-table.js"}
1
+ {"version":3,"file":"tile-3d-feature-table.js","names":["GL","GLType","Tile3DFeatureTable","constructor","featureTableJson","featureTableBinary","json","buffer","getExtension","extensionName","extensions","hasProperty","propertyName","Boolean","getGlobalProperty","componentType","UNSIGNED_INT","componentLength","jsonValue","Number","isFinite","byteOffset","_getTypedArrayFromBinary","getPropertyArray","fromName","featuresLength","_getTypedArrayFromArray","getProperty","featureId","result","typedArray","i","count","cachedTypedArrays","_cachedTypedArrays","createTypedArray","array"],"sources":["../../../../src/lib/classes/tile-3d-feature-table.ts"],"sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {GL, GLType} from '@loaders.gl/math';\n\n// Reference:\n// https://github.com/AnalyticalGraphicsInc/cesium/blob/1de96d087f0b17575eb1a3f736407b348c765d59/Source/Scene/Cesium3DTileFeatureTable.js\nexport default class Tile3DFeatureTable {\n json;\n buffer;\n featuresLength = 0;\n _cachedTypedArrays = {};\n\n constructor(featureTableJson, featureTableBinary) {\n this.json = featureTableJson;\n this.buffer = featureTableBinary;\n }\n\n getExtension(extensionName) {\n return this.json.extensions && this.json.extensions[extensionName];\n }\n\n hasProperty(propertyName) {\n return Boolean(this.json[propertyName]);\n }\n\n getGlobalProperty(propertyName, componentType = GL.UNSIGNED_INT, componentLength = 1) {\n const jsonValue = this.json[propertyName];\n\n if (jsonValue && Number.isFinite(jsonValue.byteOffset)) {\n return this._getTypedArrayFromBinary(\n propertyName,\n componentType,\n componentLength,\n 1,\n jsonValue.byteOffset\n );\n }\n\n return jsonValue;\n }\n\n getPropertyArray(propertyName, componentType, componentLength) {\n const jsonValue = this.json[propertyName];\n\n if (jsonValue && Number.isFinite(jsonValue.byteOffset)) {\n if ('componentType' in jsonValue) {\n componentType = GLType.fromName(jsonValue.componentType);\n }\n return this._getTypedArrayFromBinary(\n propertyName,\n componentType,\n componentLength,\n this.featuresLength,\n jsonValue.byteOffset\n );\n }\n\n return this._getTypedArrayFromArray(propertyName, componentType, jsonValue);\n }\n\n getProperty(propertyName, componentType, componentLength, featureId, result) {\n const jsonValue = this.json[propertyName];\n if (!jsonValue) {\n return jsonValue;\n }\n\n const typedArray = this.getPropertyArray(propertyName, componentType, componentLength);\n\n if (componentLength === 1) {\n return typedArray[featureId];\n }\n\n for (let i = 0; i < componentLength; ++i) {\n result[i] = typedArray[componentLength * featureId + i];\n }\n\n return result;\n }\n\n // HELPERS\n\n _getTypedArrayFromBinary(propertyName, componentType, componentLength, count, byteOffset) {\n const cachedTypedArrays = this._cachedTypedArrays;\n let typedArray = cachedTypedArrays[propertyName];\n if (!typedArray) {\n typedArray = GLType.createTypedArray(\n componentType,\n this.buffer.buffer,\n this.buffer.byteOffset + byteOffset,\n count * componentLength\n );\n cachedTypedArrays[propertyName] = typedArray;\n }\n return typedArray;\n }\n\n _getTypedArrayFromArray(propertyName, componentType, array) {\n const cachedTypedArrays = this._cachedTypedArrays;\n let typedArray = cachedTypedArrays[propertyName];\n if (!typedArray) {\n typedArray = GLType.createTypedArray(componentType, array);\n cachedTypedArrays[propertyName] = typedArray;\n }\n return typedArray;\n }\n}\n"],"mappings":";;AAGA,SAAQA,EAAE,EAAEC,MAAM,QAAO,kBAAkB;;AAI3C,eAAe,MAAMC,kBAAkB,CAAC;EAMtCC,WAAW,CAACC,gBAAgB,EAAEC,kBAAkB,EAAE;IAAA;IAAA;IAAA,wCAHjC,CAAC;IAAA,4CACG,CAAC,CAAC;IAGrB,IAAI,CAACC,IAAI,GAAGF,gBAAgB;IAC5B,IAAI,CAACG,MAAM,GAAGF,kBAAkB;EAClC;EAEAG,YAAY,CAACC,aAAa,EAAE;IAC1B,OAAO,IAAI,CAACH,IAAI,CAACI,UAAU,IAAI,IAAI,CAACJ,IAAI,CAACI,UAAU,CAACD,aAAa,CAAC;EACpE;EAEAE,WAAW,CAACC,YAAY,EAAE;IACxB,OAAOC,OAAO,CAAC,IAAI,CAACP,IAAI,CAACM,YAAY,CAAC,CAAC;EACzC;EAEAE,iBAAiB,CAACF,YAAY,EAAwD;IAAA,IAAtDG,aAAa,uEAAGf,EAAE,CAACgB,YAAY;IAAA,IAAEC,eAAe,uEAAG,CAAC;IAClF,MAAMC,SAAS,GAAG,IAAI,CAACZ,IAAI,CAACM,YAAY,CAAC;IAEzC,IAAIM,SAAS,IAAIC,MAAM,CAACC,QAAQ,CAACF,SAAS,CAACG,UAAU,CAAC,EAAE;MACtD,OAAO,IAAI,CAACC,wBAAwB,CAClCV,YAAY,EACZG,aAAa,EACbE,eAAe,EACf,CAAC,EACDC,SAAS,CAACG,UAAU,CACrB;IACH;IAEA,OAAOH,SAAS;EAClB;EAEAK,gBAAgB,CAACX,YAAY,EAAEG,aAAa,EAAEE,eAAe,EAAE;IAC7D,MAAMC,SAAS,GAAG,IAAI,CAACZ,IAAI,CAACM,YAAY,CAAC;IAEzC,IAAIM,SAAS,IAAIC,MAAM,CAACC,QAAQ,CAACF,SAAS,CAACG,UAAU,CAAC,EAAE;MACtD,IAAI,eAAe,IAAIH,SAAS,EAAE;QAChCH,aAAa,GAAGd,MAAM,CAACuB,QAAQ,CAACN,SAAS,CAACH,aAAa,CAAC;MAC1D;MACA,OAAO,IAAI,CAACO,wBAAwB,CAClCV,YAAY,EACZG,aAAa,EACbE,eAAe,EACf,IAAI,CAACQ,cAAc,EACnBP,SAAS,CAACG,UAAU,CACrB;IACH;IAEA,OAAO,IAAI,CAACK,uBAAuB,CAACd,YAAY,EAAEG,aAAa,EAAEG,SAAS,CAAC;EAC7E;EAEAS,WAAW,CAACf,YAAY,EAAEG,aAAa,EAAEE,eAAe,EAAEW,SAAS,EAAEC,MAAM,EAAE;IAC3E,MAAMX,SAAS,GAAG,IAAI,CAACZ,IAAI,CAACM,YAAY,CAAC;IACzC,IAAI,CAACM,SAAS,EAAE;MACd,OAAOA,SAAS;IAClB;IAEA,MAAMY,UAAU,GAAG,IAAI,CAACP,gBAAgB,CAACX,YAAY,EAAEG,aAAa,EAAEE,eAAe,CAAC;IAEtF,IAAIA,eAAe,KAAK,CAAC,EAAE;MACzB,OAAOa,UAAU,CAACF,SAAS,CAAC;IAC9B;IAEA,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGd,eAAe,EAAE,EAAEc,CAAC,EAAE;MACxCF,MAAM,CAACE,CAAC,CAAC,GAAGD,UAAU,CAACb,eAAe,GAAGW,SAAS,GAAGG,CAAC,CAAC;IACzD;IAEA,OAAOF,MAAM;EACf;;EAIAP,wBAAwB,CAACV,YAAY,EAAEG,aAAa,EAAEE,eAAe,EAAEe,KAAK,EAAEX,UAAU,EAAE;IACxF,MAAMY,iBAAiB,GAAG,IAAI,CAACC,kBAAkB;IACjD,IAAIJ,UAAU,GAAGG,iBAAiB,CAACrB,YAAY,CAAC;IAChD,IAAI,CAACkB,UAAU,EAAE;MACfA,UAAU,GAAG7B,MAAM,CAACkC,gBAAgB,CAClCpB,aAAa,EACb,IAAI,CAACR,MAAM,CAACA,MAAM,EAClB,IAAI,CAACA,MAAM,CAACc,UAAU,GAAGA,UAAU,EACnCW,KAAK,GAAGf,eAAe,CACxB;MACDgB,iBAAiB,CAACrB,YAAY,CAAC,GAAGkB,UAAU;IAC9C;IACA,OAAOA,UAAU;EACnB;EAEAJ,uBAAuB,CAACd,YAAY,EAAEG,aAAa,EAAEqB,KAAK,EAAE;IAC1D,MAAMH,iBAAiB,GAAG,IAAI,CAACC,kBAAkB;IACjD,IAAIJ,UAAU,GAAGG,iBAAiB,CAACrB,YAAY,CAAC;IAChD,IAAI,CAACkB,UAAU,EAAE;MACfA,UAAU,GAAG7B,MAAM,CAACkC,gBAAgB,CAACpB,aAAa,EAAEqB,KAAK,CAAC;MAC1DH,iBAAiB,CAACrB,YAAY,CAAC,GAAGkB,UAAU;IAC9C;IACA,OAAOA,UAAU;EACnB;AACF"}
@@ -1,3 +1,5 @@
1
+
2
+
1
3
  export const TILE3D_TYPE = {
2
4
  COMPOSITE: 'cmpt',
3
5
  POINT_CLOUD: 'pnts',
@@ -14,6 +16,7 @@ export const MAGIC_ARRAY = {
14
16
  POINT_CLOUD: [112, 110, 116, 115],
15
17
  COMPOSITE: [99, 109, 112, 116]
16
18
  };
19
+
17
20
  export const TILE3D_OPTIMIZATION_HINT = {
18
21
  NOT_COMPUTED: -1,
19
22
  USE_OPTIMIZATION: 1,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/constants.ts"],"names":["TILE3D_TYPE","COMPOSITE","POINT_CLOUD","BATCHED_3D_MODEL","INSTANCED_3D_MODEL","GEOMETRY","VECTOR","GLTF","TILE3D_TYPES","Object","keys","MAGIC_ARRAY","BATCHED_MODEL","INSTANCED_MODEL","TILE3D_OPTIMIZATION_HINT","NOT_COMPUTED","USE_OPTIMIZATION","SKIP_OPTIMIZATION"],"mappings":"AAEA,OAAO,MAAMA,WAAW,GAAG;AACzBC,EAAAA,SAAS,EAAE,MADc;AAEzBC,EAAAA,WAAW,EAAE,MAFY;AAGzBC,EAAAA,gBAAgB,EAAE,MAHO;AAIzBC,EAAAA,kBAAkB,EAAE,MAJK;AAKzBC,EAAAA,QAAQ,EAAE,MALe;AAMzBC,EAAAA,MAAM,EAAE,MANiB;AAOzBC,EAAAA,IAAI,EAAE;AAPmB,CAApB;AAUP,OAAO,MAAMC,YAAY,GAAGC,MAAM,CAACC,IAAP,CAAYV,WAAZ,CAArB;AAEP,OAAO,MAAMW,WAAW,GAAG;AACzBC,EAAAA,aAAa,EAAE,CAAC,EAAD,EAAK,EAAL,EAAS,GAAT,EAAc,GAAd,CADU;AAEzBC,EAAAA,eAAe,EAAE,CAAC,GAAD,EAAM,EAAN,EAAU,GAAV,EAAe,GAAf,CAFQ;AAGzBX,EAAAA,WAAW,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,CAHY;AAIzBD,EAAAA,SAAS,EAAE,CAAC,EAAD,EAAK,GAAL,EAAU,GAAV,EAAe,GAAf;AAJc,CAApB;AAQP,OAAO,MAAMa,wBAAwB,GAAG;AACtCC,EAAAA,YAAY,EAAE,CAAC,CADuB;AAEtCC,EAAAA,gBAAgB,EAAE,CAFoB;AAGtCC,EAAAA,iBAAiB,EAAE;AAHmB,CAAjC","sourcesContent":["// TILE TYPES\n\nexport const TILE3D_TYPE = {\n COMPOSITE: 'cmpt',\n POINT_CLOUD: 'pnts',\n BATCHED_3D_MODEL: 'b3dm',\n INSTANCED_3D_MODEL: 'i3dm',\n GEOMETRY: 'geom',\n VECTOR: 'vect',\n GLTF: 'glTF'\n};\n\nexport const TILE3D_TYPES = Object.keys(TILE3D_TYPE);\n\nexport const MAGIC_ARRAY = {\n BATCHED_MODEL: [98, 51, 100, 109],\n INSTANCED_MODEL: [105, 51, 100, 109],\n POINT_CLOUD: [112, 110, 116, 115],\n COMPOSITE: [99, 109, 112, 116]\n};\n\n// TILE CONSTANTS\nexport const TILE3D_OPTIMIZATION_HINT = {\n NOT_COMPUTED: -1,\n USE_OPTIMIZATION: 1,\n SKIP_OPTIMIZATION: 0\n};\n"],"file":"constants.js"}
1
+ {"version":3,"file":"constants.js","names":["TILE3D_TYPE","COMPOSITE","POINT_CLOUD","BATCHED_3D_MODEL","INSTANCED_3D_MODEL","GEOMETRY","VECTOR","GLTF","TILE3D_TYPES","Object","keys","MAGIC_ARRAY","BATCHED_MODEL","INSTANCED_MODEL","TILE3D_OPTIMIZATION_HINT","NOT_COMPUTED","USE_OPTIMIZATION","SKIP_OPTIMIZATION"],"sources":["../../../src/lib/constants.ts"],"sourcesContent":["// TILE TYPES\n\nexport const TILE3D_TYPE = {\n COMPOSITE: 'cmpt',\n POINT_CLOUD: 'pnts',\n BATCHED_3D_MODEL: 'b3dm',\n INSTANCED_3D_MODEL: 'i3dm',\n GEOMETRY: 'geom',\n VECTOR: 'vect',\n GLTF: 'glTF'\n};\n\nexport const TILE3D_TYPES = Object.keys(TILE3D_TYPE);\n\nexport const MAGIC_ARRAY = {\n BATCHED_MODEL: [98, 51, 100, 109],\n INSTANCED_MODEL: [105, 51, 100, 109],\n POINT_CLOUD: [112, 110, 116, 115],\n COMPOSITE: [99, 109, 112, 116]\n};\n\n// TILE CONSTANTS\nexport const TILE3D_OPTIMIZATION_HINT = {\n NOT_COMPUTED: -1,\n USE_OPTIMIZATION: 1,\n SKIP_OPTIMIZATION: 0\n};\n"],"mappings":";;AAEA,OAAO,MAAMA,WAAW,GAAG;EACzBC,SAAS,EAAE,MAAM;EACjBC,WAAW,EAAE,MAAM;EACnBC,gBAAgB,EAAE,MAAM;EACxBC,kBAAkB,EAAE,MAAM;EAC1BC,QAAQ,EAAE,MAAM;EAChBC,MAAM,EAAE,MAAM;EACdC,IAAI,EAAE;AACR,CAAC;AAED,OAAO,MAAMC,YAAY,GAAGC,MAAM,CAACC,IAAI,CAACV,WAAW,CAAC;AAEpD,OAAO,MAAMW,WAAW,GAAG;EACzBC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;EACjCC,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;EACpCX,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACjCD,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC/B,CAAC;;AAGD,OAAO,MAAMa,wBAAwB,GAAG;EACtCC,YAAY,EAAE,CAAC,CAAC;EAChBC,gBAAgB,EAAE,CAAC;EACnBC,iBAAiB,EAAE;AACrB,CAAC"}
@@ -1,6 +1,9 @@
1
+
2
+
1
3
  import { padToNBytes, copyBinaryToDataView, copyPaddedStringToDataView } from '@loaders.gl/loader-utils';
2
4
  import { MAGIC_ARRAY } from '../constants';
3
5
  import { encode3DTileHeader, encode3DTileByteLength } from './helpers/encode-3d-tile-header';
6
+
4
7
  export function encodeBatchedModel3DTile(tile, dataView, byteOffset, options) {
5
8
  const {
6
9
  featuresLength = 0,
@@ -13,13 +16,13 @@ export function encodeBatchedModel3DTile(tile, dataView, byteOffset, options) {
13
16
  const batchTableJsonString = batchTable ? JSON.stringify(batchTable) : '';
14
17
  const featureTableJsonByteLength = padToNBytes(featureTableJsonString.length, 8);
15
18
  const batchTableJsonByteLength = batchTableJsonString ? padToNBytes(batchTableJsonString.length, 8) : 0;
19
+
16
20
  tile = {
17
21
  magic: MAGIC_ARRAY.BATCHED_MODEL,
18
22
  ...tile
19
23
  };
20
24
  const byteOffsetStart = byteOffset;
21
25
  byteOffset = encode3DTileHeader(tile, dataView, byteOffset);
22
-
23
26
  if (dataView) {
24
27
  dataView.setUint32(12, featureTableJsonByteLength, true);
25
28
  dataView.setUint32(16, 0, true);
@@ -28,14 +31,13 @@ export function encodeBatchedModel3DTile(tile, dataView, byteOffset, options) {
28
31
  }
29
32
 
30
33
  byteOffset += 16;
31
- byteOffset = copyPaddedStringToDataView(dataView, byteOffset, featureTableJsonString, 8);
32
34
 
35
+ byteOffset = copyPaddedStringToDataView(dataView, byteOffset, featureTableJsonString, 8);
33
36
  if (batchTable) {
34
37
  byteOffset = copyPaddedStringToDataView(dataView, byteOffset, batchTableJsonString, 8);
35
38
  }
36
39
 
37
40
  const gltfEncoded = tile.gltfEncoded;
38
-
39
41
  if (gltfEncoded) {
40
42
  byteOffset = copyBinaryToDataView(dataView, byteOffset, gltfEncoded, gltfEncoded.byteLength);
41
43
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/encoders/encode-3d-tile-batched-model.ts"],"names":["padToNBytes","copyBinaryToDataView","copyPaddedStringToDataView","MAGIC_ARRAY","encode3DTileHeader","encode3DTileByteLength","encodeBatchedModel3DTile","tile","dataView","byteOffset","options","featuresLength","batchTable","featureTableJson","BATCH_LENGTH","featureTableJsonString","JSON","stringify","batchTableJsonString","featureTableJsonByteLength","length","batchTableJsonByteLength","magic","BATCHED_MODEL","byteOffsetStart","setUint32","gltfEncoded","byteLength"],"mappings":"AAGA,SACEA,WADF,EAEEC,oBAFF,EAGEC,0BAHF,QAIO,0BAJP;AAKA,SAAQC,WAAR,QAA0B,cAA1B;AACA,SAAQC,kBAAR,EAA4BC,sBAA5B,QAAyD,iCAAzD;AAGA,OAAO,SAASC,wBAAT,CAAkCC,IAAlC,EAAwCC,QAAxC,EAAkDC,UAAlD,EAA8DC,OAA9D,EAAuE;AAC5E,QAAM;AAACC,IAAAA,cAAc,GAAG,CAAlB;AAAqBC,IAAAA;AAArB,MAAmCL,IAAzC;AAEA,QAAMM,gBAAgB,GAAG;AACvBC,IAAAA,YAAY,EAAEH;AADS,GAAzB;AAGA,QAAMI,sBAAsB,GAAGC,IAAI,CAACC,SAAL,CAAeJ,gBAAf,CAA/B;AACA,QAAMK,oBAAoB,GAAGN,UAAU,GAAGI,IAAI,CAACC,SAAL,CAAeL,UAAf,CAAH,GAAgC,EAAvE;AACA,QAAMO,0BAA0B,GAAGnB,WAAW,CAACe,sBAAsB,CAACK,MAAxB,EAAgC,CAAhC,CAA9C;AACA,QAAMC,wBAAwB,GAAGH,oBAAoB,GACjDlB,WAAW,CAACkB,oBAAoB,CAACE,MAAtB,EAA8B,CAA9B,CADsC,GAEjD,CAFJ;AAKAb,EAAAA,IAAI,GAAG;AAACe,IAAAA,KAAK,EAAEnB,WAAW,CAACoB,aAApB;AAAmC,OAAGhB;AAAtC,GAAP;AAEA,QAAMiB,eAAe,GAAGf,UAAxB;AAEAA,EAAAA,UAAU,GAAGL,kBAAkB,CAACG,IAAD,EAAOC,QAAP,EAAiBC,UAAjB,CAA/B;;AAEA,MAAID,QAAJ,EAAc;AACZA,IAAAA,QAAQ,CAACiB,SAAT,CAAmB,EAAnB,EAAuBN,0BAAvB,EAAmD,IAAnD;AACAX,IAAAA,QAAQ,CAACiB,SAAT,CAAmB,EAAnB,EAAuB,CAAvB,EAA0B,IAA1B;AACAjB,IAAAA,QAAQ,CAACiB,SAAT,CAAmB,EAAnB,EAAuBJ,wBAAvB,EAAiD,IAAjD;AACAb,IAAAA,QAAQ,CAACiB,SAAT,CAAmB,EAAnB,EAAuB,CAAvB,EAA0B,IAA1B;AACD;;AACDhB,EAAAA,UAAU,IAAI,EAAd;AAGAA,EAAAA,UAAU,GAAGP,0BAA0B,CAACM,QAAD,EAAWC,UAAX,EAAuBM,sBAAvB,EAA+C,CAA/C,CAAvC;;AAEA,MAAIH,UAAJ,EAAgB;AACdH,IAAAA,UAAU,GAAGP,0BAA0B,CAACM,QAAD,EAAWC,UAAX,EAAuBS,oBAAvB,EAA6C,CAA7C,CAAvC;AACD;;AAGD,QAAMQ,WAAW,GAAGnB,IAAI,CAACmB,WAAzB;;AACA,MAAIA,WAAJ,EAAiB;AACfjB,IAAAA,UAAU,GAAGR,oBAAoB,CAACO,QAAD,EAAWC,UAAX,EAAuBiB,WAAvB,EAAoCA,WAAW,CAACC,UAAhD,CAAjC;AACD;;AAGDtB,EAAAA,sBAAsB,CAACG,QAAD,EAAWgB,eAAX,EAA4Bf,UAAU,GAAGe,eAAzC,CAAtB;AAEA,SAAOf,UAAP;AACD","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {\n padToNBytes,\n copyBinaryToDataView,\n copyPaddedStringToDataView\n} from '@loaders.gl/loader-utils';\nimport {MAGIC_ARRAY} from '../constants';\nimport {encode3DTileHeader, encode3DTileByteLength} from './helpers/encode-3d-tile-header';\n\n// Procedurally encode the tile array dataView for testing purposes\nexport function encodeBatchedModel3DTile(tile, dataView, byteOffset, options) {\n const {featuresLength = 0, batchTable} = tile;\n\n const featureTableJson = {\n BATCH_LENGTH: featuresLength\n };\n const featureTableJsonString = JSON.stringify(featureTableJson);\n const batchTableJsonString = batchTable ? JSON.stringify(batchTable) : '';\n const featureTableJsonByteLength = padToNBytes(featureTableJsonString.length, 8);\n const batchTableJsonByteLength = batchTableJsonString\n ? padToNBytes(batchTableJsonString.length, 8)\n : 0;\n\n // Add default magic for this tile type\n tile = {magic: MAGIC_ARRAY.BATCHED_MODEL, ...tile};\n\n const byteOffsetStart = byteOffset;\n\n byteOffset = encode3DTileHeader(tile, dataView, byteOffset);\n\n if (dataView) {\n dataView.setUint32(12, featureTableJsonByteLength, true); // featureTableJsonByteLength\n dataView.setUint32(16, 0, true); // featureTableBinaryByteLength\n dataView.setUint32(20, batchTableJsonByteLength, true); // batchTableJsonByteLength\n dataView.setUint32(24, 0, true); // batchTableBinaryByteLength\n }\n byteOffset += 16;\n\n // TODO feature table binary\n byteOffset = copyPaddedStringToDataView(dataView, byteOffset, featureTableJsonString, 8);\n\n if (batchTable) {\n byteOffset = copyPaddedStringToDataView(dataView, byteOffset, batchTableJsonString, 8);\n }\n\n // Add encoded GLTF to the end of data\n const gltfEncoded = tile.gltfEncoded;\n if (gltfEncoded) {\n byteOffset = copyBinaryToDataView(dataView, byteOffset, gltfEncoded, gltfEncoded.byteLength);\n }\n\n // Go \"back\" and rewrite the tile's `byteLength` now that we know the value\n encode3DTileByteLength(dataView, byteOffsetStart, byteOffset - byteOffsetStart);\n\n return byteOffset;\n}\n"],"file":"encode-3d-tile-batched-model.js"}
1
+ {"version":3,"file":"encode-3d-tile-batched-model.js","names":["padToNBytes","copyBinaryToDataView","copyPaddedStringToDataView","MAGIC_ARRAY","encode3DTileHeader","encode3DTileByteLength","encodeBatchedModel3DTile","tile","dataView","byteOffset","options","featuresLength","batchTable","featureTableJson","BATCH_LENGTH","featureTableJsonString","JSON","stringify","batchTableJsonString","featureTableJsonByteLength","length","batchTableJsonByteLength","magic","BATCHED_MODEL","byteOffsetStart","setUint32","gltfEncoded","byteLength"],"sources":["../../../../src/lib/encoders/encode-3d-tile-batched-model.ts"],"sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {\n padToNBytes,\n copyBinaryToDataView,\n copyPaddedStringToDataView\n} from '@loaders.gl/loader-utils';\nimport {MAGIC_ARRAY} from '../constants';\nimport {encode3DTileHeader, encode3DTileByteLength} from './helpers/encode-3d-tile-header';\n\n// Procedurally encode the tile array dataView for testing purposes\nexport function encodeBatchedModel3DTile(tile, dataView, byteOffset, options) {\n const {featuresLength = 0, batchTable} = tile;\n\n const featureTableJson = {\n BATCH_LENGTH: featuresLength\n };\n const featureTableJsonString = JSON.stringify(featureTableJson);\n const batchTableJsonString = batchTable ? JSON.stringify(batchTable) : '';\n const featureTableJsonByteLength = padToNBytes(featureTableJsonString.length, 8);\n const batchTableJsonByteLength = batchTableJsonString\n ? padToNBytes(batchTableJsonString.length, 8)\n : 0;\n\n // Add default magic for this tile type\n tile = {magic: MAGIC_ARRAY.BATCHED_MODEL, ...tile};\n\n const byteOffsetStart = byteOffset;\n\n byteOffset = encode3DTileHeader(tile, dataView, byteOffset);\n\n if (dataView) {\n dataView.setUint32(12, featureTableJsonByteLength, true); // featureTableJsonByteLength\n dataView.setUint32(16, 0, true); // featureTableBinaryByteLength\n dataView.setUint32(20, batchTableJsonByteLength, true); // batchTableJsonByteLength\n dataView.setUint32(24, 0, true); // batchTableBinaryByteLength\n }\n byteOffset += 16;\n\n // TODO feature table binary\n byteOffset = copyPaddedStringToDataView(dataView, byteOffset, featureTableJsonString, 8);\n\n if (batchTable) {\n byteOffset = copyPaddedStringToDataView(dataView, byteOffset, batchTableJsonString, 8);\n }\n\n // Add encoded GLTF to the end of data\n const gltfEncoded = tile.gltfEncoded;\n if (gltfEncoded) {\n byteOffset = copyBinaryToDataView(dataView, byteOffset, gltfEncoded, gltfEncoded.byteLength);\n }\n\n // Go \"back\" and rewrite the tile's `byteLength` now that we know the value\n encode3DTileByteLength(dataView, byteOffsetStart, byteOffset - byteOffsetStart);\n\n return byteOffset;\n}\n"],"mappings":";;AAGA,SACEA,WAAW,EACXC,oBAAoB,EACpBC,0BAA0B,QACrB,0BAA0B;AACjC,SAAQC,WAAW,QAAO,cAAc;AACxC,SAAQC,kBAAkB,EAAEC,sBAAsB,QAAO,iCAAiC;;AAG1F,OAAO,SAASC,wBAAwB,CAACC,IAAI,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,OAAO,EAAE;EAC5E,MAAM;IAACC,cAAc,GAAG,CAAC;IAAEC;EAAU,CAAC,GAAGL,IAAI;EAE7C,MAAMM,gBAAgB,GAAG;IACvBC,YAAY,EAAEH;EAChB,CAAC;EACD,MAAMI,sBAAsB,GAAGC,IAAI,CAACC,SAAS,CAACJ,gBAAgB,CAAC;EAC/D,MAAMK,oBAAoB,GAAGN,UAAU,GAAGI,IAAI,CAACC,SAAS,CAACL,UAAU,CAAC,GAAG,EAAE;EACzE,MAAMO,0BAA0B,GAAGnB,WAAW,CAACe,sBAAsB,CAACK,MAAM,EAAE,CAAC,CAAC;EAChF,MAAMC,wBAAwB,GAAGH,oBAAoB,GACjDlB,WAAW,CAACkB,oBAAoB,CAACE,MAAM,EAAE,CAAC,CAAC,GAC3C,CAAC;;EAGLb,IAAI,GAAG;IAACe,KAAK,EAAEnB,WAAW,CAACoB,aAAa;IAAE,GAAGhB;EAAI,CAAC;EAElD,MAAMiB,eAAe,GAAGf,UAAU;EAElCA,UAAU,GAAGL,kBAAkB,CAACG,IAAI,EAAEC,QAAQ,EAAEC,UAAU,CAAC;EAE3D,IAAID,QAAQ,EAAE;IACZA,QAAQ,CAACiB,SAAS,CAAC,EAAE,EAAEN,0BAA0B,EAAE,IAAI,CAAC;IACxDX,QAAQ,CAACiB,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC;IAC/BjB,QAAQ,CAACiB,SAAS,CAAC,EAAE,EAAEJ,wBAAwB,EAAE,IAAI,CAAC;IACtDb,QAAQ,CAACiB,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC;EACjC;;EACAhB,UAAU,IAAI,EAAE;;EAGhBA,UAAU,GAAGP,0BAA0B,CAACM,QAAQ,EAAEC,UAAU,EAAEM,sBAAsB,EAAE,CAAC,CAAC;EAExF,IAAIH,UAAU,EAAE;IACdH,UAAU,GAAGP,0BAA0B,CAACM,QAAQ,EAAEC,UAAU,EAAES,oBAAoB,EAAE,CAAC,CAAC;EACxF;;EAGA,MAAMQ,WAAW,GAAGnB,IAAI,CAACmB,WAAW;EACpC,IAAIA,WAAW,EAAE;IACfjB,UAAU,GAAGR,oBAAoB,CAACO,QAAQ,EAAEC,UAAU,EAAEiB,WAAW,EAAEA,WAAW,CAACC,UAAU,CAAC;EAC9F;;EAGAtB,sBAAsB,CAACG,QAAQ,EAAEgB,eAAe,EAAEf,UAAU,GAAGe,eAAe,CAAC;EAE/E,OAAOf,UAAU;AACnB"}
@@ -1,3 +1,5 @@
1
+
2
+
1
3
  import { MAGIC_ARRAY } from '../constants';
2
4
  import { encode3DTileHeader, encode3DTileByteLength } from './helpers/encode-3d-tile-header';
3
5
  export function encodeComposite3DTile(tile, dataView, byteOffset, options, encode3DTile) {
@@ -8,13 +10,11 @@ export function encodeComposite3DTile(tile, dataView, byteOffset, options, encod
8
10
  };
9
11
  const byteOffsetStart = byteOffset;
10
12
  byteOffset += encode3DTileHeader(tile, dataView, byteOffset);
11
-
12
13
  if (dataView) {
13
14
  dataView.setUint32(byteOffset, tile.tiles.length, true);
14
15
  }
15
16
 
16
17
  byteOffset += 4;
17
-
18
18
  for (let i = 0; i < tile.tiles.length; ++i) {
19
19
  byteOffset += encode3DTile(tile.tiles[i], dataView, byteOffset, options);
20
20
  }