@loaders.gl/draco 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 (56) hide show
  1. package/dist/dist.min.js.map +2 -2
  2. package/dist/draco-loader.js +1 -1
  3. package/dist/draco-nodejs-worker.js +54 -54
  4. package/dist/draco-nodejs-worker.js.map +2 -2
  5. package/dist/draco-worker.js +1 -1
  6. package/dist/draco-worker.js.map +2 -2
  7. package/dist/draco-writer-nodejs-worker.js +55 -55
  8. package/dist/draco-writer-nodejs-worker.js.map +2 -2
  9. package/dist/draco-writer-worker.js +2 -2
  10. package/dist/draco-writer-worker.js.map +2 -2
  11. package/dist/es5/draco-loader.js +0 -2
  12. package/dist/es5/draco-loader.js.map +1 -1
  13. package/dist/es5/draco-writer-nodejs.js.map +1 -1
  14. package/dist/es5/draco-writer.js +18 -21
  15. package/dist/es5/draco-writer.js.map +1 -1
  16. package/dist/es5/draco3d/draco3d-types.js +16 -16
  17. package/dist/es5/draco3d/draco3d-types.js.map +1 -1
  18. package/dist/es5/index.js +17 -20
  19. package/dist/es5/index.js.map +1 -1
  20. package/dist/es5/lib/draco-builder.js +12 -41
  21. package/dist/es5/lib/draco-builder.js.map +1 -1
  22. package/dist/es5/lib/draco-module-loader.js +95 -104
  23. package/dist/es5/lib/draco-module-loader.js.map +1 -1
  24. package/dist/es5/lib/draco-parser.js +16 -61
  25. package/dist/es5/lib/draco-parser.js.map +1 -1
  26. package/dist/es5/lib/utils/get-draco-schema.js.map +1 -1
  27. package/dist/es5/lib/utils/version.js +1 -1
  28. package/dist/es5/lib/utils/version.js.map +1 -1
  29. package/dist/es5/workers/draco-nodejs-worker.js.map +1 -1
  30. package/dist/es5/workers/draco-worker.js.map +1 -1
  31. package/dist/es5/workers/draco-writer-nodejs-worker.js +29 -31
  32. package/dist/es5/workers/draco-writer-nodejs-worker.js.map +1 -1
  33. package/dist/es5/workers/draco-writer-worker.js +29 -31
  34. package/dist/es5/workers/draco-writer-worker.js.map +1 -1
  35. package/dist/esm/bundle.js +0 -1
  36. package/dist/esm/bundle.js.map +1 -1
  37. package/dist/esm/draco-loader.js +0 -1
  38. package/dist/esm/draco-loader.js.map +1 -1
  39. package/dist/esm/draco-writer-nodejs.js +0 -1
  40. package/dist/esm/draco-writer-nodejs.js.map +1 -1
  41. package/dist/esm/draco-writer.js +0 -1
  42. package/dist/esm/draco-writer.js.map +1 -1
  43. package/dist/esm/draco3d/draco3d-types.js +12 -18
  44. package/dist/esm/draco3d/draco3d-types.js.map +1 -1
  45. package/dist/esm/index.js +0 -5
  46. package/dist/esm/index.js.map +1 -1
  47. package/dist/esm/lib/draco-builder.js +0 -17
  48. package/dist/esm/lib/draco-builder.js.map +1 -1
  49. package/dist/esm/lib/draco-module-loader.js +0 -6
  50. package/dist/esm/lib/draco-module-loader.js.map +1 -1
  51. package/dist/esm/lib/draco-parser.js +0 -28
  52. package/dist/esm/lib/draco-parser.js.map +1 -1
  53. package/dist/esm/lib/utils/get-draco-schema.js.map +1 -1
  54. package/dist/esm/lib/utils/version.js +1 -2
  55. package/dist/esm/lib/utils/version.js.map +1 -1
  56. package/package.json +6 -6
@@ -14,14 +14,13 @@ var _schema = require("@loaders.gl/schema");
14
14
  var _getDracoSchema = require("./utils/get-draco-schema");
15
15
  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; } } }; }
16
16
  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); }
17
- 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; }
17
+ 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
18
  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; }
19
19
  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; }
20
20
  var GEOMETRY_TYPE = {
21
21
  TRIANGULAR_MESH: 0,
22
22
  POINT_CLOUD: 1
23
23
  };
