@galacean/engine-loader 1.1.0-beta.2 → 1.1.0-beta.21

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.
@@ -121,116 +121,116 @@ var BufferReader = /*#__PURE__*/ function() {
121
121
  this.data = data;
122
122
  this._dataView = new DataView(data.buffer, data.byteOffset + byteOffset, byteLength != null ? byteLength : data.byteLength - byteOffset);
123
123
  this._littleEndian = littleEndian;
124
- this._offset = 0;
124
+ this._position = 0;
125
125
  this._baseOffset = byteOffset;
126
126
  }
127
127
  var _proto = BufferReader.prototype;
128
128
  _proto.nextUint8 = function nextUint8() {
129
- var value = this._dataView.getUint8(this._offset);
130
- this._offset += 1;
129
+ var value = this._dataView.getUint8(this._position);
130
+ this._position += 1;
131
131
  return value;
132
132
  };
133
133
  _proto.nextUint16 = function nextUint16() {
134
- var value = this._dataView.getUint16(this._offset, this._littleEndian);
135
- this._offset += 2;
134
+ var value = this._dataView.getUint16(this._position, this._littleEndian);
135
+ this._position += 2;
136
136
  return value;
137
137
  };
138
138
  _proto.nextUint32 = function nextUint32() {
139
- var value = this._dataView.getUint32(this._offset, this._littleEndian);
140
- this._offset += 4;
139
+ var value = this._dataView.getUint32(this._position, this._littleEndian);
140
+ this._position += 4;
141
141
  return value;
142
142
  };
143
143
  _proto.nextInt32 = function nextInt32() {
144
- var value = this._dataView.getInt32(this._offset, this._littleEndian);
145
- this._offset += 4;
144
+ var value = this._dataView.getInt32(this._position, this._littleEndian);
145
+ this._position += 4;
146
146
  return value;
147
147
  };
148
148
  _proto.nextInt32Array = function nextInt32Array(len) {
149
- var value = new Int32Array(this.data.buffer, this._offset + this._dataView.byteOffset, len);
150
- this._offset += 4 * len;
149
+ var value = new Int32Array(this.data.buffer, this._position + this._dataView.byteOffset, len);
150
+ this._position += 4 * len;
151
151
  return value;
152
152
  };
153
153
  _proto.nextFloat32 = function nextFloat32() {
154
- var value = this._dataView.getFloat32(this._offset, this._littleEndian);
155
- this._offset += 4;
154
+ var value = this._dataView.getFloat32(this._position, this._littleEndian);
155
+ this._position += 4;
156
156
  return value;
157
157
  };
158
158
  _proto.nextFloat32Array = function nextFloat32Array(len) {
159
- var value = new Float32Array(this.data.buffer, this._offset + this._dataView.byteOffset, len);
160
- this._offset += 4 * len;
159
+ var value = new Float32Array(this.data.buffer, this._position + this._dataView.byteOffset, len);
160
+ this._position += 4 * len;
161
161
  return value;
162
162
  };
163
163
  _proto.nextUint32Array = function nextUint32Array(len) {
164
- var value = new Uint32Array(this.data.buffer, this._offset + this._dataView.byteOffset, len);
165
- this._offset += 4 * len;
164
+ var value = new Uint32Array(this.data.buffer, this._position + this._dataView.byteOffset, len);
165
+ this._position += 4 * len;
166
166
  return value;
167
167
  };
168
168
  _proto.nextUint8Array = function nextUint8Array(len) {
169
- var value = new Uint8Array(this.data.buffer, this._offset + this._dataView.byteOffset, len);
170
- this._offset += len;
169
+ var value = new Uint8Array(this.data.buffer, this._position + this._dataView.byteOffset, len);
170
+ this._position += len;
171
171
  return value;
172
172
  };
173
173
  _proto.nextUint64 = function nextUint64() {
174
- var left = this._dataView.getUint32(this._offset, this._littleEndian);
175
- var right = this._dataView.getUint32(this._offset + 4, this._littleEndian);
174
+ var left = this._dataView.getUint32(this._position, this._littleEndian);
175
+ var right = this._dataView.getUint32(this._position + 4, this._littleEndian);
176
176
  var value = left + Math.pow(2, 32) * right;
177
- this._offset += 8;
177
+ this._position += 8;
178
178
  return value;
179
179
  };
180
180
  _proto.nextStr = function nextStr() {
181
181
  var strByteLength = this.nextUint16();
182
- var uint8Array = new Uint8Array(this.data.buffer, this._offset + this._dataView.byteOffset, strByteLength);
183
- this._offset += strByteLength;
182
+ var uint8Array = new Uint8Array(this.data.buffer, this._position + this._dataView.byteOffset, strByteLength);
183
+ this._position += strByteLength;
184
184
  return miniprogram.Utils.decodeText(uint8Array);
185
185
  };
186
186
  /**
187
187
  * image data 放在最后
188
188
  */ _proto.nextImageData = function nextImageData(count) {
189
- return new Uint8Array(this.data.buffer, this.data.byteOffset + this._offset);
189
+ return new Uint8Array(this.data.buffer, this.data.byteOffset + this._position);
190
190
  };
191
191
  _proto.nextImagesData = function nextImagesData(count) {
192
192
  var imagesLen = new Array(count);
193
193
  // Start offset of Uint32Array should be a multiple of 4. ref: https://stackoverflow.com/questions/15417310/why-typed-array-constructors-require-offset-to-be-multiple-of-underlying-type-si
194
194
  for(var i = 0; i < count; i++){
195
- var len = this._dataView.getUint32(this._offset, this._littleEndian);
195
+ var len = this._dataView.getUint32(this._position, this._littleEndian);
196
196
  imagesLen[i] = len;
197
- this._offset += 4;
197
+ this._position += 4;
198
198
  }
199
199
  var imagesData = [];
200
200
  for(var i1 = 0; i1 < count; i1++){
201
201
  var len1 = imagesLen[i1];
202
- var buffer = new Uint8Array(this.data.buffer, this._dataView.byteOffset + this._offset, len1);
203
- this._offset += len1;
202
+ var buffer = new Uint8Array(this.data.buffer, this._dataView.byteOffset + this._position, len1);
203
+ this._position += len1;
204
204
  imagesData.push(buffer);
205
205
  }
206
206
  return imagesData;
207
207
  };
208
208
  _proto.skip = function skip(bytes) {
209
- this._offset += bytes;
209
+ this._position += bytes;
210
210
  return this;
211
211
  };
