@loaders.gl/gltf 3.4.0-alpha.1 → 3.4.0-alpha.3

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 (134) hide show
  1. package/dist/dist.min.js +79 -27
  2. package/dist/es5/glb-loader.js +6 -9
  3. package/dist/es5/glb-loader.js.map +1 -1
  4. package/dist/es5/glb-writer.js +0 -3
  5. package/dist/es5/glb-writer.js.map +1 -1
  6. package/dist/es5/gltf-loader.js +15 -19
  7. package/dist/es5/gltf-loader.js.map +1 -1
  8. package/dist/es5/gltf-writer.js +0 -2
  9. package/dist/es5/gltf-writer.js.map +1 -1
  10. package/dist/es5/index.js.map +1 -1
  11. package/dist/es5/lib/api/gltf-extensions.js +36 -43
  12. package/dist/es5/lib/api/gltf-extensions.js.map +1 -1
  13. package/dist/es5/lib/api/gltf-scenegraph.js +31 -108
  14. package/dist/es5/lib/api/gltf-scenegraph.js.map +1 -1
  15. package/dist/es5/lib/api/normalize-gltf-v1.js +8 -33
  16. package/dist/es5/lib/api/normalize-gltf-v1.js.map +1 -1
  17. package/dist/es5/lib/api/post-process-gltf.js +5 -22
  18. package/dist/es5/lib/api/post-process-gltf.js.map +1 -1
  19. package/dist/es5/lib/encoders/encode-glb.js +0 -16
  20. package/dist/es5/lib/encoders/encode-glb.js.map +1 -1
  21. package/dist/es5/lib/encoders/encode-gltf.js +0 -2
  22. package/dist/es5/lib/encoders/encode-gltf.js.map +1 -1
  23. package/dist/es5/lib/extensions/EXT_meshopt_compression.js +48 -54
  24. package/dist/es5/lib/extensions/EXT_meshopt_compression.js.map +1 -1
  25. package/dist/es5/lib/extensions/EXT_texture_webp.js +2 -5
  26. package/dist/es5/lib/extensions/EXT_texture_webp.js.map +1 -1
  27. package/dist/es5/lib/extensions/KHR_binary_gltf.js +1 -7
  28. package/dist/es5/lib/extensions/KHR_binary_gltf.js.map +1 -1
  29. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js +117 -134
  30. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
  31. package/dist/es5/lib/extensions/KHR_texture_basisu.js +1 -4
  32. package/dist/es5/lib/extensions/KHR_texture_basisu.js.map +1 -1
  33. package/dist/es5/lib/extensions/KHR_texture_transform.js +18 -27
  34. package/dist/es5/lib/extensions/KHR_texture_transform.js.map +1 -1
  35. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js +7 -14
  36. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
  37. package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js +52 -58
  38. package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -1
  39. package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js +22 -26
  40. package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -1
  41. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js +31 -40
  42. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -1
  43. package/dist/es5/lib/gltf-utils/get-typed-array.js +0 -3
  44. package/dist/es5/lib/gltf-utils/get-typed-array.js.map +1 -1
  45. package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js +0 -5
  46. package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js.map +1 -1
  47. package/dist/es5/lib/gltf-utils/gltf-constants.js +0 -2
  48. package/dist/es5/lib/gltf-utils/gltf-constants.js.map +1 -1
  49. package/dist/es5/lib/gltf-utils/gltf-utils.js.map +1 -1
  50. package/dist/es5/lib/gltf-utils/resolve-url.js.map +1 -1
  51. package/dist/es5/lib/parsers/parse-glb.js +0 -16
  52. package/dist/es5/lib/parsers/parse-glb.js.map +1 -1
  53. package/dist/es5/lib/parsers/parse-gltf.js +145 -164
  54. package/dist/es5/lib/parsers/parse-gltf.js.map +1 -1
  55. package/dist/es5/lib/utils/assert.js.map +1 -1
  56. package/dist/es5/lib/utils/version.js +1 -1
  57. package/dist/es5/lib/utils/version.js.map +1 -1
  58. package/dist/es5/meshopt/meshopt-decoder.js +69 -87
  59. package/dist/es5/meshopt/meshopt-decoder.js.map +1 -1
  60. package/dist/es5/webp/webp.js +40 -45
  61. package/dist/es5/webp/webp.js.map +1 -1
  62. package/dist/esm/bundle.js +0 -1
  63. package/dist/esm/bundle.js.map +1 -1
  64. package/dist/esm/glb-loader.js +0 -2
  65. package/dist/esm/glb-loader.js.map +1 -1
  66. package/dist/esm/glb-writer.js +0 -4
  67. package/dist/esm/glb-writer.js.map +1 -1
  68. package/dist/esm/gltf-loader.js +0 -2
  69. package/dist/esm/gltf-loader.js.map +1 -1
  70. package/dist/esm/gltf-writer.js +0 -2
  71. package/dist/esm/gltf-writer.js.map +1 -1
  72. package/dist/esm/index.js +0 -4
  73. package/dist/esm/index.js.map +1 -1
  74. package/dist/esm/lib/api/gltf-extensions.js +1 -10
  75. package/dist/esm/lib/api/gltf-extensions.js.map +1 -1
  76. package/dist/esm/lib/api/gltf-scenegraph.js +2 -48
  77. package/dist/esm/lib/api/gltf-scenegraph.js.map +1 -1
  78. package/dist/esm/lib/api/normalize-gltf-v1.js +0 -17
  79. package/dist/esm/lib/api/normalize-gltf-v1.js.map +1 -1
  80. package/dist/esm/lib/api/post-process-gltf.js +2 -16
  81. package/dist/esm/lib/api/post-process-gltf.js.map +1 -1
  82. package/dist/esm/lib/encoders/encode-glb.js +0 -16
  83. package/dist/esm/lib/encoders/encode-glb.js.map +1 -1
  84. package/dist/esm/lib/encoders/encode-gltf.js +0 -2
  85. package/dist/esm/lib/encoders/encode-gltf.js.map +1 -1
  86. package/dist/esm/lib/extensions/EXT_meshopt_compression.js +0 -7
  87. package/dist/esm/lib/extensions/EXT_meshopt_compression.js.map +1 -1
  88. package/dist/esm/lib/extensions/EXT_texture_webp.js +2 -7
  89. package/dist/esm/lib/extensions/EXT_texture_webp.js.map +1 -1
  90. package/dist/esm/lib/extensions/KHR_binary_gltf.js +0 -6
  91. package/dist/esm/lib/extensions/KHR_binary_gltf.js.map +1 -1
  92. package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js +1 -18
  93. package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
  94. package/dist/esm/lib/extensions/KHR_texture_basisu.js +0 -5
  95. package/dist/esm/lib/extensions/KHR_texture_basisu.js.map +1 -1
  96. package/dist/esm/lib/extensions/KHR_texture_transform.js +0 -11
  97. package/dist/esm/lib/extensions/KHR_texture_transform.js.map +1 -1
  98. package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js +0 -7
  99. package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
  100. package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js +0 -7
  101. package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -1
  102. package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js +0 -5
  103. package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -1
  104. package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js +3 -11
  105. package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -1
  106. package/dist/esm/lib/gltf-utils/get-typed-array.js +0 -4
  107. package/dist/esm/lib/gltf-utils/get-typed-array.js.map +1 -1
  108. package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js +0 -7
  109. package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js.map +1 -1
  110. package/dist/esm/lib/gltf-utils/gltf-constants.js +0 -1
  111. package/dist/esm/lib/gltf-utils/gltf-constants.js.map +1 -1
  112. package/dist/esm/lib/gltf-utils/gltf-utils.js.map +1 -1
  113. package/dist/esm/lib/gltf-utils/resolve-url.js +0 -1
  114. package/dist/esm/lib/gltf-utils/resolve-url.js.map +1 -1
  115. package/dist/esm/lib/parsers/parse-glb.js +0 -17
  116. package/dist/esm/lib/parsers/parse-glb.js.map +1 -1
  117. package/dist/esm/lib/parsers/parse-gltf.js +0 -18
  118. package/dist/esm/lib/parsers/parse-gltf.js.map +1 -1
  119. package/dist/esm/lib/utils/assert.js +0 -1
  120. package/dist/esm/lib/utils/assert.js.map +1 -1
  121. package/dist/esm/lib/utils/version.js +1 -2
  122. package/dist/esm/lib/utils/version.js.map +1 -1
  123. package/dist/esm/meshopt/meshopt-decoder.js +0 -8
  124. package/dist/esm/meshopt/meshopt-decoder.js.map +1 -1
  125. package/dist/esm/webp/webp.js +0 -2
  126. package/dist/esm/webp/webp.js.map +1 -1
  127. package/dist/gltf-loader.d.ts +2 -1
  128. package/dist/gltf-loader.d.ts.map +1 -1
  129. package/dist/lib/api/gltf-extensions.js +1 -1
  130. package/dist/lib/extensions/EXT_texture_webp.js +1 -1
  131. package/dist/lib/parsers/parse-gltf.d.ts +1 -1
  132. package/dist/lib/parsers/parse-gltf.d.ts.map +1 -1
  133. package/package.json +6 -6
  134. package/src/lib/extensions/EXT_texture_webp.ts +2 -2