24
-
25
24
  var DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP = {
26
25
  POSITION: 'POSITION',
27
26
  NORMAL: 'NORMAL',
@@ -48,19 +47,15 @@ var DracoParser = function () {
48
47
  this.decoder = new this.draco.Decoder();
49
48
  this.metadataQuerier = new this.draco.MetadataQuerier();
50
49
  }
51
-
52
50
  (0, _createClass2.default)(DracoParser, [{
53
51
  key: "destroy",
54
- value:
55
- function destroy() {
52
+ value: function destroy() {
56
53
  this.draco.destroy(this.decoder);
57
54
  this.draco.destroy(this.metadataQuerier);
58
55
  }
59
-
60
56
  }, {
61
57
  key: "parseSync",
62
- value:
63
- function parseSync(arrayBuffer) {
58
+ value: function parseSync(arrayBuffer) {
64
59
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
65
60
  var buffer = new this.draco.DecoderBuffer();
66
61
  buffer.Init(new Int8Array(arrayBuffer), arrayBuffer.byteLength);
@@ -105,12 +100,9 @@ var DracoParser = function () {
105
100
  }
106
101
  }
107
102
  }
108
-
109
103
  }, {
110
104
  key: "_getDracoLoaderData",
111
- value:
112
-
113
- function _getDracoLoaderData(dracoGeometry, geometry_type, options) {
105
+ value: function _getDracoLoaderData(dracoGeometry, geometry_type, options) {
114
106
  var metadata = this._getTopLevelMetadata(dracoGeometry);
115
107
  var attributes = this._getDracoAttributes(dracoGeometry, options);
116
108
  return {
@@ -122,11 +114,9 @@ var DracoParser = function () {
122
114
  attributes: attributes
123
115
  };
124
116
  }
125
-
126
117
  }, {
127
118
  key: "_getDracoAttributes",
128
- value:
129
- function _getDracoAttributes(dracoGeometry, options) {
119
+ value: function _getDracoAttributes(dracoGeometry, options) {
130
120
  var dracoAttributes = {};
131
121
  for (var attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {
132
122
  var dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);
@@ -142,7 +132,6 @@ var DracoParser = function () {
142
132
  attribute_index: attributeId,
143
133
  metadata: metadata
144
134
  };
145
-
146
135
  var quantization = this._getQuantizationTransform(dracoAttribute, options);
147
136
  if (quantization) {
148
137
  dracoAttributes[dracoAttribute.unique_id()].quantization_transform = quantization;
@@ -154,17 +143,14 @@ var DracoParser = function () {
154
143
  }
155
144
  return dracoAttributes;
156
145
  }
157
-
158
146
  }, {
159
147
  key: "_getMeshData",
160
- value:
161
- function _getMeshData(dracoGeometry, loaderData, options) {
148
+ value: function _getMeshData(dracoGeometry, loaderData, options) {
162
149
  var attributes = this._getMeshAttributes(loaderData, dracoGeometry, options);
163
150
  var positionAttribute = attributes.POSITION;
164
151
  if (!positionAttribute) {
165
152
  throw new Error('DRACO: No position attribute found.');
166
153
  }
167
-
168
154
  if (dracoGeometry instanceof this.draco.Mesh) {
169
155
  switch (options.topology) {
170
156
  case 'triangle-strip':
@@ -190,7 +176,6 @@ var DracoParser = function () {
190
176
  };
191
177
  }
192
178
  }
193
-
194
179
  return {
195
180
  topology: 'point-list',
196
181
  mode: 0,
@@ -218,12 +203,9 @@ var DracoParser = function () {
218
203
  }
219
204
  return attributes;
220
205
  }
221
-
222
206
  }, {
223
207
  key: "_getTriangleListIndices",
224
- value:
225
-
226
- function _getTriangleListIndices(dracoGeometry) {
208
+ value: function _getTriangleListIndices(dracoGeometry) {
227
209
  var numFaces = dracoGeometry.num_faces();
228
210
  var numIndices = numFaces * 3;
229
211
  var byteLength = numIndices * INDEX_ITEM_SIZE;
@@ -235,11 +217,9 @@ var DracoParser = function () {
235
217
  this.draco._free(ptr);
236
218
  }
237
219
  }
238
-
239
220
  }, {
240
221
  key: "_getTriangleStripIndices",
241
- value:
242
- function _getTriangleStripIndices(dracoGeometry) {
222
+ value: function _getTriangleStripIndices(dracoGeometry) {
243
223
  var dracoArray = new this.draco.DracoInt32Array();
244
224
  try {
245
225
  this.decoder.GetTriangleStripsFromMesh(dracoGeometry, dracoArray);
@@ -248,11 +228,9 @@ var DracoParser = function () {
248
228
  this.draco.destroy(dracoArray);
249
229
  }
250
230
  }
251
-
252
231
  }, {
253
232
  key: "_getAttributeValues",
254
- value:
255
- function _getAttributeValues(dracoGeometry, attribute) {
233
+ value: function _getAttributeValues(dracoGeometry, attribute) {
256
234
  var TypedArrayCtor = DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP[attribute.data_type];
257
235
  var numComponents = attribute.num_components;
258
236
  var numPoints = dracoGeometry.num_points();
@@ -273,12 +251,9 @@ var DracoParser = function () {
273
251
  size: numComponents
274
252
  };
275
253
  }
276
-
277
254
  }, {
278
255
  key: "_deduceAttributeName",
279
- value:
280
-
281
- function _deduceAttributeName(attribute, options) {
256
+ value: function _deduceAttributeName(attribute, options) {
282
257
  var uniqueId = attribute.unique_id;
283
258
  for (var _i2 = 0, _Object$entries = Object.entries(options.extraAttributes || {}); _i2 < _Object$entries.length; _i2++) {
284
259
  var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i2], 2),
@@ -288,7 +263,6 @@ var DracoParser = function () {
288
263
  return _attributeName2;
289
264
  }
290
265
  }
291
-
292
266
  var thisAttributeType = attribute.attribute_type;
293
267
  for (var dracoAttributeConstant in DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP) {
294
268
  var attributeType = this.draco[dracoAttributeConstant];
@@ -296,36 +270,27 @@ var DracoParser = function () {
296
270
  return DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP[dracoAttributeConstant];
297
271
  }
298
272
  }
299
-
300
273
  var entryName = options.attributeNameEntry || 'name';
301
274
  if (attribute.metadata[entryName]) {
302
275
  return attribute.metadata[entryName].string;
303
276
  }
304
-
305
277
  return "CUSTOM_ATTRIBUTE_".concat(uniqueId);
306
278
  }
307
-
308
279
  }, {
309
280
  key: "_getTopLevelMetadata",
310
- value:
311
-
312
- function _getTopLevelMetadata(dracoGeometry) {
281
+ value: function _getTopLevelMetadata(dracoGeometry) {
313
282
  var dracoMetadata = this.decoder.GetMetadata(dracoGeometry);
314
283
  return this._getDracoMetadata(dracoMetadata);
315
284
  }
316
-
317
285
  }, {
318
286
  key: "_getAttributeMetadata",
319
- value:
320
- function _getAttributeMetadata(dracoGeometry, attributeId) {
287
+ value: function _getAttributeMetadata(dracoGeometry, attributeId) {
321
288
  var dracoMetadata = this.decoder.GetAttributeMetadata(dracoGeometry, attributeId);
322
289
  return this._getDracoMetadata(dracoMetadata);
323
290
  }
324
-
325
291
  }, {
326
292
  key: "_getDracoMetadata",
327
- value:
328
- function _getDracoMetadata(dracoMetadata) {
293
+ value: function _getDracoMetadata(dracoMetadata) {
329
294
  if (!dracoMetadata || !dracoMetadata.ptr) {
330
295
  return {};
331
296
  }
@@ -337,11 +302,9 @@ var DracoParser = function () {
337
302
  }
338
303
  return result;
339
304
  }
340
-
341
305
  }, {
342
306
  key: "_getDracoMetadataField",
343
- value:
344
- function _getDracoMetadataField(dracoMetadata, entryName) {
307
+ value: function _getDracoMetadataField(dracoMetadata, entryName) {
345
308
  var dracoArray = new this.draco.DracoInt32Array();
346
309
  try {
347
310
  this.metadataQuerier.GetIntEntryArray(dracoMetadata, entryName, dracoArray);
@@ -356,12 +319,9 @@ var DracoParser = function () {
356
319
  this.draco.destroy(dracoArray);
357
320
  }
358
321
  }
359
-
360
322
  }, {
361
323
  key: "_disableAttributeTransforms",
362
- value:
363
-
364
- function _disableAttributeTransforms(options) {
324
+ value: function _disableAttributeTransforms(options) {
365
325
  var _options$quantizedAtt = options.quantizedAttributes,
366
326
  quantizedAttributes = _options$quantizedAtt === void 0 ? [] : _options$quantizedAtt,
367
327
  _options$octahedronAt = options.octahedronAttributes,
@@ -380,11 +340,9 @@ var DracoParser = function () {
380
340
  _iterator.f();
381
341
  }
382
342
  }
383
-
384
343
  }, {
385
344
  key: "_getQuantizationTransform",
386
- value:
387
- function _getQuantizationTransform(dracoAttribute, options) {
345
+ value: function _getQuantizationTransform(dracoAttribute, options) {
388
346
  var _this = this;
389
347
  var _options$quantizedAtt2 = options.quantizedAttributes,
390
348
  quantizedAttributes = _options$quantizedAtt2 === void 0 ? [] : _options$quantizedAtt2;
@@ -434,7 +392,6 @@ var DracoParser = function () {
434
392
  }
435
393
  return null;
436
394
  }
437
-
438
395
  }]);
439
396
  return DracoParser;
440
397
  }();
@@ -459,7 +416,6 @@ function getDracoDataType(draco, attributeType) {
459
416
  return draco.DT_INVALID;
460
417
  }
461
418
  }
462
-
463
419
  function getInt32Array(dracoArray) {
464
420
  var numValues = dracoArray.size();
465
421
  var intArray = new Int32Array(numValues);
@@ -468,7 +424,6 @@ function getInt32Array(dracoArray) {
468
424
  }
469
425
  return intArray;
470
426
  }
471
-
472
427
  function getUint32Array(dracoArray) {
473
428
  var numValues = dracoArray.size();
474
429
  var intArray = new Int32Array(numValues);
@@ -1 +1 @@
1
- {"version":3,"file":"draco-parser.js","names":["GEOMETRY_TYPE","TRIANGULAR_MESH","POINT_CLOUD","DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP","POSITION","NORMAL","COLOR","TEX_COORD","DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP","Int8Array","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","INDEX_ITEM_SIZE","DracoParser","draco","decoder","Decoder","metadataQuerier","MetadataQuerier","destroy","arrayBuffer","options","buffer","DecoderBuffer","Init","byteLength","_disableAttributeTransforms","geometry_type","GetEncodedGeometryType","dracoGeometry","Mesh","PointCloud","dracoStatus","DecodeBufferToMesh","DecodeBufferToPointCloud","Error","ok","ptr","message","error_msg","loaderData","_getDracoLoaderData","geometry","_getMeshData","boundingBox","getMeshBoundingBox","attributes","schema","getDracoSchema","indices","data","loader","header","vertexCount","num_points","metadata","_getTopLevelMetadata","_getDracoAttributes","num_attributes","num_faces","dracoAttributes","attributeId","dracoAttribute","GetAttribute","_getAttributeMetadata","unique_id","attribute_type","data_type","num_components","byte_offset","byte_stride","normalized","attribute_index","quantization","_getQuantizationTransform","quantization_transform","octahedron","_getOctahedronTransform","octahedron_transform","_getMeshAttributes","positionAttribute","topology","mode","value","_getTriangleStripIndices","size","_getTriangleListIndices","Object","values","loaderAttribute","attributeName","_deduceAttributeName","name","_getAttributeValues","byteOffset","byteStride","numFaces","numIndices","_malloc","GetTrianglesUInt32Array","HEAPF32","slice","_free","dracoArray","DracoInt32Array","GetTriangleStripsFromMesh","getUint32Array","attribute","TypedArrayCtor","numComponents","numPoints","numValues","BYTES_PER_ELEMENT","dataType","getDracoDataType","GetAttributeDataArrayForAllPoints","uniqueId","entries","extraAttributes","attributeUniqueId","thisAttributeType","dracoAttributeConstant","attributeType","entryName","attributeNameEntry","string","dracoMetadata","GetMetadata","_getDracoMetadata","GetAttributeMetadata","result","numEntries","NumEntries","entryIndex","GetEntryName","_getDracoMetadataField","GetIntEntryArray","intArray","getInt32Array","int","GetIntEntry","GetStringEntry","double","GetDoubleEntry","quantizedAttributes","octahedronAttributes","skipAttributes","dracoAttributeName","SkipAttributeTransform","skip","map","type","includes","transform","AttributeQuantizationTransform","InitFromAttribute","quantization_bits","range","min_values","i","min_value","DT_FLOAT32","DT_INT8","DT_INT16","DT_INT32","DT_UINT8","DT_UINT16","DT_UINT32","DT_INVALID","GetValue"],"sources":["../../../src/lib/draco-parser.ts"],"sourcesContent":["/* eslint-disable camelcase */\n\nimport type {TypedArray, MeshAttribute, MeshGeometry} from '@loaders.gl/schema';\n\n// Draco types (input)\nimport type {\n Draco3D,\n Decoder,\n Mesh,\n PointCloud,\n PointAttribute,\n Metadata,\n MetadataQuerier,\n DracoInt32Array,\n draco_DataType\n} from '../draco3d/draco3d-types';\n\n// Parsed data types (output)\nimport type {\n DracoMesh,\n DracoLoaderData,\n DracoAttribute,\n DracoMetadataEntry,\n DracoQuantizationTransform,\n DracoOctahedronTransform\n} from './draco-types';\n\nimport {getMeshBoundingBox} from '@loaders.gl/schema';\nimport {getDracoSchema} from './utils/get-draco-schema';\n\n/**\n * @param topology - How triangle indices should be generated (mesh only)\n * @param attributeNameEntry\n * @param extraAttributes\n * @param quantizedAttributes\n * @param octahedronAttributes\n */\nexport type DracoParseOptions = {\n topology?: 'triangle-list' | 'triangle-strip';\n attributeNameEntry?: string;\n extraAttributes?: {[uniqueId: string]: number};\n quantizedAttributes?: ('POSITION' | 'NORMAL' | 'COLOR' | 'TEX_COORD' | 'GENERIC')[];\n octahedronAttributes?: ('POSITION' | 'NORMAL' | 'COLOR' | 'TEX_COORD' | 'GENERIC')[];\n};\n\n// @ts-ignore\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst GEOMETRY_TYPE = {\n TRIANGULAR_MESH: 0,\n POINT_CLOUD: 1\n};\n\n// Native Draco attribute names to GLTF attribute names.\nconst DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP = {\n POSITION: 'POSITION',\n NORMAL: 'NORMAL',\n COLOR: 'COLOR_0',\n TEX_COORD: 'TEXCOORD_0'\n};\n\nconst DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP = {\n 1: Int8Array,\n 2: Uint8Array,\n 3: Int16Array,\n 4: Uint16Array,\n 5: Int32Array,\n 6: Uint32Array,\n 9: Float32Array\n};\n\nconst INDEX_ITEM_SIZE = 4;\n\nexport default class DracoParser {\n draco: Draco3D;\n decoder: Decoder;\n metadataQuerier: MetadataQuerier;\n\n // draco - the draco decoder, either import `draco3d` or load dynamically\n constructor(draco: Draco3D) {\n this.draco = draco;\n this.decoder = new this.draco.Decoder();\n this.metadataQuerier = new this.draco.MetadataQuerier();\n }\n\n /**\n * Destroy draco resources\n */\n destroy(): void {\n this.draco.destroy(this.decoder);\n this.draco.destroy(this.metadataQuerier);\n }\n\n /**\n * NOTE: caller must call `destroyGeometry` on the return value after using it\n * @param arrayBuffer\n * @param options\n */\n parseSync(arrayBuffer: ArrayBuffer, options: DracoParseOptions = {}): DracoMesh {\n const buffer = new this.draco.DecoderBuffer();\n buffer.Init(new Int8Array(arrayBuffer), arrayBuffer.byteLength);\n\n this._disableAttributeTransforms(options);\n\n const geometry_type = this.decoder.GetEncodedGeometryType(buffer);\n const dracoGeometry =\n geometry_type === this.draco.TRIANGULAR_MESH\n ? new this.draco.Mesh()\n : new this.draco.PointCloud();\n\n try {\n let dracoStatus;\n switch (geometry_type) {\n case this.draco.TRIANGULAR_MESH:\n dracoStatus = this.decoder.DecodeBufferToMesh(buffer, dracoGeometry as Mesh);\n break;\n\n case this.draco.POINT_CLOUD:\n dracoStatus = this.decoder.DecodeBufferToPointCloud(buffer, dracoGeometry);\n break;\n\n default:\n throw new Error('DRACO: Unknown geometry type.');\n }\n\n if (!dracoStatus.ok() || !dracoGeometry.ptr) {\n const message = `DRACO decompression failed: ${dracoStatus.error_msg()}`;\n // console.error(message);\n throw new Error(message);\n }\n\n const loaderData = this._getDracoLoaderData(dracoGeometry, geometry_type, options);\n\n const geometry = this._getMeshData(dracoGeometry, loaderData, options);\n\n const boundingBox = getMeshBoundingBox(geometry.attributes);\n\n const schema = getDracoSchema(geometry.attributes, loaderData, geometry.indices);\n\n const data: DracoMesh = {\n loader: 'draco',\n loaderData,\n header: {\n vertexCount: dracoGeometry.num_points(),\n boundingBox\n },\n ...geometry,\n schema\n };\n return data;\n } finally {\n this.draco.destroy(buffer);\n if (dracoGeometry) {\n this.draco.destroy(dracoGeometry);\n }\n }\n }\n\n // Draco specific \"loader data\"\n\n /**\n * Extract\n * @param dracoGeometry\n * @param geometry_type\n * @param options\n * @returns\n */\n _getDracoLoaderData(\n dracoGeometry: Mesh | PointCloud,\n geometry_type,\n options: DracoParseOptions\n ): DracoLoaderData {\n const metadata = this._getTopLevelMetadata(dracoGeometry);\n const attributes = this._getDracoAttributes(dracoGeometry, options);\n\n return {\n geometry_type,\n num_attributes: dracoGeometry.num_attributes(),\n num_points: dracoGeometry.num_points(),\n num_faces: dracoGeometry instanceof this.draco.Mesh ? dracoGeometry.num_faces() : 0,\n metadata,\n attributes\n };\n }\n\n /**\n * Extract all draco provided information and metadata for each attribute\n * @param dracoGeometry\n * @param options\n * @returns\n */\n _getDracoAttributes(\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[unique_id: number]: DracoAttribute} {\n const dracoAttributes: {[unique_id: number]: DracoAttribute} = {};\n\n for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {\n // Note: Draco docs do not seem clear on `GetAttribute` ids just being a zero-based index,\n // but it does seems to work this way\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);\n\n const metadata = this._getAttributeMetadata(dracoGeometry, attributeId);\n\n dracoAttributes[dracoAttribute.unique_id()] = {\n unique_id: dracoAttribute.unique_id(),\n attribute_type: dracoAttribute.attribute_type(),\n data_type: dracoAttribute.data_type(),\n num_components: dracoAttribute.num_components(),\n\n byte_offset: dracoAttribute.byte_offset(),\n byte_stride: dracoAttribute.byte_stride(),\n normalized: dracoAttribute.normalized(),\n attribute_index: attributeId,\n\n metadata\n };\n\n // Add transformation parameters for any attributes app wants untransformed\n const quantization = this._getQuantizationTransform(dracoAttribute, options);\n if (quantization) {\n dracoAttributes[dracoAttribute.unique_id()].quantization_transform = quantization;\n }\n\n const octahedron = this._getOctahedronTransform(dracoAttribute, options);\n if (octahedron) {\n dracoAttributes[dracoAttribute.unique_id()].octahedron_transform = octahedron;\n }\n }\n\n return dracoAttributes;\n }\n\n /**\n * Get standard loaders.gl mesh category data\n * Extracts the geometry from draco\n * @param dracoGeometry\n * @param options\n */\n _getMeshData(\n dracoGeometry: Mesh | PointCloud,\n loaderData: DracoLoaderData,\n options: DracoParseOptions\n ): MeshGeometry {\n const attributes = this._getMeshAttributes(loaderData, dracoGeometry, options);\n\n const positionAttribute = attributes.POSITION;\n if (!positionAttribute) {\n throw new Error('DRACO: No position attribute found.');\n }\n\n // For meshes, we need indices to define the faces.\n if (dracoGeometry instanceof this.draco.Mesh) {\n switch (options.topology) {\n case 'triangle-strip':\n return {\n topology: 'triangle-strip',\n mode: 4, // GL.TRIANGLES\n attributes,\n indices: {\n value: this._getTriangleStripIndices(dracoGeometry),\n size: 1\n }\n };\n case 'triangle-list':\n default:\n return {\n topology: 'triangle-list',\n mode: 5, // GL.TRIANGLE_STRIP\n attributes,\n indices: {\n value: this._getTriangleListIndices(dracoGeometry),\n size: 1\n }\n };\n }\n }\n\n // PointCloud - must come last as Mesh inherits from PointCloud\n return {\n topology: 'point-list',\n mode: 0, // GL.POINTS\n attributes\n };\n }\n\n _getMeshAttributes(\n loaderData: DracoLoaderData,\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[attributeName: string]: MeshAttribute} {\n const attributes: {[key: string]: MeshAttribute} = {};\n\n for (const loaderAttribute of Object.values(loaderData.attributes)) {\n const attributeName = this._deduceAttributeName(loaderAttribute, options);\n loaderAttribute.name = attributeName;\n const {value, size} = this._getAttributeValues(dracoGeometry, loaderAttribute);\n attributes[attributeName] = {\n value,\n size,\n byteOffset: loaderAttribute.byte_offset,\n byteStride: loaderAttribute.byte_stride,\n normalized: loaderAttribute.normalized\n };\n }\n\n return attributes;\n }\n\n // MESH INDICES EXTRACTION\n\n /**\n * For meshes, we need indices to define the faces.\n * @param dracoGeometry\n */\n _getTriangleListIndices(dracoGeometry: Mesh) {\n // Example on how to retrieve mesh and attributes.\n const numFaces = dracoGeometry.num_faces();\n const numIndices = numFaces * 3;\n const byteLength = numIndices * INDEX_ITEM_SIZE;\n\n const ptr = this.draco._malloc(byteLength);\n try {\n this.decoder.GetTrianglesUInt32Array(dracoGeometry, byteLength, ptr);\n return new Uint32Array(this.draco.HEAPF32.buffer, ptr, numIndices).slice();\n } finally {\n this.draco._free(ptr);\n }\n }\n\n /**\n * For meshes, we need indices to define the faces.\n * @param dracoGeometry\n */\n _getTriangleStripIndices(dracoGeometry: Mesh) {\n const dracoArray = new this.draco.DracoInt32Array();\n try {\n /* const numStrips = */ this.decoder.GetTriangleStripsFromMesh(dracoGeometry, dracoArray);\n return getUint32Array(dracoArray);\n } finally {\n this.draco.destroy(dracoArray);\n }\n }\n\n /**\n *\n * @param dracoGeometry\n * @param dracoAttribute\n * @param attributeName\n */\n _getAttributeValues(\n dracoGeometry: Mesh | PointCloud,\n attribute: DracoAttribute\n ): {value: TypedArray; size: number} {\n const TypedArrayCtor = DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP[attribute.data_type];\n const numComponents = attribute.num_components;\n const numPoints = dracoGeometry.num_points();\n const numValues = numPoints * numComponents;\n\n const byteLength = numValues * TypedArrayCtor.BYTES_PER_ELEMENT;\n const dataType = getDracoDataType(this.draco, TypedArrayCtor);\n\n let value: TypedArray;\n\n const ptr = this.draco._malloc(byteLength);\n try {\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attribute.attribute_index);\n this.decoder.GetAttributeDataArrayForAllPoints(\n dracoGeometry,\n dracoAttribute,\n dataType,\n byteLength,\n ptr\n );\n value = new TypedArrayCtor(this.draco.HEAPF32.buffer, ptr, numValues).slice();\n } finally {\n this.draco._free(ptr);\n }\n\n return {value, size: numComponents};\n }\n\n // Attribute names\n\n /** \n * DRACO does not store attribute names - We need to deduce an attribute name\n * for each attribute\n _getAttributeNames(\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[unique_id: number]: string} {\n const attributeNames: {[unique_id: number]: string} = {};\n for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);\n const attributeName = this._deduceAttributeName(dracoAttribute, options);\n attributeNames[attributeName] = attributeName;\n }\n return attributeNames;\n }\n */\n\n /**\n * Deduce an attribute name.\n * @note DRACO does not save attribute names, just general type (POSITION, COLOR)\n * to help optimize compression. We generate GLTF compatible names for the Draco-recognized\n * types\n * @param attributeData\n */\n _deduceAttributeName(attribute: DracoAttribute, options: DracoParseOptions): string {\n // Deduce name based on application provided map\n const uniqueId = attribute.unique_id;\n for (const [attributeName, attributeUniqueId] of Object.entries(\n options.extraAttributes || {}\n )) {\n if (attributeUniqueId === uniqueId) {\n return attributeName;\n }\n }\n\n // Deduce name based on attribute type\n const thisAttributeType = attribute.attribute_type;\n for (const dracoAttributeConstant in DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP) {\n const attributeType = this.draco[dracoAttributeConstant];\n if (attributeType === thisAttributeType) {\n // TODO - Return unique names if there multiple attributes per type\n // (e.g. multiple TEX_COORDS or COLORS)\n return DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP[dracoAttributeConstant];\n }\n }\n\n // Look up in metadata\n // TODO - shouldn't this have priority?\n const entryName = options.attributeNameEntry || 'name';\n if (attribute.metadata[entryName]) {\n return attribute.metadata[entryName].string;\n }\n\n // Attribute of \"GENERIC\" type, we need to assign some name\n return `CUSTOM_ATTRIBUTE_${uniqueId}`;\n }\n\n // METADATA EXTRACTION\n\n /** Get top level metadata */\n _getTopLevelMetadata(dracoGeometry: Mesh | PointCloud) {\n const dracoMetadata = this.decoder.GetMetadata(dracoGeometry);\n return this._getDracoMetadata(dracoMetadata);\n }\n\n /** Get per attribute metadata */\n _getAttributeMetadata(dracoGeometry: Mesh | PointCloud, attributeId: number) {\n const dracoMetadata = this.decoder.GetAttributeMetadata(dracoGeometry, attributeId);\n return this._getDracoMetadata(dracoMetadata);\n }\n\n /**\n * Extract metadata field values\n * @param dracoMetadata\n * @returns\n */\n _getDracoMetadata(dracoMetadata: Metadata): {[entry: string]: DracoMetadataEntry} {\n // The not so wonderful world of undocumented Draco APIs :(\n if (!dracoMetadata || !dracoMetadata.ptr) {\n return {};\n }\n const result = {};\n const numEntries = this.metadataQuerier.NumEntries(dracoMetadata);\n for (let entryIndex = 0; entryIndex < numEntries; entryIndex++) {\n const entryName = this.metadataQuerier.GetEntryName(dracoMetadata, entryIndex);\n result[entryName] = this._getDracoMetadataField(dracoMetadata, entryName);\n }\n return result;\n }\n\n /**\n * Extracts possible values for one metadata entry by name\n * @param dracoMetadata\n * @param entryName\n */\n _getDracoMetadataField(dracoMetadata: Metadata, entryName: string): DracoMetadataEntry {\n const dracoArray = new this.draco.DracoInt32Array();\n try {\n // Draco metadata fields can hold int32 arrays\n this.metadataQuerier.GetIntEntryArray(dracoMetadata, entryName, dracoArray);\n const intArray = getInt32Array(dracoArray);\n return {\n int: this.metadataQuerier.GetIntEntry(dracoMetadata, entryName),\n string: this.metadataQuerier.GetStringEntry(dracoMetadata, entryName),\n double: this.metadataQuerier.GetDoubleEntry(dracoMetadata, entryName),\n intArray\n };\n } finally {\n this.draco.destroy(dracoArray);\n }\n }\n\n // QUANTIZED ATTRIBUTE SUPPORT (NO DECOMPRESSION)\n\n /** Skip transforms for specific attribute types */\n _disableAttributeTransforms(options: DracoParseOptions) {\n const {quantizedAttributes = [], octahedronAttributes = []} = options;\n const skipAttributes = [...quantizedAttributes, ...octahedronAttributes];\n for (const dracoAttributeName of skipAttributes) {\n this.decoder.SkipAttributeTransform(this.draco[dracoAttributeName]);\n }\n }\n\n /**\n * Extract (and apply?) Position Transform\n * @todo not used\n */\n _getQuantizationTransform(\n dracoAttribute: PointAttribute,\n options: DracoParseOptions\n ): DracoQuantizationTransform | null {\n const {quantizedAttributes = []} = options;\n const attribute_type = dracoAttribute.attribute_type();\n const skip = quantizedAttributes.map((type) => this.decoder[type]).includes(attribute_type);\n if (skip) {\n const transform = new this.draco.AttributeQuantizationTransform();\n try {\n if (transform.InitFromAttribute(dracoAttribute)) {\n return {\n quantization_bits: transform.quantization_bits(),\n range: transform.range(),\n min_values: new Float32Array([1, 2, 3]).map((i) => transform.min_value(i))\n };\n }\n } finally {\n this.draco.destroy(transform);\n }\n }\n return null;\n }\n\n _getOctahedronTransform(\n dracoAttribute: PointAttribute,\n options: DracoParseOptions\n ): DracoOctahedronTransform | null {\n const {octahedronAttributes = []} = options;\n const attribute_type = dracoAttribute.attribute_type();\n const octahedron = octahedronAttributes\n .map((type) => this.decoder[type])\n .includes(attribute_type);\n if (octahedron) {\n const transform = new this.draco.AttributeQuantizationTransform();\n try {\n if (transform.InitFromAttribute(dracoAttribute)) {\n return {\n quantization_bits: transform.quantization_bits()\n };\n }\n } finally {\n this.draco.destroy(transform);\n }\n }\n return null;\n }\n\n // HELPERS\n}\n\n/**\n * Get draco specific data type by TypedArray constructor type\n * @param attributeType\n * @returns draco specific data type\n */\nfunction getDracoDataType(draco: Draco3D, attributeType: any): draco_DataType {\n switch (attributeType) {\n case Float32Array:\n return draco.DT_FLOAT32;\n case Int8Array:\n return draco.DT_INT8;\n case Int16Array:\n return draco.DT_INT16;\n case Int32Array:\n return draco.DT_INT32;\n case Uint8Array:\n return draco.DT_UINT8;\n case Uint16Array:\n return draco.DT_UINT16;\n case Uint32Array:\n return draco.DT_UINT32;\n default:\n return draco.DT_INVALID;\n }\n}\n\n/**\n * Copy a Draco int32 array into a JS typed array\n */\nfunction getInt32Array(dracoArray: DracoInt32Array): Int32Array {\n const numValues = dracoArray.size();\n const intArray = new Int32Array(numValues);\n for (let i = 0; i < numValues; i++) {\n intArray[i] = dracoArray.GetValue(i);\n }\n return intArray;\n}\n\n/**\n * Copy a Draco int32 array into a JS typed array\n */\nfunction getUint32Array(dracoArray: DracoInt32Array): Int32Array {\n const numValues = dracoArray.size();\n const intArray = new Int32Array(numValues);\n for (let i = 0; i < numValues; i++) {\n intArray[i] = dracoArray.GetValue(i);\n }\n return intArray;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"draco-parser.js","names":["_schema","require","_getDracoSchema","_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","GEOMETRY_TYPE","TRIANGULAR_MESH","POINT_CLOUD","DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP","POSITION","NORMAL","COLOR","TEX_COORD","DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP","Int8Array","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","INDEX_ITEM_SIZE","DracoParser","draco","_classCallCheck2","decoder","Decoder","metadataQuerier","MetadataQuerier","_createClass2","destroy","parseSync","arrayBuffer","options","undefined","buffer","DecoderBuffer","Init","byteLength","_disableAttributeTransforms","geometry_type","GetEncodedGeometryType","dracoGeometry","Mesh","PointCloud","dracoStatus","DecodeBufferToMesh","DecodeBufferToPointCloud","Error","ok","ptr","message","concat","error_msg","loaderData","_getDracoLoaderData","geometry","_getMeshData","boundingBox","getMeshBoundingBox","attributes","schema","getDracoSchema","indices","data","loader","header","vertexCount","num_points","metadata","_getTopLevelMetadata","_getDracoAttributes","num_attributes","num_faces","dracoAttributes","attributeId","dracoAttribute","GetAttribute","_getAttributeMetadata","unique_id","attribute_type","data_type","num_components","byte_offset","byte_stride","normalized","attribute_index","quantization","_getQuantizationTransform","quantization_transform","octahedron","_getOctahedronTransform","octahedron_transform","_getMeshAttributes","positionAttribute","topology","mode","_getTriangleStripIndices","size","_getTriangleListIndices","_i","_Object$values","values","loaderAttribute","attributeName","_deduceAttributeName","_this$_getAttributeVa","_getAttributeValues","byteOffset","byteStride","numFaces","numIndices","_malloc","GetTrianglesUInt32Array","HEAPF32","_free","dracoArray","DracoInt32Array","GetTriangleStripsFromMesh","getUint32Array","attribute","TypedArrayCtor","numComponents","numPoints","numValues","BYTES_PER_ELEMENT","dataType","getDracoDataType","GetAttributeDataArrayForAllPoints","uniqueId","_i2","_Object$entries","entries","extraAttributes","_Object$entries$_i","_slicedToArray2","attributeUniqueId","thisAttributeType","dracoAttributeConstant","attributeType","entryName","attributeNameEntry","string","dracoMetadata","GetMetadata","_getDracoMetadata","GetAttributeMetadata","result","numEntries","NumEntries","entryIndex","GetEntryName","_getDracoMetadataField","GetIntEntryArray","intArray","getInt32Array","int","GetIntEntry","GetStringEntry","double","GetDoubleEntry","_options$quantizedAtt","quantizedAttributes","_options$octahedronAt","octahedronAttributes","skipAttributes","_toConsumableArray2","_iterator","_step","dracoAttributeName","SkipAttributeTransform","_this","_options$quantizedAtt2","skip","map","type","includes","transform","AttributeQuantizationTransform","InitFromAttribute","quantization_bits","range","min_values","min_value","_this2","_options$octahedronAt2","exports","DT_FLOAT32","DT_INT8","DT_INT16","DT_INT32","DT_UINT8","DT_UINT16","DT_UINT32","DT_INVALID","GetValue"],"sources":["../../../src/lib/draco-parser.ts"],"sourcesContent":["/* eslint-disable camelcase */\n\nimport type {TypedArray, MeshAttribute, MeshGeometry} from '@loaders.gl/schema';\n\n// Draco types (input)\nimport type {\n Draco3D,\n Decoder,\n Mesh,\n PointCloud,\n PointAttribute,\n Metadata,\n MetadataQuerier,\n DracoInt32Array,\n draco_DataType\n} from '../draco3d/draco3d-types';\n\n// Parsed data types (output)\nimport type {\n DracoMesh,\n DracoLoaderData,\n DracoAttribute,\n DracoMetadataEntry,\n DracoQuantizationTransform,\n DracoOctahedronTransform\n} from './draco-types';\n\nimport {getMeshBoundingBox} from '@loaders.gl/schema';\nimport {getDracoSchema} from './utils/get-draco-schema';\n\n/**\n * @param topology - How triangle indices should be generated (mesh only)\n * @param attributeNameEntry\n * @param extraAttributes\n * @param quantizedAttributes\n * @param octahedronAttributes\n */\nexport type DracoParseOptions = {\n topology?: 'triangle-list' | 'triangle-strip';\n attributeNameEntry?: string;\n extraAttributes?: {[uniqueId: string]: number};\n quantizedAttributes?: ('POSITION' | 'NORMAL' | 'COLOR' | 'TEX_COORD' | 'GENERIC')[];\n octahedronAttributes?: ('POSITION' | 'NORMAL' | 'COLOR' | 'TEX_COORD' | 'GENERIC')[];\n};\n\n// @ts-ignore\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst GEOMETRY_TYPE = {\n TRIANGULAR_MESH: 0,\n POINT_CLOUD: 1\n};\n\n// Native Draco attribute names to GLTF attribute names.\nconst DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP = {\n POSITION: 'POSITION',\n NORMAL: 'NORMAL',\n COLOR: 'COLOR_0',\n TEX_COORD: 'TEXCOORD_0'\n};\n\nconst DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP = {\n 1: Int8Array,\n 2: Uint8Array,\n 3: Int16Array,\n 4: Uint16Array,\n 5: Int32Array,\n 6: Uint32Array,\n 9: Float32Array\n};\n\nconst INDEX_ITEM_SIZE = 4;\n\nexport default class DracoParser {\n draco: Draco3D;\n decoder: Decoder;\n metadataQuerier: MetadataQuerier;\n\n // draco - the draco decoder, either import `draco3d` or load dynamically\n constructor(draco: Draco3D) {\n this.draco = draco;\n this.decoder = new this.draco.Decoder();\n this.metadataQuerier = new this.draco.MetadataQuerier();\n }\n\n /**\n * Destroy draco resources\n */\n destroy(): void {\n this.draco.destroy(this.decoder);\n this.draco.destroy(this.metadataQuerier);\n }\n\n /**\n * NOTE: caller must call `destroyGeometry` on the return value after using it\n * @param arrayBuffer\n * @param options\n */\n parseSync(arrayBuffer: ArrayBuffer, options: DracoParseOptions = {}): DracoMesh {\n const buffer = new this.draco.DecoderBuffer();\n buffer.Init(new Int8Array(arrayBuffer), arrayBuffer.byteLength);\n\n this._disableAttributeTransforms(options);\n\n const geometry_type = this.decoder.GetEncodedGeometryType(buffer);\n const dracoGeometry =\n geometry_type === this.draco.TRIANGULAR_MESH\n ? new this.draco.Mesh()\n : new this.draco.PointCloud();\n\n try {\n let dracoStatus;\n switch (geometry_type) {\n case this.draco.TRIANGULAR_MESH:\n dracoStatus = this.decoder.DecodeBufferToMesh(buffer, dracoGeometry as Mesh);\n break;\n\n case this.draco.POINT_CLOUD:\n dracoStatus = this.decoder.DecodeBufferToPointCloud(buffer, dracoGeometry);\n break;\n\n default:\n throw new Error('DRACO: Unknown geometry type.');\n }\n\n if (!dracoStatus.ok() || !dracoGeometry.ptr) {\n const message = `DRACO decompression failed: ${dracoStatus.error_msg()}`;\n // console.error(message);\n throw new Error(message);\n }\n\n const loaderData = this._getDracoLoaderData(dracoGeometry, geometry_type, options);\n\n const geometry = this._getMeshData(dracoGeometry, loaderData, options);\n\n const boundingBox = getMeshBoundingBox(geometry.attributes);\n\n const schema = getDracoSchema(geometry.attributes, loaderData, geometry.indices);\n\n const data: DracoMesh = {\n loader: 'draco',\n loaderData,\n header: {\n vertexCount: dracoGeometry.num_points(),\n boundingBox\n },\n ...geometry,\n schema\n };\n return data;\n } finally {\n this.draco.destroy(buffer);\n if (dracoGeometry) {\n this.draco.destroy(dracoGeometry);\n }\n }\n }\n\n // Draco specific \"loader data\"\n\n /**\n * Extract\n * @param dracoGeometry\n * @param geometry_type\n * @param options\n * @returns\n */\n _getDracoLoaderData(\n dracoGeometry: Mesh | PointCloud,\n geometry_type,\n options: DracoParseOptions\n ): DracoLoaderData {\n const metadata = this._getTopLevelMetadata(dracoGeometry);\n const attributes = this._getDracoAttributes(dracoGeometry, options);\n\n return {\n geometry_type,\n num_attributes: dracoGeometry.num_attributes(),\n num_points: dracoGeometry.num_points(),\n num_faces: dracoGeometry instanceof this.draco.Mesh ? dracoGeometry.num_faces() : 0,\n metadata,\n attributes\n };\n }\n\n /**\n * Extract all draco provided information and metadata for each attribute\n * @param dracoGeometry\n * @param options\n * @returns\n */\n _getDracoAttributes(\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[unique_id: number]: DracoAttribute} {\n const dracoAttributes: {[unique_id: number]: DracoAttribute} = {};\n\n for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {\n // Note: Draco docs do not seem clear on `GetAttribute` ids just being a zero-based index,\n // but it does seems to work this way\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);\n\n const metadata = this._getAttributeMetadata(dracoGeometry, attributeId);\n\n dracoAttributes[dracoAttribute.unique_id()] = {\n unique_id: dracoAttribute.unique_id(),\n attribute_type: dracoAttribute.attribute_type(),\n data_type: dracoAttribute.data_type(),\n num_components: dracoAttribute.num_components(),\n\n byte_offset: dracoAttribute.byte_offset(),\n byte_stride: dracoAttribute.byte_stride(),\n normalized: dracoAttribute.normalized(),\n attribute_index: attributeId,\n\n metadata\n };\n\n // Add transformation parameters for any attributes app wants untransformed\n const quantization = this._getQuantizationTransform(dracoAttribute, options);\n if (quantization) {\n dracoAttributes[dracoAttribute.unique_id()].quantization_transform = quantization;\n }\n\n const octahedron = this._getOctahedronTransform(dracoAttribute, options);\n if (octahedron) {\n dracoAttributes[dracoAttribute.unique_id()].octahedron_transform = octahedron;\n }\n }\n\n return dracoAttributes;\n }\n\n /**\n * Get standard loaders.gl mesh category data\n * Extracts the geometry from draco\n * @param dracoGeometry\n * @param options\n */\n _getMeshData(\n dracoGeometry: Mesh | PointCloud,\n loaderData: DracoLoaderData,\n options: DracoParseOptions\n ): MeshGeometry {\n const attributes = this._getMeshAttributes(loaderData, dracoGeometry, options);\n\n const positionAttribute = attributes.POSITION;\n if (!positionAttribute) {\n throw new Error('DRACO: No position attribute found.');\n }\n\n // For meshes, we need indices to define the faces.\n if (dracoGeometry instanceof this.draco.Mesh) {\n switch (options.topology) {\n case 'triangle-strip':\n return {\n topology: 'triangle-strip',\n mode: 4, // GL.TRIANGLES\n attributes,\n indices: {\n value: this._getTriangleStripIndices(dracoGeometry),\n size: 1\n }\n };\n case 'triangle-list':\n default:\n return {\n topology: 'triangle-list',\n mode: 5, // GL.TRIANGLE_STRIP\n attributes,\n indices: {\n value: this._getTriangleListIndices(dracoGeometry),\n size: 1\n }\n };\n }\n }\n\n // PointCloud - must come last as Mesh inherits from PointCloud\n return {\n topology: 'point-list',\n mode: 0, // GL.POINTS\n attributes\n };\n }\n\n _getMeshAttributes(\n loaderData: DracoLoaderData,\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[attributeName: string]: MeshAttribute} {\n const attributes: {[key: string]: MeshAttribute} = {};\n\n for (const loaderAttribute of Object.values(loaderData.attributes)) {\n const attributeName = this._deduceAttributeName(loaderAttribute, options);\n loaderAttribute.name = attributeName;\n const {value, size} = this._getAttributeValues(dracoGeometry, loaderAttribute);\n attributes[attributeName] = {\n value,\n size,\n byteOffset: loaderAttribute.byte_offset,\n byteStride: loaderAttribute.byte_stride,\n normalized: loaderAttribute.normalized\n };\n }\n\n return attributes;\n }\n\n // MESH INDICES EXTRACTION\n\n /**\n * For meshes, we need indices to define the faces.\n * @param dracoGeometry\n */\n _getTriangleListIndices(dracoGeometry: Mesh) {\n // Example on how to retrieve mesh and attributes.\n const numFaces = dracoGeometry.num_faces();\n const numIndices = numFaces * 3;\n const byteLength = numIndices * INDEX_ITEM_SIZE;\n\n const ptr = this.draco._malloc(byteLength);\n try {\n this.decoder.GetTrianglesUInt32Array(dracoGeometry, byteLength, ptr);\n return new Uint32Array(this.draco.HEAPF32.buffer, ptr, numIndices).slice();\n } finally {\n this.draco._free(ptr);\n }\n }\n\n /**\n * For meshes, we need indices to define the faces.\n * @param dracoGeometry\n */\n _getTriangleStripIndices(dracoGeometry: Mesh) {\n const dracoArray = new this.draco.DracoInt32Array();\n try {\n /* const numStrips = */ this.decoder.GetTriangleStripsFromMesh(dracoGeometry, dracoArray);\n return getUint32Array(dracoArray);\n } finally {\n this.draco.destroy(dracoArray);\n }\n }\n\n /**\n *\n * @param dracoGeometry\n * @param dracoAttribute\n * @param attributeName\n */\n _getAttributeValues(\n dracoGeometry: Mesh | PointCloud,\n attribute: DracoAttribute\n ): {value: TypedArray; size: number} {\n const TypedArrayCtor = DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP[attribute.data_type];\n const numComponents = attribute.num_components;\n const numPoints = dracoGeometry.num_points();\n const numValues = numPoints * numComponents;\n\n const byteLength = numValues * TypedArrayCtor.BYTES_PER_ELEMENT;\n const dataType = getDracoDataType(this.draco, TypedArrayCtor);\n\n let value: TypedArray;\n\n const ptr = this.draco._malloc(byteLength);\n try {\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attribute.attribute_index);\n this.decoder.GetAttributeDataArrayForAllPoints(\n dracoGeometry,\n dracoAttribute,\n dataType,\n byteLength,\n ptr\n );\n value = new TypedArrayCtor(this.draco.HEAPF32.buffer, ptr, numValues).slice();\n } finally {\n this.draco._free(ptr);\n }\n\n return {value, size: numComponents};\n }\n\n // Attribute names\n\n /** \n * DRACO does not store attribute names - We need to deduce an attribute name\n * for each attribute\n _getAttributeNames(\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[unique_id: number]: string} {\n const attributeNames: {[unique_id: number]: string} = {};\n for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);\n const attributeName = this._deduceAttributeName(dracoAttribute, options);\n attributeNames[attributeName] = attributeName;\n }\n return attributeNames;\n }\n */\n\n /**\n * Deduce an attribute name.\n * @note DRACO does not save attribute names, just general type (POSITION, COLOR)\n * to help optimize compression. We generate GLTF compatible names for the Draco-recognized\n * types\n * @param attributeData\n */\n _deduceAttributeName(attribute: DracoAttribute, options: DracoParseOptions): string {\n // Deduce name based on application provided map\n const uniqueId = attribute.unique_id;\n for (const [attributeName, attributeUniqueId] of Object.entries(\n options.extraAttributes || {}\n )) {\n if (attributeUniqueId === uniqueId) {\n return attributeName;\n }\n }\n\n // Deduce name based on attribute type\n const thisAttributeType = attribute.attribute_type;\n for (const dracoAttributeConstant in DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP) {\n const attributeType = this.draco[dracoAttributeConstant];\n if (attributeType === thisAttributeType) {\n // TODO - Return unique names if there multiple attributes per type\n // (e.g. multiple TEX_COORDS or COLORS)\n return DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP[dracoAttributeConstant];\n }\n }\n\n // Look up in metadata\n // TODO - shouldn't this have priority?\n const entryName = options.attributeNameEntry || 'name';\n if (attribute.metadata[entryName]) {\n return attribute.metadata[entryName].string;\n }\n\n // Attribute of \"GENERIC\" type, we need to assign some name\n return `CUSTOM_ATTRIBUTE_${uniqueId}`;\n }\n\n // METADATA EXTRACTION\n\n /** Get top level metadata */\n _getTopLevelMetadata(dracoGeometry: Mesh | PointCloud) {\n const dracoMetadata = this.decoder.GetMetadata(dracoGeometry);\n return this._getDracoMetadata(dracoMetadata);\n }\n\n /** Get per attribute metadata */\n _getAttributeMetadata(dracoGeometry: Mesh | PointCloud, attributeId: number) {\n const dracoMetadata = this.decoder.GetAttributeMetadata(dracoGeometry, attributeId);\n return this._getDracoMetadata(dracoMetadata);\n }\n\n /**\n * Extract metadata field values\n * @param dracoMetadata\n * @returns\n */\n _getDracoMetadata(dracoMetadata: Metadata): {[entry: string]: DracoMetadataEntry} {\n // The not so wonderful world of undocumented Draco APIs :(\n if (!dracoMetadata || !dracoMetadata.ptr) {\n return {};\n }\n const result = {};\n const numEntries = this.metadataQuerier.NumEntries(dracoMetadata);\n for (let entryIndex = 0; entryIndex < numEntries; entryIndex++) {\n const entryName = this.metadataQuerier.GetEntryName(dracoMetadata, entryIndex);\n result[entryName] = this._getDracoMetadataField(dracoMetadata, entryName);\n }\n return result;\n }\n\n /**\n * Extracts possible values for one metadata entry by name\n * @param dracoMetadata\n * @param entryName\n */\n _getDracoMetadataField(dracoMetadata: Metadata, entryName: string): DracoMetadataEntry {\n const dracoArray = new this.draco.DracoInt32Array();\n try {\n // Draco metadata fields can hold int32 arrays\n this.metadataQuerier.GetIntEntryArray(dracoMetadata, entryName, dracoArray);\n const intArray = getInt32Array(dracoArray);\n return {\n int: this.metadataQuerier.GetIntEntry(dracoMetadata, entryName),\n string: this.metadataQuerier.GetStringEntry(dracoMetadata, entryName),\n double: this.metadataQuerier.GetDoubleEntry(dracoMetadata, entryName),\n intArray\n };\n } finally {\n this.draco.destroy(dracoArray);\n }\n }\n\n // QUANTIZED ATTRIBUTE SUPPORT (NO DECOMPRESSION)\n\n /** Skip transforms for specific attribute types */\n _disableAttributeTransforms(options: DracoParseOptions) {\n const {quantizedAttributes = [], octahedronAttributes = []} = options;\n const skipAttributes = [...quantizedAttributes, ...octahedronAttributes];\n for (const dracoAttributeName of skipAttributes) {\n this.decoder.SkipAttributeTransform(this.draco[dracoAttributeName]);\n }\n }\n\n /**\n * Extract (and apply?) Position Transform\n * @todo not used\n */\n _getQuantizationTransform(\n dracoAttribute: PointAttribute,\n options: DracoParseOptions\n ): DracoQuantizationTransform | null {\n const {quantizedAttributes = []} = options;\n const attribute_type = dracoAttribute.attribute_type();\n const skip = quantizedAttributes.map((type) => this.decoder[type]).includes(attribute_type);\n if (skip) {\n const transform = new this.draco.AttributeQuantizationTransform();\n try {\n if (transform.InitFromAttribute(dracoAttribute)) {\n return {\n quantization_bits: transform.quantization_bits(),\n range: transform.range(),\n min_values: new Float32Array([1, 2, 3]).map((i) => transform.min_value(i))\n };\n }\n } finally {\n this.draco.destroy(transform);\n }\n }\n return null;\n }\n\n _getOctahedronTransform(\n dracoAttribute: PointAttribute,\n options: DracoParseOptions\n ): DracoOctahedronTransform | null {\n const {octahedronAttributes = []} = options;\n const attribute_type = dracoAttribute.attribute_type();\n const octahedron = octahedronAttributes\n .map((type) => this.decoder[type])\n .includes(attribute_type);\n if (octahedron) {\n const transform = new this.draco.AttributeQuantizationTransform();\n try {\n if (transform.InitFromAttribute(dracoAttribute)) {\n return {\n quantization_bits: transform.quantization_bits()\n };\n }\n } finally {\n this.draco.destroy(transform);\n }\n }\n return null;\n }\n\n // HELPERS\n}\n\n/**\n * Get draco specific data type by TypedArray constructor type\n * @param attributeType\n * @returns draco specific data type\n */\nfunction getDracoDataType(draco: Draco3D, attributeType: any): draco_DataType {\n switch (attributeType) {\n case Float32Array:\n return draco.DT_FLOAT32;\n case Int8Array:\n return draco.DT_INT8;\n case Int16Array:\n return draco.DT_INT16;\n case Int32Array:\n return draco.DT_INT32;\n case Uint8Array:\n return draco.DT_UINT8;\n case Uint16Array:\n return draco.DT_UINT16;\n case Uint32Array:\n return draco.DT_UINT32;\n default:\n return draco.DT_INVALID;\n }\n}\n\n/**\n * Copy a Draco int32 array into a JS typed array\n */\nfunction getInt32Array(dracoArray: DracoInt32Array): Int32Array {\n const numValues = dracoArray.size();\n const intArray = new Int32Array(numValues);\n for (let i = 0; i < numValues; i++) {\n intArray[i] = dracoArray.GetValue(i);\n }\n return intArray;\n}\n\n/**\n * Copy a Draco int32 array into a JS typed array\n */\nfunction getUint32Array(dracoArray: DracoInt32Array): Int32Array {\n const numValues = dracoArray.size();\n const intArray = new Int32Array(numValues);\n for (let i = 0; i < numValues; i++) {\n intArray[i] = dracoArray.GetValue(i);\n }\n return intArray;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-draco-schema.js","names":["getDracoSchema","attributes","loaderData","indices","metadataMap","makeMetadata","metadata","fields","namedLoaderDataAttributes","transformAttributesLoaderData","attributeName","attribute","field","getArrowFieldFromAttribute","push","indicesField","Schema","result","key","dracoAttribute","name","undefined","deduceMeshField","Map","set","JSON","stringify"],"sources":["../../../../src/lib/utils/get-draco-schema.ts"],"sourcesContent":["import {deduceMeshField, MeshAttribute} from '@loaders.gl/schema';\nimport {Schema, Field} from '@loaders.gl/schema';\nimport type {DracoAttribute, DracoLoaderData, DracoMetadataEntry} from '../draco-types';\n\n/** Extract an arrow-like schema from a Draco mesh */\nexport function getDracoSchema(\n attributes: {[attributeName: string]: MeshAttribute},\n loaderData: DracoLoaderData,\n indices?: MeshAttribute\n): Schema {\n const metadataMap = makeMetadata(loaderData.metadata);\n const fields: Field[] = [];\n const namedLoaderDataAttributes = transformAttributesLoaderData(loaderData.attributes);\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const field = getArrowFieldFromAttribute(\n attributeName,\n attribute,\n namedLoaderDataAttributes[attributeName]\n );\n fields.push(field);\n }\n if (indices) {\n const indicesField = getArrowFieldFromAttribute('indices', indices);\n fields.push(indicesField);\n }\n return new Schema(fields, metadataMap);\n}\n\nfunction transformAttributesLoaderData(loaderData: {[key: number]: DracoAttribute}): {\n [attributeName: string]: DracoAttribute;\n} {\n const result: {[attributeName: string]: DracoAttribute} = {};\n for (const key in loaderData) {\n const dracoAttribute = loaderData[key];\n result[dracoAttribute.name || 'undefined'] = dracoAttribute;\n }\n return result;\n}\n\nfunction getArrowFieldFromAttribute(\n attributeName: string,\n attribute: MeshAttribute,\n loaderData?: DracoAttribute\n): Field {\n const metadataMap = loaderData ? makeMetadata(loaderData.metadata) : undefined;\n const field = deduceMeshField(attributeName, attribute, metadataMap);\n return field;\n}\n\nfunction makeMetadata(metadata: {[key: string]: DracoMetadataEntry}): Map<string, string> {\n const metadataMap = new Map();\n for (const key in metadata) {\n metadataMap.set(`${key}.string`, JSON.stringify(metadata[key]));\n }\n return metadataMap;\n}\n"],"mappings":";;;;;;AAAA;AAKO,SAASA,cAAc,CAC5BC,UAAoD,EACpDC,UAA2B,EAC3BC,OAAuB,EACf;EACR,IAAMC,WAAW,GAAGC,YAAY,CAACH,UAAU,CAACI,QAAQ,CAAC;EACrD,IAAMC,MAAe,GAAG,EAAE;EAC1B,IAAMC,yBAAyB,GAAGC,6BAA6B,CAACP,UAAU,CAACD,UAAU,CAAC;EACtF,KAAK,IAAMS,cAAa,IAAIT,UAAU,EAAE;IACtC,IAAMU,SAAS,GAAGV,UAAU,CAACS,cAAa,CAAC;IAC3C,IAAME,KAAK,GAAGC,0BAA0B,CACtCH,cAAa,EACbC,SAAS,EACTH,yBAAyB,CAACE,cAAa,CAAC,CACzC;IACDH,MAAM,CAACO,IAAI,CAACF,KAAK,CAAC;EACpB;EACA,IAAIT,OAAO,EAAE;IACX,IAAMY,YAAY,GAAGF,0BAA0B,CAAC,SAAS,EAAEV,OAAO,CAAC;IACnEI,MAAM,CAACO,IAAI,CAACC,YAAY,CAAC;EAC3B;EACA,OAAO,IAAIC,cAAM,CAACT,MAAM,EAAEH,WAAW,CAAC;AACxC;AAEA,SAASK,6BAA6B,CAACP,UAA2C,EAEhF;EACA,IAAMe,MAAiD,GAAG,CAAC,CAAC;EAC5D,KAAK,IAAMC,IAAG,IAAIhB,UAAU,EAAE;IAC5B,IAAMiB,cAAc,GAAGjB,UAAU,CAACgB,IAAG,CAAC;IACtCD,MAAM,CAACE,cAAc,CAACC,IAAI,IAAI,WAAW,CAAC,GAAGD,cAAc;EAC7D;EACA,OAAOF,MAAM;AACf;AAEA,SAASJ,0BAA0B,CACjCH,aAAqB,EACrBC,SAAwB,EACxBT,UAA2B,EACpB;EACP,IAAME,WAAW,GAAGF,UAAU,GAAGG,YAAY,CAACH,UAAU,CAACI,QAAQ,CAAC,GAAGe,SAAS;EAC9E,IAAMT,KAAK,GAAG,IAAAU,uBAAe,EAACZ,aAAa,EAAEC,SAAS,EAAEP,WAAW,CAAC;EACpE,OAAOQ,KAAK;AACd;AAEA,SAASP,YAAY,CAACC,QAA6C,EAAuB;EACxF,IAAMF,WAAW,GAAG,IAAImB,GAAG,EAAE;EAC7B,KAAK,IAAML,KAAG,IAAIZ,QAAQ,EAAE;IAC1BF,WAAW,CAACoB,GAAG,WAAIN,KAAG,cAAWO,IAAI,CAACC,SAAS,CAACpB,QAAQ,CAACY,KAAG,CAAC,CAAC,CAAC;EACjE;EACA,OAAOd,WAAW;AACpB"}
1
+ {"version":3,"file":"get-draco-schema.js","names":["_schema","require","getDracoSchema","attributes","loaderData","indices","metadataMap","makeMetadata","metadata","fields","namedLoaderDataAttributes","transformAttributesLoaderData","attributeName","attribute","field","getArrowFieldFromAttribute","push","indicesField","Schema","result","key","dracoAttribute","name","undefined","deduceMeshField","Map","set","concat","JSON","stringify"],"sources":["../../../../src/lib/utils/get-draco-schema.ts"],"sourcesContent":["import {deduceMeshField, MeshAttribute} from '@loaders.gl/schema';\nimport {Schema, Field} from '@loaders.gl/schema';\nimport type {DracoAttribute, DracoLoaderData, DracoMetadataEntry} from '../draco-types';\n\n/** Extract an arrow-like schema from a Draco mesh */\nexport function getDracoSchema(\n attributes: {[attributeName: string]: MeshAttribute},\n loaderData: DracoLoaderData,\n indices?: MeshAttribute\n): Schema {\n const metadataMap = makeMetadata(loaderData.metadata);\n const fields: Field[] = [];\n const namedLoaderDataAttributes = transformAttributesLoaderData(loaderData.attributes);\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const field = getArrowFieldFromAttribute(\n attributeName,\n attribute,\n namedLoaderDataAttributes[attributeName]\n );\n fields.push(field);\n }\n if (indices) {\n const indicesField = getArrowFieldFromAttribute('indices', indices);\n fields.push(indicesField);\n }\n return new Schema(fields, metadataMap);\n}\n\nfunction transformAttributesLoaderData(loaderData: {[key: number]: DracoAttribute}): {\n [attributeName: string]: DracoAttribute;\n} {\n const result: {[attributeName: string]: DracoAttribute} = {};\n for (const key in loaderData) {\n const dracoAttribute = loaderData[key];\n result[dracoAttribute.name || 'undefined'] = dracoAttribute;\n }\n return result;\n}\n\nfunction getArrowFieldFromAttribute(\n attributeName: string,\n attribute: MeshAttribute,\n loaderData?: DracoAttribute\n): Field {\n const metadataMap = loaderData ? makeMetadata(loaderData.metadata) : undefined;\n const field = deduceMeshField(attributeName, attribute, metadataMap);\n return field;\n}\n\nfunction makeMetadata(metadata: {[key: string]: DracoMetadataEntry}): Map<string, string> {\n const metadataMap = new Map();\n for (const key in metadata) {\n metadataMap.set(`${key}.string`, JSON.stringify(metadata[key]));\n }\n return metadataMap;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAKO,SAASC,cAAcA,CAC5BC,UAAoD,EACpDC,UAA2B,EAC3BC,OAAuB,EACf;EACR,IAAMC,WAAW,GAAGC,YAAY,CAACH,UAAU,CAACI,QAAQ,CAAC;EACrD,IAAMC,MAAe,GAAG,EAAE;EAC1B,IAAMC,yBAAyB,GAAGC,6BAA6B,CAACP,UAAU,CAACD,UAAU,CAAC;EACtF,KAAK,IAAMS,cAAa,IAAIT,UAAU,EAAE;IACtC,IAAMU,SAAS,GAAGV,UAAU,CAACS,cAAa,CAAC;IAC3C,IAAME,KAAK,GAAGC,0BAA0B,CACtCH,cAAa,EACbC,SAAS,EACTH,yBAAyB,CAACE,cAAa,CAAC,CACzC;IACDH,MAAM,CAACO,IAAI,CAACF,KAAK,CAAC;EACpB;EACA,IAAIT,OAAO,EAAE;IACX,IAAMY,YAAY,GAAGF,0BAA0B,CAAC,SAAS,EAAEV,OAAO,CAAC;IACnEI,MAAM,CAACO,IAAI,CAACC,YAAY,CAAC;EAC3B;EACA,OAAO,IAAIC,cAAM,CAACT,MAAM,EAAEH,WAAW,CAAC;AACxC;AAEA,SAASK,6BAA6BA,CAACP,UAA2C,EAEhF;EACA,IAAMe,MAAiD,GAAG,CAAC,CAAC;EAC5D,KAAK,IAAMC,IAAG,IAAIhB,UAAU,EAAE;IAC5B,IAAMiB,cAAc,GAAGjB,UAAU,CAACgB,IAAG,CAAC;IACtCD,MAAM,CAACE,cAAc,CAACC,IAAI,IAAI,WAAW,CAAC,GAAGD,cAAc;EAC7D;EACA,OAAOF,MAAM;AACf;AAEA,SAASJ,0BAA0BA,CACjCH,aAAqB,EACrBC,SAAwB,EACxBT,UAA2B,EACpB;EACP,IAAME,WAAW,GAAGF,UAAU,GAAGG,YAAY,CAACH,UAAU,CAACI,QAAQ,CAAC,GAAGe,SAAS;EAC9E,IAAMT,KAAK,GAAG,IAAAU,uBAAe,EAACZ,aAAa,EAAEC,SAAS,EAAEP,WAAW,CAAC;EACpE,OAAOQ,KAAK;AACd;AAEA,SAASP,YAAYA,CAACC,QAA6C,EAAuB;EACxF,IAAMF,WAAW,GAAG,IAAImB,GAAG,EAAE;EAC7B,KAAK,IAAML,KAAG,IAAIZ,QAAQ,EAAE;IAC1BF,WAAW,CAACoB,GAAG,IAAAC,MAAA,CAAIP,KAAG,cAAWQ,IAAI,CAACC,SAAS,CAACrB,QAAQ,CAACY,KAAG,CAAC,CAAC,CAAC;EACjE;EACA,OAAOd,WAAW;AACpB"}
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.VERSION = void 0;
7
- var VERSION = typeof "3.4.0-alpha.1" !== 'undefined' ? "3.4.0-alpha.1" : 'latest';
7
+ var VERSION = typeof "3.4.0-alpha.3" !== 'undefined' ? "3.4.0-alpha.3" : 'latest';
8
8
  exports.VERSION = VERSION;
9
9
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","names":["VERSION"],"sources":["../../../../src/lib/utils/version.ts"],"sourcesContent":["// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n"],"mappings":";;;;;;AAGO,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAAC"}
1
+ {"version":3,"file":"version.js","names":["VERSION","exports"],"sources":["../../../../src/lib/utils/version.ts"],"sourcesContent":["// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n"],"mappings":";;;;;;AAGO,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAACC,OAAA,CAAAD,OAAA,GAAAA,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"draco-nodejs-worker.js","names":["createLoaderWorker","DracoLoader"],"sources":["../../../src/workers/draco-nodejs-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport '@loaders.gl/polyfills';\nimport {DracoLoader} from '../index';\n\ncreateLoaderWorker(DracoLoader);\n"],"mappings":";;AAAA;AACA;AACA;AAEA,IAAAA,+BAAkB,EAACC,kBAAW,CAAC"}
1
+ {"version":3,"file":"draco-nodejs-worker.js","names":["_loaderUtils","require","_index","createLoaderWorker","DracoLoader"],"sources":["../../../src/workers/draco-nodejs-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport '@loaders.gl/polyfills';\nimport {DracoLoader} from '../index';\n\ncreateLoaderWorker(DracoLoader);\n"],"mappings":";;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACAA,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,+BAAkB,EAACC,kBAAW,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"draco-worker.js","names":["createLoaderWorker","DracoLoader"],"sources":["../../../src/workers/draco-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {DracoLoader} from '../index';\n\ncreateLoaderWorker(DracoLoader);\n"],"mappings":";;AAAA;AACA;AAEA,IAAAA,+BAAkB,EAACC,kBAAW,CAAC"}
1
+ {"version":3,"file":"draco-worker.js","names":["_loaderUtils","require","_index","createLoaderWorker","DracoLoader"],"sources":["../../../src/workers/draco-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {DracoLoader} from '../index';\n\ncreateLoaderWorker(DracoLoader);\n"],"mappings":";;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,+BAAkB,EAACC,kBAAW,CAAC"}
@@ -13,37 +13,35 @@ var _dracoWriterNodejs = require("../draco-writer-nodejs");
13
13
  var _ref = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(type, payload) {
14
14
  var input, options, result, message;
15
15
  return _regenerator.default.wrap(function _callee$(_context) {
16
- while (1) {
17
- switch (_context.prev = _context.next) {
18
- case 0:
19
- _context.t0 = type;
20
- _context.next = _context.t0 === 'process' ? 3 : 16;
21
- break;
22
- case 3:
23
- _context.prev = 3;
24
- input = payload.input, options = payload.options;
25
- _context.next = 7;
26
- return _dracoWriterNodejs.DracoWriterNodeJS.encode(input, options);
27
- case 7:
28
- result = _context.sent;
29
- _workerUtils.WorkerBody.postMessage('done', {
30
- result: result
31
- });
32
- _context.next = 15;
33
- break;
34
- case 11:
35
- _context.prev = 11;
36
- _context.t1 = _context["catch"](3);
37
- message = _context.t1 instanceof Error ? _context.t1.message : '';
38
- _workerUtils.WorkerBody.postMessage('error', {
39
- error: message
40
- });
41
- case 15:
42
- return _context.abrupt("break", 16);
43
- case 16:
44
- case "end":
45
- return _context.stop();
46
- }
16
+ while (1) switch (_context.prev = _context.next) {
17
+ case 0:
18
+ _context.t0 = type;
19
+ _context.next = _context.t0 === 'process' ? 3 : 16;
20
+ break;
21
+ case 3:
22
+ _context.prev = 3;
23
+ input = payload.input, options = payload.options;
24
+ _context.next = 7;
25
+ return _dracoWriterNodejs.DracoWriterNodeJS.encode(input, options);
26
+ case 7:
27
+ result = _context.sent;
28
+ _workerUtils.WorkerBody.postMessage('done', {
29
+ result: result
30
+ });
31
+ _context.next = 15;
32
+ break;
33
+ case 11:
34
+ _context.prev = 11;
35
+ _context.t1 = _context["catch"](3);
36
+ message = _context.t1 instanceof Error ? _context.t1.message : '';
37
+ _workerUtils.WorkerBody.postMessage('error', {
38
+ error: message
39
+ });
40
+ case 15:
41
+ return _context.abrupt("break", 16);
42
+ case 16:
43
+ case "end":
44
+ return _context.stop();
47
45
  }
48
46
  }, _callee, null, [[3, 11]]);
49
47
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"draco-writer-nodejs-worker.js","names":["WorkerBody","inWorkerThread","onmessage","type","payload","input","options","DracoWriterNodeJS","encode","result","postMessage","message","Error","error"],"sources":["../../../src/workers/draco-writer-nodejs-worker.ts"],"sourcesContent":["import {WorkerBody, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport {DracoWriterNodeJS} from '../draco-writer-nodejs';\n\n(() => {\n // Check that we are actually in a worker thread\n if (!WorkerBody.inWorkerThread()) {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload: WorkerMessagePayload) => {\n switch (type) {\n case 'process':\n try {\n const {input, options} = payload;\n const result = await DracoWriterNodeJS.encode!(input, options);\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n})();\n"],"mappings":";;;;;AAAA;AACA;AAEA,CAAC,YAAM;EAEL,IAAI,CAACA,uBAAU,CAACC,cAAc,EAAE,EAAE;IAChC;EACF;EAEAD,uBAAU,CAACE,SAAS;IAAA,qEAAG,iBAAOC,IAAI,EAAEC,OAA6B;MAAA;MAAA;QAAA;UAAA;YAAA;cAAA,cACvDD,IAAI;cAAA,gCACL,SAAS;cAAA;YAAA;cAAA;cAEHE,KAAK,GAAaD,OAAO,CAAzBC,KAAK,EAAEC,OAAO,GAAIF,OAAO,CAAlBE,OAAO;cAAA;cAAA,OACAC,oCAAiB,CAACC,MAAM,CAAEH,KAAK,EAAEC,OAAO,CAAC;YAAA;cAAxDG,MAAM;cACZT,uBAAU,CAACU,WAAW,CAAC,MAAM,EAAE;gBAACD,MAAM,EAANA;cAAM,CAAC,CAAC;cAAC;cAAA;YAAA;cAAA;cAAA;cAEnCE,OAAO,GAAG,uBAAiBC,KAAK,GAAG,YAAMD,OAAO,GAAG,EAAE;cAC3DX,uBAAU,CAACU,WAAW,CAAC,OAAO,EAAE;gBAACG,KAAK,EAAEF;cAAO,CAAC,CAAC;YAAC;cAAA;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA,CAKzD;IAAA;MAAA;IAAA;EAAA;AACH,CAAC,GAAG"}
1
+ {"version":3,"file":"draco-writer-nodejs-worker.js","names":["_workerUtils","require","_dracoWriterNodejs","WorkerBody","inWorkerThread","onmessage","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","type","payload","input","options","result","message","wrap","_callee$","_context","prev","next","t0","DracoWriterNodeJS","encode","sent","postMessage","t1","Error","error","abrupt","stop","_x","_x2","apply","arguments"],"sources":["../../../src/workers/draco-writer-nodejs-worker.ts"],"sourcesContent":["import {WorkerBody, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport {DracoWriterNodeJS} from '../draco-writer-nodejs';\n\n(() => {\n // Check that we are actually in a worker thread\n if (!WorkerBody.inWorkerThread()) {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload: WorkerMessagePayload) => {\n switch (type) {\n case 'process':\n try {\n const {input, options} = payload;\n const result = await DracoWriterNodeJS.encode!(input, options);\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n})();\n"],"mappings":";;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAEA,CAAC,YAAM;EAEL,IAAI,CAACE,uBAAU,CAACC,cAAc,EAAE,EAAE;IAChC;EACF;EAEAD,uBAAU,CAACE,SAAS;IAAA,IAAAC,IAAA,OAAAC,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAG,SAAAC,QAAOC,IAAI,EAAEC,OAA6B;MAAA,IAAAC,KAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,OAAA;MAAA,OAAAR,YAAA,CAAAD,OAAA,CAAAU,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAAF,QAAA,CAAAG,EAAA,GACvDX,IAAI;YAAAQ,QAAA,CAAAE,IAAA,GAAAF,QAAA,CAAAG,EAAA,KACL,SAAS;YAAA;UAAA;YAAAH,QAAA,CAAAC,IAAA;YAEHP,KAAK,GAAaD,OAAO,CAAzBC,KAAK,EAAEC,OAAO,GAAIF,OAAO,CAAlBE,OAAO;YAAAK,QAAA,CAAAE,IAAA;YAAA,OACAE,oCAAiB,CAACC,MAAM,CAAEX,KAAK,EAAEC,OAAO,CAAC;UAAA;YAAxDC,MAAM,GAAAI,QAAA,CAAAM,IAAA;YACZvB,uBAAU,CAACwB,WAAW,CAAC,MAAM,EAAE;cAACX,MAAM,EAANA;YAAM,CAAC,CAAC;YAACI,QAAA,CAAAE,IAAA;YAAA;UAAA;YAAAF,QAAA,CAAAC,IAAA;YAAAD,QAAA,CAAAQ,EAAA,GAAAR,QAAA;YAEnCH,OAAO,GAAGG,QAAA,CAAAQ,EAAA,YAAiBC,KAAK,GAAGT,QAAA,CAAAQ,EAAA,CAAMX,OAAO,GAAG,EAAE;YAC3Dd,uBAAU,CAACwB,WAAW,CAAC,OAAO,EAAE;cAACG,KAAK,EAAEb;YAAO,CAAC,CAAC;UAAC;YAAA,OAAAG,QAAA,CAAAW,MAAA;UAAA;UAAA;YAAA,OAAAX,QAAA,CAAAY,IAAA;QAAA;MAAA,GAAArB,OAAA;IAAA,CAKzD;IAAA,iBAAAsB,EAAA,EAAAC,GAAA;MAAA,OAAA5B,IAAA,CAAA6B,KAAA,OAAAC,SAAA;IAAA;EAAA;AACH,CAAC,GAAG"}