212
212
  _proto.scan = function scan(maxByteLength, term) {
213
213
  if (term === void 0) term = 0x00;
214
- var byteOffset = this._offset;
214
+ var byteOffset = this._position;
215
215
  var byteLength = 0;
216
- while(this._dataView.getUint8(this._offset) !== term && byteLength < maxByteLength){
216
+ while(this._dataView.getUint8(this._position) !== term && byteLength < maxByteLength){
217
217
  byteLength++;
218
- this._offset++;
218
+ this._position++;
219
219
  }
220
- if (byteLength < maxByteLength) this._offset++;
220
+ if (byteLength < maxByteLength) this._position++;
221
221
  return new Uint8Array(this._dataView.buffer, this._dataView.byteOffset + byteOffset, byteLength);
222
222
  };
223
223
  _create_class(BufferReader, [
224
224
  {
225
225
  key: "position",
226
226
  get: function get() {
227
- return this._offset;
227
+ return this._position;
228
228
  }
229
229
  },
230
230
  {
231
231
  key: "offset",
232
232
  get: function get() {
233
- return this._offset + this._baseOffset;
233
+ return this._position + this._baseOffset;
234
234
  }
235
235
  }
236
236
  ]);
@@ -294,75 +294,74 @@ exports.MeshDecoder = /*#__PURE__*/ function() {
294
294
  var encodedMeshData = JSON.parse(jsonDataString);
295
295
  // @ts-ignore Vector3 is not compatible with {x: number, y: number, z: number}.
296
296
  encodedMeshData.bounds && modelMesh.bounds.copyFrom(encodedMeshData.bounds);
297
- var offset = Math.ceil(bufferReader.offset / 4) * 4;
297
+ var offset = Math.ceil(bufferReader.offset / 4) * 4 + bufferReader.data.byteOffset;
298
298
  var buffer = bufferReader.data.buffer;
299
- var byteOffset = bufferReader.data.byteOffset;
300
- var float32Array = new Float32Array(buffer, encodedMeshData.positions.start + offset + byteOffset, (encodedMeshData.positions.end - encodedMeshData.positions.start) / 4);
299
+ var float32Array = new Float32Array(buffer, encodedMeshData.positions.start + offset, (encodedMeshData.positions.end - encodedMeshData.positions.start) / 4);
301
300
  var vertexCount = float32Array.length / 3;
302
301
  var positions = float32ArrayToVector3(float32Array, vertexCount);
303
302
  modelMesh.setPositions(positions);
304
303
  if (encodedMeshData.normals) {
305
- var float32Array1 = new Float32Array(buffer, encodedMeshData.normals.start + offset + byteOffset, (encodedMeshData.normals.end - encodedMeshData.normals.start) / 4);
304
+ var float32Array1 = new Float32Array(buffer, encodedMeshData.normals.start + offset, (encodedMeshData.normals.end - encodedMeshData.normals.start) / 4);
306
305
  var normals = float32ArrayToVector3(float32Array1, vertexCount);
307
306
  modelMesh.setNormals(normals);
308
307
  }
309
308
  if (encodedMeshData.uvs) {
310
- var float32Array2 = new Float32Array(buffer, encodedMeshData.uvs.start + offset + byteOffset, (encodedMeshData.uvs.end - encodedMeshData.uvs.start) / 4);
309
+ var float32Array2 = new Float32Array(buffer, encodedMeshData.uvs.start + offset, (encodedMeshData.uvs.end - encodedMeshData.uvs.start) / 4);
311
310
  modelMesh.setUVs(float32ArrayToVector2(float32Array2, vertexCount));
312
311
  }
313
312
  if (encodedMeshData.uv1) {
314
- var float32Array3 = new Float32Array(buffer, encodedMeshData.uv1.start + offset + byteOffset, (encodedMeshData.uv1.end - encodedMeshData.uv1.start) / 4);
313
+ var float32Array3 = new Float32Array(buffer, encodedMeshData.uv1.start + offset, (encodedMeshData.uv1.end - encodedMeshData.uv1.start) / 4);
315
314
  modelMesh.setUVs(float32ArrayToVector2(float32Array3, vertexCount), 1);
316
315
  }
317
316
  if (encodedMeshData.uv2) {
318
- var float32Array4 = new Float32Array(buffer, encodedMeshData.uv2.start + offset + byteOffset, (encodedMeshData.uv2.end - encodedMeshData.uv2.start) / 4);
317
+ var float32Array4 = new Float32Array(buffer, encodedMeshData.uv2.start + offset, (encodedMeshData.uv2.end - encodedMeshData.uv2.start) / 4);
319
318
  modelMesh.setUVs(float32ArrayToVector2(float32Array4, vertexCount), 2);
320
319
  }
321
320
  if (encodedMeshData.uv3) {
322
- var float32Array5 = new Float32Array(buffer, encodedMeshData.uv3.start + offset + byteOffset, (encodedMeshData.uv3.end - encodedMeshData.uv3.start) / 4);
321
+ var float32Array5 = new Float32Array(buffer, encodedMeshData.uv3.start + offset, (encodedMeshData.uv3.end - encodedMeshData.uv3.start) / 4);
323
322
  modelMesh.setUVs(float32ArrayToVector2(float32Array5, vertexCount), 3);
324
323
  }
325
324
  if (encodedMeshData.uv4) {
326
- var float32Array6 = new Float32Array(buffer, encodedMeshData.uv4.start + offset + byteOffset, (encodedMeshData.uv4.end - encodedMeshData.uv4.start) / 4);
325
+ var float32Array6 = new Float32Array(buffer, encodedMeshData.uv4.start + offset, (encodedMeshData.uv4.end - encodedMeshData.uv4.start) / 4);
327
326
  modelMesh.setUVs(float32ArrayToVector2(float32Array6, vertexCount), 4);
328
327
  }
329
328
  if (encodedMeshData.uv5) {
330
- var float32Array7 = new Float32Array(buffer, encodedMeshData.uv5.start + offset + byteOffset, (encodedMeshData.uv5.end - encodedMeshData.uv5.start) / 4);
329
+ var float32Array7 = new Float32Array(buffer, encodedMeshData.uv5.start + offset, (encodedMeshData.uv5.end - encodedMeshData.uv5.start) / 4);
331
330
  modelMesh.setUVs(float32ArrayToVector2(float32Array7, vertexCount), 5);
332
331
  }
333
332
  if (encodedMeshData.uv6) {
334
- var float32Array8 = new Float32Array(buffer, encodedMeshData.uv6.start + offset + byteOffset, (encodedMeshData.uv6.end - encodedMeshData.uv6.start) / 4);
333
+ var float32Array8 = new Float32Array(buffer, encodedMeshData.uv6.start + offset, (encodedMeshData.uv6.end - encodedMeshData.uv6.start) / 4);
335
334
  modelMesh.setUVs(float32ArrayToVector2(float32Array8, vertexCount), 6);
336
335
  }
337
336
  if (encodedMeshData.uv7) {
338
- var float32Array9 = new Float32Array(buffer, encodedMeshData.uv7.start + offset + byteOffset, (encodedMeshData.uv7.end - encodedMeshData.uv7.start) / 4);
337
+ var float32Array9 = new Float32Array(buffer, encodedMeshData.uv7.start + offset, (encodedMeshData.uv7.end - encodedMeshData.uv7.start) / 4);
339
338
  modelMesh.setUVs(float32ArrayToVector2(float32Array9, vertexCount), 7);
340
339
  }
341
340
  if (encodedMeshData.colors) {
342
- var float32Array10 = new Float32Array(buffer, encodedMeshData.colors.start + offset + byteOffset, (encodedMeshData.colors.end - encodedMeshData.colors.start) / 4);
341
+ var float32Array10 = new Float32Array(buffer, encodedMeshData.colors.start + offset, (encodedMeshData.colors.end - encodedMeshData.colors.start) / 4);
343
342
  modelMesh.setColors(float32ArrayToVColor(float32Array10, vertexCount));
344
343
  }
345
344
  if (encodedMeshData.boneWeights) {
346
- var float32Array11 = new Float32Array(buffer, encodedMeshData.boneWeights.start + offset + byteOffset, (encodedMeshData.boneWeights.end - encodedMeshData.boneWeights.start) / 4);
345
+ var float32Array11 = new Float32Array(buffer, encodedMeshData.boneWeights.start + offset, (encodedMeshData.boneWeights.end - encodedMeshData.boneWeights.start) / 4);
347
346
  modelMesh.setBoneWeights(float32ArrayToVector4(float32Array11, vertexCount));
348
347
  }
349
348
  if (encodedMeshData.boneIndices) {
350
- var float32Array12 = new Float32Array(buffer, encodedMeshData.boneIndices.start + offset + byteOffset, (encodedMeshData.boneIndices.end - encodedMeshData.boneIndices.start) / 4);
349
+ var float32Array12 = new Float32Array(buffer, encodedMeshData.boneIndices.start + offset, (encodedMeshData.boneIndices.end - encodedMeshData.boneIndices.start) / 4);
351
350
  modelMesh.setBoneIndices(float32ArrayToVector4(float32Array12, vertexCount));
352
351
  }
353
352
  if (encodedMeshData.blendShapes) {
354
353
  encodedMeshData.blendShapes.forEach(function(blendShapeData) {
355
354
  var blendShape = new miniprogram.BlendShape(blendShapeData.name);
356
355
  blendShapeData.frames.forEach(function(frameData) {
357
- var positionArray = new Float32Array(buffer, frameData.deltaPosition.start + offset + byteOffset, (frameData.deltaPosition.end - frameData.deltaPosition.start) / 4);
356
+ var positionArray = new Float32Array(buffer, frameData.deltaPosition.start + offset, (frameData.deltaPosition.end - frameData.deltaPosition.start) / 4);
358
357
  var count = positionArray.length / 3;
359
358
  var deltaPosition = float32ArrayToVector3(positionArray, count);
360
359
  if (frameData.deltaNormals) {
361
- var normalsArray = new Float32Array(buffer, frameData.deltaNormals.start + offset + byteOffset, (frameData.deltaNormals.end - frameData.deltaNormals.start) / 4);
360
+ var normalsArray = new Float32Array(buffer, frameData.deltaNormals.start + offset, (frameData.deltaNormals.end - frameData.deltaNormals.start) / 4);
362
361
  float32ArrayToVector3(normalsArray, count);
363
362
  }
364
363
  if (frameData.deltaTangents) {
365
- var tangentsArray = new Float32Array(buffer, frameData.deltaTangents.start + offset + byteOffset, (frameData.deltaTangents.end - frameData.deltaTangents.start) / 4);
364
+ var tangentsArray = new Float32Array(buffer, frameData.deltaTangents.start + offset, (frameData.deltaTangents.end - frameData.deltaTangents.start) / 4);
366
365
  float32ArrayToVector4(tangentsArray, count);
367
366
  }
368
367
  blendShape.addFrame(frameData.weight, deltaPosition);
@@ -373,9 +372,9 @@ exports.MeshDecoder = /*#__PURE__*/ function() {
373
372
  if (encodedMeshData.indices) {
374
373
  var indices = null;
375
374
  if (encodedMeshData.indices.type === 0) {
376
- indices = new Uint16Array(buffer, encodedMeshData.indices.start + offset + byteOffset, (encodedMeshData.indices.end - encodedMeshData.indices.start) / 2);
375
+ indices = new Uint16Array(buffer, encodedMeshData.indices.start + offset, (encodedMeshData.indices.end - encodedMeshData.indices.start) / 2);
377
376
  } else {
378
- indices = new Uint32Array(buffer, encodedMeshData.indices.start + offset + byteOffset, (encodedMeshData.indices.end - encodedMeshData.indices.start) / 4);
377
+ indices = new Uint32Array(buffer, encodedMeshData.indices.start + offset, (encodedMeshData.indices.end - encodedMeshData.indices.start) / 4);
379
378
  }
380
379
  modelMesh.setIndices(indices);
381
380
  }
@@ -528,12 +527,12 @@ function _construct(Parent, args, Class) {
528
527
  }
529
528
 
530
529
  var ReflectionParser = /*#__PURE__*/ function() {
531
- function ReflectionParser() {}
532
- ReflectionParser.registerCustomParseComponent = function registerCustomParseComponent(componentType, handle) {
533
- this.customParseComponentHandles[componentType] = handle;
534
- };
535
- ReflectionParser.parseEntity = function parseEntity(entityConfig, engine) {
536
- return ReflectionParser.getEntityByConfig(entityConfig, engine).then(function(entity) {
530
+ function ReflectionParser(_context) {
531
+ this._context = _context;
532
+ }
533
+ var _proto = ReflectionParser.prototype;
534
+ _proto.parseEntity = function parseEntity(entityConfig) {
535
+ return this._getEntityByConfig(entityConfig).then(function(entity) {
537
536
  var _entityConfig_isActive;
538
537
  entity.isActive = (_entityConfig_isActive = entityConfig.isActive) != null ? _entityConfig_isActive : true;
539
538
  var position = entityConfig.position, rotation = entityConfig.rotation, scale = entityConfig.scale;
@@ -543,72 +542,33 @@ var ReflectionParser = /*#__PURE__*/ function() {
543
542
  return entity;
544
543
  });
545
544
  };
546
- ReflectionParser.getEntityByConfig = function getEntityByConfig(entityConfig, engine) {
547
- // @ts-ignore
548
- var assetRefId = entityConfig.assetRefId;
549
- if (assetRefId) {
550
- return engine.resourceManager// @ts-ignore
551
- .getResourceByRef({
552
- refId: assetRefId,
553
- key: entityConfig.key,
554
- isClone: entityConfig.isClone
555
- }).then(function(entity) {
556
- entity.name = entityConfig.name;
557
- return entity;
558
- });
559
- } else {
560
- var entity = new miniprogram.Entity(engine, entityConfig.name);
561
- return Promise.resolve(entity);
562
- }
563
- };
564
- ReflectionParser.parseClassObject = function parseClassObject(item, engine, resourceManager) {
565
- if (resourceManager === void 0) resourceManager = engine.resourceManager;
545
+ _proto.parseClassObject = function parseClassObject(item) {
546
+ var _this = this;
566
547
  var Class = miniprogram.Loader.getClass(item.class);
567
548
  var _item_constructParams;
568
549
  var params = (_item_constructParams = item.constructParams) != null ? _item_constructParams : [];
569
- var instance = _construct(Class, [].concat(params));
570
- return this.parsePropsAndMethods(instance, item, engine, resourceManager);
571
- };
572
- ReflectionParser.parseBasicType = function parseBasicType(value, engine, resourceManager) {
573
- if (resourceManager === void 0) resourceManager = engine.resourceManager;
574
- var _this = this;
575
- if (Array.isArray(value)) {
576
- return Promise.all(value.map(function(item) {
577
- return _this.parseBasicType(item, engine, resourceManager);
578
- }));
579
- } else if (typeof value === "object" && value != null) {
580
- if (this._isClass(value)) {
581
- // class object
582
- return this.parseClassObject(value, engine, resourceManager);
583
- } else if (this._isRef(value)) {
584
- // reference object
585
- return resourceManager.getResourceByRef(value);
586
- } else {
587
- // basic type
588
- return Promise.resolve(value);
589
- }
590
- } else {
591
- return Promise.resolve(value);
592
- }
550
+ return Promise.all(params.map(function(param) {
551
+ return _this.parseBasicType(param);
552
+ })).then(function(resultParams) {
553
+ return _construct(Class, [].concat(resultParams));
554
+ }).then(function(instance) {
555
+ return _this.parsePropsAndMethods(instance, item);
556
+ });
593
557
  };
594
- ReflectionParser.parsePropsAndMethods = function parsePropsAndMethods(instance, item, engine, resourceManager) {
595
- if (resourceManager === void 0) resourceManager = engine.resourceManager;
596
- var _this = this;
558
+ _proto.parsePropsAndMethods = function parsePropsAndMethods(instance, item) {
597
559
  var promises = [];
598
560
  if (item.methods) {
599
561
  for(var methodName in item.methods){
600
562
  var methodParams = item.methods[methodName];
601
563
  for(var i = 0, count = methodParams.length; i < count; i++){
602
- var params = methodParams[i];
603
- var promise = this.parseMethod(instance, methodName, params, engine, resourceManager);
604
- promises.push(promise);
564
+ promises.push(this.parseMethod(instance, methodName, methodParams[i]));
605
565
  }
606
566
  }
607
567
  }
608
568
  if (item.props) {
609
- var _this1 = this, _loop = function(key) {
569
+ var _this = this, _loop = function(key) {
610
570
  var value = item.props[key];
611
- var promise = _this1.parseBasicType(value, engine).then(function(v) {
571
+ var promise = _this.parseBasicType(value, instance[key]).then(function(v) {
612
572
  return instance[key] = v;
613
573
  });
614
574
  promises.push(promise);
@@ -616,27 +576,96 @@ var ReflectionParser = /*#__PURE__*/ function() {
616
576
  for(var key in item.props)_loop(key);
617
577
  }
618
578
  return Promise.all(promises).then(function() {
619
- var handle = _this.customParseComponentHandles[instance.constructor.name];
620
- if (handle) return handle(instance, item, engine);
579
+ var handle = ReflectionParser.customParseComponentHandles[instance.constructor.name];
580
+ if (handle) return handle(instance, item);
621
581
  else return instance;
622
582
  });
623
583
  };
624
- ReflectionParser.parseMethod = function parseMethod(instance, methodName, methodParams, engine, resourceManager) {
625
- if (resourceManager === void 0) resourceManager = engine.resourceManager;
584
+ _proto.parseMethod = function parseMethod(instance, methodName, methodParams) {
626
585
  var _this = this;
627
586
  return Promise.all(methodParams.map(function(param) {
628
- return _this.parseBasicType(param, engine, resourceManager);
587
+ return _this.parseBasicType(param);
629
588
  })).then(function(result) {
630
589
  var _instance;
631
590
  return (_instance = instance)[methodName].apply(_instance, [].concat(result));
632
591
  });
633
592
  };
593
+ _proto.parseBasicType = function parseBasicType(value, originValue) {
594
+ var _this = this;
595
+ if (Array.isArray(value)) {
596
+ return Promise.all(value.map(function(item) {
597
+ return _this.parseBasicType(item);
598
+ }));
599
+ } else if (typeof value === "object" && value != null) {
600
+ if (ReflectionParser._isClass(value)) {
601
+ // class object
602
+ return this.parseClassObject(value);
603
+ } else if (ReflectionParser._isAssetRef(value)) {
604
+ // reference object
605
+ // @ts-ignore
606
+ return this._context.resourceManager.getResourceByRef(value);
607
+ } else if (ReflectionParser._isEntityRef(value)) {
608
+ // entity reference
609
+ return Promise.resolve(this._context.entityMap.get(value.entityId));
610
+ } else if (originValue) {
611
+ var _this1 = this, _loop = function(key) {
612
+ if (key === "methods") {
613
+ var methods = value[key];
614
+ for(var methodName in methods){
615
+ var methodParams = methods[methodName];
616
+ for(var i = 0, count = methodParams.length; i < count; i++){
617
+ var params = methodParams[i];
618
+ var promise = _this1.parseMethod(originValue, methodName, params);
619
+ promises.push(promise);
620
+ }
621
+ }
622
+ } else {
623
+ promises.push(_this1.parseBasicType(value[key], originValue[key]).then(function(v) {
624
+ return originValue[key] = v;
625
+ }));
626
+ }
627
+ };
628
+ var promises = [];
629
+ for(var key in value)_loop(key);
630
+ return Promise.all(promises).then(function() {
631
+ return originValue;
632
+ });
633
+ }
634
+ }
635
+ // primitive type
636
+ return Promise.resolve(value);
637
+ };
638
+ _proto._getEntityByConfig = function _getEntityByConfig(entityConfig) {
639
+ // @ts-ignore
640
+ var assetRefId = entityConfig.assetRefId;
641
+ var engine = this._context.engine;
642
+ if (assetRefId) {
643
+ return engine.resourceManager// @ts-ignore
644
+ .getResourceByRef({
645
+ refId: assetRefId,
646
+ key: entityConfig.key,
647
+ isClone: entityConfig.isClone
648
+ }).then(function(entity) {
649
+ entity.name = entityConfig.name;
650
+ return entity;
651
+ });
652
+ } else {
653
+ var entity = new miniprogram.Entity(engine, entityConfig.name);
654
+ return Promise.resolve(entity);
655
+ }
656
+ };
657
+ ReflectionParser.registerCustomParseComponent = function registerCustomParseComponent(componentType, handle) {
658
+ this.customParseComponentHandles[componentType] = handle;
659
+ };
634
660
  ReflectionParser._isClass = function _isClass(value) {
635
661
  return value["class"] != undefined;
636
662
  };
637
- ReflectionParser._isRef = function _isRef(value) {
663
+ ReflectionParser._isAssetRef = function _isAssetRef(value) {
638
664
  return value["refId"] != undefined;
639
665
  };
666
+ ReflectionParser._isEntityRef = function _isEntityRef(value) {
667
+ return value["entityId"] != undefined;
668
+ };
640
669
  return ReflectionParser;
641
670
  }();
642
671
  (function() {
@@ -904,6 +933,8 @@ var SceneParserContext = /*#__PURE__*/ function() {
904
933
  this.assets = new Map();
905
934
  this.entityConfigMap = new Map();
906
935
  this.rootIds = [];
936
+ this.engine = scene.engine;
937
+ this.resourceManager = scene.engine.resourceManager;
907
938
  }
908
939
  var _proto = SceneParserContext.prototype;
909
940
  _proto.destroy = function destroy() {
@@ -920,7 +951,7 @@ var SceneParserContext = /*#__PURE__*/ function() {
920
951
  function SceneParser(context) {
921
952
  var _this = this;
922
953
  this.context = context;
923
- this._engine = this.context.scene.engine;
954
+ this._engine = context.scene.engine;
924
955
  this._organizeEntities = this._organizeEntities.bind(this);
925
956
  this._parseComponents = this._parseComponents.bind(this);
926
957
  this._clearAndResolveScene = this._clearAndResolveScene.bind(this);
@@ -928,22 +959,24 @@ var SceneParserContext = /*#__PURE__*/ function() {
928
959
  _this._reject = reject;
929
960
  _this._resolve = resolve;
930
961
  });
962
+ this._reflectionParser = new ReflectionParser(context);
931
963
  }
932
964
  var _proto = SceneParser.prototype;
933
965
  /** start parse the scene */ _proto.start = function start() {
934
966
  this._parseEntities().then(this._organizeEntities).then(this._parseComponents).then(this._clearAndResolveScene).then(this._resolve).catch(this._reject);
935
967
  };
936
968
  _proto._parseEntities = function _parseEntities() {
969
+ var _this = this;
937
970
  var entitiesConfig = this.context.originalData.entities;
938
971
  var entityConfigMap = this.context.entityConfigMap;
939
972
  var entitiesMap = this.context.entityMap;
940
973
  var rootIds = this.context.rootIds;
941
- var engine = this._engine;
974
+ this._engine;
942
975
  var promises = entitiesConfig.map(function(entityConfig) {
943
976
  entityConfigMap.set(entityConfig.id, entityConfig);
944
977
  // record root entities
945
978
  if (!entityConfig.parent) rootIds.push(entityConfig.id);
946
- return ReflectionParser.parseEntity(entityConfig, engine);
979
+ return _this._reflectionParser.parseEntity(entityConfig);
947
980
  });
948
981
  return Promise.all(promises).then(function(entities) {
949
982
  for(var i = 0, l = entities.length; i < l; i++){
@@ -981,7 +1014,7 @@ var SceneParserContext = /*#__PURE__*/ function() {
981
1014
  component = entity.getComponent(miniprogram.Loader.getClass(key));
982
1015
  }
983
1016
  component = component || entity.addComponent(miniprogram.Loader.getClass(key));
984
- var promise = ReflectionParser.parsePropsAndMethods(component, componentConfig, entity.engine);
1017
+ var promise = this._reflectionParser.parsePropsAndMethods(component, componentConfig);
985
1018
  promises.push(promise);
986
1019
  }
987
1020
  }
@@ -1537,10 +1570,10 @@ var TextureWrapMode;
1537
1570
  /**
1538
1571
  * @internal
1539
1572
  */ var GLTFParserContext = /*#__PURE__*/ function() {
1540
- function GLTFParserContext(glTFResource, resourceManager, keepMeshData) {
1573
+ function GLTFParserContext(glTFResource, resourceManager, params) {
1541
1574
  this.glTFResource = glTFResource;
1542
1575
  this.resourceManager = resourceManager;
1543
- this.keepMeshData = keepMeshData;
1576
+ this.params = params;
1544
1577
  this.accessorBufferCache = {};
1545
1578
  this._resourceCache = new Map();
1546
1579
  this.contentRestorer = new GLTFContentRestorer(glTFResource);
@@ -1594,11 +1627,37 @@ var TextureWrapMode;
1594
1627
  _this.get(9),
1595
1628
  _this.get(2)
1596
1629
  ]).then(function() {
1630
+ var glTFResource = _this.glTFResource;
1631
+ if (glTFResource.skins || glTFResource.animations) {
1632
+ _this._createAnimator(_this, glTFResource.animations);
1633
+ }
1597
1634
  _this.resourceManager.addContentRestorer(_this.contentRestorer);
1598
- return _this.glTFResource;
1635
+ return glTFResource;
1599
1636
  });
1600
1637
  });
1601
1638
  };
1639
+ _proto._createAnimator = function _createAnimator(context, animations) {
1640
+ var defaultSceneRoot = context.glTFResource.defaultSceneRoot;
1641
+ var animator = defaultSceneRoot.addComponent(miniprogram.Animator);
1642
+ var animatorController = new miniprogram.AnimatorController();
1643
+ var layer = new miniprogram.AnimatorControllerLayer("layer");
1644
+ var animatorStateMachine = new miniprogram.AnimatorStateMachine();
1645
+ animatorController.addLayer(layer);
1646
+ animator.animatorController = animatorController;
1647
+ layer.stateMachine = animatorStateMachine;
1648
+ if (animations) {
1649
+ for(var i = 0; i < animations.length; i++){
1650
+ var animationClip = animations[i];
1651
+ var name = animationClip.name;
1652
+ var uniqueName = animatorStateMachine.makeUniqueStateName(name);
1653
+ if (uniqueName !== name) {
1654
+ console.warn("AnimatorState name is existed, name: " + name + " reset to " + uniqueName);
1655
+ }
1656
+ var animatorState = animatorStateMachine.addState(uniqueName);
1657
+ animatorState.clip = animationClip;
1658
+ }
1659
+ }
1660
+ };
1602
1661
  _proto._handleSubAsset = function _handleSubAsset(resource, type, index) {
1603
1662
  var _this = this;
1604
1663
  var glTFResourceKey = glTFResourceMap[type];
@@ -2238,7 +2297,7 @@ var SupercompressionScheme;
2238
2297
  alphaSliceByteLength: sgdReader.nextUint32()
2239
2298
  };
2240
2299
  }
2241
- var endpointsByteOffset = sgdByteOffset + sgdReader.offset;
2300
+ var endpointsByteOffset = sgdByteOffset + sgdReader.position;
2242
2301
  var selectorsByteOffset = endpointsByteOffset + endpointsByteLength;
2243
2302
  var tablesByteOffset = selectorsByteOffset + selectorsByteLength;
2244
2303
  var extendedByteOffset = tablesByteOffset + tablesByteLength;
@@ -2430,6 +2489,25 @@ var AbstractTranscoder = /*#__PURE__*/ function() {
2430
2489
  }();
2431
2490
 
2432
2491
  /** @internal */ function TranscodeWorkerCode$1() {
2492
+ var initPromise;
2493
+ var init = function init(wasmBinary) {
2494
+ if (!initPromise) {
2495
+ initPromise = new Promise(function(resolve, reject) {
2496
+ var BasisModule = {
2497
+ wasmBinary: wasmBinary,
2498
+ onRuntimeInitialized: function() {
2499
+ return resolve(BasisModule);
2500
+ },
2501
+ onAbort: reject
2502
+ };
2503
+ self["BASIS"](BasisModule);
2504
+ }).then(function(BasisModule) {
2505
+ BasisModule.initializeBasis();
2506
+ return BasisModule.KTX2File;
2507
+ });
2508
+ }
2509
+ return initPromise;
2510
+ };
2433
2511
  self.onmessage = function onmessage(event) {
2434
2512
  var message = event.data;
2435
2513
  switch(message.type){
@@ -2544,6 +2622,10 @@ function transcode(buffer, targetFormat, KTX2File) {
2544
2622
  cleanup();
2545
2623
  throw new Error("Invalid or unsupported .ktx2 file");
2546
2624
  }
2625
+ if (!ktx2File.startTranscoding()) {
2626
+ cleanup();
2627
+ throw new Error("KTX2 startTranscoding failed");
2628
+ }
2547
2629
  var width = ktx2File.getWidth();
2548
2630
  var height = ktx2File.getHeight();
2549
2631
  var layerCount = ktx2File.getLayers() || 1;
@@ -2552,6 +2634,7 @@ function transcode(buffer, targetFormat, KTX2File) {
2552
2634
  var faceCount = ktx2File.getFaces();
2553
2635
  var format = getTranscodeFormatFromTarget(targetFormat, hasAlpha);
2554
2636
  var faces = new Array(faceCount);
2637
+ var isBC = format === 2 || format === 3 || format === 7;
2555
2638
  for(var face = 0; face < faceCount; face++){
2556
2639
  var mipmaps = new Array(levelCount);
2557
2640
  for(var mip = 0; mip < levelCount; mip++){
@@ -2559,8 +2642,15 @@ function transcode(buffer, targetFormat, KTX2File) {
2559
2642
  var mipWidth = void 0, mipHeight = void 0;
2560
2643
  for(var layer = 0; layer < layerCount; layer++){
2561
2644
  var levelInfo = ktx2File.getImageLevelInfo(mip, layer, face);
2562
- mipWidth = levelInfo.origWidth;
2563
- mipHeight = levelInfo.origHeight;
2645
+ // see: https://github.com/KhronosGroup/KTX-Software/issues/254
2646
+ if (isBC && mip === 0 && (width !== levelInfo.width || height !== levelInfo.height)) {
2647
+ width = mipWidth = levelInfo.width;
2648
+ height = mipHeight = levelInfo.height;
2649
+ console.warn("KTX2 transcode to BC will resize to width: " + width + ", height: " + height + ". You'd better use an image whose size if multiple of 4.");
2650
+ } else {
2651
+ mipWidth = levelInfo.origWidth;
2652
+ mipHeight = levelInfo.origHeight;
2653
+ }
2564
2654
  var dst = new Uint8Array(ktx2File.getImageTranscodedSizeInBytes(mip, layer, 0, format));
2565
2655
  var status = ktx2File.transcodeImage(dst, mip, layer, face, format, 0, -1, -1);
2566
2656
  if (!status) {
@@ -2626,7 +2716,7 @@ function transcode(buffer, targetFormat, KTX2File) {
2626
2716
  } else {
2627
2717
  var funcCode = TranscodeWorkerCode$1.toString();
2628
2718
  var transcodeString = funcCode.substring(funcCode.indexOf("{"), funcCode.lastIndexOf("}") + 1);
2629
- var workerCode = "\n " + jsCode + "\n var init = (" + _init.toString() + ")();\n " + transcode.toString() + "\n " + transcodeString + "\n ";
2719
+ var workerCode = "\n " + jsCode + "\n " + transcode.toString() + "\n " + transcodeString + "\n ";
2630
2720
  var workerURL = engineMiniprogramAdapter.URL.createObjectURL(new engineMiniprogramAdapter.Blob([
2631
2721
  workerCode
2632
2722
  ], {
@@ -2875,6 +2965,7 @@ exports.KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
2875
2965
  _proto.initialize = function initialize(engine, configuration) {
2876
2966
  if (configuration.ktx2Loader) {
2877
2967
  var options = configuration.ktx2Loader;
2968
+ if (options.priorityFormats) exports.KTX2Loader._priorityFormats = options.priorityFormats;
2878
2969
  if (this._isKhronosSupported(options.priorityFormats, engine) && options.workerCount !== 0) {
2879
2970
  return exports.KTX2Loader._getKhronosTranscoder(options.workerCount).init();
2880
2971
  } else {
@@ -2895,25 +2986,7 @@ exports.KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
2895
2986
  });
2896
2987
  };
2897
2988
  _proto._isKhronosSupported = function _isKhronosSupported(priorityFormats, engine) {
2898
- if (priorityFormats === void 0) priorityFormats = [
2899
- exports.KTX2TargetFormat.ASTC,
2900
- exports.KTX2TargetFormat.ETC,
2901
- exports.KTX2TargetFormat.BC7,
2902
- exports.KTX2TargetFormat.BC1_BC3,
2903
- exports.KTX2TargetFormat.PVRTC,
2904
- exports.KTX2TargetFormat.R8G8B8A8
2905
- ];
2906
- var supportedList = new Array();
2907
- if (Array.isArray(priorityFormats[0])) {
2908
- for(var i = 0; i < priorityFormats.length; i++){
2909
- supportedList.push(exports.KTX2Loader._detectSupportedFormat(engine._hardwareRenderer, priorityFormats[i]));
2910
- }
2911
- } else {
2912
- supportedList.push(exports.KTX2Loader._detectSupportedFormat(engine._hardwareRenderer, priorityFormats));
2913
- }
2914
- return supportedList.every(function(format) {
2915
- return KhronosTranscoder.transcoderMap[format];
2916
- });
2989
+ return !!KhronosTranscoder.transcoderMap[exports.KTX2Loader._detectSupportedFormat(engine._hardwareRenderer, priorityFormats)];
2917
2990
  };
2918
2991
  /**
2919
2992
  * Destroy ktx2 transcoder worker.
@@ -2927,7 +3000,8 @@ exports.KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
2927
3000
  /** @internal */ KTX2Loader1._parseBuffer = function _parseBuffer(buffer, engine, params) {
2928
3001
  var _params;
2929
3002
  var ktx2Container = new KTX2Container(buffer);
2930
- var formatPriorities = (_params = params) == null ? void 0 : _params.priorityFormats;
3003
+ var _params_priorityFormats;
3004
+ var formatPriorities = (_params_priorityFormats = (_params = params) == null ? void 0 : _params.priorityFormats) != null ? _params_priorityFormats : exports.KTX2Loader._priorityFormats;
2931
3005
  var targetFormat = exports.KTX2Loader._decideTargetFormat(engine, ktx2Container, formatPriorities);
2932
3006
  var transcodeResultPromise;
2933
3007
  if (exports.KTX2Loader._isBinomialInit || !KhronosTranscoder.transcoderMap[targetFormat] || !ktx2Container.isUASTC) {
@@ -2994,18 +3068,22 @@ exports.KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
2994
3068
  return targetFormat;
2995
3069
  };
2996
3070
  KTX2Loader1._detectSupportedFormat = function _detectSupportedFormat(renderer, priorityFormats) {
2997
- if (priorityFormats === void 0) priorityFormats = [
2998
- exports.KTX2TargetFormat.ASTC,
2999
- exports.KTX2TargetFormat.ETC,
3000
- exports.KTX2TargetFormat.BC7,
3001
- exports.KTX2TargetFormat.BC1_BC3,
3002
- exports.KTX2TargetFormat.PVRTC
3003
- ];
3004
3071
  for(var i = 0; i < priorityFormats.length; i++){
3005
- var capabilities = this._supportedMap[priorityFormats[i]];
3006
- for(var j = 0; j < capabilities.length; j++){
3007
- if (renderer.canIUse(capabilities[j])) {
3008
- return priorityFormats[i];
3072
+ var format = priorityFormats[i];
3073
+ var capabilities = this._supportedMap[format];
3074
+ if (capabilities) {
3075
+ for(var j = 0; j < capabilities.length; j++){
3076
+ if (renderer.canIUse(capabilities[j])) {
3077
+ return format;
3078
+ }
3079
+ }
3080
+ } else {
3081
+ switch(priorityFormats[i]){
3082
+ case exports.KTX2TargetFormat.R8G8B8A8:
3083
+ return format;
3084
+ case exports.KTX2TargetFormat.R8:
3085
+ case exports.KTX2TargetFormat.R8G8:
3086
+ if (renderer.isWebGL2) return format;
3009
3087
  }
3010
3088
  }
3011
3089
  }
@@ -3042,6 +3120,14 @@ exports.KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
3042
3120
  return KTX2Loader1;
3043
3121
  }(miniprogram.Loader), function() {
3044
3122
  _KTX2Loader._isBinomialInit = false;
3123
+ }(), function() {
3124
+ _KTX2Loader._priorityFormats = [
3125
+ exports.KTX2TargetFormat.BC7,
3126
+ exports.KTX2TargetFormat.ASTC,
3127
+ exports.KTX2TargetFormat.BC1_BC3,
3128
+ exports.KTX2TargetFormat.ETC,
3129
+ exports.KTX2TargetFormat.PVRTC
3130
+ ];
3045
3131
  }(), function() {
3046
3132
  var _obj;
3047
3133
  _KTX2Loader._supportedMap = (_obj = {}, _obj[exports.KTX2TargetFormat.ASTC] = [
@@ -3505,6 +3591,7 @@ exports.GLTFAnimationParser = /*#__PURE__*/ function(GLTFParser1) {
3505
3591
  var promises = new Array();
3506
3592
  // parse samplers
3507
3593
  for(var j = 0, m = samplers.length; j < m; j++)_loop(j);
3594
+ promises.push(context.get(exports.GLTFParserType.Scene));
3508
3595
  return Promise.all(promises).then(function() {
3509
3596
  for(var j = 0, m = channels.length; j < m; j++){
3510
3597
  var gltfChannel = channels[j];
@@ -3516,6 +3603,10 @@ exports.GLTFAnimationParser = /*#__PURE__*/ function(GLTFParser1) {
3516
3603
  relativePath = relativePath === "" ? "" + entity.name : entity.name + "/" + relativePath;
3517
3604
  entity = entity.parent;
3518
3605
  }
3606
+ // If the target node is in the default scene, relativePath will be empty
3607
+ if (context.glTFResource.sceneRoots.indexOf(entity) === -1) {
3608
+ continue;
3609
+ }
3519
3610
  var ComponentType = void 0;
3520
3611
  var propertyName = void 0;
3521
3612
  switch(target.path){
@@ -3596,12 +3687,12 @@ exports.GLTFAnimationParser = /*#__PURE__*/ function(GLTFParser1) {
3596
3687
  if (curve2.interpolation === miniprogram.InterpolationType.CubicSpine) {
3597
3688
  keyframe2.inTangent = Array.from(output.subarray(offset2, offset2 + outputSize));
3598
3689
  offset2 += outputSize;
3599
- keyframe2.value = output.subarray(offset2, offset2 + outputSize);
3690
+ keyframe2.value = output.slice(offset2, offset2 + outputSize);
3600
3691
  offset2 += outputSize;
3601
3692
  keyframe2.outTangent = Array.from(output.subarray(offset2, offset2 + outputSize));
3602
3693
  offset2 += outputSize;
3603
3694
  } else {
3604
- keyframe2.value = output.subarray(offset2, offset2 + outputSize);
3695
+ keyframe2.value = output.slice(offset2, offset2 + outputSize);
3605
3696
  offset2 += outputSize;
3606
3697
  }
3607
3698
  curve2.addKey(keyframe2);
@@ -3852,7 +3943,7 @@ exports.GLTFMeshParser = (_GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1)
3852
3943
  return context.get(exports.GLTFParserType.Buffer).then(function(buffers) {
3853
3944
  return GLTFUtils.getAccessorData(glTF, indexAccessor, buffers);
3854
3945
  });
3855
- }, context.keepMeshData).then(resolve);
3946
+ }, context.params.keepMeshData).then(resolve);
3856
3947
  }
3857
3948
  });
3858
3949
  };
@@ -4030,9 +4121,9 @@ exports.GLTFSceneParser = /*#__PURE__*/ function(GLTFParser1) {
4030
4121
  }
4031
4122
  var _proto = GLTFSceneParser.prototype;
4032
4123
  _proto.parse = function parse(context, index) {
4033
- var _this = this;
4034
4124
  var _context_glTF = context.glTF, scenes = _context_glTF.scenes, _context_glTF_scene = _context_glTF.scene, scene = _context_glTF_scene === void 0 ? 0 : _context_glTF_scene, glTFResource = context.glTFResource;
4035
4125
  var sceneInfo = scenes[index];
4126
+ var sceneExtensions = sceneInfo.extensions;
4036
4127
  var engine = glTFResource.engine;
4037
4128
  var isDefaultScene = scene === index;
4038
4129
  var sceneNodes = sceneInfo.nodes;
@@ -4058,18 +4149,7 @@ exports.GLTFSceneParser = /*#__PURE__*/ function(GLTFParser1) {
4058
4149
  promises.push(this._parseEntityComponent(context, sceneNodes[i1]));
4059
4150
  }
4060
4151
  return Promise.all(promises).then(function() {
4061
- if (isDefaultScene) {
4062
- return Promise.all([
4063
- context.get(exports.GLTFParserType.Skin),
4064
- context.get(exports.GLTFParserType.Animation)
4065
- ]).then(function(param) {
4066
- var skins = param[0], animations = param[1];
4067
- if (skins || animations) {
4068
- _this._createAnimator(context, animations);
4069
- }
4070
- return sceneRoot;
4071
- });
4072
- }
4152
+ GLTFParser.executeExtensionsAdditiveAndParse(sceneExtensions, context, sceneRoot, sceneInfo);
4073
4153
  return sceneRoot;
4074
4154
  });
4075
4155
  };
@@ -4181,28 +4261,6 @@ exports.GLTFSceneParser = /*#__PURE__*/ function(GLTFParser1) {
4181
4261
  for(var i = 0; i < glTFMeshPrimitives.length; i++)_loop(i);
4182
4262
  return Promise.all(promises);
4183
4263
  };
4184
- _proto._createAnimator = function _createAnimator(context, animations) {
4185
- var defaultSceneRoot = context.glTFResource.defaultSceneRoot;
4186
- var animator = defaultSceneRoot.addComponent(miniprogram.Animator);
4187
- var animatorController = new miniprogram.AnimatorController();
4188
- var layer = new miniprogram.AnimatorControllerLayer("layer");
4189
- var animatorStateMachine = new miniprogram.AnimatorStateMachine();
4190
- animatorController.addLayer(layer);
4191
- animator.animatorController = animatorController;
4192
- layer.stateMachine = animatorStateMachine;
4193
- if (animations) {
4194
- for(var i = 0; i < animations.length; i++){
4195
- var animationClip = animations[i];
4196
- var name = animationClip.name;
4197
- var uniqueName = animatorStateMachine.makeUniqueStateName(name);
4198
- if (uniqueName !== name) {
4199
- console.warn("AnimatorState name is existed, name: " + name + " reset to " + uniqueName);
4200
- }
4201
- var animatorState = animatorStateMachine.addState(uniqueName);
4202
- animatorState.clip = animationClip;
4203
- }
4204
- }
4205
- };
4206
4264
  _proto._computeLocalBounds = function _computeLocalBounds(skinnedMeshRenderer, mesh, bones, rootBone, inverseBindMatrices) {
4207
4265
  var rootBoneIndex = bones.indexOf(rootBone);
4208
4266
  if (rootBoneIndex !== -1) {
@@ -4352,8 +4410,7 @@ exports.GLTFTextureParser = (_GLTFTextureParser = /*#__PURE__*/ function(GLTFPar
4352
4410
  mipmap: (_samplerInfo = samplerInfo) == null ? void 0 : _samplerInfo.mipmap
4353
4411
  }
4354
4412
  }).then(function(texture) {
4355
- var _texture;
4356
- (_texture = texture).name || (_texture.name = textureName || imageName || "texture_" + index);
4413
+ texture.name = textureName || imageName || texture.name || "texture_" + index;
4357
4414
  useSampler && GLTFUtils.parseSampler(texture, samplerInfo);
4358
4415
  return texture;
4359
4416
  });
@@ -4435,11 +4492,12 @@ var GLTFLoader = /*#__PURE__*/ function(Loader1) {
4435
4492
  }
4436
4493
  var _proto = GLTFLoader.prototype;
4437
4494
  _proto.load = function load(item, resourceManager) {
4438
- var _params;
4439
4495
  var url = item.url;
4440
4496
  var params = item.params;
4441
4497
  var glTFResource = new GLTFResource(resourceManager.engine, url);
4442
- var context = new GLTFParserContext(glTFResource, resourceManager, !!((_params = params) == null ? void 0 : _params.keepMeshData));
4498
+ var context = new GLTFParserContext(glTFResource, resourceManager, _extends({
4499
+ keepMeshData: false
4500
+ }, params));
4443
4501
  return context.parse();
4444
4502
  };
4445
4503
  return GLTFLoader;
@@ -5087,6 +5145,12 @@ var MaterialLoader = /*#__PURE__*/ function(Loader1) {
5087
5145
  materialShaderData.setTexture(key, texture);
5088
5146
  }));
5089
5147
  break;
5148
+ case "Boolean":
5149
+ materialShaderData.setInt(key, value ? 1 : 0);
5150
+ break;
5151
+ case "Integer":
5152
+ materialShaderData.setInt(key, Number(value));
5153
+ break;
5090
5154
  }
5091
5155
  };
5092
5156
  var engine = resourceManager.engine;
@@ -5222,9 +5286,10 @@ var SpriteAtlasLoader = /*#__PURE__*/ function(Loader1) {
5222
5286
  var _loop = function(i) {
5223
5287
  var atlasItem = atlasItems[i];
5224
5288
  if (atlasItem.img) {
5289
+ var _atlasItem_type;
5225
5290
  chainPromises.push(resourceManager.load({
5226
5291
  url: miniprogram.Utils.resolveAbsoluteUrl(item.url, atlasItem.img),
5227
- type: miniprogram.AssetType.Texture2D,
5292
+ type: (_atlasItem_type = atlasItem.type) != null ? _atlasItem_type : miniprogram.AssetType.Texture2D,
5228
5293
  params: {
5229
5294
  format: format,
5230
5295
  mipmap: mipmap
@@ -5460,6 +5525,39 @@ TextureCubeLoader = __decorate([
5460
5525
  ])
5461
5526
  ], TextureCubeLoader);
5462
5527
 
5528
+ var ProjectLoader = /*#__PURE__*/ function(Loader1) {
5529
+ _inherits(ProjectLoader, Loader1);
5530
+ function ProjectLoader() {
5531
+ return Loader1.apply(this, arguments);
5532
+ }
5533
+ var _proto = ProjectLoader.prototype;
5534
+ _proto.load = function load(item, resourceManager) {
5535
+ var _this = this;
5536
+ var engine = resourceManager.engine;
5537
+ return new miniprogram.AssetPromise(function(resolve, reject) {
5538
+ _this.request(item.url, {
5539
+ type: "json"
5540
+ }).then(function(data) {
5541
+ // @ts-ignore
5542
+ engine.resourceManager.initVirtualResources(data.files);
5543
+ return resourceManager.load({
5544
+ type: miniprogram.AssetType.Scene,
5545
+ url: data.scene
5546
+ }).then(function(scene) {
5547
+ engine.sceneManager.activeScene = scene;
5548
+ resolve();
5549
+ });
5550
+ }).catch(reject);
5551
+ });
5552
+ };
5553
+ return ProjectLoader;
5554
+ }(miniprogram.Loader);
5555
+ ProjectLoader = __decorate([
5556
+ miniprogram.resourceLoader(miniprogram.AssetType.Project, [
5557
+ "proj"
5558
+ ], false)
5559
+ ], ProjectLoader);
5560
+
5463
5561
  var SceneLoader = /*#__PURE__*/ function(Loader1) {
5464
5562
  _inherits(SceneLoader, Loader1);
5465
5563
  function SceneLoader() {
@@ -5477,33 +5575,34 @@ var SceneLoader = /*#__PURE__*/ function(Loader1) {
5477
5575
  var promises = [];
5478
5576
  // parse ambient light
5479
5577
  var ambient = data.scene.ambient;
5480
- var useCustomAmbient = ambient.specularMode === "Custom";
5481
- if (useCustomAmbient && ambient.customAmbientLight) {
5482
- // @ts-ignore
5483
- // prettier-ignore
5484
- var customAmbientPromise = resourceManager.getResourceByRef(ambient.customAmbientLight).then(function(ambientLight) {
5485
- scene.ambientLight = ambientLight;
5486
- scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
5487
- scene.ambientLight.specularIntensity = ambient.specularIntensity;
5488
- scene.ambientLight.diffuseMode = ambient.diffuseMode;
5489
- scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
5490
- });
5491
- promises.push(customAmbientPromise);
5492
- } else if (!useCustomAmbient && ambient.ambientLight) {
5493
- // @ts-ignore
5494
- // prettier-ignore
5495
- var ambientLightPromise = resourceManager.getResourceByRef(ambient.ambientLight).then(function(ambientLight) {
5496
- scene.ambientLight = ambientLight;
5497
- scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
5498
- scene.ambientLight.specularIntensity = ambient.specularIntensity;
5499
- scene.ambientLight.diffuseMode = ambient.diffuseMode;
5500
- scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
5501
- });
5502
- promises.push(ambientLightPromise);
5503
- } else {
5578
+ if (ambient) {
5579
+ var useCustomAmbient = ambient.specularMode === "Custom";
5580
+ var useSH = ambient.diffuseMode === miniprogram.DiffuseMode.SphericalHarmonics;
5504
5581
  scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
5505
5582
  scene.ambientLight.specularIntensity = ambient.specularIntensity;
5583
+ scene.ambientLight.diffuseMode = ambient.diffuseMode;
5506
5584
  scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
5585
+ scene.ambientLight.specularTextureDecodeRGBM = true;
5586
+ if (useCustomAmbient && ambient.customAmbientLight) {
5587
+ promises.push(// @ts-ignore
5588
+ resourceManager.getResourceByRef(ambient.customAmbientLight).then(function(ambientLight) {
5589
+ var _ambientLight;
5590
+ scene.ambientLight.specularTexture = (_ambientLight = ambientLight) == null ? void 0 : _ambientLight.specularTexture;
5591
+ }));
5592
+ }
5593
+ if (ambient.ambientLight && (!useCustomAmbient || useSH)) {
5594
+ promises.push(// @ts-ignore
5595
+ resourceManager.getResourceByRef(ambient.ambientLight).then(function(ambientLight) {
5596
+ if (!useCustomAmbient) {
5597
+ var _ambientLight;
5598
+ scene.ambientLight.specularTexture = (_ambientLight = ambientLight) == null ? void 0 : _ambientLight.specularTexture;
5599
+ }
5600
+ if (useSH) {
5601
+ var _ambientLight1;
5602
+ scene.ambientLight.diffuseSphericalHarmonics = (_ambientLight1 = ambientLight) == null ? void 0 : _ambientLight1.diffuseSphericalHarmonics;
5603
+ }
5604
+ }));
5605
+ }
5507
5606
  }
5508
5607
  var background = data.scene.background;
5509
5608
  scene.background.mode = background.mode;
@@ -5560,13 +5659,13 @@ SceneLoader = __decorate([
5560
5659
  "scene"
5561
5660
  ], true)
5562
5661
  ], SceneLoader);
5563
- ReflectionParser.registerCustomParseComponent("TextRenderer", /*#__PURE__*/ _async_to_generator(function(instance, item, engine) {
5662
+ ReflectionParser.registerCustomParseComponent("TextRenderer", /*#__PURE__*/ _async_to_generator(function(instance, item) {
5564
5663
  var props;
5565
5664
  return __generator(this, function(_state) {
5566
5665
  props = item.props;
5567
5666
  if (!props.font) {
5568
5667
  // @ts-ignore
5569
- instance.font = miniprogram.Font.createFromOS(engine, props.fontFamily || "Arial");
5668
+ instance.font = miniprogram.Font.createFromOS(instance.engine, props.fontFamily || "Arial");
5570
5669
  }
5571
5670
  return [
5572
5671
  2,
@@ -5622,7 +5721,7 @@ var KHR_draco_mesh_compression = (_KHR_draco_mesh_compression = /*#__PURE__*/ fu
5622
5721
  throw "BlendShape animation is not supported when using draco.";
5623
5722
  }, function() {
5624
5723
  return decodedGeometry.index.array;
5625
- }, context.keepMeshData);
5724
+ }, context.params.keepMeshData);
5626
5725
  });
5627
5726
  });
5628
5727
  };