@galacean/engine-loader 2.0.0-alpha.1 → 2.0.0-alpha.10

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.
package/dist/module.js CHANGED
@@ -1,4 +1,4 @@
1
- import { Utils, AssetPromise, AnimationClip, AnimationEvent, Loader, AnimationStringCurve, Keyframe, AnimationBoolCurve, AnimationRefCurve, AnimationQuaternionCurve, AnimationColorCurve, AnimationVector4Curve, AnimationVector3Curve, AnimationVector2Curve, AnimationFloatArrayCurve, AnimationArrayCurve, AnimationFloatCurve, ModelMesh, BlendShape, Entity, Transform, Texture2D, ReferResource, resourceLoader, ContentRestorer, DiffuseMode, BackgroundMode, AssetType, AnimatorController, AnimatorControllerLayer, AnimatorStateTransition, AmbientLight, TextureCube, TextureFilterMode, TextureCubeFace, Font, SystemInfo, Animator, Logger, IndexFormat, VertexElementFormat, GLCapabilityType, TextureFormat, request, InterpolationType, SkinnedMeshRenderer, PBRMaterial, TextureCoordinate, RenderFace, VertexElement, Buffer, BufferBindFlag, BufferUsage, Camera, MeshRenderer, Skin, TextureWrapMode as TextureWrapMode$1, TextureUtils, AnimatorStateMachine, Shader, Material, PrimitiveMesh, SpriteAtlas, Sprite, AudioClip, AudioManager, ShaderFactory, ShaderLib, PhysicsMaterial, Scene, DirectLight, PointLight, SpotLight, UnlitMaterial } from '@galacean/engine-core';
1
+ import { Utils, AssetPromise, AnimationClip, AnimationEvent, Loader, AnimationStringCurve, Keyframe, AnimationBoolCurve, AnimationRefCurve, AnimationQuaternionCurve, AnimationColorCurve, AnimationVector4Curve, AnimationVector3Curve, AnimationVector2Curve, AnimationFloatArrayCurve, AnimationArrayCurve, AnimationFloatCurve, ModelMesh, BlendShape, Entity, Transform, Texture2D, ReferResource, DiffuseMode, BackgroundMode, resourceLoader, AssetType, AnimatorController, AnimatorControllerLayer, AnimatorStateTransition, BufferAsset, AmbientLight, TextureCube, TextureFormat, TextureFilterMode, TextureCubeFace, ContentRestorer, Font, SystemInfo, Animator, Logger, IndexFormat, VertexElementFormat, GLCapabilityType, request, InterpolationType, SkinnedMeshRenderer, PBRMaterial, TextureCoordinate, RenderFace, VertexElement, Buffer, BufferBindFlag, BufferUsage, Camera, MeshRenderer, Skin, TextureWrapMode as TextureWrapMode$1, TextureUtils, AnimatorStateMachine, JSONAsset, Shader, Material, PrimitiveMesh, SpriteAtlas, Sprite, TextAsset, AudioClip, AudioManager, ShaderFactory, ShaderLib, PhysicsMaterial, Scene, DirectLight, PointLight, SpotLight, UnlitMaterial } from '@galacean/engine-core';
2
2
  import { Quaternion, Vector4, Color, Vector3, Vector2, SphericalHarmonics3, MathUtil, BoundingBox, Matrix, Rect } from '@galacean/engine-math';
3
3
  import { GLCompressedTextureInternalFormat } from '@galacean/engine-rhi-webgl';
4
4
 
@@ -248,7 +248,9 @@ var decoderMap = {};
248
248
  };
249
249
  }
250
250
 
