@loaders.gl/draco 3.0.9 → 3.0.13

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 (36) hide show
  1. package/dist/dist.es5.min.js +1 -1
  2. package/dist/dist.es5.min.js.map +1 -1
  3. package/dist/dist.min.js +1 -1
  4. package/dist/dist.min.js.map +1 -1
  5. package/dist/draco-worker.js +1 -1
  6. package/dist/draco-worker.js.map +1 -1
  7. package/dist/es5/bundle.js +2 -2
  8. package/dist/es5/bundle.js.map +1 -1
  9. package/dist/es5/draco-loader.js +4 -8
  10. package/dist/es5/draco-loader.js.map +1 -1
  11. package/dist/es5/draco-writer.js +13 -46
  12. package/dist/es5/draco-writer.js.map +1 -1
  13. package/dist/es5/draco3d/draco3d-types.js +4 -4
  14. package/dist/es5/index.js +16 -51
  15. package/dist/es5/index.js.map +1 -1
  16. package/dist/es5/lib/draco-builder.js +244 -292
  17. package/dist/es5/lib/draco-builder.js.map +1 -1
  18. package/dist/es5/lib/draco-module-loader.js +65 -198
  19. package/dist/es5/lib/draco-module-loader.js.map +1 -1
  20. package/dist/es5/lib/draco-parser.js +308 -372
  21. package/dist/es5/lib/draco-parser.js.map +1 -1
  22. package/dist/es5/lib/utils/schema-attribute-utils.js +15 -15
  23. package/dist/es5/lib/utils/schema-attribute-utils.js.map +1 -1
  24. package/dist/es5/lib/utils/version.js +1 -1
  25. package/dist/es5/lib/utils/version.js.map +1 -1
  26. package/dist/esm/lib/draco-builder.js +4 -6
  27. package/dist/esm/lib/draco-builder.js.map +1 -1
  28. package/dist/esm/lib/draco-module-loader.js +4 -4
  29. package/dist/esm/lib/draco-module-loader.js.map +1 -1
  30. package/dist/esm/lib/draco-parser.js +2 -2
  31. package/dist/esm/lib/draco-parser.js.map +1 -1
  32. package/dist/esm/lib/utils/schema-attribute-utils.js +1 -1
  33. package/dist/esm/lib/utils/schema-attribute-utils.js.map +1 -1
  34. package/dist/esm/lib/utils/version.js +1 -1
  35. package/dist/esm/lib/utils/version.js.map +1 -1
  36. package/package.json +5 -5
@@ -7,40 +7,19 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
-
12
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
-
14
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
-
16
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
-
18
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
-
20
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21
11
 
