@loaders.gl/obj 3.1.0-alpha.4 → 3.1.0-alpha.5

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.
@@ -1,35 +1,21 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
6
  exports.default = void 0;
9
-
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
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
-
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
-
18
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
19
-
20
- var OBJECT_RE = /^[og]\s*(.+)?/;
21
- var MATERIAL_RE = /^mtllib /;
22
- var MATERIAL_USE_RE = /^usemtl /;
23
-
24
- var MeshMaterial = function () {
25
- function MeshMaterial(_ref) {
26
- var index = _ref.index,
27
- _ref$name = _ref.name,
28
- name = _ref$name === void 0 ? '' : _ref$name,
29
- mtllib = _ref.mtllib,
30
- smooth = _ref.smooth,
31
- groupStart = _ref.groupStart;
32
- (0, _classCallCheck2.default)(this, MeshMaterial);
7
+ const OBJECT_RE = /^[og]\s*(.+)?/;
8
+ const MATERIAL_RE = /^mtllib /;
9
+ const MATERIAL_USE_RE = /^usemtl /;
10
+
11
+ class MeshMaterial {
12
+ constructor({
13
+ index,
14
+ name = '',
15
+ mtllib,
16
+ smooth,
17
+ groupStart
18
+ }) {
33
19
  this.index = index;
34
20
  this.name = name;
35
21
  this.mtllib = mtllib;
@@ -40,26 +26,20 @@ var MeshMaterial = function () {
40
26
  this.inherited = false;
41
27
  }
42
28
 
43
- (0, _createClass2.default)(MeshMaterial, [{
44
- key: "clone",
45
- value: function clone() {
46
- var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.index;
47
- return new MeshMaterial({
48
- index: index,
49
- name: this.name,
50
- mtllib: this.mtllib,
51
- smooth: this.smooth,
52
- groupStart: 0
53
- });
54
- }
55
- }]);
56
- return MeshMaterial;
57
- }();
58
-
59
- var MeshObject = function () {
60
- function MeshObject() {
61
- var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
62
- (0, _classCallCheck2.default)(this, MeshObject);
29
+ clone(index = this.index) {
30
+ return new MeshMaterial({
31
+ index,
32
+ name: this.name,
33
+ mtllib: this.mtllib,
34
+ smooth: this.smooth,
35
+ groupStart: 0
36
+ });
37
+ }
38
+
39
+ }
40
+
41
+ class MeshObject {
42
+ constructor(name = '') {
63
43
  this.name = name;
64
44
  this.geometry = {
65
45
  vertices: [],
@@ -72,69 +52,63 @@ var MeshObject = function () {
72
52
  this.fromDeclaration = null;
73
53
  }
74
54
 
75
- (0, _createClass2.default)(MeshObject, [{
76
- key: "startMaterial",
77
- value: function startMaterial(name, libraries) {
78
- var previous = this._finalize(false);
55
+ startMaterial(name, libraries) {
56
+ const previous = this._finalize(false);
79
57
 
80
- if (previous && (previous.inherited || previous.groupCount <= 0)) {
81
- this.materials.splice(previous.index, 1);
82
- }
58
+ if (previous && (previous.inherited || previous.groupCount <= 0)) {
59
+ this.materials.splice(previous.index, 1);
60
+ }
83
61
 
84
- var material = new MeshMaterial({
85
- index: this.materials.length,
86
- name: name,
87
- mtllib: Array.isArray(libraries) && libraries.length > 0 ? libraries[libraries.length - 1] : '',
88
- smooth: previous !== undefined ? previous.smooth : this.smooth,
89
- groupStart: previous !== undefined ? previous.groupEnd : 0
90
- });
91
- this.materials.push(material);
92
- return material;
62
+ const material = new MeshMaterial({
63
+ index: this.materials.length,
64
+ name,
65
+ mtllib: Array.isArray(libraries) && libraries.length > 0 ? libraries[libraries.length - 1] : '',
66
+ smooth: previous !== undefined ? previous.smooth : this.smooth,
67
+ groupStart: previous !== undefined ? previous.groupEnd : 0
68
+ });
69
+ this.materials.push(material);
70
+ return material;
71
+ }
72
+
73
+ currentMaterial() {
74
+ if (this.materials.length > 0) {
75
+ return this.materials[this.materials.length - 1];
93
76
  }
94
- }, {
95
- key: "currentMaterial",
96
- value: function currentMaterial() {
97
- if (this.materials.length > 0) {
98
- return this.materials[this.materials.length - 1];
99
- }
100
77
 
101
- return undefined;
78
+ return undefined;
79
+ }
80
+
81
+ _finalize(end) {
82
+ const lastMultiMaterial = this.currentMaterial();
83
+
84
+ if (lastMultiMaterial && lastMultiMaterial.groupEnd === -1) {
85
+ lastMultiMaterial.groupEnd = this.geometry.vertices.length / 3;
86
+ lastMultiMaterial.groupCount = lastMultiMaterial.groupEnd - lastMultiMaterial.groupStart;
87
+ lastMultiMaterial.inherited = false;
102
88
  }
103
- }, {
104
- key: "_finalize",
105
- value: function _finalize(end) {
106
- var lastMultiMaterial = this.currentMaterial();
107
-
108
- if (lastMultiMaterial && lastMultiMaterial.groupEnd === -1) {
109
- lastMultiMaterial.groupEnd = this.geometry.vertices.length / 3;
110
- lastMultiMaterial.groupCount = lastMultiMaterial.groupEnd - lastMultiMaterial.groupStart;
111
- lastMultiMaterial.inherited = false;
112
- }
113
89
 
114
- if (end && this.materials.length > 1) {
115
- for (var mi = this.materials.length - 1; mi >= 0; mi--) {
116
- if (this.materials[mi].groupCount <= 0) {
117
- this.materials.splice(mi, 1);
118
- }
90
+ if (end && this.materials.length > 1) {
91
+ for (let mi = this.materials.length - 1; mi >= 0; mi--) {
92
+ if (this.materials[mi].groupCount <= 0) {
93
+ this.materials.splice(mi, 1);
119
94
  }
120
95
  }
96
+ }
121
97
 
122
- if (end && this.materials.length === 0) {
123
- this.materials.push({
124
- name: '',
125
- smooth: this.smooth
126
- });
127
- }
128
-
129
- return lastMultiMaterial;
98
+ if (end && this.materials.length === 0) {
99
+ this.materials.push({
100
+ name: '',
101
+ smooth: this.smooth
102
+ });
130
103
  }
131
- }]);
132
- return MeshObject;
133
- }();
134
104
 
135
- var ParserState = function () {
136
- function ParserState() {
137
- (0, _classCallCheck2.default)(this, ParserState);
105
+ return lastMultiMaterial;
106
+ }
107
+
108
+ }
109
+
110
+ class ParserState {
111
+ constructor() {
138
112
  this.objects = [];
139
113
  this.object = null;
140
114
  this.vertices = [];
@@ -145,206 +119,157 @@ var ParserState = function () {
145
119
  this.startObject('', false);
146
120
  }
147
121
 
148
- (0, _createClass2.default)(ParserState, [{
149
- key: "startObject",
150
- value: function startObject(name) {
151
- var fromDeclaration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
122
+ startObject(name, fromDeclaration = true) {
123
+ if (this.object && !this.object.fromDeclaration) {
124
+ this.object.name = name;
125
+ this.object.fromDeclaration = fromDeclaration;
126
+ return;
127
+ }
152
128
 
153
- if (this.object && !this.object.fromDeclaration) {
154
- this.object.name = name;
155
- this.object.fromDeclaration = fromDeclaration;
156
- return;
157
- }
129
+ const previousMaterial = this.object && typeof this.object.currentMaterial === 'function' ? this.object.currentMaterial() : undefined;
158
130
 
159
- var previousMaterial = this.object && typeof this.object.currentMaterial === 'function' ? this.object.currentMaterial() : undefined;
131
+ if (this.object && typeof this.object._finalize === 'function') {
132
+ this.object._finalize(true);
133
+ }
160
134
 
161
- if (this.object && typeof this.object._finalize === 'function') {
162
- this.object._finalize(true);
163
- }
135
+ this.object = new MeshObject(name);
136
+ this.object.fromDeclaration = fromDeclaration;
164
137
 
165
- this.object = new MeshObject(name);
166
- this.object.fromDeclaration = fromDeclaration;
138
+ if (previousMaterial && previousMaterial.name && typeof previousMaterial.clone === 'function') {
139
+ const declared = previousMaterial.clone(0);
140
+ declared.inherited = true;
141
+ this.object.materials.push(declared);
142
+ }
167
143
 
168
- if (previousMaterial && previousMaterial.name && typeof previousMaterial.clone === 'function') {
169
- var declared = previousMaterial.clone(0);
170
- declared.inherited = true;
171
- this.object.materials.push(declared);
172
- }
144
+ this.objects.push(this.object);
145
+ }
173
146
 
174
- this.objects.push(this.object);
175
- }
176
- }, {
177
- key: "finalize",
178
- value: function finalize() {
179
- if (this.object && typeof this.object._finalize === 'function') {
180
- this.object._finalize(true);
181
- }
182
- }
183
- }, {
184
- key: "parseVertexIndex",
185
- value: function parseVertexIndex(value, len) {
186
- var index = parseInt(value);
187
- return (index >= 0 ? index - 1 : index + len / 3) * 3;
188
- }
189
- }, {
190
- key: "parseNormalIndex",
191
- value: function parseNormalIndex(value, len) {
192
- var index = parseInt(value);
193
- return (index >= 0 ? index - 1 : index + len / 3) * 3;
194
- }
195
- }, {
196
- key: "parseUVIndex",
197
- value: function parseUVIndex(value, len) {
198
- var index = parseInt(value);
199
- return (index >= 0 ? index - 1 : index + len / 2) * 2;
147
+ finalize() {
148
+ if (this.object && typeof this.object._finalize === 'function') {
149
+ this.object._finalize(true);
200
150
  }
201
- }, {
202
- key: "addVertex",
203
- value: function addVertex(a, b, c) {
204
- var src = this.vertices;
205
- var dst = this.object.geometry.vertices;
206
- dst.push(src[a + 0], src[a + 1], src[a + 2]);
207
- dst.push(src[b + 0], src[b + 1], src[b + 2]);
208
- dst.push(src[c + 0], src[c + 1], src[c + 2]);
209
- }
210
- }, {
211
- key: "addVertexPoint",
212
- value: function addVertexPoint(a) {
213
- var src = this.vertices;
214
- var dst = this.object.geometry.vertices;
215
- dst.push(src[a + 0], src[a + 1], src[a + 2]);
216
- }
217
- }, {
218
- key: "addVertexLine",
219
- value: function addVertexLine(a) {
220
- var src = this.vertices;
221
- var dst = this.object.geometry.vertices;
222
- dst.push(src[a + 0], src[a + 1], src[a + 2]);
223
- }
224
- }, {
225
- key: "addNormal",
226
- value: function addNormal(a, b, c) {
227
- var src = this.normals;
228
- var dst = this.object.geometry.normals;
229
- dst.push(src[a + 0], src[a + 1], src[a + 2]);
230
- dst.push(src[b + 0], src[b + 1], src[b + 2]);
231
- dst.push(src[c + 0], src[c + 1], src[c + 2]);
232
- }
233
- }, {
234
- key: "addColor",
235
- value: function addColor(a, b, c) {
236
- var src = this.colors;
237
- var dst = this.object.geometry.colors;
238
- dst.push(src[a + 0], src[a + 1], src[a + 2]);
239
- dst.push(src[b + 0], src[b + 1], src[b + 2]);
240
- dst.push(src[c + 0], src[c + 1], src[c + 2]);
151
+ }
152
+
153
+ parseVertexIndex(value, len) {
154
+ const index = parseInt(value);
155
+ return (index >= 0 ? index - 1 : index + len / 3) * 3;
156
+ }
157
+
158
+ parseNormalIndex(value, len) {
159
+ const index = parseInt(value);
160
+ return (index >= 0 ? index - 1 : index + len / 3) * 3;
161
+ }
162
+
163
+ parseUVIndex(value, len) {
164
+ const index = parseInt(value);
165
+ return (index >= 0 ? index - 1 : index + len / 2) * 2;
166
+ }
167
+
168
+ addVertex(a, b, c) {
169
+ const src = this.vertices;
170
+ const dst = this.object.geometry.vertices;
171
+ dst.push(src[a + 0], src[a + 1], src[a + 2]);
172
+ dst.push(src[b + 0], src[b + 1], src[b + 2]);
173
+ dst.push(src[c + 0], src[c + 1], src[c + 2]);
174
+ }
175
+
176
+ addVertexPoint(a) {
177
+ const src = this.vertices;
178
+ const dst = this.object.geometry.vertices;
179
+ dst.push(src[a + 0], src[a + 1], src[a + 2]);
180
+ }
181
+
182
+ addVertexLine(a) {
183
+ const src = this.vertices;
184
+ const dst = this.object.geometry.vertices;
185
+ dst.push(src[a + 0], src[a + 1], src[a + 2]);
186
+ }
187
+
188
+ addNormal(a, b, c) {
189
+ const src = this.normals;
190
+ const dst = this.object.geometry.normals;
191
+ dst.push(src[a + 0], src[a + 1], src[a + 2]);
192
+ dst.push(src[b + 0], src[b + 1], src[b + 2]);
193
+ dst.push(src[c + 0], src[c + 1], src[c + 2]);
194
+ }
195
+
196
+ addColor(a, b, c) {
197
+ const src = this.colors;
198
+ const dst = this.object.geometry.colors;
199
+ dst.push(src[a + 0], src[a + 1], src[a + 2]);
200
+ dst.push(src[b + 0], src[b + 1], src[b + 2]);
201
+ dst.push(src[c + 0], src[c + 1], src[c + 2]);
202
+ }
203
+
204
+ addUV(a, b, c) {
205
+ const src = this.uvs;
206
+ const dst = this.object.geometry.uvs;
207
+ dst.push(src[a + 0], src[a + 1]);
208
+ dst.push(src[b + 0], src[b + 1]);
209
+ dst.push(src[c + 0], src[c + 1]);
210
+ }
211
+
212
+ addUVLine(a) {
213
+ const src = this.uvs;
214
+ const dst = this.object.geometry.uvs;
215
+ dst.push(src[a + 0], src[a + 1]);
216
+ }
217
+
218
+ addFace(a, b, c, ua, ub, uc, na, nb, nc) {
219
+ const vLen = this.vertices.length;
220
+ let ia = this.parseVertexIndex(a, vLen);
221
+ let ib = this.parseVertexIndex(b, vLen);
222
+ let ic = this.parseVertexIndex(c, vLen);
223
+ this.addVertex(ia, ib, ic);
224
+
225
+ if (ua !== undefined && ua !== '') {
226
+ const uvLen = this.uvs.length;
227
+ ia = this.parseUVIndex(ua, uvLen);
228
+ ib = this.parseUVIndex(ub, uvLen);
229
+ ic = this.parseUVIndex(uc, uvLen);
230
+ this.addUV(ia, ib, ic);
241
231
  }
242
- }, {
243
- key: "addUV",
244
- value: function addUV(a, b, c) {
245
- var src = this.uvs;
246
- var dst = this.object.geometry.uvs;
247
- dst.push(src[a + 0], src[a + 1]);
248
- dst.push(src[b + 0], src[b + 1]);
249
- dst.push(src[c + 0], src[c + 1]);
232
+
233
+ if (na !== undefined && na !== '') {
234
+ const nLen = this.normals.length;
235
+ ia = this.parseNormalIndex(na, nLen);
236
+ ib = na === nb ? ia : this.parseNormalIndex(nb, nLen);
237
+ ic = na === nc ? ia : this.parseNormalIndex(nc, nLen);
238
+ this.addNormal(ia, ib, ic);
250
239
  }
251
- }, {
252
- key: "addUVLine",
253
- value: function addUVLine(a) {
254
- var src = this.uvs;
255
- var dst = this.object.geometry.uvs;
256
- dst.push(src[a + 0], src[a + 1]);
240
+
241
+ if (this.colors.length > 0) {
242
+ this.addColor(ia, ib, ic);
257
243
  }
258
- }, {
259
- key: "addFace",
260
- value: function addFace(a, b, c, ua, ub, uc, na, nb, nc) {
261
- var vLen = this.vertices.length;
262
- var ia = this.parseVertexIndex(a, vLen);
263
- var ib = this.parseVertexIndex(b, vLen);
264
- var ic = this.parseVertexIndex(c, vLen);
265
- this.addVertex(ia, ib, ic);
266
-
267
- if (ua !== undefined && ua !== '') {
268
- var uvLen = this.uvs.length;
269
- ia = this.parseUVIndex(ua, uvLen);
270
- ib = this.parseUVIndex(ub, uvLen);
271
- ic = this.parseUVIndex(uc, uvLen);
272
- this.addUV(ia, ib, ic);
273
- }
244
+ }
274
245
 
275
- if (na !== undefined && na !== '') {
276
- var nLen = this.normals.length;
277
- ia = this.parseNormalIndex(na, nLen);
278
- ib = na === nb ? ia : this.parseNormalIndex(nb, nLen);
279
- ic = na === nc ? ia : this.parseNormalIndex(nc, nLen);
280
- this.addNormal(ia, ib, ic);
281
- }
246
+ addPointGeometry(vertices) {
247
+ this.object.geometry.type = 'Points';
248
+ const vLen = this.vertices.length;
282
249
 
283
- if (this.colors.length > 0) {
284
- this.addColor(ia, ib, ic);
285
- }
250
+ for (const vertex of vertices) {
251
+ this.addVertexPoint(this.parseVertexIndex(vertex, vLen));
286
252
  }
287
- }, {
288
- key: "addPointGeometry",
289
- value: function addPointGeometry(vertices) {
290
- this.object.geometry.type = 'Points';
291
- var vLen = this.vertices.length;
292
-
293
- var _iterator = _createForOfIteratorHelper(vertices),
294
- _step;
295
-
296
- try {
297
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
298
- var vertex = _step.value;
299
- this.addVertexPoint(this.parseVertexIndex(vertex, vLen));
300
- }
301
- } catch (err) {
302
- _iterator.e(err);
303
- } finally {
304
- _iterator.f();
305
- }
306
- }
307
- }, {
308
- key: "addLineGeometry",
309
- value: function addLineGeometry(vertices, uvs) {
310
- this.object.geometry.type = 'Line';
311
- var vLen = this.vertices.length;
312
- var uvLen = this.uvs.length;
313
-
314
- var _iterator2 = _createForOfIteratorHelper(vertices),
315
- _step2;
316
-
317
- try {
318
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
319
- var vertex = _step2.value;
320
- this.addVertexLine(this.parseVertexIndex(vertex, vLen));
321
- }
322
- } catch (err) {
323
- _iterator2.e(err);
324
- } finally {
325
- _iterator2.f();
326
- }
253
+ }
327
254
 
328
- var _iterator3 = _createForOfIteratorHelper(uvs),
329
- _step3;
255
+ addLineGeometry(vertices, uvs) {
256
+ this.object.geometry.type = 'Line';
257
+ const vLen = this.vertices.length;
258
+ const uvLen = this.uvs.length;
330
259
 
331
- try {
332
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
333
- var uv = _step3.value;
334
- this.addUVLine(this.parseUVIndex(uv, uvLen));
335
- }
336
- } catch (err) {
337
- _iterator3.e(err);
338
- } finally {
339
- _iterator3.f();
340
- }
260
+ for (const vertex of vertices) {
261
+ this.addVertexLine(this.parseVertexIndex(vertex, vLen));
341
262
  }
342
- }]);
343
- return ParserState;
344
- }();
345
263
 
346
- var _default = function _default(text) {
347
- var state = new ParserState();
264
+ for (const uv of uvs) {
265
+ this.addUVLine(this.parseUVIndex(uv, uvLen));
266
+ }
267
+ }
268
+
269
+ }
270
+
271
+ var _default = text => {
272
+ const state = new ParserState();
348
273
 
349
274
  if (text.indexOf('\r\n') !== -1) {
350
275
  text = text.replace(/\r\n/g, '\n');
@@ -354,14 +279,14 @@ var _default = function _default(text) {
354
279
  text = text.replace(/\\\n/g, '');
355
280
  }
356
281
 
357
- var lines = text.split('\n');
358
- var line = '';
359
- var lineFirstChar = '';
360
- var lineLength = 0;
361
- var result = [];
362
- var trimLeft = typeof ''.trimLeft === 'function';
282
+ const lines = text.split('\n');
283
+ let line = '';
284
+ let lineFirstChar = '';
285
+ let lineLength = 0;
286
+ let result = [];
287
+ const trimLeft = typeof ''.trimLeft === 'function';
363
288
 
364
- for (var i = 0, l = lines.length; i < l; i++) {
289
+ for (let i = 0, l = lines.length; i < l; i++) {
365
290
  line = lines[i];
366
291
  line = trimLeft ? line.trimLeft() : line.trim();
367
292
  lineLength = line.length;
@@ -370,7 +295,7 @@ var _default = function _default(text) {
370
295
  if (lineFirstChar === '#') continue;
371
296
 
372
297
  if (lineFirstChar === 'v') {
373
- var data = line.split(/\s+/);
298
+ const data = line.split(/\s+/);
374
299
 
375
300
  switch (data[0]) {
376
301
  case 'v':
@@ -393,38 +318,38 @@ var _default = function _default(text) {
393
318
  default:
394
319
  }
395
320
  } else if (lineFirstChar === 'f') {
396
- var lineData = line.substr(1).trim();
397
- var vertexData = lineData.split(/\s+/);
398
- var faceVertices = [];
321
+ const lineData = line.substr(1).trim();
322
+ const vertexData = lineData.split(/\s+/);
323
+ const faceVertices = [];
399
324
 
400
- for (var j = 0, jl = vertexData.length; j < jl; j++) {
401
- var vertex = vertexData[j];
325
+ for (let j = 0, jl = vertexData.length; j < jl; j++) {
326
+ const vertex = vertexData[j];
402
327
 
403
328
  if (vertex.length > 0) {
404
- var vertexParts = vertex.split('/');
329
+ const vertexParts = vertex.split('/');
405
330
  faceVertices.push(vertexParts);
406
331
  }
407
332
  }
408
333
 
409
- var v1 = faceVertices[0];
334
+ const v1 = faceVertices[0];
410
335
 
411
- for (var _j = 1, _jl = faceVertices.length - 1; _j < _jl; _j++) {
412
- var v2 = faceVertices[_j];
413
- var v3 = faceVertices[_j + 1];
336
+ for (let j = 1, jl = faceVertices.length - 1; j < jl; j++) {
337
+ const v2 = faceVertices[j];
338
+ const v3 = faceVertices[j + 1];
414
339
  state.addFace(v1[0], v2[0], v3[0], v1[1], v2[1], v3[1], v1[2], v2[2], v3[2]);
415
340
  }
416
341
  } else if (lineFirstChar === 'l') {
417
- var lineParts = line.substring(1).trim().split(' ');
418
- var lineVertices = void 0;
419
- var lineUVs = [];
342
+ const lineParts = line.substring(1).trim().split(' ');
343
+ let lineVertices;
344
+ const lineUVs = [];
420
345
 
421
346
  if (line.indexOf('/') === -1) {
422
347
  lineVertices = lineParts;
423
348
  } else {
424
349
  lineVertices = [];
425
350
 
426
- for (var li = 0, llen = lineParts.length; li < llen; li++) {
427
- var parts = lineParts[li].split('/');
351
+ for (let li = 0, llen = lineParts.length; li < llen; li++) {
352
+ const parts = lineParts[li].split('/');
428
353
  if (parts[0] !== '') lineVertices.push(parts[0]);
429
354
  if (parts[1] !== '') lineUVs.push(parts[1]);
430
355
  }
@@ -432,13 +357,11 @@ var _default = function _default(text) {
432
357
 
433
358
  state.addLineGeometry(lineVertices, lineUVs);
434
359
  } else if (lineFirstChar === 'p') {
435
- var _lineData = line.substr(1).trim();
436
-
437
- var pointData = _lineData.split(' ');
438
-
360
+ const lineData = line.substr(1).trim();
361
+ const pointData = lineData.split(' ');
439
362
  state.addPointGeometry(pointData);
440
363
  } else if ((result = OBJECT_RE.exec(line)) !== null) {
441
- var name = (' ' + result[0].substr(1).trim()).substr(1);
364
+ const name = (' ' + result[0].substr(1).trim()).substr(1);
442
365
  state.startObject(name);
443
366
  } else if (MATERIAL_USE_RE.test(line)) {
444
367
  state.object.startMaterial(line.substring(7).trim(), state.materialLibraries);
@@ -448,13 +371,13 @@ var _default = function _default(text) {
448
371
  result = line.split(' ');
449
372
 
450
373
  if (result.length > 1) {
451
- var value = result[1].trim().toLowerCase();
374
+ const value = result[1].trim().toLowerCase();
452
375
  state.object.smooth = value !== '0' && value !== 'off';
453
376
  } else {
454
377
  state.object.smooth = true;
455
378
  }
456
379
 
457
- var material = state.object.currentMaterial();
380
+ const material = state.object.currentMaterial();
458
381
  if (material) material.smooth = state.object.smooth;
459
382
  } else {
460
383
  if (line === '\0') continue;
@@ -463,97 +386,79 @@ var _default = function _default(text) {
463
386
  }
464
387
 
465
388
  state.finalize();
466
- var meshes = [];
467
- var materials = [];
468
-
469
- var _iterator4 = _createForOfIteratorHelper(state.objects),
470
- _step4;
471
-
472
- try {
473
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
474
- var object = _step4.value;
475
- var geometry = object.geometry;
476
- if (geometry.vertices.length === 0) continue;
477
- var mesh = {
478
- header: {
479
- vertexCount: geometry.vertices.length / 3
480
- },
481
- attributes: {}
482
- };
389
+ const meshes = [];
390
+ const materials = [];
391
+
392
+ for (const object of state.objects) {
393
+ const {
394
+ geometry
395
+ } = object;
396
+ if (geometry.vertices.length === 0) continue;
397
+ const mesh = {
398
+ header: {
399
+ vertexCount: geometry.vertices.length / 3
400
+ },
401
+ attributes: {}
402
+ };
483
403
 
484
- switch (geometry.type) {
485
- case 'Points':
486
- mesh.mode = 0;
487
- break;
404
+ switch (geometry.type) {
405
+ case 'Points':
406
+ mesh.mode = 0;
407
+ break;
488
408
 
489
- case 'Line':
490
- mesh.mode = 1;
491
- break;
409
+ case 'Line':
410
+ mesh.mode = 1;
411
+ break;
492
412
 
493
- default:
494
- mesh.mode = 4;
495
- break;
496
- }
413
+ default:
414
+ mesh.mode = 4;
415
+ break;
416
+ }
497
417
 
498
- mesh.attributes.POSITION = {
499
- value: new Float32Array(geometry.vertices),
418
+ mesh.attributes.POSITION = {
419
+ value: new Float32Array(geometry.vertices),
420
+ size: 3
421
+ };
422
+
423
+ if (geometry.normals.length > 0) {
424
+ mesh.attributes.NORMAL = {
425
+ value: new Float32Array(geometry.normals),
500
426
  size: 3
501
427
  };
428
+ }
502
429
 
503
- if (geometry.normals.length > 0) {
504
- mesh.attributes.NORMAL = {
505
- value: new Float32Array(geometry.normals),
506
- size: 3
507
- };
508
- }
509
-
510
- if (geometry.colors.length > 0) {
511
- mesh.attributes.COLOR_0 = {
512
- value: new Float32Array(geometry.colors),
513
- size: 3
514
- };
515
- }
516
-
517
- if (geometry.uvs.length > 0) {
518
- mesh.attributes.TEXCOORD_0 = {
519
- value: new Float32Array(geometry.uvs),
520
- size: 2
521
- };
522
- }
523
-
524
- mesh.materials = [];
430
+ if (geometry.colors.length > 0) {
431
+ mesh.attributes.COLOR_0 = {
432
+ value: new Float32Array(geometry.colors),
433
+ size: 3
434
+ };
435
+ }
525
436
 
526
- var _iterator5 = _createForOfIteratorHelper(object.materials),
527
- _step5;
437
+ if (geometry.uvs.length > 0) {
438
+ mesh.attributes.TEXCOORD_0 = {
439
+ value: new Float32Array(geometry.uvs),
440
+ size: 2
441
+ };
442
+ }
528
443
 
529
- try {
530
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
531
- var sourceMaterial = _step5.value;
532
- var _material = {
533
- name: sourceMaterial.name,
534
- flatShading: !sourceMaterial.smooth
535
- };
536
- mesh.materials.push(_material);
537
- materials.push(_material);
538
- }
539
- } catch (err) {
540
- _iterator5.e(err);
541
- } finally {
542
- _iterator5.f();
543
- }
444
+ mesh.materials = [];
544
445
 
545
- mesh.name = object.name;
546
- meshes.push(mesh);
446
+ for (const sourceMaterial of object.materials) {
447
+ const _material = {
448
+ name: sourceMaterial.name,
449
+ flatShading: !sourceMaterial.smooth
450
+ };
451
+ mesh.materials.push(_material);
452
+ materials.push(_material);
547
453
  }
548
- } catch (err) {
549
- _iterator4.e(err);
550
- } finally {
551
- _iterator4.f();
454
+
455
+ mesh.name = object.name;
456
+ meshes.push(mesh);
552
457
  }
553
458
 
554
459
  return {
555
- meshes: meshes,
556
- materials: materials
460
+ meshes,
461
+ materials
557
462
  };
558
463
  };
559
464