251
- var FileHeader = /*#__PURE__*/ function() {
251
+ /**
252
+ * Binary format: [MAGIC(4B)] [totalLength(4B)] [version(1B)] [typeLen(2B)] [type] [nameLen(2B)] [name] [data...]
253
+ */ var FileHeader = /*#__PURE__*/ function() {
252
254
  function FileHeader() {
253
255
  this.totalLength = 0;
254
256
  this.version = 0;
@@ -256,14 +258,23 @@ var FileHeader = /*#__PURE__*/ function() {
256
258
  this.name = "";
257
259
  this.headerLength = 0;
258
260
  }
261
+ FileHeader.checkMagic = function checkMagic(arrayBuffer) {
262
+ if (arrayBuffer.byteLength < 4) return false;
263
+ var view = new DataView(arrayBuffer);
264
+ return view.getUint32(0, true) === FileHeader.MAGIC;
265
+ };
259
266
  FileHeader.decode = function decode(arrayBuffer) {
260
267
  var dataView = new DataView(arrayBuffer);
261
- var totalLen = dataView.getUint32(0, true);
262
- var fileVersion = dataView.getUint8(4);
263
- var typeLen = dataView.getUint16(5, true);
264
- var typeUint8Array = new Uint8Array(arrayBuffer, 7, typeLen);
265
- var nameLen = dataView.getUint16(7 + typeLen, true);
266
- var nameUint8Array = new Uint8Array(arrayBuffer, 9 + typeLen, nameLen);
268
+ if (!FileHeader.checkMagic(arrayBuffer)) {
269
+ throw new Error("Invalid Galacean binary file: missing GLCN magic header.");
270
+ }
271
+ var offset = 4;
272
+ var totalLen = dataView.getUint32(offset, true);
273
+ var fileVersion = dataView.getUint8(offset + 4);
274
+ var typeLen = dataView.getUint16(offset + 5, true);
275
+ var typeUint8Array = new Uint8Array(arrayBuffer, offset + 7, typeLen);
276
+ var nameLen = dataView.getUint16(offset + 7 + typeLen, true);
277
+ var nameUint8Array = new Uint8Array(arrayBuffer, offset + 9 + typeLen, nameLen);
267
278
  var name = Utils.decodeText(nameUint8Array);
268
279
  var type = Utils.decodeText(typeUint8Array);
269
280
  var header = new FileHeader();
@@ -271,7 +282,7 @@ var FileHeader = /*#__PURE__*/ function() {
271
282
  header.name = name;
272
283
  header.type = type;
273
284
  header.version = fileVersion;
274
- header.headerLength = nameUint8Array.byteLength + typeUint8Array.byteLength + 9;
285
+ header.headerLength = offset + nameUint8Array.byteLength + typeUint8Array.byteLength + 9;
275
286
  return header;
276
287
  };
277
288
  _create_class(FileHeader, [
@@ -284,6 +295,8 @@ var FileHeader = /*#__PURE__*/ function() {
284
295
  ]);
285
296
  return FileHeader;
286
297
  }();
298
+ FileHeader.MAGIC = 0x4e434c47 // "GLCN" in little-endian
299
+ ;
287
300
 
288
301
  var InterpolableValueType = /*#__PURE__*/ function(InterpolableValueType) {
289
302
  InterpolableValueType[InterpolableValueType["Float"] = 0] = "Float";
@@ -690,12 +703,12 @@ var ParserType = /*#__PURE__*/ function(ParserType) {
690
703
  this.rootIds.length = 0;
691
704
  this.strippedIds.length = 0;
692
705
  };
693
- /** @internal */ _proto._addDependentAsset = function _addDependentAsset(refID, promise) {
706
+ /** @internal */ _proto._addDependentAsset = function _addDependentAsset(url, promise) {
694
707
  var _this = this;
695
708
  var tasks = this._tasks;
696
- if (tasks.has(refID)) return;
709
+ if (tasks.has(url)) return;
697
710
  ++this._total;
698
- tasks.add(refID);
711
+ tasks.add(url);
699
712
  promise.finally(function() {
700
713
  ++_this._loaded;
701
714
  _this._setTaskCompleteProgress(_this._loaded, _this._total);
@@ -803,7 +816,7 @@ var ReflectionParser = /*#__PURE__*/ function() {
803
816
  // reference object
804
817
  // @ts-ignore
805
818
  return context.resourceManager.getResourceByRef(value).then(function(resource) {
806
- if (context.type === ParserType.Prefab) {
819
+ if (resource && context.type === ParserType.Prefab) {
807
820
  // @ts-ignore
808
821
  context.resource._addDependenceAsset(resource);
809
822
  }
@@ -846,18 +859,18 @@ var ReflectionParser = /*#__PURE__*/ function() {
846
859
  _proto._getEntityByConfig = function _getEntityByConfig(entityConfig) {
847
860
  var _this = this;
848
861
  // @ts-ignore
849
- var assetRefId = entityConfig.assetRefId;
862
+ var assetUrl = entityConfig.assetUrl;
850
863
  var engine = this._context.engine;
851
- if (assetRefId) {
864
+ if (assetUrl) {
852
865
  return engine.resourceManager// @ts-ignore
853
866
  .getResourceByRef({
854
- refId: assetRefId,
867
+ url: assetUrl,
855
868
  key: entityConfig.key,
856
869
  isClone: entityConfig.isClone
857
870
  }).then(function(entity) {
858
871
  // @ts-ignore
859
- var resource = engine.resourceManager._objectPool[assetRefId];
860
- if (_this._context.type === ParserType.Prefab) {
872
+ var resource = engine.resourceManager._objectPool[assetUrl];
873
+ if (resource && _this._context.type === ParserType.Prefab) {
861
874
  // @ts-ignore
862
875
  _this._context.resource._addDependenceAsset(resource);
863
876
  }
@@ -880,7 +893,7 @@ var ReflectionParser = /*#__PURE__*/ function() {
880
893
  return value["classType"] !== undefined;
881
894
  };
882
895
  ReflectionParser._isAssetRef = function _isAssetRef(value) {
883
- return value["refId"] !== undefined;
896
+ return value["url"] !== undefined;
884
897
  };
885
898
  ReflectionParser._isEntityRef = function _isEntityRef(value) {
886
899
  return value["entityId"] !== undefined;
@@ -899,7 +912,7 @@ var Texture2DDecoder = /*#__PURE__*/ function() {
899
912
  function Texture2DDecoder() {}
900
913
  Texture2DDecoder.decode = function decode(engine, bufferReader, restoredTexture) {
901
914
  return new AssetPromise(function(resolve, reject) {
902
- var objectId = bufferReader.nextStr();
915
+ var url = bufferReader.nextStr();
903
916
  var mipmap = !!bufferReader.nextUint8();
904
917
  var filterMode = bufferReader.nextUint8();
905
918
  var anisoLevel = bufferReader.nextUint8();
@@ -928,7 +941,7 @@ var Texture2DDecoder = /*#__PURE__*/ function() {
928
941
  }
929
942
  }
930
943
  // @ts-ignore
931
- engine.resourceManager._objectPool[objectId] = texture2D;
944
+ engine.resourceManager._objectPool[url] = texture2D;
932
945
  resolve(texture2D);
933
946
  } else {
934
947
  var blob = new window.Blob([
@@ -1232,7 +1245,7 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
1232
1245
  _proto._getEntityByConfig = function _getEntityByConfig(entityConfig, engine) {
1233
1246
  var _this = this;
1234
1247
  var entityPromise;
1235
- if (entityConfig.assetRefId) {
1248
+ if (entityConfig.assetUrl) {
1236
1249
  entityPromise = this._parsePrefab(entityConfig, engine);
1237
1250
  } else if (entityConfig.strippedId) {
1238
1251
  entityPromise = this._parseStrippedEntity(entityConfig);
@@ -1252,10 +1265,10 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
1252
1265
  };
1253
1266
  _proto._parsePrefab = function _parsePrefab(entityConfig, engine) {
1254
1267
  var _this = this;
1255
- var assetRefId = entityConfig.assetRefId;
1268
+ var assetUrl = entityConfig.assetUrl;
1256
1269
  return engine.resourceManager// @ts-ignore
1257
1270
  .getResourceByRef({
1258
- refId: assetRefId
1271
+ url: assetUrl
1259
1272
  }).then(function(prefabResource) {
1260
1273
  var entity = _instanceof(prefabResource, PrefabResource) ? prefabResource.instantiate() : prefabResource.instantiateSceneRoot();
1261
1274
  var instanceContext = new ParserContext(engine, ParserType.Prefab, null);
@@ -1306,7 +1319,7 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
1306
1319
  var componentConfigMap = context.componentConfigMap;
1307
1320
  for(var i = 0, n = components.length; i < n; i++){
1308
1321
  var componentConfig = components[i];
1309
- var key = !componentConfig.refId ? componentConfig.class : componentConfig.refId;
1322
+ var key = !componentConfig.url ? componentConfig.class : componentConfig.url;
1310
1323
  var componentId = componentConfig.id;
1311
1324
  var component = entity.addComponent(Loader.getClass(key));
1312
1325
  componentMap.set(componentId, component);
@@ -1354,53 +1367,6 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
1354
1367
  return HierarchyParser;
1355
1368
  }();
1356
1369
 
1357
- var EditorTextureLoader = /*#__PURE__*/ function(Loader) {
1358
- _inherits(EditorTextureLoader, Loader);
1359
- function EditorTextureLoader() {
1360
- return Loader.apply(this, arguments) || this;
1361
- }
1362
- var _proto = EditorTextureLoader.prototype;
1363
- _proto.load = function load(item, resourceManager) {
1364
- var requestConfig = _extends({}, item, {
1365
- type: "arraybuffer"
1366
- });
1367
- var url = item.url;
1368
- return new AssetPromise(function(resolve, reject) {
1369
- resourceManager// @ts-ignore
1370
- ._request(url, requestConfig).then(function(data) {
1371
- decode(data, resourceManager.engine).then(function(texture) {
1372
- resourceManager.addContentRestorer(new EditorTexture2DContentRestorer(texture, url, requestConfig));
1373
- resolve(texture);
1374
- });
1375
- }).catch(reject);
1376
- });
1377
- };
1378
- return EditorTextureLoader;
1379
- }(Loader);
1380
- EditorTextureLoader = __decorate([
1381
- resourceLoader("EditorTexture2D", [
1382
- "prefab"
1383
- ], true)
1384
- ], EditorTextureLoader);
1385
- var EditorTexture2DContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
1386
- _inherits(EditorTexture2DContentRestorer, ContentRestorer);
1387
- function EditorTexture2DContentRestorer(resource, url, requestConfig) {
1388
- var _this;
1389
- _this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
1390
- return _this;
1391
- }
1392
- var _proto = EditorTexture2DContentRestorer.prototype;
1393
- _proto.restoreContent = function restoreContent() {
1394
- var texture = this.resource;
1395
- var engine = texture.engine;
1396
- return engine.resourceManager// @ts-ignore
1397
- ._request(this.url, this.requestConfig).then(function(data) {
1398
- return decode(data, engine, texture);
1399
- });
1400
- };
1401
- return EditorTexture2DContentRestorer;
1402
- }(ContentRestorer);
1403
-
1404
1370
  var MaterialLoaderType = /*#__PURE__*/ function(MaterialLoaderType) {
1405
1371
  MaterialLoaderType["Vector2"] = "Vector2";
1406
1372
  MaterialLoaderType["Vector3"] = "Vector3";
@@ -1441,11 +1407,11 @@ var SpecularMode = /*#__PURE__*/ function(SpecularMode) {
1441
1407
  var customAmbientLight = ambient.customAmbientLight, ambientLight = ambient.ambientLight;
1442
1408
  if (useCustomAmbient && customAmbientLight) {
1443
1409
  // @ts-ignore
1444
- context._addDependentAsset(customAmbientLight.refId, resourceManager.getResourceByRef(customAmbientLight));
1410
+ context._addDependentAsset(customAmbientLight.url, resourceManager.getResourceByRef(customAmbientLight));
1445
1411
  }
1446
1412
  if (ambientLight && (!useCustomAmbient || useSH)) {
1447
1413
  // @ts-ignore
1448
- context._addDependentAsset(ambientLight.refId, resourceManager.getResourceByRef(ambientLight));
1414
+ context._addDependentAsset(ambientLight.url, resourceManager.getResourceByRef(ambientLight));
1449
1415
  }
1450
1416
  }
1451
1417
  var background = scene.background;
@@ -1453,14 +1419,14 @@ var SpecularMode = /*#__PURE__*/ function(SpecularMode) {
1453
1419
  if (backgroundMode === BackgroundMode.Texture) {
1454
1420
  var texture = background.texture;
1455
1421
  // @ts-ignore
1456
- texture && context._addDependentAsset(texture.refId, resourceManager.getResourceByRef(texture));
1422
+ texture && context._addDependentAsset(texture.url, resourceManager.getResourceByRef(texture));
1457
1423
  } else if (backgroundMode === BackgroundMode.Sky) {
1458
1424
  var skyMesh = background.skyMesh, skyMaterial = background.skyMaterial;
1459
1425
  if (skyMesh && skyMaterial) {
1460
1426
  // @ts-ignore
1461
- context._addDependentAsset(skyMesh.refId, resourceManager.getResourceByRef(skyMesh));
1427
+ context._addDependentAsset(skyMesh.url, resourceManager.getResourceByRef(skyMesh));
1462
1428
  // @ts-ignore
1463
- context._addDependentAsset(skyMaterial.refId, resourceManager.getResourceByRef(skyMaterial));
1429
+ context._addDependentAsset(skyMaterial.url, resourceManager.getResourceByRef(skyMaterial));
1464
1430
  }
1465
1431
  }
1466
1432
  };
@@ -1476,12 +1442,12 @@ var SpecularMode = /*#__PURE__*/ function(SpecularMode) {
1476
1442
  var entities = file.entities;
1477
1443
  for(var i = 0, n = entities.length; i < n; i++){
1478
1444
  var entity = entities[i];
1479
- if (!!entity.assetRefId) {
1445
+ if (!!entity.assetUrl) {
1480
1446
  var context = this.context;
1481
- var refId = entity.assetRefId, key = entity.key;
1447
+ var url = entity.assetUrl, key = entity.key;
1482
1448
  // @ts-ignore
1483
- context._addDependentAsset(refId, context.resourceManager.getResourceByRef({
1484
- refId: refId,
1449
+ context._addDependentAsset(url, context.resourceManager.getResourceByRef({
1450
+ url: url,
1485
1451
  key: key
1486
1452
  }));
1487
1453
  } else if (entity.strippedId) {
@@ -1506,7 +1472,7 @@ var SpecularMode = /*#__PURE__*/ function(SpecularMode) {
1506
1472
  if (ReflectionParser._isAssetRef(value)) {
1507
1473
  var context = this.context;
1508
1474
  // @ts-ignore
1509
- context._addDependentAsset(value.refId, context.resourceManager.getResourceByRef(value));
1475
+ context._addDependentAsset(value.url, context.resourceManager.getResourceByRef(value));
1510
1476
  } else {
1511
1477
  for(var key in value){
1512
1478
  this._searchDependentAssets(value[key]);
@@ -1570,7 +1536,7 @@ var AnimationClipLoader = /*#__PURE__*/ function(Loader) {
1570
1536
  };
1571
1537
  _proto._parseKeyframeValue = function _parseKeyframeValue(keyframe, resourceManager) {
1572
1538
  var value = keyframe.value;
1573
- if ((typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && (value == null ? void 0 : value.refId)) {
1539
+ if ((typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && (value == null ? void 0 : value.url)) {
1574
1540
  return new Promise(function(resolve) {
1575
1541
  resourceManager// @ts-ignore
1576
1542
  .getResourceByRef(value).then(function(asset) {
@@ -1586,7 +1552,7 @@ var AnimationClipLoader = /*#__PURE__*/ function(Loader) {
1586
1552
  }(Loader);
1587
1553
  AnimationClipLoader = __decorate([
1588
1554
  resourceLoader(AssetType.AnimationClip, [
1589
- "ani"
1555
+ "anim"
1590
1556
  ])
1591
1557
  ], AnimationClipLoader);
1592
1558
 
@@ -1698,13 +1664,11 @@ var AnimatorControllerLoader = /*#__PURE__*/ function(Loader1) {
1698
1664
  }(Loader);
1699
1665
  AnimatorControllerLoader = __decorate([
1700
1666
  resourceLoader(AssetType.AnimatorController, [
1701
- "json"
1702
- ], false)
1667
+ "animCtrl"
1668
+ ])
1703
1669
  ], AnimatorControllerLoader);
1704
1670
 
1705
- function isBase64(url) {
1706
- return /^data:(.+?);base64,/.test(url);
1707
- }
1671
+ var base64Regex = /^data:(.+?);base64,/;
1708
1672
  var BufferLoader = /*#__PURE__*/ function(Loader) {
1709
1673
  _inherits(BufferLoader, Loader);
1710
1674
  function BufferLoader() {
@@ -1713,27 +1677,24 @@ var BufferLoader = /*#__PURE__*/ function(Loader) {
1713
1677
  var _proto = BufferLoader.prototype;
1714
1678
  _proto.load = function load(item, resourceManager) {
1715
1679
  var url = item.url;
1716
- if (isBase64(url)) {
1717
- return new AssetPromise(function(resolve) {
1718
- var base64Str = url.slice(13 + RegExp.$1.length);
1719
- var result = Uint8Array.from(atob(base64Str), function(c) {
1720
- return c.charCodeAt(0);
1721
- });
1722
- resolve(result.buffer);
1723
- });
1724
- }
1725
- // @ts-ignore
1726
- return resourceManager._request(url, _extends({}, item, {
1680
+ var base64Match = base64Regex.exec(url);
1681
+ var bufferPromise = base64Match ? Promise.resolve(Uint8Array.from(atob(url.slice(13 + base64Match[1].length)), function(c) {
1682
+ return c.charCodeAt(0);
1683
+ }).buffer) : resourceManager._request(url, _extends({}, item, {
1727
1684
  type: "arraybuffer"
1728
1685
  }));
1686
+ return AssetPromise.resolve(bufferPromise).then(function(buffer) {
1687
+ var asset = new BufferAsset(resourceManager.engine);
1688
+ asset.buffer = buffer;
1689
+ return asset;
1690
+ });
1729
1691
  };
1730
1692
  return BufferLoader;
1731
1693
  }(Loader);
1732
1694
  BufferLoader = __decorate([
1733
1695
  resourceLoader(AssetType.Buffer, [
1734
- "bin",
1735
- "r3bin"
1736
- ], false)
1696
+ "bin"
1697
+ ])
1737
1698
  ], BufferLoader);
1738
1699
 
1739
1700
  var EnvLoader = /*#__PURE__*/ function(Loader) {
@@ -1759,7 +1720,6 @@ var EnvLoader = /*#__PURE__*/ function(Loader) {
1759
1720
  sh.copyFromArray(new Float32Array(arraybuffer, 0, 27));
1760
1721
  ambientLight.diffuseSphericalHarmonics = sh;
1761
1722
  ambientLight.specularTexture = texture;
1762
- ambientLight.specularTextureDecodeRGBM = true;
1763
1723
  resolve(ambientLight);
1764
1724
  }).catch(function(e) {
1765
1725
  reject(e);
@@ -1772,7 +1732,7 @@ var EnvLoader = /*#__PURE__*/ function(Loader) {
1772
1732
  var _this;
1773
1733
  var shByteLength = 27 * 4;
1774
1734
  var size = (_this = new Uint16Array(buffer, shByteLength, 1)) == null ? void 0 : _this[0];
1775
- texture || (texture = new TextureCube(engine, size, undefined, undefined, false));
1735
+ texture || (texture = new TextureCube(engine, size, TextureFormat.R16G16B16A16, true, false));
1776
1736
  texture.filterMode = TextureFilterMode.Trilinear;
1777
1737
  var mipmapCount = texture.mipmapCount;
1778
1738
  var offset = shByteLength + 2;
@@ -1780,8 +1740,8 @@ var EnvLoader = /*#__PURE__*/ function(Loader) {
1780
1740
  var mipSize = size >> mipLevel;
1781
1741
  for(var face = 0; face < 6; face++){
1782
1742
  var dataSize = mipSize * mipSize * 4;
1783
- var data = new Uint8Array(buffer, offset, dataSize);
1784
- offset += dataSize;
1743
+ var data = new Uint16Array(buffer, offset, dataSize);
1744
+ offset += dataSize * 2;
1785
1745
  texture.setPixelBuffer(TextureCubeFace.PositiveX + face, data, mipLevel);
1786
1746
  }
1787
1747
  }
@@ -5310,341 +5270,6 @@ PrefabLoader = __decorate([
5310
5270
  ])
5311
5271
  ], PrefabLoader);
5312
5272
 
5313
- var PI = Math.PI;
5314
- // referenece: https://www.flipcode.com/archives/HDR_Image_Reader.shtml
5315
- var HDRLoader = /*#__PURE__*/ function(Loader) {
5316
- _inherits(HDRLoader, Loader);
5317
- function HDRLoader() {
5318
- return Loader.apply(this, arguments) || this;
5319
- }
5320
- var _proto = HDRLoader.prototype;
5321
- _proto.load = function load(item, resourceManager) {
5322
- return new AssetPromise(function(resolve, reject) {
5323
- var engine = resourceManager.engine;
5324
- var requestConfig = _extends({}, item, {
5325
- type: "arraybuffer"
5326
- });
5327
- var url = item.url;
5328
- resourceManager// @ts-ignore
5329
- ._request(url, requestConfig).then(function(buffer) {
5330
- var texture = HDRLoader._setTextureByBuffer(engine, buffer);
5331
- engine.resourceManager.addContentRestorer(new HDRContentRestorer(texture, url, requestConfig));
5332
- resolve(texture);
5333
- }).catch(reject);
5334
- });
5335
- };
5336
- /**
5337
- * @internal
5338
- */ HDRLoader._setTextureByBuffer = function _setTextureByBuffer(engine, buffer, texture) {
5339
- var bufferArray = new Uint8Array(buffer);
5340
- var _HDRLoader__parseHeader = HDRLoader._parseHeader(bufferArray), width = _HDRLoader__parseHeader.width, height = _HDRLoader__parseHeader.height, dataPosition = _HDRLoader__parseHeader.dataPosition;
5341
- var cubeSize = height >> 1;
5342
- texture || (texture = new TextureCube(engine, cubeSize, undefined, undefined, false));
5343
- var pixels = HDRLoader._readPixels(bufferArray.subarray(dataPosition), width, height);
5344
- var cubeMapData = HDRLoader._convertToCubemap(pixels, width, height, cubeSize);
5345
- for(var faceIndex = 0; faceIndex < 6; faceIndex++){
5346
- texture.setPixelBuffer(TextureCubeFace.PositiveX + faceIndex, cubeMapData[faceIndex], 0);
5347
- }
5348
- texture.generateMipmaps();
5349
- return texture;
5350
- };
5351
- HDRLoader._convertToCubemap = function _convertToCubemap(pixels, inputWidth, inputHeight, size) {
5352
- if (!pixels) {
5353
- throw "ConvertPanoramaToCubemap: input cannot be null";
5354
- }
5355
- if (pixels.length != inputWidth * inputHeight * 4) {
5356
- throw "ConvertPanoramaToCubemap: input size is wrong";
5357
- }
5358
- var textureRight = this._createCubemapData(size, this._faceRight, pixels, inputWidth, inputHeight);
5359
- var textureLeft = this._createCubemapData(size, this._faceLeft, pixels, inputWidth, inputHeight);
5360
- var textureUp = this._createCubemapData(size, this._faceUp, pixels, inputWidth, inputHeight);
5361
- var textureDown = this._createCubemapData(size, this._faceBottom, pixels, inputWidth, inputHeight);
5362
- var textureFront = this._createCubemapData(size, this._faceFront, pixels, inputWidth, inputHeight);
5363
- var textureBack = this._createCubemapData(size, this._faceBack, pixels, inputWidth, inputHeight);
5364
- return [
5365
- textureRight,
5366
- textureLeft,
5367
- textureUp,
5368
- textureDown,
5369
- textureFront,
5370
- textureBack
5371
- ];
5372
- };
5373
- HDRLoader._createCubemapData = function _createCubemapData(texSize, faceData, pixels, inputWidth, inputHeight) {
5374
- var textureArray = new Uint8ClampedArray(texSize * texSize * 4);
5375
- var rotDX1 = this._tempVector3.set(0, 0, 0).add(faceData[1]).subtract(faceData[0]).scale(1 / texSize);
5376
- var rotDX2 = this._temp2Vector3.set(0, 0, 0).add(faceData[3]).subtract(faceData[2]).scale(1 / texSize);
5377
- var dy = 1 / texSize;
5378
- var fy = 0;
5379
- for(var y = 0; y < texSize; y++){
5380
- var xv1 = this._temp3Vector3.set(0, 0, 0).add(faceData[0]);
5381
- var xv2 = this._temp4Vector3.set(0, 0, 0).add(faceData[2]);
5382
- for(var x = 0; x < texSize; x++){
5383
- var v = this._temp5Vector3.set(0, 0, 0).add(xv2).subtract(xv1).scale(fy).add(xv1);
5384
- v.normalize();
5385
- var color = this._calcProjectionSpherical(v, pixels, inputWidth, inputHeight);
5386
- this._RGBEToLinear(color);
5387
- this._linearToRGBM(color, 5);
5388
- // 4 channels per pixels
5389
- var index = y * texSize * 4 + x * 4;
5390
- textureArray[index] = color.r;
5391
- textureArray[index + 1] = color.g;
5392
- textureArray[index + 2] = color.b;
5393
- textureArray[index + 3] = color.a;
5394
- xv1.add(rotDX1);
5395
- xv2.add(rotDX2);
5396
- }
5397
- fy += dy;
5398
- }
5399
- return textureArray;
5400
- };
5401
- HDRLoader._calcProjectionSpherical = function _calcProjectionSpherical(vDir, pixels, inputWidth, inputHeight) {
5402
- var theta = Math.atan2(vDir.z, vDir.x);
5403
- var phi = Math.acos(vDir.y);
5404
- while(theta < -PI){
5405
- theta += 2 * PI;
5406
- }
5407
- while(theta > PI){
5408
- theta -= 2 * PI;
5409
- }
5410
- var dx = theta / PI;
5411
- var dy = phi / PI;
5412
- // recenter.
5413
- dx = dx * 0.5 + 0.5;
5414
- var px = Math.round(dx * inputWidth);
5415
- if (px < 0) {
5416
- px = 0;
5417
- } else if (px >= inputWidth) {
5418
- px = inputWidth - 1;
5419
- }
5420
- var py = Math.round(dy * inputHeight);
5421
- if (py < 0) {
5422
- py = 0;
5423
- } else if (py >= inputHeight) {
5424
- py = inputHeight - 1;
5425
- }
5426
- var inputY = inputHeight - py - 1;
5427
- var index = inputY * inputWidth * 4 + px * 4;
5428
- var r = pixels[index];
5429
- var g = pixels[index + 1];
5430
- var b = pixels[index + 2];
5431
- var a = pixels[index + 3];
5432
- return new Color(r, g, b, a);
5433
- };
5434
- HDRLoader._readStringLine = function _readStringLine(uint8array, startIndex) {
5435
- var line = "";
5436
- var character = "";
5437
- for(var i = startIndex; i < uint8array.length - startIndex; i++){
5438
- character = String.fromCharCode(uint8array[i]);
5439
- if (character == "\n") {
5440
- break;
5441
- }
5442
- line += character;
5443
- }
5444
- return line;
5445
- };
5446
- HDRLoader._parseHeader = function _parseHeader(uint8array) {
5447
- var height = 0;
5448
- var width = 0;
5449
- var line = this._readStringLine(uint8array, 0);
5450
- if (line[0] != "#" || line[1] != "?") {
5451
- throw "Bad HDR Format.";
5452
- }
5453
- var endOfHeader = false;
5454
- var findFormat = false;
5455
- var lineIndex = 0;
5456
- do {
5457
- lineIndex += line.length + 1;
5458
- line = this._readStringLine(uint8array, lineIndex);
5459
- if (line == "FORMAT=32-bit_rle_rgbe") {
5460
- findFormat = true;
5461
- } else if (line.length == 0) {
5462
- endOfHeader = true;
5463
- }
5464
- }while (!endOfHeader);
5465
- if (!findFormat) {
5466
- throw "HDR Bad header format, unsupported FORMAT";
5467
- }
5468
- lineIndex += line.length + 1;
5469
- line = this._readStringLine(uint8array, lineIndex);
5470
- var sizeRegexp = /^\-Y (.*) \+X (.*)$/g;
5471
- var match = sizeRegexp.exec(line);
5472
- // TODO. Support +Y and -X if needed.
5473
- if (!match || match.length < 3) {
5474
- throw "HDR Bad header format, no size";
5475
- }
5476
- width = parseInt(match[2]);
5477
- height = parseInt(match[1]);
5478
- if (width < 8 || width > 0x7fff) {
5479
- throw "HDR Bad header format, unsupported size";
5480
- }
5481
- lineIndex += line.length + 1;
5482
- return {
5483
- height: height,
5484
- width: width,
5485
- dataPosition: lineIndex
5486
- };
5487
- };
5488
- HDRLoader._readPixels = function _readPixels(buffer, width, height) {
5489
- var scanLineWidth = width;
5490
- var byteLength = buffer.byteLength;
5491
- var dataRGBA = new Uint8Array(4 * width * height);
5492
- var offset = 0, pos = 0;
5493
- var ptrEnd = 4 * scanLineWidth;
5494
- var scanLineBuffer = new Uint8Array(ptrEnd);
5495
- var numScanLines = height; // read in each successive scanLine
5496
- while(numScanLines > 0 && pos < byteLength){
5497
- var a = buffer[pos++];
5498
- var b = buffer[pos++];
5499
- var c = buffer[pos++];
5500
- var d = buffer[pos++];
5501
- if (a != 2 || b != 2 || c & 0x80 || width < 8 || width > 32767) {
5502
- // this file is not run length encoded
5503
- // read values sequentially
5504
- return buffer;
5505
- }
5506
- if ((c << 8 | d) != scanLineWidth) {
5507
- // eslint-disable-next-line no-throw-literal
5508
- throw "HDR Bad header format, wrong scan line width";
5509
- }
5510
- // read each of the four channels for the scanline into the buffer
5511
- // first red, then green, then blue, then exponent
5512
- var ptr = 0, count = void 0;
5513
- while(ptr < ptrEnd && pos < byteLength){
5514
- count = buffer[pos++];
5515
- var isEncodedRun = count > 128;
5516
- if (isEncodedRun) count -= 128;
5517
- if (0 === count || ptr + count > ptrEnd) {
5518
- throw "HDR Bad Format, bad scanline data (run)";
5519
- }
5520
- if (isEncodedRun) {
5521
- // a (encoded) run of the same value
5522
- var byteValue = buffer[pos++];
5523
- for(var i = 0; i < count; i++){
5524
- scanLineBuffer[ptr++] = byteValue;
5525
- } //ptr += count;
5526
- } else {
5527
- // a literal-run
5528
- scanLineBuffer.set(buffer.subarray(pos, pos + count), ptr);
5529
- ptr += count;
5530
- pos += count;
5531
- }
5532
- } // now convert data from buffer into rgba
5533
- // first red, then green, then blue, then exponent (alpha)
5534
- var l = scanLineWidth; //scanLine_buffer.byteLength;
5535
- for(var i1 = 0; i1 < l; i1++){
5536
- var off = 0;
5537
- dataRGBA[offset] = scanLineBuffer[i1 + off];
5538
- off += scanLineWidth;
5539
- dataRGBA[offset + 1] = scanLineBuffer[i1 + off];
5540
- off += scanLineWidth;
5541
- dataRGBA[offset + 2] = scanLineBuffer[i1 + off];
5542
- off += scanLineWidth;
5543
- dataRGBA[offset + 3] = scanLineBuffer[i1 + off];
5544
- offset += 4;
5545
- }
5546
- numScanLines--;
5547
- }
5548
- return dataRGBA;
5549
- };
5550
- HDRLoader._RGBEToLinear = function _RGBEToLinear(color) {
5551
- var scaleFactor = Math.pow(2, color.a - 128) / 255;
5552
- color.r *= scaleFactor;
5553
- color.g *= scaleFactor;
5554
- color.b *= scaleFactor;
5555
- color.a = 1;
5556
- };
5557
- HDRLoader._linearToRGBM = function _linearToRGBM(color, maxRange) {
5558
- var maxRGB = Math.max(color.r, Math.max(color.g, color.b));
5559
- var M = Math.min(maxRGB / maxRange, 1);
5560
- M = Math.ceil(M * 255);
5561
- var scaleFactor = 65025 / (M * maxRange); // 255 * (255 / (M * maxRange) )
5562
- color.r *= scaleFactor;
5563
- color.g *= scaleFactor;
5564
- color.b *= scaleFactor;
5565
- color.a *= M;
5566
- };
5567
- return HDRLoader;
5568
- }(Loader);
5569
- HDRLoader._rightBottomBack = new Vector3(1.0, -1.0, -1.0);
5570
- HDRLoader._rightBottomFront = new Vector3(1.0, -1.0, 1.0);
5571
- HDRLoader._rightUpBack = new Vector3(1.0, 1.0, -1.0);
5572
- HDRLoader._rightUpFront = new Vector3(1.0, 1.0, 1.0);
5573
- HDRLoader._leftBottomBack = new Vector3(-1.0, -1.0, -1.0);
5574
- HDRLoader._leftBottomFront = new Vector3(-1.0, -1.0, 1.0);
5575
- HDRLoader._leftUpBack = new Vector3(-1.0, 1.0, -1.0);
5576
- HDRLoader._leftUpFront = new Vector3(-1.0, 1.0, 1.0);
5577
- HDRLoader._faceRight = [
5578
- HDRLoader._rightBottomBack,
5579
- HDRLoader._rightBottomFront,
5580
- HDRLoader._rightUpBack,
5581
- HDRLoader._rightUpFront
5582
- ];
5583
- HDRLoader._faceLeft = [
5584
- HDRLoader._leftBottomFront,
5585
- HDRLoader._leftBottomBack,
5586
- HDRLoader._leftUpFront,
5587
- HDRLoader._leftUpBack
5588
- ];
5589
- HDRLoader._faceUp = [
5590
- HDRLoader._leftBottomFront,
5591
- HDRLoader._rightBottomFront,
5592
- HDRLoader._leftBottomBack,
5593
- HDRLoader._rightBottomBack
5594
- ];
5595
- HDRLoader._faceBottom = [
5596
- HDRLoader._leftUpBack,
5597
- HDRLoader._rightUpBack,
5598
- HDRLoader._leftUpFront,
5599
- HDRLoader._rightUpFront
5600
- ];
5601
- HDRLoader._faceFront = [
5602
- HDRLoader._leftBottomBack,
5603
- HDRLoader._rightBottomBack,
5604
- HDRLoader._leftUpBack,
5605
- HDRLoader._rightUpBack
5606
- ];
5607
- HDRLoader._faceBack = [
5608
- HDRLoader._rightBottomFront,
5609
- HDRLoader._leftBottomFront,
5610
- HDRLoader._rightUpFront,
5611
- HDRLoader._leftUpFront
5612
- ];
5613
- HDRLoader._tempVector3 = new Vector3();
5614
- HDRLoader._temp2Vector3 = new Vector3();
5615
- HDRLoader._temp3Vector3 = new Vector3();
5616
- HDRLoader._temp4Vector3 = new Vector3();
5617
- HDRLoader._temp5Vector3 = new Vector3();
5618
- HDRLoader = __decorate([
5619
- resourceLoader(AssetType.HDR, [
5620
- "hdr"
5621
- ])
5622
- ], HDRLoader);
5623
- /**
5624
- * @internal
5625
- */ var HDRContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
5626
- _inherits(HDRContentRestorer, ContentRestorer);
5627
- function HDRContentRestorer(resource, url, requestConfig) {
5628
- var _this;
5629
- _this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
5630
- return _this;
5631
- }
5632
- var _proto = HDRContentRestorer.prototype;
5633
- _proto.restoreContent = function restoreContent() {
5634
- var _this = this;
5635
- return new AssetPromise(function(resolve, reject) {
5636
- var resource = _this.resource;
5637
- var engine = resource.engine;
5638
- engine.resourceManager// @ts-ignore
5639
- ._request(_this.url, _this.requestConfig).then(function(buffer) {
5640
- HDRLoader._setTextureByBuffer(engine, buffer, resource);
5641
- resolve(resource);
5642
- }).catch(reject);
5643
- });
5644
- };
5645
- return HDRContentRestorer;
5646
- }(ContentRestorer);
5647
-
5648
5273
  var JSONLoader = /*#__PURE__*/ function(Loader) {
5649
5274
  _inherits(JSONLoader, Loader);
5650
5275
  function JSONLoader() {
@@ -5655,14 +5280,18 @@ var JSONLoader = /*#__PURE__*/ function(Loader) {
5655
5280
  // @ts-ignore
5656
5281
  return resourceManager._request(item.url, _extends({}, item, {
5657
5282
  type: "json"
5658
- }));
5283
+ })).then(function(data) {
5284
+ var asset = new JSONAsset(resourceManager.engine);
5285
+ asset.data = data;
5286
+ return asset;
5287
+ });
5659
5288
  };
5660
5289
  return JSONLoader;
5661
5290
  }(Loader);
5662
5291
  JSONLoader = __decorate([
5663
5292
  resourceLoader(AssetType.JSON, [
5664
5293
  "json"
5665
- ], false)
5294
+ ])
5666
5295
  ], JSONLoader);
5667
5296
 
5668
5297
  var HEADER_LEN = 12 + 13 * 4; // identifier + header elements (not including key value meta-data pairs)
@@ -6043,7 +5672,7 @@ var MaterialLoader = /*#__PURE__*/ function(Loader) {
6043
5672
  }(Loader);
6044
5673
  MaterialLoader = __decorate([
6045
5674
  resourceLoader(AssetType.Material, [
6046
- "json"
5675
+ "mat"
6047
5676
  ])
6048
5677
  ], MaterialLoader);
6049
5678
 
@@ -6166,7 +5795,7 @@ var ProjectLoader = /*#__PURE__*/ function(Loader) {
6166
5795
  }(Loader);
6167
5796
  ProjectLoader = __decorate([
6168
5797
  resourceLoader(AssetType.Project, [
6169
- "proj"
5798
+ "project"
6170
5799
  ], false)
6171
5800
  ], ProjectLoader);
6172
5801
 
@@ -6363,28 +5992,44 @@ SpriteLoader = __decorate([
6363
5992
  ])
6364
5993
  ], SpriteLoader);
6365
5994
 
6366
- /**
6367
- * @internal
6368
- */ var Texture2DContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
6369
- _inherits(Texture2DContentRestorer, ContentRestorer);
6370
- function Texture2DContentRestorer(resource, url, requestConfig) {
6371
- var _this;
6372
- _this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
6373
- return _this;
5995
+ var TextLoader = /*#__PURE__*/ function(Loader) {
5996
+ _inherits(TextLoader, Loader);
5997
+ function TextLoader() {
5998
+ return Loader.apply(this, arguments) || this;
6374
5999
  }
6375
- var _proto = Texture2DContentRestorer.prototype;
6376
- _proto.restoreContent = function restoreContent() {
6377
- var _this = this;
6378
- return request(this.url, this.requestConfig).then(function(image) {
6379
- var resource = _this.resource;
6380
- resource.setImageSource(image);
6381
- resource.generateMipmaps();
6382
- return resource;
6000
+ var _proto = TextLoader.prototype;
6001
+ _proto.load = function load(item, resourceManager) {
6002
+ // @ts-ignore
6003
+ return resourceManager._request(item.url, _extends({}, item, {
6004
+ type: "text"
6005
+ })).then(function(text) {
6006
+ var asset = new TextAsset(resourceManager.engine);
6007
+ asset.text = text;
6008
+ return asset;
6383
6009
  });
6384
6010
  };
6385
- return Texture2DContentRestorer;
6386
- }(ContentRestorer);
6011
+ return TextLoader;
6012
+ }(Loader);
6013
+ TextLoader = __decorate([
6014
+ resourceLoader(AssetType.Text, [
6015
+ "txt"
6016
+ ])
6017
+ ], TextLoader);
6387
6018
 
6019
+ function loadImageFromBuffer(buffer) {
6020
+ return new AssetPromise(function(resolve, reject) {
6021
+ var blob = new Blob([
6022
+ buffer
6023
+ ]);
6024
+ var img = new Image();
6025
+ img.onload = function() {
6026
+ URL.revokeObjectURL(img.src);
6027
+ resolve(img);
6028
+ };
6029
+ img.onerror = reject;
6030
+ img.src = URL.createObjectURL(blob);
6031
+ });
6032
+ }
6388
6033
  var Texture2DLoader = /*#__PURE__*/ function(Loader) {
6389
6034
  _inherits(Texture2DLoader, Loader);
6390
6035
  function Texture2DLoader() {
@@ -6392,36 +6037,48 @@ var Texture2DLoader = /*#__PURE__*/ function(Loader) {
6392
6037
  }
6393
6038
  var _proto = Texture2DLoader.prototype;
6394
6039
  _proto.load = function load(item, resourceManager) {
6040
+ var _this = this;
6041
+ var url = item.url;
6042
+ var requestConfig = _extends({}, item, {
6043
+ type: "arraybuffer"
6044
+ });
6395
6045
  return new AssetPromise(function(resolve, reject, setTaskCompleteProgress, setTaskDetailProgress) {
6396
- var url = item.url;
6397
- var requestConfig = _extends({}, item, {
6398
- type: "image"
6399
- });
6400
6046
  resourceManager// @ts-ignore
6401
- ._request(url, requestConfig).onProgress(setTaskCompleteProgress, setTaskDetailProgress).then(function(image) {
6402
- var _item_params;
6403
- var _ref = (_item_params = item.params) != null ? _item_params : {}, _ref_format = _ref.format, format = _ref_format === void 0 ? TextureFormat.R8G8B8A8 : _ref_format, anisoLevel = _ref.anisoLevel, wrapModeU = _ref.wrapModeU, wrapModeV = _ref.wrapModeV, filterMode = _ref.filterMode, _ref_isSRGBColorSpace = _ref.isSRGBColorSpace, isSRGBColorSpace = _ref_isSRGBColorSpace === void 0 ? true : _ref_isSRGBColorSpace, _ref_mipmap = _ref.mipmap, mipmap = _ref_mipmap === void 0 ? true : _ref_mipmap;
6404
- var width = image.width, height = image.height;
6405
- var engine = resourceManager.engine;
6406
- var generateMipmap = TextureUtils.supportGenerateMipmapsWithCorrection(engine, width, height, format, mipmap, isSRGBColorSpace);
6407
- var texture = new Texture2D(engine, width, height, format, generateMipmap, isSRGBColorSpace);
6408
- texture.anisoLevel = anisoLevel != null ? anisoLevel : texture.anisoLevel;
6409
- texture.filterMode = filterMode != null ? filterMode : texture.filterMode;
6410
- texture.wrapModeU = wrapModeU != null ? wrapModeU : texture.wrapModeU;
6411
- texture.wrapModeV = wrapModeV != null ? wrapModeV : texture.wrapModeV;
6412
- texture.setImageSource(image);
6413
- generateMipmap && texture.generateMipmaps();
6414
- if (url.indexOf("data:") !== 0) {
6415
- var index = url.lastIndexOf("/");
6416
- texture.name = url.substring(index + 1);
6047
+ ._request(url, requestConfig).onProgress(setTaskCompleteProgress, setTaskDetailProgress).then(function(buffer) {
6048
+ if (FileHeader.checkMagic(buffer)) {
6049
+ decode(buffer, resourceManager.engine).then(function(texture) {
6050
+ resourceManager.addContentRestorer(new Texture2DContentRestorer(texture, url, requestConfig));
6051
+ resolve(texture);
6052
+ }, reject);
6053
+ } else {
6054
+ loadImageFromBuffer(buffer).then(function(img) {
6055
+ var texture = _this._createTexture(img, item, resourceManager);
6056
+ resourceManager.addContentRestorer(new Texture2DContentRestorer(texture, url, requestConfig));
6057
+ resolve(texture);
6058
+ }, reject);
6417
6059
  }
6418
- resourceManager.addContentRestorer(new Texture2DContentRestorer(texture, url, requestConfig));
6419
- resolve(texture);
6420
- }).catch(function(e) {
6421
- reject(e);
6422
- });
6060
+ }).catch(reject);
6423
6061
  });
6424
6062
  };
6063
+ _proto._createTexture = function _createTexture(img, item, resourceManager) {
6064
+ var _item_params;
6065
+ var _ref = (_item_params = item.params) != null ? _item_params : {}, _ref_format = _ref.format, format = _ref_format === void 0 ? TextureFormat.R8G8B8A8 : _ref_format, anisoLevel = _ref.anisoLevel, wrapModeU = _ref.wrapModeU, wrapModeV = _ref.wrapModeV, filterMode = _ref.filterMode, _ref_isSRGBColorSpace = _ref.isSRGBColorSpace, isSRGBColorSpace = _ref_isSRGBColorSpace === void 0 ? true : _ref_isSRGBColorSpace, _ref_mipmap = _ref.mipmap, mipmap = _ref_mipmap === void 0 ? true : _ref_mipmap;
6066
+ var width = img.width, height = img.height;
6067
+ var engine = resourceManager.engine;
6068
+ var generateMipmap = TextureUtils.supportGenerateMipmapsWithCorrection(engine, width, height, format, mipmap, isSRGBColorSpace);
6069
+ var texture = new Texture2D(engine, width, height, format, generateMipmap, isSRGBColorSpace);
6070
+ texture.anisoLevel = anisoLevel != null ? anisoLevel : texture.anisoLevel;
6071
+ texture.filterMode = filterMode != null ? filterMode : texture.filterMode;
6072
+ texture.wrapModeU = wrapModeU != null ? wrapModeU : texture.wrapModeU;
6073
+ texture.wrapModeV = wrapModeV != null ? wrapModeV : texture.wrapModeV;
6074
+ texture.setImageSource(img);
6075
+ generateMipmap && texture.generateMipmaps();
6076
+ var url = item.url;
6077
+ if (url.indexOf("data:") !== 0) {
6078
+ texture.name = url.substring(url.lastIndexOf("/") + 1);
6079
+ }
6080
+ return texture;
6081
+ };
6425
6082
  return Texture2DLoader;
6426
6083
  }(Loader);
6427
6084
  Texture2DLoader = __decorate([
@@ -6429,40 +6086,319 @@ Texture2DLoader = __decorate([
6429
6086
  "png",
6430
6087
  "jpg",
6431
6088
  "webp",
6432
- "jpeg"
6089
+ "jpeg",
6090
+ "tex"
6433
6091
  ])
6434
6092
  ], Texture2DLoader);
6435
-
6436
- /**
6437
- * @internal
6438
- */ var TextureCubeContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
6439
- _inherits(TextureCubeContentRestorer, ContentRestorer);
6440
- function TextureCubeContentRestorer(resource, urls, requestConfig) {
6093
+ var Texture2DContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
6094
+ _inherits(Texture2DContentRestorer, ContentRestorer);
6095
+ function Texture2DContentRestorer(resource, url, requestConfig) {
6441
6096
  var _this;
6442
- _this = ContentRestorer.call(this, resource) || this, _this.urls = urls, _this.requestConfig = requestConfig;
6097
+ _this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
6443
6098
  return _this;
6444
6099
  }
6445
- var _proto = TextureCubeContentRestorer.prototype;
6100
+ var _proto = Texture2DContentRestorer.prototype;
6446
6101
  _proto.restoreContent = function restoreContent() {
6447
- var _this = this;
6448
- return new AssetPromise(function(resolve, reject) {
6449
- Promise.all(_this.urls.map(function(url) {
6450
- return request(url, _this.requestConfig);
6451
- })).then(function(images) {
6452
- var resource = _this.resource;
6453
- for(var faceIndex = 0; faceIndex < 6; faceIndex++){
6454
- resource.setImageSource(TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);
6455
- }
6456
- resource.generateMipmaps();
6457
- resolve(resource);
6458
- }).catch(function(e) {
6459
- reject(e);
6460
- });
6102
+ var texture = this.resource;
6103
+ var engine = texture.engine;
6104
+ return engine.resourceManager// @ts-ignore
6105
+ ._request(this.url, this.requestConfig).then(function(buffer) {
6106
+ if (FileHeader.checkMagic(buffer)) {
6107
+ return decode(buffer, engine, texture);
6108
+ } else {
6109
+ return loadImageFromBuffer(buffer).then(function(img) {
6110
+ texture.setImageSource(img);
6111
+ texture.generateMipmaps();
6112
+ return texture;
6113
+ });
6114
+ }
6461
6115
  });
6462
6116
  };
6463
- return TextureCubeContentRestorer;
6117
+ return Texture2DContentRestorer;
6464
6118
  }(ContentRestorer);
6465
6119
 
6120
+ /**
6121
+ * HDR panorama to cubemap decoder.
6122
+ */ var HDRDecoder = /*#__PURE__*/ function() {
6123
+ function HDRDecoder() {}
6124
+ HDRDecoder.parseHeader = function parseHeader(uint8array) {
6125
+ var line = this._readStringLine(uint8array, 0);
6126
+ if (line[0] !== "#" || line[1] !== "?") {
6127
+ throw "HDRDecoder: invalid file header";
6128
+ }
6129
+ var endOfHeader = false;
6130
+ var findFormat = false;
6131
+ var lineIndex = 0;
6132
+ do {
6133
+ lineIndex += line.length + 1;
6134
+ line = this._readStringLine(uint8array, lineIndex);
6135
+ if (line === "FORMAT=32-bit_rle_rgbe") findFormat = true;
6136
+ else if (line.length === 0) endOfHeader = true;
6137
+ }while (!endOfHeader);
6138
+ if (!findFormat) {
6139
+ throw "HDRDecoder: unsupported format, expected 32-bit_rle_rgbe";
6140
+ }
6141
+ lineIndex += line.length + 1;
6142
+ line = this._readStringLine(uint8array, lineIndex);
6143
+ var match = /^\-Y (.*) \+X (.*)$/g.exec(line);
6144
+ if (!match || match.length < 3) {
6145
+ throw "HDRDecoder: missing image size, only -Y +X layout is supported";
6146
+ }
6147
+ var width = parseInt(match[2]);
6148
+ var height = parseInt(match[1]);
6149
+ if (width < 8 || width > 0x7fff) {
6150
+ throw "HDRDecoder: unsupported image width, must be between 8 and 32767";
6151
+ }
6152
+ return {
6153
+ height: height,
6154
+ width: width,
6155
+ dataPosition: lineIndex + line.length + 1
6156
+ };
6157
+ };
6158
+ HDRDecoder.decodeFaces = function decodeFaces(bufferArray, header, onFace) {
6159
+ var width = header.width, height = header.height, dataPosition = header.dataPosition;
6160
+ var cubeSize = height >> 1;
6161
+ var pixels = HDRDecoder._readPixels(bufferArray.subarray(dataPosition), width, height);
6162
+ var faces = HDRDecoder._faces;
6163
+ var faceBuffer = new Uint16Array(cubeSize * cubeSize * 4);
6164
+ for(var faceIndex = 0; faceIndex < 6; faceIndex++){
6165
+ HDRDecoder._createCubemapData(cubeSize, faces[faceIndex], pixels, width, height, faceBuffer);
6166
+ onFace(faceIndex, faceBuffer);
6167
+ }
6168
+ };
6169
+ HDRDecoder._generateFloat2HalfTables = function _generateFloat2HalfTables() {
6170
+ var baseTable = new Uint32Array(512);
6171
+ var shiftTable = new Uint32Array(512);
6172
+ for(var i = 0; i < 256; ++i){
6173
+ var e = i - 127;
6174
+ if (e < -27) {
6175
+ baseTable[i] = 0x0000;
6176
+ baseTable[i | 0x100] = 0x8000;
6177
+ shiftTable[i] = 24;
6178
+ shiftTable[i | 0x100] = 24;
6179
+ } else if (e < -14) {
6180
+ baseTable[i] = 0x0400 >> -e - 14;
6181
+ baseTable[i | 0x100] = 0x0400 >> -e - 14 | 0x8000;
6182
+ shiftTable[i] = -e - 1;
6183
+ shiftTable[i | 0x100] = -e - 1;
6184
+ } else if (e <= 15) {
6185
+ baseTable[i] = e + 15 << 10;
6186
+ baseTable[i | 0x100] = e + 15 << 10 | 0x8000;
6187
+ shiftTable[i] = 13;
6188
+ shiftTable[i | 0x100] = 13;
6189
+ } else if (e < 128) {
6190
+ baseTable[i] = 0x7c00;
6191
+ baseTable[i | 0x100] = 0xfc00;
6192
+ shiftTable[i] = 24;
6193
+ shiftTable[i | 0x100] = 24;
6194
+ } else {
6195
+ baseTable[i] = 0x7c00;
6196
+ baseTable[i | 0x100] = 0xfc00;
6197
+ shiftTable[i] = 13;
6198
+ shiftTable[i | 0x100] = 13;
6199
+ }
6200
+ }
6201
+ return {
6202
+ baseTable: baseTable,
6203
+ shiftTable: shiftTable
6204
+ };
6205
+ };
6206
+ HDRDecoder._createCubemapData = function _createCubemapData(texSize, face, pixels, inputWidth, inputHeight, facePixels) {
6207
+ var invSize = 1 / texSize;
6208
+ var rotDX1X = (face[3] - face[0]) * invSize;
6209
+ var rotDX1Y = (face[4] - face[1]) * invSize;
6210
+ var rotDX1Z = (face[5] - face[2]) * invSize;
6211
+ var rotDX2X = (face[9] - face[6]) * invSize;
6212
+ var rotDX2Y = (face[10] - face[7]) * invSize;
6213
+ var rotDX2Z = (face[11] - face[8]) * invSize;
6214
+ var floatView = HDRDecoder._floatView;
6215
+ var uint32View = HDRDecoder._uint32View;
6216
+ var _HDRDecoder__float2HalfTables = HDRDecoder._float2HalfTables, baseTable = _HDRDecoder__float2HalfTables.baseTable, shiftTable = _HDRDecoder__float2HalfTables.shiftTable;
6217
+ var one = HDRDecoder._one;
6218
+ var fy = 0;
6219
+ for(var y = 0; y < texSize; y++){
6220
+ var xv1X = face[0], xv1Y = face[1], xv1Z = face[2];
6221
+ var xv2X = face[6], xv2Y = face[7], xv2Z = face[8];
6222
+ for(var x = 0; x < texSize; x++){
6223
+ var dirX = xv1X + (xv2X - xv1X) * fy;
6224
+ var dirY = xv1Y + (xv2Y - xv1Y) * fy;
6225
+ var dirZ = xv1Z + (xv2Z - xv1Z) * fy;
6226
+ var invLen = 1 / Math.sqrt(dirX * dirX + dirY * dirY + dirZ * dirZ);
6227
+ dirX *= invLen;
6228
+ dirY *= invLen;
6229
+ dirZ *= invLen;
6230
+ var px = Math.round((Math.atan2(dirZ, dirX) / Math.PI * 0.5 + 0.5) * inputWidth);
6231
+ if (px < 0) px = 0;
6232
+ else if (px >= inputWidth) px = inputWidth - 1;
6233
+ var py = Math.round(Math.acos(dirY) / Math.PI * inputHeight);
6234
+ if (py < 0) py = 0;
6235
+ else if (py >= inputHeight) py = inputHeight - 1;
6236
+ var srcIndex = (inputHeight - py - 1) * inputWidth * 4 + px * 4;
6237
+ var scaleFactor = Math.pow(2, pixels[srcIndex + 3] - 128) / 255;
6238
+ var dstIndex = y * texSize * 4 + x * 4;
6239
+ for(var c = 0; c < 3; c++){
6240
+ // Clamp to half-float max (65504) to prevent Infinity in R16G16B16A16
6241
+ floatView[0] = Math.min(pixels[srcIndex + c] * scaleFactor, 65504);
6242
+ var f = uint32View[0];
6243
+ var e = f >> 23 & 0x1ff;
6244
+ facePixels[dstIndex + c] = baseTable[e] + ((f & 0x007fffff) >> shiftTable[e]);
6245
+ }
6246
+ facePixels[dstIndex + 3] = one;
6247
+ xv1X += rotDX1X;
6248
+ xv1Y += rotDX1Y;
6249
+ xv1Z += rotDX1Z;
6250
+ xv2X += rotDX2X;
6251
+ xv2Y += rotDX2Y;
6252
+ xv2Z += rotDX2Z;
6253
+ }
6254
+ fy += invSize;
6255
+ }
6256
+ };
6257
+ HDRDecoder._readStringLine = function _readStringLine(uint8array, startIndex) {
6258
+ var line = "";
6259
+ for(var i = startIndex, n = uint8array.length; i < n; i++){
6260
+ var character = String.fromCharCode(uint8array[i]);
6261
+ if (character === "\n") break;
6262
+ line += character;
6263
+ }
6264
+ return line;
6265
+ };
6266
+ HDRDecoder._readPixels = function _readPixels(buffer, width, height) {
6267
+ var byteLength = buffer.byteLength;
6268
+ var dataRGBA = new Uint8Array(4 * width * height);
6269
+ var offset = 0;
6270
+ var pos = 0;
6271
+ var ptrEnd = 4 * width;
6272
+ var scanLineBuffer = new Uint8Array(ptrEnd);
6273
+ var numScanLines = height;
6274
+ while(numScanLines > 0 && pos < byteLength){
6275
+ var a = buffer[pos++];
6276
+ var b = buffer[pos++];
6277
+ var c = buffer[pos++];
6278
+ var d = buffer[pos++];
6279
+ if (a !== 2 || b !== 2 || c & 0x80 || width < 8 || width > 32767) return buffer;
6280
+ if ((c << 8 | d) !== width) throw "HDRDecoder: wrong scanline width";
6281
+ var ptr = 0;
6282
+ while(ptr < ptrEnd && pos < byteLength){
6283
+ var count = buffer[pos++];
6284
+ var isEncodedRun = count > 128;
6285
+ if (isEncodedRun) count -= 128;
6286
+ if (count === 0 || ptr + count > ptrEnd) throw "HDRDecoder: bad scanline data";
6287
+ if (isEncodedRun) {
6288
+ var byteValue = buffer[pos++];
6289
+ for(var i = 0; i < count; i++)scanLineBuffer[ptr++] = byteValue;
6290
+ } else {
6291
+ scanLineBuffer.set(buffer.subarray(pos, pos + count), ptr);
6292
+ ptr += count;
6293
+ pos += count;
6294
+ }
6295
+ }
6296
+ for(var i1 = 0; i1 < width; i1++, offset += 4){
6297
+ dataRGBA[offset] = scanLineBuffer[i1];
6298
+ dataRGBA[offset + 1] = scanLineBuffer[i1 + width];
6299
+ dataRGBA[offset + 2] = scanLineBuffer[i1 + width * 2];
6300
+ dataRGBA[offset + 3] = scanLineBuffer[i1 + width * 3];
6301
+ }
6302
+ numScanLines--;
6303
+ }
6304
+ return dataRGBA;
6305
+ };
6306
+ return HDRDecoder;
6307
+ }();
6308
+ // Float32 to Float16 lookup tables (http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf)
6309
+ HDRDecoder._float2HalfTables = HDRDecoder._generateFloat2HalfTables();
6310
+ HDRDecoder._floatView = new Float32Array(1);
6311
+ HDRDecoder._uint32View = new Uint32Array(HDRDecoder._floatView.buffer);
6312
+ HDRDecoder._one = 0x3c00 // Half float for 1.0
6313
+ ;
6314
+ // prettier-ignore
6315
+ HDRDecoder._faces = [
6316
+ /* +X */ [
6317
+ 1,
6318
+ -1,
6319
+ -1,
6320
+ 1,
6321
+ -1,
6322
+ 1,
6323
+ 1,
6324
+ 1,
6325
+ -1,
6326
+ 1,
6327
+ 1,
6328
+ 1
6329
+ ],
6330
+ /* -X */ [
6331
+ -1,
6332
+ -1,
6333
+ 1,
6334
+ -1,
6335
+ -1,
6336
+ -1,
6337
+ -1,
6338
+ 1,
6339
+ 1,
6340
+ -1,
6341
+ 1,
6342
+ -1
6343
+ ],
6344
+ /* +Y */ [
6345
+ -1,
6346
+ -1,
6347
+ 1,
6348
+ 1,
6349
+ -1,
6350
+ 1,
6351
+ -1,
6352
+ -1,
6353
+ -1,
6354
+ 1,
6355
+ -1,
6356
+ -1
6357
+ ],
6358
+ /* -Y */ [
6359
+ -1,
6360
+ 1,
6361
+ -1,
6362
+ 1,
6363
+ 1,
6364
+ -1,
6365
+ -1,
6366
+ 1,
6367
+ 1,
6368
+ 1,
6369
+ 1,
6370
+ 1
6371
+ ],
6372
+ /* +Z */ [
6373
+ -1,
6374
+ -1,
6375
+ -1,
6376
+ 1,
6377
+ -1,
6378
+ -1,
6379
+ -1,
6380
+ 1,
6381
+ -1,
6382
+ 1,
6383
+ 1,
6384
+ -1
6385
+ ],
6386
+ /* -Z */ [
6387
+ 1,
6388
+ -1,
6389
+ 1,
6390
+ -1,
6391
+ -1,
6392
+ 1,
6393
+ 1,
6394
+ 1,
6395
+ 1,
6396
+ -1,
6397
+ 1,
6398
+ 1
6399
+ ]
6400
+ ];
6401
+
6466
6402
  var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
6467
6403
  _inherits(TextureCubeLoader, Loader);
6468
6404
  function TextureCubeLoader() {
@@ -6470,6 +6406,44 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
6470
6406
  }
6471
6407
  var _proto = TextureCubeLoader.prototype;
6472
6408
  _proto.load = function load(item, resourceManager) {
6409
+ if (item.urls) {
6410
+ return this._loadCubeFaces(item, resourceManager);
6411
+ } else {
6412
+ return this._loadHDR(item, resourceManager);
6413
+ }
6414
+ };
6415
+ _proto._loadHDR = function _loadHDR(item, resourceManager) {
6416
+ return new AssetPromise(function(resolve, reject) {
6417
+ var engine = resourceManager.engine;
6418
+ var url = item.url;
6419
+ var requestConfig = _extends({}, item, {
6420
+ type: "arraybuffer"
6421
+ });
6422
+ resourceManager// @ts-ignore
6423
+ ._request(url, requestConfig).then(function(buffer) {
6424
+ if (!SystemInfo.supportsTextureFormat(engine, TextureFormat.R16G16B16A16)) {
6425
+ reject(new Error("TextureCubeLoader: HDR texture requires half float support."));
6426
+ return;
6427
+ }
6428
+ var _item_params;
6429
+ var _ref = (_item_params = item.params) != null ? _item_params : {}, _ref_mipmap = _ref.mipmap, mipmap = _ref_mipmap === void 0 ? true : _ref_mipmap, anisoLevel = _ref.anisoLevel, wrapModeU = _ref.wrapModeU, wrapModeV = _ref.wrapModeV, filterMode = _ref.filterMode;
6430
+ var bufferArray = new Uint8Array(buffer);
6431
+ var header = HDRDecoder.parseHeader(bufferArray);
6432
+ var texture = new TextureCube(engine, header.height >> 1, TextureFormat.R16G16B16A16, mipmap, false);
6433
+ HDRDecoder.decodeFaces(bufferArray, header, function(faceIndex, data) {
6434
+ texture.setPixelBuffer(TextureCubeFace.PositiveX + faceIndex, data, 0);
6435
+ });
6436
+ texture.generateMipmaps();
6437
+ texture.anisoLevel = anisoLevel != null ? anisoLevel : texture.anisoLevel;
6438
+ texture.filterMode = filterMode != null ? filterMode : texture.filterMode;
6439
+ texture.wrapModeU = wrapModeU != null ? wrapModeU : texture.wrapModeU;
6440
+ texture.wrapModeV = wrapModeV != null ? wrapModeV : texture.wrapModeV;
6441
+ resourceManager.addContentRestorer(new HDRContentRestorer(texture, url, requestConfig));
6442
+ resolve(texture);
6443
+ }).catch(reject);
6444
+ });
6445
+ };
6446
+ _proto._loadCubeFaces = function _loadCubeFaces(item, resourceManager) {
6473
6447
  return new AssetPromise(function(resolve, reject) {
6474
6448
  var urls = item.urls;
6475
6449
  var requestConfig = _extends({}, item, {
@@ -6483,7 +6457,7 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
6483
6457
  var _ref = (_item_params = item.params) != null ? _item_params : {}, _ref_format = _ref.format, format = _ref_format === void 0 ? TextureFormat.R8G8B8A8 : _ref_format, anisoLevel = _ref.anisoLevel, wrapModeU = _ref.wrapModeU, wrapModeV = _ref.wrapModeV, filterMode = _ref.filterMode, _ref_isSRGBColorSpace = _ref.isSRGBColorSpace, isSRGBColorSpace = _ref_isSRGBColorSpace === void 0 ? true : _ref_isSRGBColorSpace, _ref_mipmap = _ref.mipmap, mipmap = _ref_mipmap === void 0 ? true : _ref_mipmap;
6484
6458
  var _images_ = images[0], width = _images_.width, height = _images_.height;
6485
6459
  if (width !== height) {
6486
- console.error("The cube texture must have the same width and height");
6460
+ reject(new Error("The cube texture must have the same width and height"));
6487
6461
  return;
6488
6462
  }
6489
6463
  var engine = resourceManager.engine;
@@ -6496,21 +6470,70 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
6496
6470
  for(var faceIndex = 0; faceIndex < 6; faceIndex++){
6497
6471
  texture.setImageSource(TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);
6498
6472
  }
6499
- generateMipmap && texture.generateMipmaps();
6500
- resourceManager.addContentRestorer(new TextureCubeContentRestorer(texture, urls, requestConfig));
6473
+ texture.generateMipmaps();
6474
+ resourceManager.addContentRestorer(new CubeFaceContentRestorer(texture, urls, requestConfig));
6501
6475
  resolve(texture);
6502
- }).catch(function(e) {
6503
- reject(e);
6504
- });
6476
+ }).catch(reject);
6505
6477
  });
6506
6478
  };
6507
6479
  return TextureCubeLoader;
6508
6480
  }(Loader);
6509
6481
  TextureCubeLoader = __decorate([
6510
6482
  resourceLoader(AssetType.TextureCube, [
6511
- ""
6483
+ "texCube",
6484
+ "hdr"
6512
6485
  ])
6513
6486
  ], TextureCubeLoader);
6487
+ var HDRContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
6488
+ _inherits(HDRContentRestorer, ContentRestorer);
6489
+ function HDRContentRestorer(resource, url, requestConfig) {
6490
+ var _this;
6491
+ _this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
6492
+ return _this;
6493
+ }
6494
+ var _proto = HDRContentRestorer.prototype;
6495
+ _proto.restoreContent = function restoreContent() {
6496
+ var _this = this;
6497
+ return new AssetPromise(function(resolve, reject) {
6498
+ var resource = _this.resource;
6499
+ resource.engine.resourceManager// @ts-ignore
6500
+ ._request(_this.url, _this.requestConfig).then(function(buffer) {
6501
+ var bufferArray = new Uint8Array(buffer);
6502
+ HDRDecoder.decodeFaces(bufferArray, HDRDecoder.parseHeader(bufferArray), function(faceIndex, data) {
6503
+ resource.setPixelBuffer(TextureCubeFace.PositiveX + faceIndex, data, 0);
6504
+ });
6505
+ resource.generateMipmaps();
6506
+ resolve(resource);
6507
+ }).catch(reject);
6508
+ });
6509
+ };
6510
+ return HDRContentRestorer;
6511
+ }(ContentRestorer);
6512
+ var CubeFaceContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
6513
+ _inherits(CubeFaceContentRestorer, ContentRestorer);
6514
+ function CubeFaceContentRestorer(resource, urls, requestConfig) {
6515
+ var _this;
6516
+ _this = ContentRestorer.call(this, resource) || this, _this.urls = urls, _this.requestConfig = requestConfig;
6517
+ return _this;
6518
+ }
6519
+ var _proto = CubeFaceContentRestorer.prototype;
6520
+ _proto.restoreContent = function restoreContent() {
6521
+ var _this = this;
6522
+ return new AssetPromise(function(resolve, reject) {
6523
+ Promise.all(_this.urls.map(function(url) {
6524
+ return request(url, _this.requestConfig);
6525
+ })).then(function(images) {
6526
+ var resource = _this.resource;
6527
+ for(var faceIndex = 0; faceIndex < 6; faceIndex++){
6528
+ resource.setImageSource(TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);
6529
+ }
6530
+ resource.generateMipmaps();
6531
+ resolve(resource);
6532
+ }).catch(reject);
6533
+ });
6534
+ };
6535
+ return CubeFaceContentRestorer;
6536
+ }(ContentRestorer);
6514
6537
 
6515
6538
  var AudioLoader = /*#__PURE__*/ function(Loader) {
6516
6539
  _inherits(AudioLoader, Loader);
@@ -6583,6 +6606,7 @@ var ShaderChunkLoader = /*#__PURE__*/ function(Loader) {
6583
6606
  }
6584
6607
  }
6585
6608
  return Promise.all(shaderChunkPaths.map(function(chunkPath) {
6609
+ // @ts-ignore
6586
6610
  return resourceManager.load({
6587
6611
  type: "ShaderChunk",
6588
6612
  url: chunkPath
@@ -6659,7 +6683,7 @@ var PhysicsMaterialLoader = /*#__PURE__*/ function(Loader) {
6659
6683
  }(Loader);
6660
6684
  PhysicsMaterialLoader = __decorate([
6661
6685
  resourceLoader(AssetType.PhysicsMaterial, [
6662
- "mesh"
6686
+ "physMat"
6663
6687
  ])
6664
6688
  ], PhysicsMaterialLoader);
6665
6689
 
@@ -6694,7 +6718,6 @@ var SceneLoader = /*#__PURE__*/ function(Loader) {
6694
6718
  scene.ambientLight.specularIntensity = ambient.specularIntensity;
6695
6719
  scene.ambientLight.diffuseMode = ambient.diffuseMode;
6696
6720
  scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
6697
- scene.ambientLight.specularTextureDecodeRGBM = true;
6698
6721
  if (useCustomAmbient && ambient.customAmbientLight) {
6699
6722
  promises.push(// @ts-ignore
6700
6723
  resourceManager.getResourceByRef(ambient.customAmbientLight).then(function(ambientLight) {
@@ -7331,5 +7354,5 @@ EXT_texture_webp = __decorate([
7331
7354
  registerGLTFExtension("EXT_texture_webp", GLTFExtensionMode.CreateAndParse)
7332
7355
  ], EXT_texture_webp);
7333
7356
 
7334
- export { AccessorType, AnimationClipDecoder, BufferInfo, BufferReader, EditorTextureLoader, FileHeader, GLTFAnimationParser, GLTFAnimatorControllerParser, GLTFBufferParser, GLTFBufferViewParser, GLTFEntityParser, GLTFExtensionMode, GLTFExtensionParser, GLTFLoader, GLTFMaterialParser, GLTFMeshParser, GLTFParser, GLTFParserContext, GLTFParserType, GLTFResource, GLTFSceneParser, GLTFSchemaParser, GLTFSkinParser, GLTFTextureParser, GLTFUtils, GLTFValidator, HierarchyParser, InterpolableValueType, KTX2Loader, KTX2TargetFormat, MaterialLoaderType, MeshDecoder, ParserContext, ParserType, PrefabResource, ReflectionParser, SceneParser, SpecularMode, Texture2DDecoder, decode, decoder, decoderMap, parseSingleKTX, registerGLTFExtension, registerGLTFParser };
7357
+ export { AccessorType, AnimationClipDecoder, BufferInfo, BufferReader, FileHeader, GLTFAnimationParser, GLTFAnimatorControllerParser, GLTFBufferParser, GLTFBufferViewParser, GLTFEntityParser, GLTFExtensionMode, GLTFExtensionParser, GLTFLoader, GLTFMaterialParser, GLTFMeshParser, GLTFParser, GLTFParserContext, GLTFParserType, GLTFResource, GLTFSceneParser, GLTFSchemaParser, GLTFSkinParser, GLTFTextureParser, GLTFUtils, GLTFValidator, HDRDecoder, HierarchyParser, InterpolableValueType, KTX2Loader, KTX2TargetFormat, MaterialLoaderType, MeshDecoder, ParserContext, ParserType, PrefabResource, ReflectionParser, SceneParser, SpecularMode, Texture2DDecoder, decode, decoder, decoderMap, parseSingleKTX, registerGLTFExtension, registerGLTFParser };
7335
7358
  //# sourceMappingURL=module.js.map