22
- 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; } } }; }
23
-
24
- 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); }
25
-
26
- 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; }
27
-
28
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
29
-
30
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
31
-
32
- var GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP = {
12
+ const GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP = {
33
13
  POSITION: 'POSITION',
34
14
  NORMAL: 'NORMAL',
35
15
  COLOR_0: 'COLOR',
36
16
  TEXCOORD_0: 'TEX_COORD'
37
17
  };
38
18
 
39
- var noop = function noop() {};
19
+ const noop = () => {};
40
20
 
41
- var DracoBuilder = function () {
42
- function DracoBuilder(draco) {
43
- (0, _classCallCheck2.default)(this, DracoBuilder);
21
+ class DracoBuilder {
22
+ constructor(draco) {
44
23
  (0, _defineProperty2.default)(this, "draco", void 0);
45
24
  (0, _defineProperty2.default)(this, "dracoEncoder", void 0);
46
25
  (0, _defineProperty2.default)(this, "dracoMeshBuilder", void 0);
@@ -52,350 +31,323 @@ var DracoBuilder = function () {
52
31
  this.dracoMetadataBuilder = new this.draco.MetadataBuilder();
53
32
  }
54
33
 
55
- (0, _createClass2.default)(DracoBuilder, [{
56
- key: "destroy",
57
- value: function destroy() {
58
- this.destroyEncodedObject(this.dracoMeshBuilder);
59
- this.destroyEncodedObject(this.dracoEncoder);
60
- this.destroyEncodedObject(this.dracoMetadataBuilder);
61
- this.dracoMeshBuilder = null;
62
- this.dracoEncoder = null;
63
- this.draco = null;
64
- }
65
- }, {
66
- key: "destroyEncodedObject",
67
- value: function destroyEncodedObject(object) {
68
- if (object) {
69
- this.draco.destroy(object);
70
- }
34
+ destroy() {
35
+ this.destroyEncodedObject(this.dracoMeshBuilder);
36
+ this.destroyEncodedObject(this.dracoEncoder);
37
+ this.destroyEncodedObject(this.dracoMetadataBuilder);
38
+ this.dracoMeshBuilder = null;
39
+ this.dracoEncoder = null;
40
+ this.draco = null;
41
+ }
42
+
43
+ destroyEncodedObject(object) {
44
+ if (object) {
45
+ this.draco.destroy(object);
71
46
  }
72
- }, {
73
- key: "encodeSync",
74
- value: function encodeSync(mesh) {
75
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
76
- this.log = noop;
47
+ }
77
48
 
78
- this._setOptions(options);
49
+ encodeSync(mesh, options = {}) {
50
+ this.log = noop;
79
51
 
80
- return options.pointcloud ? this._encodePointCloud(mesh, options) : this._encodeMesh(mesh, options);
81
- }
82
- }, {
83
- key: "_getAttributesFromMesh",
84
- value: function _getAttributesFromMesh(mesh) {
85
- var attributes = _objectSpread(_objectSpread({}, mesh), mesh.attributes);
52
+ this._setOptions(options);
86
53
 
87
- if (mesh.indices) {
88
- attributes.indices = mesh.indices;
89
- }
54
+ return options.pointcloud ? this._encodePointCloud(mesh, options) : this._encodeMesh(mesh, options);
55
+ }
56
+
57
+ _getAttributesFromMesh(mesh) {
58
+ const attributes = { ...mesh,
59
+ ...mesh.attributes
60
+ };
90
61
 
91
- return attributes;
62
+ if (mesh.indices) {
63
+ attributes.indices = mesh.indices;
92
64
  }
93
- }, {
94
- key: "_encodePointCloud",
95
- value: function _encodePointCloud(pointcloud, options) {
96
- var dracoPointCloud = new this.draco.PointCloud();
97
65
 
98
- if (options.metadata) {
99
- this._addGeometryMetadata(dracoPointCloud, options.metadata);
100
- }
66
+ return attributes;
67
+ }
68
+
69
+ _encodePointCloud(pointcloud, options) {
70
+ const dracoPointCloud = new this.draco.PointCloud();
101
71
 
102
- var attributes = this._getAttributesFromMesh(pointcloud);
72
+ if (options.metadata) {
73
+ this._addGeometryMetadata(dracoPointCloud, options.metadata);
74
+ }
103
75
 
104
- this._createDracoPointCloud(dracoPointCloud, attributes, options);
76
+ const attributes = this._getAttributesFromMesh(pointcloud);
105
77
 
106
- var dracoData = new this.draco.DracoInt8Array();
78
+ this._createDracoPointCloud(dracoPointCloud, attributes, options);
107
79
 
108
- try {
109
- var encodedLen = this.dracoEncoder.EncodePointCloudToDracoBuffer(dracoPointCloud, false, dracoData);
80
+ const dracoData = new this.draco.DracoInt8Array();
110
81
 
111
- if (!(encodedLen > 0)) {
112
- throw new Error('Draco encoding failed.');
113
- }
82
+ try {
83
+ const encodedLen = this.dracoEncoder.EncodePointCloudToDracoBuffer(dracoPointCloud, false, dracoData);
114
84
 
115
- this.log("DRACO encoded ".concat(dracoPointCloud.num_points(), " points\n with ").concat(dracoPointCloud.num_attributes(), " attributes into ").concat(encodedLen, " bytes"));
116
- return dracoInt8ArrayToArrayBuffer(dracoData);
117
- } finally {
118
- this.destroyEncodedObject(dracoData);
119
- this.destroyEncodedObject(dracoPointCloud);
85
+ if (!(encodedLen > 0)) {
86
+ throw new Error('Draco encoding failed.');
120
87
  }
88
+
89
+ this.log("DRACO encoded ".concat(dracoPointCloud.num_points(), " points\n with ").concat(dracoPointCloud.num_attributes(), " attributes into ").concat(encodedLen, " bytes"));
90
+ return dracoInt8ArrayToArrayBuffer(dracoData);
91
+ } finally {
92
+ this.destroyEncodedObject(dracoData);
93
+ this.destroyEncodedObject(dracoPointCloud);
121
94
  }
122
- }, {
123
- key: "_encodeMesh",
124
- value: function _encodeMesh(mesh, options) {
125
- var dracoMesh = new this.draco.Mesh();
95
+ }
126
96
 
127
- if (options.metadata) {
128
- this._addGeometryMetadata(dracoMesh, options.metadata);
129
- }
97
+ _encodeMesh(mesh, options) {
98
+ const dracoMesh = new this.draco.Mesh();
130
99
 
131
- var attributes = this._getAttributesFromMesh(mesh);
100
+ if (options.metadata) {
101
+ this._addGeometryMetadata(dracoMesh, options.metadata);
102
+ }
132
103
 
133
- this._createDracoMesh(dracoMesh, attributes, options);
104
+ const attributes = this._getAttributesFromMesh(mesh);
134
105
 
135
- var dracoData = new this.draco.DracoInt8Array();
106
+ this._createDracoMesh(dracoMesh, attributes, options);
136
107
 
137
- try {
138
- var encodedLen = this.dracoEncoder.EncodeMeshToDracoBuffer(dracoMesh, dracoData);
108
+ const dracoData = new this.draco.DracoInt8Array();
139
109
 
140
- if (encodedLen <= 0) {
141
- throw new Error('Draco encoding failed.');
142
- }
110
+ try {
111
+ const encodedLen = this.dracoEncoder.EncodeMeshToDracoBuffer(dracoMesh, dracoData);
143
112
 
144
- this.log("DRACO encoded ".concat(dracoMesh.num_points(), " points\n with ").concat(dracoMesh.num_attributes(), " attributes into ").concat(encodedLen, " bytes"));
145
- return dracoInt8ArrayToArrayBuffer(dracoData);
146
- } finally {
147
- this.destroyEncodedObject(dracoData);
148
- this.destroyEncodedObject(dracoMesh);
113
+ if (encodedLen <= 0) {
114
+ throw new Error('Draco encoding failed.');
149
115
  }
116
+
117
+ this.log("DRACO encoded ".concat(dracoMesh.num_points(), " points\n with ").concat(dracoMesh.num_attributes(), " attributes into ").concat(encodedLen, " bytes"));
118
+ return dracoInt8ArrayToArrayBuffer(dracoData);
119
+ } finally {
120
+ this.destroyEncodedObject(dracoData);
121
+ this.destroyEncodedObject(dracoMesh);
150
122
  }
151
- }, {
152
- key: "_setOptions",
153
- value: function _setOptions(options) {
154
- if ('speed' in options) {
155
- var _this$dracoEncoder;
123
+ }
156
124
 
157
- (_this$dracoEncoder = this.dracoEncoder).SetSpeedOptions.apply(_this$dracoEncoder, (0, _toConsumableArray2.default)(options.speed));
158
- }
125
+ _setOptions(options) {
126
+ if ('speed' in options) {
127
+ this.dracoEncoder.SetSpeedOptions(...options.speed);
128
+ }
159
129
 
160
- if ('method' in options) {
161
- var dracoMethod = this.draco[options.method || 'MESH_SEQUENTIAL_ENCODING'];
162
- this.dracoEncoder.SetEncodingMethod(dracoMethod);
163
- }
130
+ if ('method' in options) {
131
+ const dracoMethod = this.draco[options.method || 'MESH_SEQUENTIAL_ENCODING'];
132
+ this.dracoEncoder.SetEncodingMethod(dracoMethod);
133
+ }
164
134
 
165
- if ('quantization' in options) {
166
- for (var attribute in options.quantization) {
167
- var bits = options.quantization[attribute];
168
- var dracoPosition = this.draco[attribute];
169
- this.dracoEncoder.SetAttributeQuantization(dracoPosition, bits);
170
- }
135
+ if ('quantization' in options) {
136
+ for (const attribute in options.quantization) {
137
+ const bits = options.quantization[attribute];
138
+ const dracoPosition = this.draco[attribute];
139
+ this.dracoEncoder.SetAttributeQuantization(dracoPosition, bits);
171
140
  }
172
141
  }
173
- }, {
174
- key: "_createDracoMesh",
175
- value: function _createDracoMesh(dracoMesh, attributes, options) {
176
- var optionalMetadata = options.attributesMetadata || {};
142
+ }
177
143
 
178
- try {
179
- var positions = this._getPositionAttribute(attributes);
144
+ _createDracoMesh(dracoMesh, attributes, options) {
145
+ const optionalMetadata = options.attributesMetadata || {};
180
146
 
181
- if (!positions) {
182
- throw new Error('positions');
183
- }
147
+ try {
148
+ const positions = this._getPositionAttribute(attributes);
184
149
 
185
- var vertexCount = positions.length / 3;
150
+ if (!positions) {
151
+ throw new Error('positions');
152
+ }
186
153
 
187
- for (var _attributeName in attributes) {
188
- var attribute = attributes[_attributeName];
189
- _attributeName = GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP[_attributeName] || _attributeName;
154
+ const vertexCount = positions.length / 3;
190
155
 
191
- var uniqueId = this._addAttributeToMesh(dracoMesh, _attributeName, attribute, vertexCount);
156
+ for (let attributeName in attributes) {
157
+ const attribute = attributes[attributeName];
158
+ attributeName = GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP[attributeName] || attributeName;
192
159
 
193
- if (uniqueId !== -1) {
194
- this._addAttributeMetadata(dracoMesh, uniqueId, _objectSpread({
195
- name: _attributeName
196
- }, optionalMetadata[_attributeName] || {}));
197
- }
160
+ const uniqueId = this._addAttributeToMesh(dracoMesh, attributeName, attribute, vertexCount);
161
+
162
+ if (uniqueId !== -1) {
163
+ this._addAttributeMetadata(dracoMesh, uniqueId, {
164
+ name: attributeName,
165
+ ...(optionalMetadata[attributeName] || {})
166
+ });
198
167
  }
199
- } catch (error) {
200
- this.destroyEncodedObject(dracoMesh);
201
- throw error;
202
168
  }
203
-
204
- return dracoMesh;
169
+ } catch (error) {
170
+ this.destroyEncodedObject(dracoMesh);
171
+ throw error;
205
172
  }
206
- }, {
207
- key: "_createDracoPointCloud",
208
- value: function _createDracoPointCloud(dracoPointCloud, attributes, options) {
209
- var optionalMetadata = options.attributesMetadata || {};
210
173
 
211
- try {
212
- var positions = this._getPositionAttribute(attributes);
174
+ return dracoMesh;
175
+ }
213
176
 
214
- if (!positions) {
215
- throw new Error('positions');
216
- }
177
+ _createDracoPointCloud(dracoPointCloud, attributes, options) {
178
+ const optionalMetadata = options.attributesMetadata || {};
217
179
 
218
- var vertexCount = positions.length / 3;
180
+ try {
181
+ const positions = this._getPositionAttribute(attributes);
219
182
 
220
- for (var _attributeName2 in attributes) {
221
- var attribute = attributes[_attributeName2];
222
- _attributeName2 = GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP[_attributeName2] || _attributeName2;
183
+ if (!positions) {
184
+ throw new Error('positions');
185
+ }
223
186
 
224
- var uniqueId = this._addAttributeToMesh(dracoPointCloud, _attributeName2, attribute, vertexCount);
187
+ const vertexCount = positions.length / 3;
225
188
 
226
- if (uniqueId !== -1) {
227
- this._addAttributeMetadata(dracoPointCloud, uniqueId, _objectSpread({
228
- name: _attributeName2
229
- }, optionalMetadata[_attributeName2] || {}));
230
- }
189
+ for (let attributeName in attributes) {
190
+ const attribute = attributes[attributeName];
191
+ attributeName = GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP[attributeName] || attributeName;
192
+
193
+ const uniqueId = this._addAttributeToMesh(dracoPointCloud, attributeName, attribute, vertexCount);
194
+
195
+ if (uniqueId !== -1) {
196
+ this._addAttributeMetadata(dracoPointCloud, uniqueId, {
197
+ name: attributeName,
198
+ ...(optionalMetadata[attributeName] || {})
199
+ });
231
200
  }
232
- } catch (error) {
233
- this.destroyEncodedObject(dracoPointCloud);
234
- throw error;
235
201
  }
202
+ } catch (error) {
203
+ this.destroyEncodedObject(dracoPointCloud);
204
+ throw error;
205
+ }
236
206
 
237
- return dracoPointCloud;
207
+ return dracoPointCloud;
208
+ }
209
+
210
+ _addAttributeToMesh(mesh, attributeName, attribute, vertexCount) {
211
+ if (!ArrayBuffer.isView(attribute)) {
212
+ return -1;
238
213
  }
239
- }, {
240
- key: "_addAttributeToMesh",
241
- value: function _addAttributeToMesh(mesh, attributeName, attribute, vertexCount) {
242
- if (!ArrayBuffer.isView(attribute)) {
243
- return -1;
244
- }
245
214
 
246
- var type = this._getDracoAttributeType(attributeName);
215
+ const type = this._getDracoAttributeType(attributeName);
247
216
 
248
- var size = attribute.length / vertexCount;
217
+ const size = attribute.length / vertexCount;
249
218
 
250
- if (type === 'indices') {
251
- var numFaces = attribute.length / 3;
252
- this.log("Adding attribute ".concat(attributeName, ", size ").concat(numFaces));
253
- this.dracoMeshBuilder.AddFacesToMesh(mesh, numFaces, attribute);
254
- return -1;
255
- }
219
+ if (type === 'indices') {
220
+ const numFaces = attribute.length / 3;
221
+ this.log("Adding attribute ".concat(attributeName, ", size ").concat(numFaces));
222
+ this.dracoMeshBuilder.AddFacesToMesh(mesh, numFaces, attribute);
223
+ return -1;
224
+ }
256
225
 
257
- this.log("Adding attribute ".concat(attributeName, ", size ").concat(size));
258
- var builder = this.dracoMeshBuilder;
259
- var buffer = attribute.buffer;
226
+ this.log("Adding attribute ".concat(attributeName, ", size ").concat(size));
227
+ const builder = this.dracoMeshBuilder;
228
+ const {
229
+ buffer
230
+ } = attribute;
260
231
 
261
- switch (attribute.constructor) {
262
- case Int8Array:
263
- return builder.AddInt8Attribute(mesh, type, vertexCount, size, new Int8Array(buffer));
232
+ switch (attribute.constructor) {
233
+ case Int8Array:
234
+ return builder.AddInt8Attribute(mesh, type, vertexCount, size, new Int8Array(buffer));
264
235
 
265
- case Int16Array:
266
- return builder.AddInt16Attribute(mesh, type, vertexCount, size, new Int16Array(buffer));
236
+ case Int16Array:
237
+ return builder.AddInt16Attribute(mesh, type, vertexCount, size, new Int16Array(buffer));
267
238
 
268
- case Int32Array:
269
- return builder.AddInt32Attribute(mesh, type, vertexCount, size, new Int32Array(buffer));
239
+ case Int32Array:
240
+ return builder.AddInt32Attribute(mesh, type, vertexCount, size, new Int32Array(buffer));
270
241
 
271
- case Uint8Array:
272
- case Uint8ClampedArray:
273
- return builder.AddUInt8Attribute(mesh, type, vertexCount, size, new Uint8Array(buffer));
242
+ case Uint8Array:
243
+ case Uint8ClampedArray:
244
+ return builder.AddUInt8Attribute(mesh, type, vertexCount, size, new Uint8Array(buffer));
274
245
 
275
- case Uint16Array:
276
- return builder.AddUInt16Attribute(mesh, type, vertexCount, size, new Uint16Array(buffer));
246
+ case Uint16Array:
247
+ return builder.AddUInt16Attribute(mesh, type, vertexCount, size, new Uint16Array(buffer));
277
248
 
278
- case Uint32Array:
279
- return builder.AddUInt32Attribute(mesh, type, vertexCount, size, new Uint32Array(buffer));
249
+ case Uint32Array:
250
+ return builder.AddUInt32Attribute(mesh, type, vertexCount, size, new Uint32Array(buffer));
280
251
 
281
- case Float32Array:
282
- default:
283
- return builder.AddFloatAttribute(mesh, type, vertexCount, size, new Float32Array(buffer));
284
- }
252
+ case Float32Array:
253
+ default:
254
+ return builder.AddFloatAttribute(mesh, type, vertexCount, size, new Float32Array(buffer));
285
255
  }
286
- }, {
287
- key: "_getDracoAttributeType",
288
- value: function _getDracoAttributeType(attributeName) {
289
- switch (attributeName.toLowerCase()) {
290
- case 'indices':
291
- return 'indices';
292
-
293
- case 'position':
294
- case 'positions':
295
- case 'vertices':
296
- return this.draco.POSITION;
297
-
298
- case 'normal':
299
- case 'normals':
300
- return this.draco.NORMAL;
301
-
302
- case 'color':
303
- case 'colors':
304
- return this.draco.COLOR;
305
-
306
- case 'texcoord':
307
- case 'texcoords':
308
- return this.draco.TEX_COORD;
256
+ }
309
257
 
310
- default:
311
- return this.draco.GENERIC;
312
- }
313
- }
314
- }, {
315
- key: "_getPositionAttribute",
316
- value: function _getPositionAttribute(attributes) {
317
- for (var _attributeName3 in attributes) {
318
- var attribute = attributes[_attributeName3];
258
+ _getDracoAttributeType(attributeName) {
259
+ switch (attributeName.toLowerCase()) {
260
+ case 'indices':
261
+ return 'indices';
319
262
 
320
- var dracoType = this._getDracoAttributeType(_attributeName3);
263
+ case 'position':
264
+ case 'positions':
265
+ case 'vertices':
266
+ return this.draco.POSITION;
321
267
 
322
- if (dracoType === this.draco.POSITION) {
323
- return attribute;
324
- }
325
- }
268
+ case 'normal':
269
+ case 'normals':
270
+ return this.draco.NORMAL;
326
271
 
327
- return null;
328
- }
329
- }, {
330
- key: "_addGeometryMetadata",
331
- value: function _addGeometryMetadata(dracoGeometry, metadata) {
332
- var dracoMetadata = new this.draco.Metadata();
272
+ case 'color':
273
+ case 'colors':
274
+ return this.draco.COLOR;
333
275
 
334
- this._populateDracoMetadata(dracoMetadata, metadata);
276
+ case 'texcoord':
277
+ case 'texcoords':
278
+ return this.draco.TEX_COORD;
335
279
 
336
- this.dracoMeshBuilder.AddMetadata(dracoGeometry, dracoMetadata);
280
+ default:
281
+ return this.draco.GENERIC;
337
282
  }
338
- }, {
339
- key: "_addAttributeMetadata",
340
- value: function _addAttributeMetadata(dracoGeometry, uniqueAttributeId, metadata) {
341
- var dracoAttributeMetadata = new this.draco.Metadata();
283
+ }
342
284
 
343
- this._populateDracoMetadata(dracoAttributeMetadata, metadata);
285
+ _getPositionAttribute(attributes) {
286
+ for (const attributeName in attributes) {
287
+ const attribute = attributes[attributeName];
344
288
 
345
- this.dracoMeshBuilder.SetMetadataForAttribute(dracoGeometry, uniqueAttributeId, dracoAttributeMetadata);
289
+ const dracoType = this._getDracoAttributeType(attributeName);
290
+
291
+ if (dracoType === this.draco.POSITION) {
292
+ return attribute;
293
+ }
346
294
  }
347
- }, {
348
- key: "_populateDracoMetadata",
349
- value: function _populateDracoMetadata(dracoMetadata, metadata) {
350
- var _iterator = _createForOfIteratorHelper(getEntries(metadata)),
351
- _step;
352
-
353
- try {
354
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
355
- var _step$value = (0, _slicedToArray2.default)(_step.value, 2),
356
- _key = _step$value[0],
357
- value = _step$value[1];
358
-
359
- switch ((0, _typeof2.default)(value)) {
360
- case 'number':
361
- if (Math.trunc(value) === value) {
362
- this.dracoMetadataBuilder.AddIntEntry(dracoMetadata, _key, value);
363
- } else {
364
- this.dracoMetadataBuilder.AddDoubleEntry(dracoMetadata, _key, value);
365
- }
366
-
367
- break;
368
-
369
- case 'object':
370
- if (value instanceof Int32Array) {
371
- this.dracoMetadataBuilder.AddIntEntryArray(dracoMetadata, _key, value, value.length);
372
- }
373
-
374
- break;
375
-
376
- case 'string':
377
- default:
378
- this.dracoMetadataBuilder.AddStringEntry(dracoMetadata, _key, value);
295
+
296
+ return null;
297
+ }
298
+
299
+ _addGeometryMetadata(dracoGeometry, metadata) {
300
+ const dracoMetadata = new this.draco.Metadata();
301
+
302
+ this._populateDracoMetadata(dracoMetadata, metadata);
303
+
304
+ this.dracoMeshBuilder.AddMetadata(dracoGeometry, dracoMetadata);
305
+ }
306
+
307
+ _addAttributeMetadata(dracoGeometry, uniqueAttributeId, metadata) {
308
+ const dracoAttributeMetadata = new this.draco.Metadata();
309
+
310
+ this._populateDracoMetadata(dracoAttributeMetadata, metadata);
311
+
312
+ this.dracoMeshBuilder.SetMetadataForAttribute(dracoGeometry, uniqueAttributeId, dracoAttributeMetadata);
313
+ }
314
+
315
+ _populateDracoMetadata(dracoMetadata, metadata) {
316
+ for (const [key, value] of getEntries(metadata)) {
317
+ switch (typeof value) {
318
+ case 'number':
319
+ if (Math.trunc(value) === value) {
320
+ this.dracoMetadataBuilder.AddIntEntry(dracoMetadata, key, value);
321
+ } else {
322
+ this.dracoMetadataBuilder.AddDoubleEntry(dracoMetadata, key, value);
379
323
  }
380
- }
381
- } catch (err) {
382
- _iterator.e(err);
383
- } finally {
384
- _iterator.f();
324
+
325
+ break;
326
+
327
+ case 'object':
328
+ if (value instanceof Int32Array) {
329
+ this.dracoMetadataBuilder.AddIntEntryArray(dracoMetadata, key, value, value.length);
330
+ }
331
+
332
+ break;
333
+
334
+ case 'string':
335
+ default:
336
+ this.dracoMetadataBuilder.AddStringEntry(dracoMetadata, key, value);
385
337
  }
386
338
  }
387
- }]);
388
- return DracoBuilder;
389
- }();
339
+ }
340
+
341
+ }
390
342
 
391
343
  exports.default = DracoBuilder;
392
344
 
393
345
  function dracoInt8ArrayToArrayBuffer(dracoData) {
394
- var byteLength = dracoData.size();
395
- var outputBuffer = new ArrayBuffer(byteLength);
396
- var outputData = new Int8Array(outputBuffer);
346
+ const byteLength = dracoData.size();
347
+ const outputBuffer = new ArrayBuffer(byteLength);
348
+ const outputData = new Int8Array(outputBuffer);
397
349
 
398
- for (var i = 0; i < byteLength; ++i) {
350
+ for (let i = 0; i < byteLength; ++i) {
399
351
  outputData[i] = dracoData.GetValue(i);
400
352
  }
401
353
 
@@ -403,7 +355,7 @@ function dracoInt8ArrayToArrayBuffer(dracoData) {
403
355
  }
404
356
 
405
357
  function getEntries(container) {
406
- var hasEntriesFunc = container.entries && !container.hasOwnProperty('entries');
358
+ const hasEntriesFunc = container.entries && !container.hasOwnProperty('entries');
407
359
  return hasEntriesFunc ? container.entries() : Object.entries(container);
408
360
  }
409
361
  //# sourceMappingURL=draco-builder.js.map