@loaders.gl/draco 3.4.14 → 3.4.15

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