@@ -15,7 +15,7 @@ var _assert = require("../utils/assert");
15
15
  var _gltfUtils = require("../gltf-utils/gltf-utils");
16
16
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
17
17
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
18
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
18
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
19
19
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
20
20
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
21
21
  var DEFAULT_GLTF_JSON = {
@@ -26,7 +26,6 @@ var DEFAULT_GLTF_JSON = {
26
26
  buffers: []
27
27
  };
28
28
  var GLTFScenegraph = function () {
29
-
30
29
  function GLTFScenegraph(gltf) {
31
30
  (0, _classCallCheck2.default)(this, GLTFScenegraph);
32
31
  (0, _defineProperty2.default)(this, "gltf", void 0);
@@ -38,18 +37,14 @@ var GLTFScenegraph = function () {
38
37
  };
39
38
  this.sourceBuffers = [];
40
39
  this.byteLength = 0;
41
-
42
40
  if (this.gltf.buffers && this.gltf.buffers[0]) {
43
41
  this.byteLength = this.gltf.buffers[0].byteLength;
44
42
  this.sourceBuffers = [this.gltf.buffers[0]];
45
43
  }
46
44
  }
47
-
48
45
  (0, _createClass2.default)(GLTFScenegraph, [{
49
46
  key: "json",
50
- get:
51
-
52
- function get() {
47
+ get: function get() {
53
48
  return this.gltf.json;
54
49
  }
55
50
  }, {
@@ -132,12 +127,9 @@ var GLTFScenegraph = function () {
132
127
  value: function getAccessor(index) {
133
128
  return this.getObject('accessors', index);
134
129
  }
135
-
136
130
  }, {
137
131
  key: "getTexture",
138
- value:
139
-
140
- function getTexture(index) {
132
+ value: function getTexture(index) {
141
133
  return this.getObject('textures', index);
142
134
  }
143
135
  }, {
@@ -170,44 +162,34 @@ var GLTFScenegraph = function () {
170
162
  if (!object) {
171
163
  throw new Error("glTF file error: Could not find ".concat(array, "[").concat(index, "]"));
172
164
  }
173
-
174
165
  return object;
175
166
  }
176
-
177
167
  }, {
178
168
  key: "getTypedArrayForBufferView",
179
- value:
180
- function getTypedArrayForBufferView(bufferView) {
169
+ value: function getTypedArrayForBufferView(bufferView) {
181
170
  bufferView = this.getBufferView(bufferView);
182
171
  var bufferIndex = bufferView.buffer;
183
-
184
172
  var binChunk = this.gltf.buffers[bufferIndex];
185
173
  (0, _assert.assert)(binChunk);
186
-
187
174
  var byteOffset = (bufferView.byteOffset || 0) + binChunk.byteOffset;
188
175
  return new Uint8Array(binChunk.arrayBuffer, byteOffset, bufferView.byteLength);
189
176
  }
190
-
191
177
  }, {
192
178
  key: "getTypedArrayForAccessor",
193
- value:
194
- function getTypedArrayForAccessor(accessor) {
179
+ value: function getTypedArrayForAccessor(accessor) {
195
180
  accessor = this.getAccessor(accessor);
196
181
  var bufferView = this.getBufferView(accessor.bufferView);
197
182
  var buffer = this.getBuffer(bufferView.buffer);
198
183
  var arrayBuffer = buffer.data;
199
-
200
184
  var _getAccessorArrayType = (0, _gltfUtils.getAccessorArrayTypeAndLength)(accessor, bufferView),
201
185
  ArrayType = _getAccessorArrayType.ArrayType,
202
186
  length = _getAccessorArrayType.length;
203
187
  var byteOffset = bufferView.byteOffset + accessor.byteOffset;
204
188
  return new ArrayType(arrayBuffer, byteOffset, length);
205
189
  }
206
-
207
190
  }, {
208
191
  key: "getTypedArrayForImageData",
209
- value:
210
- function getTypedArrayForImageData(image) {
192
+ value: function getTypedArrayForImageData(image) {
211
193
  image = this.getAccessor(image);
212
194
  var bufferView = this.getBufferView(image.bufferView);
213
195
  var buffer = this.getBuffer(bufferView.buffer);
@@ -215,20 +197,15 @@ var GLTFScenegraph = function () {
215
197
  var byteOffset = bufferView.byteOffset || 0;
216
198
  return new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);
217
199
  }
218
-
219
200
  }, {
220
201
  key: "addApplicationData",
221
- value:
222
-
223
- function addApplicationData(key, data) {
202
+ value: function addApplicationData(key, data) {
224
203
  this.json[key] = data;
225
204
  return this;
226
205
  }
227
-
228
206
  }, {
229
207
  key: "addExtraData",
230
- value:
231
- function addExtraData(key, data) {
208
+ value: function addExtraData(key, data) {
232
209
  this.json.extras = this.json.extras || {};
233
210
  this.json.extras[key] = data;
234
211
  return this;
@@ -255,11 +232,9 @@ var GLTFScenegraph = function () {
255
232
  delete extensions[extensionName];
256
233
  return extension;
257
234
  }
258
-
259
235
  }, {
260
236
  key: "addExtension",
261
- value:
262
- function addExtension(extensionName) {
237
+ value: function addExtension(extensionName) {
263
238
  var extensionData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
264
239
  (0, _assert.assert)(extensionData);
265
240
  this.json.extensions = this.json.extensions || {};
@@ -267,22 +242,18 @@ var GLTFScenegraph = function () {
267
242
  this.registerUsedExtension(extensionName);
268
243
  return extensionData;
269
244
  }
270
-
271
245
  }, {
272
246
  key: "addRequiredExtension",
273
- value:
274
- function addRequiredExtension(extensionName) {
247
+ value: function addRequiredExtension(extensionName) {
275
248
  var extensionData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
276
249
  (0, _assert.assert)(extensionData);
277
250
  this.addExtension(extensionName, extensionData);
278
251
  this.registerRequiredExtension(extensionName);
279
252
  return extensionData;
280
253
  }
281
-
282
254
  }, {
283
255
  key: "registerUsedExtension",
284
- value:
285
- function registerUsedExtension(extensionName) {
256
+ value: function registerUsedExtension(extensionName) {
286
257
  this.json.extensionsUsed = this.json.extensionsUsed || [];
287
258
  if (!this.json.extensionsUsed.find(function (ext) {
288
259
  return ext === extensionName;
@@ -290,11 +261,9 @@ var GLTFScenegraph = function () {
290
261
  this.json.extensionsUsed.push(extensionName);
291
262
  }
292
263
  }
293
-
294
264
  }, {
295
265
  key: "registerRequiredExtension",
296
- value:
297
- function registerRequiredExtension(extensionName) {
266
+ value: function registerRequiredExtension(extensionName) {
298
267
  this.registerUsedExtension(extensionName);
299
268
  this.json.extensionsRequired = this.json.extensionsRequired || [];
300
269
  if (!this.json.extensionsRequired.find(function (ext) {
@@ -303,11 +272,9 @@ var GLTFScenegraph = function () {
303
272
  this.json.extensionsRequired.push(extensionName);
304
273
  }
305
274
  }
306
-
307
275
  }, {
308
276
  key: "removeExtension",
309
- value:
310
- function removeExtension(extensionName) {
277
+ value: function removeExtension(extensionName) {
311
278
  if (!this.getExtension(extensionName)) {
312
279
  return;
313
280
  }
@@ -328,18 +295,14 @@ var GLTFScenegraph = function () {
328
295
  extensionsRemoved.push(extensionName);
329
296
  }
330
297
  }
331
-
332
298
  }, {
333
299
  key: "setDefaultScene",
334
- value:
335
- function setDefaultScene(sceneIndex) {
300
+ value: function setDefaultScene(sceneIndex) {
336
301
  this.json.scene = sceneIndex;
337
302
  }
338
-
339
303
  }, {
340
304
  key: "addScene",
341
- value:
342
- function addScene(scene) {
305
+ value: function addScene(scene) {
343
306
  var nodeIndices = scene.nodeIndices;
344
307
  this.json.scenes = this.json.scenes || [];
345
308
  this.json.scenes.push({
@@ -347,11 +310,9 @@ var GLTFScenegraph = function () {
347
310
  });
348
311
  return this.json.scenes.length - 1;
349
312
  }
350
-
351
313
  }, {
352
314
  key: "addNode",
353
- value:
354
- function addNode(node) {
315
+ value: function addNode(node) {
355
316
  var meshIndex = node.meshIndex,
356
317
  matrix = node.matrix;
357
318
  this.json.nodes = this.json.nodes || [];
@@ -364,11 +325,9 @@ var GLTFScenegraph = function () {
364
325
  this.json.nodes.push(nodeData);
365
326
  return this.json.nodes.length - 1;
366
327
  }
367
-
368
328
  }, {
369
329
  key: "addMesh",
370
- value:
371
- function addMesh(mesh) {
330
+ value: function addMesh(mesh) {
372
331
  var attributes = mesh.attributes,
373
332
  indices = mesh.indices,
374
333
  material = mesh.material,
@@ -402,16 +361,13 @@ var GLTFScenegraph = function () {
402
361
  mode: 0
403
362
  }]
404
363
  };
405
-
406
364
  this.json.meshes = this.json.meshes || [];
407
365
  this.json.meshes.push(glTFMesh);
408
366
  return this.json.meshes.length - 1;
409
367
  }
410
-
411
368
  }, {
412
369
  key: "addImage",
413
- value:
414
- function addImage(imageData, mimeTypeOpt) {
370
+ value: function addImage(imageData, mimeTypeOpt) {
415
371
  var metadata = (0, _images.getBinaryImageMetadata)(imageData);
416
372
  var mimeType = mimeTypeOpt || (metadata === null || metadata === void 0 ? void 0 : metadata.mimeType);
417
373
  var bufferViewIndex = this.addBufferView(imageData);
@@ -423,14 +379,11 @@ var GLTFScenegraph = function () {
423
379
  this.json.images.push(glTFImage);
424
380
  return this.json.images.length - 1;
425
381
  }
426
-
427
382
  }, {
428
383
  key: "addBufferView",
429
- value:
430
- function addBufferView(buffer) {
384
+ value: function addBufferView(buffer) {
431
385
  var byteLength = buffer.byteLength;
432
386
  (0, _assert.assert)(Number.isFinite(byteLength));
433
-
434
387
  this.sourceBuffers = this.sourceBuffers || [];
435
388
  this.sourceBuffers.push(buffer);
436
389
  var glTFBufferView = {
@@ -438,18 +391,14 @@ var GLTFScenegraph = function () {
438
391
  byteOffset: this.byteLength,
439
392
  byteLength: byteLength
440
393
  };
441
-
442
394
  this.byteLength += (0, _loaderUtils.padToNBytes)(byteLength, 4);
443
-
444
395
  this.json.bufferViews = this.json.bufferViews || [];
445
396
  this.json.bufferViews.push(glTFBufferView);
446
397
  return this.json.bufferViews.length - 1;
447
398
  }
448
-
449
399
  }, {
450
400
  key: "addAccessor",
451
- value:
452
- function addAccessor(bufferViewIndex, accessor) {
401
+ value: function addAccessor(bufferViewIndex, accessor) {
453
402
  var glTFAccessor = {
454
403
  bufferView: bufferViewIndex,
455
404
  type: (0, _gltfUtils.getAccessorTypeFromSize)(accessor.size),
@@ -462,11 +411,9 @@ var GLTFScenegraph = function () {
462
411
  this.json.accessors.push(glTFAccessor);
463
412
  return this.json.accessors.length - 1;
464
413
  }
465
-
466
414
  }, {
467
415
  key: "addBinaryBuffer",
468
- value:
469
- function addBinaryBuffer(sourceBuffer) {
416
+ value: function addBinaryBuffer(sourceBuffer) {
470
417
  var accessor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
471
418
  size: 3
472
419
  };
@@ -487,11 +434,9 @@ var GLTFScenegraph = function () {
487
434
  };
488
435
  return this.addAccessor(bufferViewIndex, Object.assign(accessorDefaults, accessor));
489
436
  }
490
-
491
437
  }, {
492
438
  key: "addTexture",
493
- value:
494
- function addTexture(texture) {
439
+ value: function addTexture(texture) {
495
440
  var imageIndex = texture.imageIndex;
496
441
  var glTFTexture = {
497
442
  source: imageIndex
@@ -500,27 +445,21 @@ var GLTFScenegraph = function () {
500
445
  this.json.textures.push(glTFTexture);
501
446
  return this.json.textures.length - 1;
502
447
  }
503
-
504
448
  }, {
505
449
  key: "addMaterial",
506
- value:
507
- function addMaterial(pbrMaterialInfo) {
450
+ value: function addMaterial(pbrMaterialInfo) {
508
451
  this.json.materials = this.json.materials || [];
509
452
  this.json.materials.push(pbrMaterialInfo);
510
453
  return this.json.materials.length - 1;
511
454
  }
512
-
513
455
  }, {
514
456
  key: "createBinaryChunk",
515
- value:
516
- function createBinaryChunk() {
457
+ value: function createBinaryChunk() {
517
458
  var _this$json, _this$json$buffers;
518
459
  this.gltf.buffers = [];
519
-
520
460
  var totalByteLength = this.byteLength;
521
461
  var arrayBuffer = new ArrayBuffer(totalByteLength);
522
462
  var targetArray = new Uint8Array(arrayBuffer);
523
-
524
463
  var dstByteOffset = 0;
525
464
  var _iterator = _createForOfIteratorHelper(this.sourceBuffers || []),
526
465
  _step;
@@ -529,7 +468,6 @@ var GLTFScenegraph = function () {
529
468
  var sourceBuffer = _step.value;
530
469
  dstByteOffset = (0, _loaderUtils.copyToArray)(sourceBuffer, targetArray, dstByteOffset);
531
470
  }
532
-
533
471
  } catch (err) {
534
472
  _iterator.e(err);
535
473
  } finally {
@@ -542,17 +480,12 @@ var GLTFScenegraph = function () {
542
480
  byteLength: totalByteLength
543
481
  }];
544
482
  }
545
-
546
483
  this.gltf.binary = arrayBuffer;
547
-
548
484
  this.sourceBuffers = [arrayBuffer];
549
485
  }
550
-
551
486
  }, {
552
487
  key: "_removeStringFromArray",
553
- value:
554
-
555
- function _removeStringFromArray(array, string) {
488
+ value: function _removeStringFromArray(array, string) {
556
489
  var found = true;
557
490
  while (found) {
558
491
  var index = array.indexOf(string);
@@ -563,11 +496,9 @@ var GLTFScenegraph = function () {
563
496
  }
564
497
  }
565
498
  }
566
-
567
499
  }, {
568
500
  key: "_addAttributes",
569
- value:
570
- function _addAttributes() {
501
+ value: function _addAttributes() {
571
502
  var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
572
503
  var result = {};
573
504
  for (var attributeKey in attributes) {
@@ -578,20 +509,16 @@ var GLTFScenegraph = function () {
578
509
  }
579
510
  return result;
580
511
  }
581
-
582
512
  }, {
583
513
  key: "_addIndices",
584
- value:
585
- function _addIndices(indices) {
514
+ value: function _addIndices(indices) {
586
515
  return this.addBinaryBuffer(indices, {
587
516
  size: 1
588
517
  });
589
518
  }
590
-
591
519
  }, {
592
520
  key: "_getGltfAttributeName",
593
- value:
594
- function _getGltfAttributeName(attributeName) {
521
+ value: function _getGltfAttributeName(attributeName) {
595
522
  switch (attributeName.toLowerCase()) {
596
523
  case 'position':
597
524
  case 'positions':
@@ -610,11 +537,9 @@ var GLTFScenegraph = function () {
610
537
  return attributeName;
611
538
  }
612
539
  }
613
-
614
540
  }, {
615
541
  key: "_getAccessorMinMax",
616
- value:
617
- function _getAccessorMinMax(buffer, size) {
542
+ value: function _getAccessorMinMax(buffer, size) {
618
543
  var result = {
619
544
  min: null,
620
545
  max: null
@@ -640,10 +565,8 @@ var GLTFScenegraph = function () {
640
565
  }
641
566
  for (var index = size; index < buffer.length; index += size) {
642
567
  for (var componentIndex = 0; componentIndex < size; componentIndex++) {
643
- result.min[0 + componentIndex] = Math.min(
644
- result.min[0 + componentIndex], buffer[index + componentIndex]);
645
- result.max[0 + componentIndex] = Math.max(
646
- result.max[0 + componentIndex], buffer[index + componentIndex]);
568
+ result.min[0 + componentIndex] = Math.min(result.min[0 + componentIndex], buffer[index + componentIndex]);
569
+ result.max[0 + componentIndex] = Math.max(result.max[0 + componentIndex], buffer[index + componentIndex]);
647
570
  }
648
571
  }
649
572
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"gltf-scenegraph.js","names":["DEFAULT_GLTF_JSON","asset","version","generator","buffers","GLTFScenegraph","gltf","json","sourceBuffers","byteLength","key","data","extras","extensionName","isExtension","getUsedExtensions","find","name","extensions","isRequired","getRequiredExtensions","getExtension","extensionsRequired","extensionsUsed","extensionsRemoved","object","index","getObject","array","Error","bufferView","getBufferView","bufferIndex","buffer","binChunk","assert","byteOffset","Uint8Array","arrayBuffer","accessor","getAccessor","getBuffer","getAccessorArrayTypeAndLength","ArrayType","length","image","registerUsedExtension","extension","extensionData","addExtension","registerRequiredExtension","ext","push","_removeStringFromArray","Array","isArray","includes","sceneIndex","scene","nodeIndices","scenes","nodes","node","meshIndex","matrix","nodeData","mesh","attributes","indices","material","mode","accessors","_addAttributes","glTFMesh","primitives","indicesAccessor","_addIndices","Number","isFinite","meshes","accessorIndices","imageData","mimeTypeOpt","metadata","getBinaryImageMetadata","mimeType","bufferViewIndex","addBufferView","glTFImage","images","glTFBufferView","padToNBytes","bufferViews","glTFAccessor","type","getAccessorTypeFromSize","size","componentType","count","max","min","sourceBuffer","minMax","_getAccessorMinMax","accessorDefaults","getComponentTypeFromArray","Math","round","addAccessor","Object","assign","texture","imageIndex","glTFTexture","source","textures","pbrMaterialInfo","materials","totalByteLength","ArrayBuffer","targetArray","dstByteOffset","copyToArray","binary","string","found","indexOf","splice","result","attributeKey","attributeData","attrName","_getGltfAttributeName","addBinaryBuffer","value","attributeName","toLowerCase","initValues","subarray","componentIndex"],"sources":["../../../../src/lib/api/gltf-scenegraph.ts"],"sourcesContent":["import type {\n GLTF,\n GLTFScene,\n GLTFNode,\n GLTFMesh,\n GLTFSkin,\n GLTFMaterial,\n GLTFAccessor,\n GLTFSampler,\n GLTFTexture,\n GLTFImage,\n GLTFBuffer,\n GLTFBufferView,\n GLTFWithBuffers\n} from '../types/gltf-types';\n\nimport {getBinaryImageMetadata} from '@loaders.gl/images';\nimport {padToNBytes, copyToArray} from '@loaders.gl/loader-utils';\nimport {assert} from '../utils/assert';\nimport {\n getAccessorArrayTypeAndLength,\n getAccessorTypeFromSize,\n getComponentTypeFromArray\n} from '../gltf-utils/gltf-utils';\n\nconst DEFAULT_GLTF_JSON: GLTF = {\n asset: {\n version: '2.0',\n generator: 'loaders.gl'\n },\n buffers: []\n};\n\ntype Extension = {[key: string]: any};\n/**\n * Class for structured access to GLTF data\n */\nexport default class GLTFScenegraph {\n // internal\n gltf: GLTFWithBuffers;\n sourceBuffers: any[];\n byteLength: number;\n\n constructor(gltf?: {json: GLTF; buffers?: any[]}) {\n // @ts-ignore\n this.gltf = gltf || {\n json: {...DEFAULT_GLTF_JSON},\n buffers: []\n };\n this.sourceBuffers = [];\n this.byteLength = 0;\n\n // Initialize buffers\n if (this.gltf.buffers && this.gltf.buffers[0]) {\n this.byteLength = this.gltf.buffers[0].byteLength;\n this.sourceBuffers = [this.gltf.buffers[0]];\n }\n }\n\n // Accessors\n\n get json(): GLTF {\n return this.gltf.json;\n }\n\n getApplicationData(key: string): unknown {\n // TODO - Data is already unpacked by GLBParser\n const data = this.json[key];\n return data;\n }\n\n getExtraData(key: string): {[key: string]: unknown} {\n // TODO - Data is already unpacked by GLBParser\n const extras = this.json.extras || {};\n return extras[key];\n }\n\n getExtension<T = Extension>(extensionName: string): T | null {\n const isExtension = this.getUsedExtensions().find((name) => name === extensionName);\n const extensions = this.json.extensions || {};\n return isExtension ? extensions[extensionName] || true : null;\n }\n\n getRequiredExtension<T = Extension>(extensionName: string): T | null {\n const isRequired = this.getRequiredExtensions().find((name) => name === extensionName);\n return isRequired ? this.getExtension(extensionName) : null;\n }\n\n getRequiredExtensions(): string[] {\n return this.json.extensionsRequired || [];\n }\n\n getUsedExtensions(): string[] {\n return this.json.extensionsUsed || [];\n }\n\n getRemovedExtensions(): string[] {\n return (this.json.extensionsRemoved || []) as string[];\n }\n\n getObjectExtension<T = Extension>(object: {[key: string]: any}, extensionName: string): T | null {\n const extensions = object.extensions || {};\n return extensions[extensionName];\n }\n\n getScene(index: number): GLTFScene {\n return this.getObject('scenes', index) as GLTFScene;\n }\n\n getNode(index: number): GLTFNode {\n return this.getObject('nodes', index) as GLTFNode;\n }\n\n getSkin(index: number): GLTFSkin {\n return this.getObject('skins', index) as GLTFSkin;\n }\n\n getMesh(index: number): GLTFMesh {\n return this.getObject('meshes', index) as GLTFMesh;\n }\n\n getMaterial(index: number): GLTFMaterial {\n return this.getObject('materials', index) as GLTFMaterial;\n }\n\n getAccessor(index: number): GLTFAccessor {\n return this.getObject('accessors', index) as GLTFAccessor;\n }\n\n // getCamera(index: number): object | null {\n // return null; // TODO: fix thi: object as null;\n // }\n\n getTexture(index: number): GLTFTexture {\n return this.getObject('textures', index) as GLTFTexture;\n }\n\n getSampler(index: number): GLTFSampler {\n return this.getObject('samplers', index) as GLTFSampler;\n }\n\n getImage(index: number): GLTFImage {\n return this.getObject('images', index) as GLTFImage;\n }\n\n getBufferView(index: number | object): GLTFBufferView {\n return this.getObject('bufferViews', index) as GLTFBufferView;\n }\n\n getBuffer(index: number): GLTFBuffer {\n return this.getObject('buffers', index) as GLTFBuffer;\n }\n\n getObject(array: string, index: number | object): object {\n // check if already resolved\n if (typeof index === 'object') {\n return index;\n }\n const object = this.json[array] && (this.json[array] as {}[])[index];\n if (!object) {\n throw new Error(`glTF file error: Could not find ${array}[${index}]`); // eslint-disable-line\n }\n return object;\n }\n\n /**\n * Accepts buffer view index or buffer view object\n * @returns a `Uint8Array`\n */\n getTypedArrayForBufferView(bufferView: number | object): Uint8Array {\n bufferView = this.getBufferView(bufferView);\n // @ts-ignore\n const bufferIndex = bufferView.buffer;\n\n // Get hold of the arrayBuffer\n // const buffer = this.getBuffer(bufferIndex);\n const binChunk = this.gltf.buffers[bufferIndex];\n assert(binChunk);\n\n // @ts-ignore\n const byteOffset = (bufferView.byteOffset || 0) + binChunk.byteOffset;\n // @ts-ignore\n return new Uint8Array(binChunk.arrayBuffer, byteOffset, bufferView.byteLength);\n }\n\n /** Accepts accessor index or accessor object\n * @returns a typed array with type that matches the types\n */\n getTypedArrayForAccessor(accessor: number | object): any {\n // @ts-ignore\n accessor = this.getAccessor(accessor);\n // @ts-ignore\n const bufferView = this.getBufferView(accessor.bufferView);\n const buffer = this.getBuffer(bufferView.buffer);\n // @ts-ignore\n const arrayBuffer = buffer.data;\n\n // Create a new typed array as a view into the combined buffer\n const {ArrayType, length} = getAccessorArrayTypeAndLength(accessor, bufferView);\n // @ts-ignore\n const byteOffset = bufferView.byteOffset + accessor.byteOffset;\n return new ArrayType(arrayBuffer, byteOffset, length);\n }\n\n /** accepts accessor index or accessor object\n * returns a `Uint8Array`\n */\n getTypedArrayForImageData(image: number | object): Uint8Array {\n // @ts-ignore\n image = this.getAccessor(image);\n // @ts-ignore\n const bufferView = this.getBufferView(image.bufferView);\n const buffer = this.getBuffer(bufferView.buffer);\n // @ts-ignore\n const arrayBuffer = buffer.data;\n\n const byteOffset = bufferView.byteOffset || 0;\n return new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);\n }\n\n // MODIFERS\n\n /**\n * Add an extra application-defined key to the top-level data structure\n */\n addApplicationData(key: string, data: object): GLTFScenegraph {\n this.json[key] = data;\n return this;\n }\n\n /**\n * `extras` - Standard GLTF field for storing application specific data\n */\n addExtraData(key: string, data: object): GLTFScenegraph {\n this.json.extras = this.json.extras || {};\n (this.json.extras as Record<string, unknown>)[key] = data;\n return this;\n }\n\n addObjectExtension(object: object, extensionName: string, data: object): GLTFScenegraph {\n // @ts-ignore\n object.extensions = object.extensions || {};\n // TODO - clobber or merge?\n // @ts-ignore\n object.extensions[extensionName] = data;\n this.registerUsedExtension(extensionName);\n return this;\n }\n\n setObjectExtension(object: object, extensionName: string, data: object): void {\n // @ts-ignore\n const extensions = object.extensions || {};\n extensions[extensionName] = data;\n // TODO - add to usedExtensions...\n }\n\n removeObjectExtension(object: object, extensionName: string): object {\n // @ts-ignore\n const extensions = object.extensions || {};\n const extension = extensions[extensionName];\n delete extensions[extensionName];\n return extension;\n }\n\n /**\n * Add to standard GLTF top level extension object, mark as used\n */\n addExtension(extensionName: string, extensionData: object = {}): object {\n assert(extensionData);\n this.json.extensions = this.json.extensions || {};\n (this.json.extensions as Record<string, unknown>)[extensionName] = extensionData;\n this.registerUsedExtension(extensionName);\n return extensionData;\n }\n\n /**\n * Standard GLTF top level extension object, mark as used and required\n */\n addRequiredExtension(extensionName, extensionData: object = {}): object {\n assert(extensionData);\n this.addExtension(extensionName, extensionData);\n this.registerRequiredExtension(extensionName);\n return extensionData;\n }\n\n /**\n * Add extensionName to list of used extensions\n */\n registerUsedExtension(extensionName: string): void {\n this.json.extensionsUsed = this.json.extensionsUsed || [];\n if (!this.json.extensionsUsed.find((ext) => ext === extensionName)) {\n this.json.extensionsUsed.push(extensionName);\n }\n }\n\n /**\n * Add extensionName to list of required extensions\n */\n registerRequiredExtension(extensionName: string): void {\n this.registerUsedExtension(extensionName);\n this.json.extensionsRequired = this.json.extensionsRequired || [];\n if (!this.json.extensionsRequired.find((ext) => ext === extensionName)) {\n this.json.extensionsRequired.push(extensionName);\n }\n }\n\n /**\n * Removes an extension from the top-level list\n */\n removeExtension(extensionName: string): void {\n if (!this.getExtension(extensionName)) {\n return;\n }\n if (this.json.extensionsRequired) {\n this._removeStringFromArray(this.json.extensionsRequired, extensionName);\n }\n if (this.json.extensionsUsed) {\n this._removeStringFromArray(this.json.extensionsUsed, extensionName);\n }\n if (this.json.extensions) {\n delete this.json.extensions[extensionName];\n }\n if (!Array.isArray(this.json.extensionsRemoved)) {\n this.json.extensionsRemoved = [];\n }\n const extensionsRemoved = this.json.extensionsRemoved as string[];\n if (!extensionsRemoved.includes(extensionName)) {\n extensionsRemoved.push(extensionName);\n }\n }\n\n /**\n * Set default scene which is to be displayed at load time\n */\n setDefaultScene(sceneIndex: number): void {\n this.json.scene = sceneIndex;\n }\n\n /**\n * @todo: add more properties for scene initialization:\n * name`, `extensions`, `extras`\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#reference-scene\n */\n addScene(scene: {nodeIndices: number[]}): number {\n const {nodeIndices} = scene;\n this.json.scenes = this.json.scenes || [];\n this.json.scenes.push({nodes: nodeIndices});\n return this.json.scenes.length - 1;\n }\n\n /**\n * @todo: add more properties for node initialization:\n * `name`, `extensions`, `extras`, `camera`, `children`, `skin`, `rotation`, `scale`, `translation`, `weights`\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#node\n */\n addNode(node: {meshIndex: number; matrix?: number[]}): number {\n const {meshIndex, matrix} = node;\n this.json.nodes = this.json.nodes || [];\n const nodeData = {mesh: meshIndex};\n if (matrix) {\n // @ts-ignore\n nodeData.matrix = matrix;\n }\n this.json.nodes.push(nodeData);\n return this.json.nodes.length - 1;\n }\n\n /** Adds a mesh to the json part */\n addMesh(mesh: {attributes: object; indices?: object; material?: number; mode?: number}): number {\n const {attributes, indices, material, mode = 4} = mesh;\n const accessors = this._addAttributes(attributes);\n\n const glTFMesh = {\n primitives: [\n {\n attributes: accessors,\n mode\n }\n ]\n };\n\n if (indices) {\n const indicesAccessor = this._addIndices(indices);\n // @ts-ignore\n glTFMesh.primitives[0].indices = indicesAccessor;\n }\n\n if (Number.isFinite(material)) {\n // @ts-ignore\n glTFMesh.primitives[0].material = material;\n }\n\n this.json.meshes = this.json.meshes || [];\n this.json.meshes.push(glTFMesh);\n return this.json.meshes.length - 1;\n }\n\n addPointCloud(attributes: object): number {\n // @ts-ignore\n const accessorIndices = this._addAttributes(attributes);\n\n const glTFMesh = {\n primitives: [\n {\n attributes: accessorIndices,\n mode: 0 // GL.POINTS\n }\n ]\n };\n\n this.json.meshes = this.json.meshes || [];\n this.json.meshes.push(glTFMesh);\n return this.json.meshes.length - 1;\n }\n\n /**\n * Adds a binary image. Builds glTF \"JSON metadata\" and saves buffer reference\n * Buffer will be copied into BIN chunk during \"pack\"\n * Currently encodes as glTF image\n * @param imageData\n * @param mimeType\n */\n addImage(imageData: any, mimeTypeOpt?: string): number {\n // If image is referencing a bufferView instead of URI, mimeType must be defined:\n // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#images\n // \"a reference to a bufferView; in that case mimeType must be defined.\"\n const metadata = getBinaryImageMetadata(imageData);\n const mimeType = mimeTypeOpt || metadata?.mimeType;\n\n const bufferViewIndex = this.addBufferView(imageData);\n\n const glTFImage = {\n bufferView: bufferViewIndex,\n mimeType\n };\n\n this.json.images = this.json.images || [];\n this.json.images.push(glTFImage);\n return this.json.images.length - 1;\n }\n\n /**\n * Add one untyped source buffer, create a matching glTF `bufferView`, and return its index\n * @param buffer\n */\n addBufferView(buffer: any): number {\n const byteLength = buffer.byteLength;\n assert(Number.isFinite(byteLength));\n\n // Add this buffer to the list of buffers to be written to the body.\n this.sourceBuffers = this.sourceBuffers || [];\n this.sourceBuffers.push(buffer);\n\n const glTFBufferView = {\n buffer: 0,\n // Write offset from the start of the binary body\n byteOffset: this.byteLength,\n byteLength\n };\n\n // We've now added the contents to the body, so update the total length\n // Every sub-chunk needs to be 4-byte align ed\n this.byteLength += padToNBytes(byteLength, 4);\n\n // Add a bufferView indicating start and length of this binary sub-chunk\n this.json.bufferViews = this.json.bufferViews || [];\n this.json.bufferViews.push(glTFBufferView);\n return this.json.bufferViews.length - 1;\n }\n\n /**\n * Adds an accessor to a bufferView\n * @param bufferViewIndex\n * @param accessor\n */\n addAccessor(bufferViewIndex: number, accessor: object): number {\n const glTFAccessor = {\n bufferView: bufferViewIndex,\n // @ts-ignore\n type: getAccessorTypeFromSize(accessor.size),\n // @ts-ignore\n componentType: accessor.componentType,\n // @ts-ignore\n count: accessor.count,\n // @ts-ignore\n max: accessor.max,\n // @ts-ignore\n min: accessor.min\n };\n\n this.json.accessors = this.json.accessors || [];\n this.json.accessors.push(glTFAccessor);\n return this.json.accessors.length - 1;\n }\n\n /**\n * Add a binary buffer. Builds glTF \"JSON metadata\" and saves buffer reference\n * Buffer will be copied into BIN chunk during \"pack\"\n * Currently encodes buffers as glTF accessors, but this could be optimized\n * @param sourceBuffer\n * @param accessor\n */\n addBinaryBuffer(sourceBuffer: any, accessor: object = {size: 3}): number {\n const bufferViewIndex = this.addBufferView(sourceBuffer);\n // @ts-ignore\n let minMax = {min: accessor.min, max: accessor.max};\n if (!minMax.min || !minMax.max) {\n // @ts-ignore\n minMax = this._getAccessorMinMax(sourceBuffer, accessor.size);\n }\n\n const accessorDefaults = {\n // @ts-ignore\n size: accessor.size,\n componentType: getComponentTypeFromArray(sourceBuffer),\n // @ts-ignore\n count: Math.round(sourceBuffer.length / accessor.size),\n min: minMax.min,\n max: minMax.max\n };\n\n return this.addAccessor(bufferViewIndex, Object.assign(accessorDefaults, accessor));\n }\n\n /**\n * Adds a texture to the json part\n * @todo: add more properties for texture initialization\n * `sampler`, `name`, `extensions`, `extras`\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#texture\n */\n addTexture(texture: {imageIndex: number}): number {\n const {imageIndex} = texture;\n const glTFTexture = {\n source: imageIndex\n };\n\n this.json.textures = this.json.textures || [];\n this.json.textures.push(glTFTexture);\n return this.json.textures.length - 1;\n }\n\n /** Adds a material to the json part */\n addMaterial(pbrMaterialInfo: Object): number {\n this.json.materials = this.json.materials || [];\n this.json.materials.push(pbrMaterialInfo);\n return this.json.materials.length - 1;\n }\n\n /** Pack the binary chunk */\n createBinaryChunk(): void {\n // Encoder expects this array undefined or empty\n this.gltf.buffers = [];\n\n // Allocate total array\n const totalByteLength = this.byteLength;\n const arrayBuffer = new ArrayBuffer(totalByteLength);\n const targetArray = new Uint8Array(arrayBuffer);\n\n // Copy each array into\n let dstByteOffset = 0;\n for (const sourceBuffer of this.sourceBuffers || []) {\n dstByteOffset = copyToArray(sourceBuffer, targetArray, dstByteOffset);\n }\n\n // Update the glTF BIN CHUNK byte length\n if (this.json?.buffers?.[0]) {\n this.json.buffers[0].byteLength = totalByteLength;\n } else {\n this.json.buffers = [{byteLength: totalByteLength}];\n }\n\n // Save generated arrayBuffer\n this.gltf.binary = arrayBuffer;\n\n // Put arrayBuffer to sourceBuffers for possible additional writing data in the chunk\n this.sourceBuffers = [arrayBuffer];\n }\n\n // PRIVATE\n\n _removeStringFromArray(array, string) {\n let found = true;\n while (found) {\n const index = array.indexOf(string);\n if (index > -1) {\n array.splice(index, 1);\n } else {\n found = false;\n }\n }\n }\n\n /**\n * Add attributes to buffers and create `attributes` object which is part of `mesh`\n */\n _addAttributes(attributes = {}) {\n const result = {};\n for (const attributeKey in attributes) {\n const attributeData = attributes[attributeKey];\n const attrName = this._getGltfAttributeName(attributeKey);\n const accessor = this.addBinaryBuffer(attributeData.value, attributeData);\n result[attrName] = accessor;\n }\n return result;\n }\n\n /**\n * Add indices to buffers\n */\n _addIndices(indices) {\n return this.addBinaryBuffer(indices, {size: 1});\n }\n\n /**\n * Deduce gltf specific attribue name from input attribute name\n */\n _getGltfAttributeName(attributeName) {\n switch (attributeName.toLowerCase()) {\n case 'position':\n case 'positions':\n case 'vertices':\n return 'POSITION';\n case 'normal':\n case 'normals':\n return 'NORMAL';\n case 'color':\n case 'colors':\n return 'COLOR_0';\n case 'texcoord':\n case 'texcoords':\n return 'TEXCOORD_0';\n default:\n return attributeName;\n }\n }\n\n /**\n * Calculate `min` and `max` arrays of accessor according to spec:\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#reference-accessor\n */\n _getAccessorMinMax(buffer, size) {\n const result = {min: null, max: null};\n if (buffer.length < size) {\n return result;\n }\n // @ts-ignore\n result.min = [];\n // @ts-ignore\n result.max = [];\n const initValues = buffer.subarray(0, size);\n for (const value of initValues) {\n // @ts-ignore\n result.min.push(value);\n // @ts-ignore\n result.max.push(value);\n }\n\n for (let index = size; index < buffer.length; index += size) {\n for (let componentIndex = 0; componentIndex < size; componentIndex++) {\n // @ts-ignore\n result.min[0 + componentIndex] = Math.min(\n // @ts-ignore\n result.min[0 + componentIndex],\n buffer[index + componentIndex]\n );\n // @ts-ignore\n result.max[0 + componentIndex] = Math.max(\n // @ts-ignore\n result.max[0 + componentIndex],\n buffer[index + componentIndex]\n );\n }\n }\n return result;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"gltf-scenegraph.js","names":["_images","require","_loaderUtils","_assert","_gltfUtils","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","arguments","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","DEFAULT_GLTF_JSON","asset","version","generator","buffers","GLTFScenegraph","gltf","_classCallCheck2","json","sourceBuffers","byteLength","_createClass2","get","getApplicationData","data","getExtraData","extras","getExtension","extensionName","isExtension","getUsedExtensions","find","extensions","getRequiredExtension","isRequired","getRequiredExtensions","extensionsRequired","extensionsUsed","getRemovedExtensions","extensionsRemoved","getObjectExtension","getScene","index","getObject","getNode","getSkin","getMesh","getMaterial","getAccessor","getTexture","getSampler","getImage","getBufferView","getBuffer","array","_typeof2","Error","concat","getTypedArrayForBufferView","bufferView","bufferIndex","buffer","binChunk","assert","byteOffset","Uint8Array","arrayBuffer","getTypedArrayForAccessor","accessor","_getAccessorArrayType","getAccessorArrayTypeAndLength","ArrayType","getTypedArrayForImageData","image","addApplicationData","addExtraData","addObjectExtension","registerUsedExtension","setObjectExtension","removeObjectExtension","extension","addExtension","extensionData","undefined","addRequiredExtension","registerRequiredExtension","ext","removeExtension","_removeStringFromArray","includes","setDefaultScene","sceneIndex","scene","addScene","nodeIndices","scenes","nodes","addNode","node","meshIndex","matrix","nodeData","mesh","addMesh","attributes","indices","material","_mesh$mode","mode","accessors","_addAttributes","glTFMesh","primitives","indicesAccessor","_addIndices","Number","isFinite","meshes","addPointCloud","accessorIndices","addImage","imageData","mimeTypeOpt","metadata","getBinaryImageMetadata","mimeType","bufferViewIndex","addBufferView","glTFImage","images","glTFBufferView","padToNBytes","bufferViews","addAccessor","glTFAccessor","type","getAccessorTypeFromSize","size","componentType","count","max","min","addBinaryBuffer","sourceBuffer","minMax","_getAccessorMinMax","accessorDefaults","getComponentTypeFromArray","Math","round","assign","addTexture","texture","imageIndex","glTFTexture","textures","addMaterial","pbrMaterialInfo","materials","createBinaryChunk","_this$json","_this$json$buffers","totalByteLength","ArrayBuffer","targetArray","dstByteOffset","_iterator","_step","copyToArray","binary","string","found","indexOf","splice","result","attributeKey","attributeData","attrName","_getGltfAttributeName","attributeName","toLowerCase","initValues","subarray","_iterator2","_step2","componentIndex","exports"],"sources":["../../../../src/lib/api/gltf-scenegraph.ts"],"sourcesContent":["import type {\n GLTF,\n GLTFScene,\n GLTFNode,\n GLTFMesh,\n GLTFSkin,\n GLTFMaterial,\n GLTFAccessor,\n GLTFSampler,\n GLTFTexture,\n GLTFImage,\n GLTFBuffer,\n GLTFBufferView,\n GLTFWithBuffers\n} from '../types/gltf-types';\n\nimport {getBinaryImageMetadata} from '@loaders.gl/images';\nimport {padToNBytes, copyToArray} from '@loaders.gl/loader-utils';\nimport {assert} from '../utils/assert';\nimport {\n getAccessorArrayTypeAndLength,\n getAccessorTypeFromSize,\n getComponentTypeFromArray\n} from '../gltf-utils/gltf-utils';\n\nconst DEFAULT_GLTF_JSON: GLTF = {\n asset: {\n version: '2.0',\n generator: 'loaders.gl'\n },\n buffers: []\n};\n\ntype Extension = {[key: string]: any};\n/**\n * Class for structured access to GLTF data\n */\nexport default class GLTFScenegraph {\n // internal\n gltf: GLTFWithBuffers;\n sourceBuffers: any[];\n byteLength: number;\n\n constructor(gltf?: {json: GLTF; buffers?: any[]}) {\n // @ts-ignore\n this.gltf = gltf || {\n json: {...DEFAULT_GLTF_JSON},\n buffers: []\n };\n this.sourceBuffers = [];\n this.byteLength = 0;\n\n // Initialize buffers\n if (this.gltf.buffers && this.gltf.buffers[0]) {\n this.byteLength = this.gltf.buffers[0].byteLength;\n this.sourceBuffers = [this.gltf.buffers[0]];\n }\n }\n\n // Accessors\n\n get json(): GLTF {\n return this.gltf.json;\n }\n\n getApplicationData(key: string): unknown {\n // TODO - Data is already unpacked by GLBParser\n const data = this.json[key];\n return data;\n }\n\n getExtraData(key: string): {[key: string]: unknown} {\n // TODO - Data is already unpacked by GLBParser\n const extras = this.json.extras || {};\n return extras[key];\n }\n\n getExtension<T = Extension>(extensionName: string): T | null {\n const isExtension = this.getUsedExtensions().find((name) => name === extensionName);\n const extensions = this.json.extensions || {};\n return isExtension ? extensions[extensionName] || true : null;\n }\n\n getRequiredExtension<T = Extension>(extensionName: string): T | null {\n const isRequired = this.getRequiredExtensions().find((name) => name === extensionName);\n return isRequired ? this.getExtension(extensionName) : null;\n }\n\n getRequiredExtensions(): string[] {\n return this.json.extensionsRequired || [];\n }\n\n getUsedExtensions(): string[] {\n return this.json.extensionsUsed || [];\n }\n\n getRemovedExtensions(): string[] {\n return (this.json.extensionsRemoved || []) as string[];\n }\n\n getObjectExtension<T = Extension>(object: {[key: string]: any}, extensionName: string): T | null {\n const extensions = object.extensions || {};\n return extensions[extensionName];\n }\n\n getScene(index: number): GLTFScene {\n return this.getObject('scenes', index) as GLTFScene;\n }\n\n getNode(index: number): GLTFNode {\n return this.getObject('nodes', index) as GLTFNode;\n }\n\n getSkin(index: number): GLTFSkin {\n return this.getObject('skins', index) as GLTFSkin;\n }\n\n getMesh(index: number): GLTFMesh {\n return this.getObject('meshes', index) as GLTFMesh;\n }\n\n getMaterial(index: number): GLTFMaterial {\n return this.getObject('materials', index) as GLTFMaterial;\n }\n\n getAccessor(index: number): GLTFAccessor {\n return this.getObject('accessors', index) as GLTFAccessor;\n }\n\n // getCamera(index: number): object | null {\n // return null; // TODO: fix thi: object as null;\n // }\n\n getTexture(index: number): GLTFTexture {\n return this.getObject('textures', index) as GLTFTexture;\n }\n\n getSampler(index: number): GLTFSampler {\n return this.getObject('samplers', index) as GLTFSampler;\n }\n\n getImage(index: number): GLTFImage {\n return this.getObject('images', index) as GLTFImage;\n }\n\n getBufferView(index: number | object): GLTFBufferView {\n return this.getObject('bufferViews', index) as GLTFBufferView;\n }\n\n getBuffer(index: number): GLTFBuffer {\n return this.getObject('buffers', index) as GLTFBuffer;\n }\n\n getObject(array: string, index: number | object): object {\n // check if already resolved\n if (typeof index === 'object') {\n return index;\n }\n const object = this.json[array] && (this.json[array] as {}[])[index];\n if (!object) {\n throw new Error(`glTF file error: Could not find ${array}[${index}]`); // eslint-disable-line\n }\n return object;\n }\n\n /**\n * Accepts buffer view index or buffer view object\n * @returns a `Uint8Array`\n */\n getTypedArrayForBufferView(bufferView: number | object): Uint8Array {\n bufferView = this.getBufferView(bufferView);\n // @ts-ignore\n const bufferIndex = bufferView.buffer;\n\n // Get hold of the arrayBuffer\n // const buffer = this.getBuffer(bufferIndex);\n const binChunk = this.gltf.buffers[bufferIndex];\n assert(binChunk);\n\n // @ts-ignore\n const byteOffset = (bufferView.byteOffset || 0) + binChunk.byteOffset;\n // @ts-ignore\n return new Uint8Array(binChunk.arrayBuffer, byteOffset, bufferView.byteLength);\n }\n\n /** Accepts accessor index or accessor object\n * @returns a typed array with type that matches the types\n */\n getTypedArrayForAccessor(accessor: number | object): any {\n // @ts-ignore\n accessor = this.getAccessor(accessor);\n // @ts-ignore\n const bufferView = this.getBufferView(accessor.bufferView);\n const buffer = this.getBuffer(bufferView.buffer);\n // @ts-ignore\n const arrayBuffer = buffer.data;\n\n // Create a new typed array as a view into the combined buffer\n const {ArrayType, length} = getAccessorArrayTypeAndLength(accessor, bufferView);\n // @ts-ignore\n const byteOffset = bufferView.byteOffset + accessor.byteOffset;\n return new ArrayType(arrayBuffer, byteOffset, length);\n }\n\n /** accepts accessor index or accessor object\n * returns a `Uint8Array`\n */\n getTypedArrayForImageData(image: number | object): Uint8Array {\n // @ts-ignore\n image = this.getAccessor(image);\n // @ts-ignore\n const bufferView = this.getBufferView(image.bufferView);\n const buffer = this.getBuffer(bufferView.buffer);\n // @ts-ignore\n const arrayBuffer = buffer.data;\n\n const byteOffset = bufferView.byteOffset || 0;\n return new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);\n }\n\n // MODIFERS\n\n /**\n * Add an extra application-defined key to the top-level data structure\n */\n addApplicationData(key: string, data: object): GLTFScenegraph {\n this.json[key] = data;\n return this;\n }\n\n /**\n * `extras` - Standard GLTF field for storing application specific data\n */\n addExtraData(key: string, data: object): GLTFScenegraph {\n this.json.extras = this.json.extras || {};\n (this.json.extras as Record<string, unknown>)[key] = data;\n return this;\n }\n\n addObjectExtension(object: object, extensionName: string, data: object): GLTFScenegraph {\n // @ts-ignore\n object.extensions = object.extensions || {};\n // TODO - clobber or merge?\n // @ts-ignore\n object.extensions[extensionName] = data;\n this.registerUsedExtension(extensionName);\n return this;\n }\n\n setObjectExtension(object: object, extensionName: string, data: object): void {\n // @ts-ignore\n const extensions = object.extensions || {};\n extensions[extensionName] = data;\n // TODO - add to usedExtensions...\n }\n\n removeObjectExtension(object: object, extensionName: string): object {\n // @ts-ignore\n const extensions = object.extensions || {};\n const extension = extensions[extensionName];\n delete extensions[extensionName];\n return extension;\n }\n\n /**\n * Add to standard GLTF top level extension object, mark as used\n */\n addExtension(extensionName: string, extensionData: object = {}): object {\n assert(extensionData);\n this.json.extensions = this.json.extensions || {};\n (this.json.extensions as Record<string, unknown>)[extensionName] = extensionData;\n this.registerUsedExtension(extensionName);\n return extensionData;\n }\n\n /**\n * Standard GLTF top level extension object, mark as used and required\n */\n addRequiredExtension(extensionName, extensionData: object = {}): object {\n assert(extensionData);\n this.addExtension(extensionName, extensionData);\n this.registerRequiredExtension(extensionName);\n return extensionData;\n }\n\n /**\n * Add extensionName to list of used extensions\n */\n registerUsedExtension(extensionName: string): void {\n this.json.extensionsUsed = this.json.extensionsUsed || [];\n if (!this.json.extensionsUsed.find((ext) => ext === extensionName)) {\n this.json.extensionsUsed.push(extensionName);\n }\n }\n\n /**\n * Add extensionName to list of required extensions\n */\n registerRequiredExtension(extensionName: string): void {\n this.registerUsedExtension(extensionName);\n this.json.extensionsRequired = this.json.extensionsRequired || [];\n if (!this.json.extensionsRequired.find((ext) => ext === extensionName)) {\n this.json.extensionsRequired.push(extensionName);\n }\n }\n\n /**\n * Removes an extension from the top-level list\n */\n removeExtension(extensionName: string): void {\n if (!this.getExtension(extensionName)) {\n return;\n }\n if (this.json.extensionsRequired) {\n this._removeStringFromArray(this.json.extensionsRequired, extensionName);\n }\n if (this.json.extensionsUsed) {\n this._removeStringFromArray(this.json.extensionsUsed, extensionName);\n }\n if (this.json.extensions) {\n delete this.json.extensions[extensionName];\n }\n if (!Array.isArray(this.json.extensionsRemoved)) {\n this.json.extensionsRemoved = [];\n }\n const extensionsRemoved = this.json.extensionsRemoved as string[];\n if (!extensionsRemoved.includes(extensionName)) {\n extensionsRemoved.push(extensionName);\n }\n }\n\n /**\n * Set default scene which is to be displayed at load time\n */\n setDefaultScene(sceneIndex: number): void {\n this.json.scene = sceneIndex;\n }\n\n /**\n * @todo: add more properties for scene initialization:\n * name`, `extensions`, `extras`\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#reference-scene\n */\n addScene(scene: {nodeIndices: number[]}): number {\n const {nodeIndices} = scene;\n this.json.scenes = this.json.scenes || [];\n this.json.scenes.push({nodes: nodeIndices});\n return this.json.scenes.length - 1;\n }\n\n /**\n * @todo: add more properties for node initialization:\n * `name`, `extensions`, `extras`, `camera`, `children`, `skin`, `rotation`, `scale`, `translation`, `weights`\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#node\n */\n addNode(node: {meshIndex: number; matrix?: number[]}): number {\n const {meshIndex, matrix} = node;\n this.json.nodes = this.json.nodes || [];\n const nodeData = {mesh: meshIndex};\n if (matrix) {\n // @ts-ignore\n nodeData.matrix = matrix;\n }\n this.json.nodes.push(nodeData);\n return this.json.nodes.length - 1;\n }\n\n /** Adds a mesh to the json part */\n addMesh(mesh: {attributes: object; indices?: object; material?: number; mode?: number}): number {\n const {attributes, indices, material, mode = 4} = mesh;\n const accessors = this._addAttributes(attributes);\n\n const glTFMesh = {\n primitives: [\n {\n attributes: accessors,\n mode\n }\n ]\n };\n\n if (indices) {\n const indicesAccessor = this._addIndices(indices);\n // @ts-ignore\n glTFMesh.primitives[0].indices = indicesAccessor;\n }\n\n if (Number.isFinite(material)) {\n // @ts-ignore\n glTFMesh.primitives[0].material = material;\n }\n\n this.json.meshes = this.json.meshes || [];\n this.json.meshes.push(glTFMesh);\n return this.json.meshes.length - 1;\n }\n\n addPointCloud(attributes: object): number {\n // @ts-ignore\n const accessorIndices = this._addAttributes(attributes);\n\n const glTFMesh = {\n primitives: [\n {\n attributes: accessorIndices,\n mode: 0 // GL.POINTS\n }\n ]\n };\n\n this.json.meshes = this.json.meshes || [];\n this.json.meshes.push(glTFMesh);\n return this.json.meshes.length - 1;\n }\n\n /**\n * Adds a binary image. Builds glTF \"JSON metadata\" and saves buffer reference\n * Buffer will be copied into BIN chunk during \"pack\"\n * Currently encodes as glTF image\n * @param imageData\n * @param mimeType\n */\n addImage(imageData: any, mimeTypeOpt?: string): number {\n // If image is referencing a bufferView instead of URI, mimeType must be defined:\n // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#images\n // \"a reference to a bufferView; in that case mimeType must be defined.\"\n const metadata = getBinaryImageMetadata(imageData);\n const mimeType = mimeTypeOpt || metadata?.mimeType;\n\n const bufferViewIndex = this.addBufferView(imageData);\n\n const glTFImage = {\n bufferView: bufferViewIndex,\n mimeType\n };\n\n this.json.images = this.json.images || [];\n this.json.images.push(glTFImage);\n return this.json.images.length - 1;\n }\n\n /**\n * Add one untyped source buffer, create a matching glTF `bufferView`, and return its index\n * @param buffer\n */\n addBufferView(buffer: any): number {\n const byteLength = buffer.byteLength;\n assert(Number.isFinite(byteLength));\n\n // Add this buffer to the list of buffers to be written to the body.\n this.sourceBuffers = this.sourceBuffers || [];\n this.sourceBuffers.push(buffer);\n\n const glTFBufferView = {\n buffer: 0,\n // Write offset from the start of the binary body\n byteOffset: this.byteLength,\n byteLength\n };\n\n // We've now added the contents to the body, so update the total length\n // Every sub-chunk needs to be 4-byte align ed\n this.byteLength += padToNBytes(byteLength, 4);\n\n // Add a bufferView indicating start and length of this binary sub-chunk\n this.json.bufferViews = this.json.bufferViews || [];\n this.json.bufferViews.push(glTFBufferView);\n return this.json.bufferViews.length - 1;\n }\n\n /**\n * Adds an accessor to a bufferView\n * @param bufferViewIndex\n * @param accessor\n */\n addAccessor(bufferViewIndex: number, accessor: object): number {\n const glTFAccessor = {\n bufferView: bufferViewIndex,\n // @ts-ignore\n type: getAccessorTypeFromSize(accessor.size),\n // @ts-ignore\n componentType: accessor.componentType,\n // @ts-ignore\n count: accessor.count,\n // @ts-ignore\n max: accessor.max,\n // @ts-ignore\n min: accessor.min\n };\n\n this.json.accessors = this.json.accessors || [];\n this.json.accessors.push(glTFAccessor);\n return this.json.accessors.length - 1;\n }\n\n /**\n * Add a binary buffer. Builds glTF \"JSON metadata\" and saves buffer reference\n * Buffer will be copied into BIN chunk during \"pack\"\n * Currently encodes buffers as glTF accessors, but this could be optimized\n * @param sourceBuffer\n * @param accessor\n */\n addBinaryBuffer(sourceBuffer: any, accessor: object = {size: 3}): number {\n const bufferViewIndex = this.addBufferView(sourceBuffer);\n // @ts-ignore\n let minMax = {min: accessor.min, max: accessor.max};\n if (!minMax.min || !minMax.max) {\n // @ts-ignore\n minMax = this._getAccessorMinMax(sourceBuffer, accessor.size);\n }\n\n const accessorDefaults = {\n // @ts-ignore\n size: accessor.size,\n componentType: getComponentTypeFromArray(sourceBuffer),\n // @ts-ignore\n count: Math.round(sourceBuffer.length / accessor.size),\n min: minMax.min,\n max: minMax.max\n };\n\n return this.addAccessor(bufferViewIndex, Object.assign(accessorDefaults, accessor));\n }\n\n /**\n * Adds a texture to the json part\n * @todo: add more properties for texture initialization\n * `sampler`, `name`, `extensions`, `extras`\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#texture\n */\n addTexture(texture: {imageIndex: number}): number {\n const {imageIndex} = texture;\n const glTFTexture = {\n source: imageIndex\n };\n\n this.json.textures = this.json.textures || [];\n this.json.textures.push(glTFTexture);\n return this.json.textures.length - 1;\n }\n\n /** Adds a material to the json part */\n addMaterial(pbrMaterialInfo: Object): number {\n this.json.materials = this.json.materials || [];\n this.json.materials.push(pbrMaterialInfo);\n return this.json.materials.length - 1;\n }\n\n /** Pack the binary chunk */\n createBinaryChunk(): void {\n // Encoder expects this array undefined or empty\n this.gltf.buffers = [];\n\n // Allocate total array\n const totalByteLength = this.byteLength;\n const arrayBuffer = new ArrayBuffer(totalByteLength);\n const targetArray = new Uint8Array(arrayBuffer);\n\n // Copy each array into\n let dstByteOffset = 0;\n for (const sourceBuffer of this.sourceBuffers || []) {\n dstByteOffset = copyToArray(sourceBuffer, targetArray, dstByteOffset);\n }\n\n // Update the glTF BIN CHUNK byte length\n if (this.json?.buffers?.[0]) {\n this.json.buffers[0].byteLength = totalByteLength;\n } else {\n this.json.buffers = [{byteLength: totalByteLength}];\n }\n\n // Save generated arrayBuffer\n this.gltf.binary = arrayBuffer;\n\n // Put arrayBuffer to sourceBuffers for possible additional writing data in the chunk\n this.sourceBuffers = [arrayBuffer];\n }\n\n // PRIVATE\n\n _removeStringFromArray(array, string) {\n let found = true;\n while (found) {\n const index = array.indexOf(string);\n if (index > -1) {\n array.splice(index, 1);\n } else {\n found = false;\n }\n }\n }\n\n /**\n * Add attributes to buffers and create `attributes` object which is part of `mesh`\n */\n _addAttributes(attributes = {}) {\n const result = {};\n for (const attributeKey in attributes) {\n const attributeData = attributes[attributeKey];\n const attrName = this._getGltfAttributeName(attributeKey);\n const accessor = this.addBinaryBuffer(attributeData.value, attributeData);\n result[attrName] = accessor;\n }\n return result;\n }\n\n /**\n * Add indices to buffers\n */\n _addIndices(indices) {\n return this.addBinaryBuffer(indices, {size: 1});\n }\n\n /**\n * Deduce gltf specific attribue name from input attribute name\n */\n _getGltfAttributeName(attributeName) {\n switch (attributeName.toLowerCase()) {\n case 'position':\n case 'positions':\n case 'vertices':\n return 'POSITION';\n case 'normal':\n case 'normals':\n return 'NORMAL';\n case 'color':\n case 'colors':\n return 'COLOR_0';\n case 'texcoord':\n case 'texcoords':\n return 'TEXCOORD_0';\n default:\n return attributeName;\n }\n }\n\n /**\n * Calculate `min` and `max` arrays of accessor according to spec:\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#reference-accessor\n */\n _getAccessorMinMax(buffer, size) {\n const result = {min: null, max: null};\n if (buffer.length < size) {\n return result;\n }\n // @ts-ignore\n result.min = [];\n // @ts-ignore\n result.max = [];\n const initValues = buffer.subarray(0, size);\n for (const value of initValues) {\n // @ts-ignore\n result.min.push(value);\n // @ts-ignore\n result.max.push(value);\n }\n\n for (let index = size; index < buffer.length; index += size) {\n for (let componentIndex = 0; componentIndex < size; componentIndex++) {\n // @ts-ignore\n result.min[0 + componentIndex] = Math.min(\n // @ts-ignore\n result.min[0 + componentIndex],\n buffer[index + componentIndex]\n );\n // @ts-ignore\n result.max[0 + componentIndex] = Math.max(\n // @ts-ignore\n result.max[0 + componentIndex],\n buffer[index + componentIndex]\n );\n }\n }\n return result;\n }\n}\n"],"mappings":"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"}