@galacean/engine-loader 2.0.0-alpha.2 → 2.0.0-alpha.6

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, TextureFilterMode, TextureCubeFace, ContentRestorer, 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, 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) {
@@ -5310,341 +5271,6 @@ PrefabLoader = __decorate([
5310
5271
  ])
5311
5272
  ], PrefabLoader);
5312
5273
 
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
5274
  var JSONLoader = /*#__PURE__*/ function(Loader) {
5649
5275
  _inherits(JSONLoader, Loader);
5650
5276
  function JSONLoader() {
@@ -5655,14 +5281,18 @@ var JSONLoader = /*#__PURE__*/ function(Loader) {
5655
5281
  // @ts-ignore
5656
5282
  return resourceManager._request(item.url, _extends({}, item, {
5657
5283
  type: "json"
5658
- }));
5284
+ })).then(function(data) {
5285
+ var asset = new JSONAsset(resourceManager.engine);
5286
+ asset.data = data;
5287
+ return asset;
5288
+ });
5659
5289
  };
5660
5290
  return JSONLoader;
5661
5291
  }(Loader);
5662
5292
  JSONLoader = __decorate([
5663
5293
  resourceLoader(AssetType.JSON, [
5664
5294
  "json"
5665
- ], false)
5295
+ ])
5666
5296
  ], JSONLoader);
5667
5297
 
5668
5298
  var HEADER_LEN = 12 + 13 * 4; // identifier + header elements (not including key value meta-data pairs)
@@ -6043,7 +5673,7 @@ var MaterialLoader = /*#__PURE__*/ function(Loader) {
6043
5673
  }(Loader);
6044
5674
  MaterialLoader = __decorate([
6045
5675
  resourceLoader(AssetType.Material, [
6046
- "json"
5676
+ "mat"
6047
5677
  ])
6048
5678
  ], MaterialLoader);
6049
5679
 
@@ -6166,7 +5796,7 @@ var ProjectLoader = /*#__PURE__*/ function(Loader) {
6166
5796
  }(Loader);
6167
5797
  ProjectLoader = __decorate([
6168
5798
  resourceLoader(AssetType.Project, [
6169
- "proj"
5799
+ "project"
6170
5800
  ], false)
6171
5801
  ], ProjectLoader);
6172
5802
 
@@ -6363,28 +5993,44 @@ SpriteLoader = __decorate([
6363
5993
  ])
6364
5994
  ], SpriteLoader);
6365
5995
 
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;
5996
+ var TextLoader = /*#__PURE__*/ function(Loader) {
5997
+ _inherits(TextLoader, Loader);
5998
+ function TextLoader() {
5999
+ return Loader.apply(this, arguments) || this;
6374
6000
  }
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;
6001
+ var _proto = TextLoader.prototype;
6002
+ _proto.load = function load(item, resourceManager) {
6003
+ // @ts-ignore
6004
+ return resourceManager._request(item.url, _extends({}, item, {
6005
+ type: "text"
6006
+ })).then(function(text) {
6007
+ var asset = new TextAsset(resourceManager.engine);
6008
+ asset.text = text;
6009
+ return asset;
6383
6010
  });
6384
6011
  };
6385
- return Texture2DContentRestorer;
6386
- }(ContentRestorer);
6012
+ return TextLoader;
6013
+ }(Loader);
6014
+ TextLoader = __decorate([
6015
+ resourceLoader(AssetType.Text, [
6016
+ "txt"
6017
+ ])
6018
+ ], TextLoader);
6387
6019
 
6020
+ function loadImageFromBuffer(buffer) {
6021
+ return new AssetPromise(function(resolve, reject) {
6022
+ var blob = new Blob([
6023
+ buffer
6024
+ ]);
6025
+ var img = new Image();
6026
+ img.onload = function() {
6027
+ URL.revokeObjectURL(img.src);
6028
+ resolve(img);
6029
+ };
6030
+ img.onerror = reject;
6031
+ img.src = URL.createObjectURL(blob);
6032
+ });
6033
+ }
6388
6034
  var Texture2DLoader = /*#__PURE__*/ function(Loader) {
6389
6035
  _inherits(Texture2DLoader, Loader);
6390
6036
  function Texture2DLoader() {
@@ -6392,36 +6038,48 @@ var Texture2DLoader = /*#__PURE__*/ function(Loader) {
6392
6038
  }
6393
6039
  var _proto = Texture2DLoader.prototype;
6394
6040
  _proto.load = function load(item, resourceManager) {
6041
+ var _this = this;
6042
+ var url = item.url;
6043
+ var requestConfig = _extends({}, item, {
6044
+ type: "arraybuffer"
6045
+ });
6395
6046
  return new AssetPromise(function(resolve, reject, setTaskCompleteProgress, setTaskDetailProgress) {
6396
- var url = item.url;
6397
- var requestConfig = _extends({}, item, {
6398
- type: "image"
6399
- });
6400
6047
  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);
6048
+ ._request(url, requestConfig).onProgress(setTaskCompleteProgress, setTaskDetailProgress).then(function(buffer) {
6049
+ if (FileHeader.checkMagic(buffer)) {
6050
+ decode(buffer, resourceManager.engine).then(function(texture) {
6051
+ resourceManager.addContentRestorer(new Texture2DContentRestorer(texture, url, requestConfig));
6052
+ resolve(texture);
6053
+ }, reject);
6054
+ } else {
6055
+ loadImageFromBuffer(buffer).then(function(img) {
6056
+ var texture = _this._createTexture(img, item, resourceManager);
6057
+ resourceManager.addContentRestorer(new Texture2DContentRestorer(texture, url, requestConfig));
6058
+ resolve(texture);
6059
+ }, reject);
6417
6060
  }
6418
- resourceManager.addContentRestorer(new Texture2DContentRestorer(texture, url, requestConfig));
6419
- resolve(texture);
6420
- }).catch(function(e) {
6421
- reject(e);
6422
- });
6061
+ }).catch(reject);
6423
6062
  });
6424
6063
  };
6064
+ _proto._createTexture = function _createTexture(img, item, resourceManager) {
6065
+ var _item_params;
6066
+ 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;
6067
+ var width = img.width, height = img.height;
6068
+ var engine = resourceManager.engine;
6069
+ var generateMipmap = TextureUtils.supportGenerateMipmapsWithCorrection(engine, width, height, format, mipmap, isSRGBColorSpace);
6070
+ var texture = new Texture2D(engine, width, height, format, generateMipmap, isSRGBColorSpace);
6071
+ texture.anisoLevel = anisoLevel != null ? anisoLevel : texture.anisoLevel;
6072
+ texture.filterMode = filterMode != null ? filterMode : texture.filterMode;
6073
+ texture.wrapModeU = wrapModeU != null ? wrapModeU : texture.wrapModeU;
6074
+ texture.wrapModeV = wrapModeV != null ? wrapModeV : texture.wrapModeV;
6075
+ texture.setImageSource(img);
6076
+ generateMipmap && texture.generateMipmaps();
6077
+ var url = item.url;
6078
+ if (url.indexOf("data:") !== 0) {
6079
+ texture.name = url.substring(url.lastIndexOf("/") + 1);
6080
+ }
6081
+ return texture;
6082
+ };
6425
6083
  return Texture2DLoader;
6426
6084
  }(Loader);
6427
6085
  Texture2DLoader = __decorate([
@@ -6429,40 +6087,319 @@ Texture2DLoader = __decorate([
6429
6087
  "png",
6430
6088
  "jpg",
6431
6089
  "webp",
6432
- "jpeg"
6090
+ "jpeg",
6091
+ "tex"
6433
6092
  ])
6434
6093
  ], Texture2DLoader);
6435
-
6436
- /**
6437
- * @internal
6438
- */ var TextureCubeContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
6439
- _inherits(TextureCubeContentRestorer, ContentRestorer);
6440
- function TextureCubeContentRestorer(resource, urls, requestConfig) {
6094
+ var Texture2DContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
6095
+ _inherits(Texture2DContentRestorer, ContentRestorer);
6096
+ function Texture2DContentRestorer(resource, url, requestConfig) {
6441
6097
  var _this;
6442
- _this = ContentRestorer.call(this, resource) || this, _this.urls = urls, _this.requestConfig = requestConfig;
6098
+ _this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
6443
6099
  return _this;
6444
6100
  }
6445
- var _proto = TextureCubeContentRestorer.prototype;
6101
+ var _proto = Texture2DContentRestorer.prototype;
6446
6102
  _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
- });
6103
+ var texture = this.resource;
6104
+ var engine = texture.engine;
6105
+ return engine.resourceManager// @ts-ignore
6106
+ ._request(this.url, this.requestConfig).then(function(buffer) {
6107
+ if (FileHeader.checkMagic(buffer)) {
6108
+ return decode(buffer, engine, texture);
6109
+ } else {
6110
+ return loadImageFromBuffer(buffer).then(function(img) {
6111
+ texture.setImageSource(img);
6112
+ texture.generateMipmaps();
6113
+ return texture;
6114
+ });
6115
+ }
6461
6116
  });
6462
6117
  };
6463
- return TextureCubeContentRestorer;
6118
+ return Texture2DContentRestorer;
6464
6119
  }(ContentRestorer);
6465
6120
 
6121
+ /**
6122
+ * @internal
6123
+ * HDR panorama to cubemap decoder.
6124
+ */ var HDRDecoder = /*#__PURE__*/ function() {
6125
+ function HDRDecoder() {}
6126
+ HDRDecoder.parseHeader = function parseHeader(uint8array) {
6127
+ var line = this._readStringLine(uint8array, 0);
6128
+ if (line[0] !== "#" || line[1] !== "?") {
6129
+ throw "HDRDecoder: invalid file header";
6130
+ }
6131
+ var endOfHeader = false;
6132
+ var findFormat = false;
6133
+ var lineIndex = 0;
6134
+ do {
6135
+ lineIndex += line.length + 1;
6136
+ line = this._readStringLine(uint8array, lineIndex);
6137
+ if (line === "FORMAT=32-bit_rle_rgbe") findFormat = true;
6138
+ else if (line.length === 0) endOfHeader = true;
6139
+ }while (!endOfHeader);
6140
+ if (!findFormat) {
6141
+ throw "HDRDecoder: unsupported format, expected 32-bit_rle_rgbe";
6142
+ }
6143
+ lineIndex += line.length + 1;
6144
+ line = this._readStringLine(uint8array, lineIndex);
6145
+ var match = /^\-Y (.*) \+X (.*)$/g.exec(line);
6146
+ if (!match || match.length < 3) {
6147
+ throw "HDRDecoder: missing image size, only -Y +X layout is supported";
6148
+ }
6149
+ var width = parseInt(match[2]);
6150
+ var height = parseInt(match[1]);
6151
+ if (width < 8 || width > 0x7fff) {
6152
+ throw "HDRDecoder: unsupported image width, must be between 8 and 32767";
6153
+ }
6154
+ return {
6155
+ height: height,
6156
+ width: width,
6157
+ dataPosition: lineIndex + line.length + 1
6158
+ };
6159
+ };
6160
+ HDRDecoder.decodeFaces = function decodeFaces(bufferArray, header, onFace) {
6161
+ var width = header.width, height = header.height, dataPosition = header.dataPosition;
6162
+ var cubeSize = height >> 1;
6163
+ var pixels = HDRDecoder._readPixels(bufferArray.subarray(dataPosition), width, height);
6164
+ var faces = HDRDecoder._faces;
6165
+ var faceBuffer = new Uint16Array(cubeSize * cubeSize * 4);
6166
+ for(var faceIndex = 0; faceIndex < 6; faceIndex++){
6167
+ HDRDecoder._createCubemapData(cubeSize, faces[faceIndex], pixels, width, height, faceBuffer);
6168
+ onFace(faceIndex, faceBuffer);
6169
+ }
6170
+ };
6171
+ HDRDecoder._generateFloat2HalfTables = function _generateFloat2HalfTables() {
6172
+ var baseTable = new Uint32Array(512);
6173
+ var shiftTable = new Uint32Array(512);
6174
+ for(var i = 0; i < 256; ++i){
6175
+ var e = i - 127;
6176
+ if (e < -27) {
6177
+ baseTable[i] = 0x0000;
6178
+ baseTable[i | 0x100] = 0x8000;
6179
+ shiftTable[i] = 24;
6180
+ shiftTable[i | 0x100] = 24;
6181
+ } else if (e < -14) {
6182
+ baseTable[i] = 0x0400 >> -e - 14;
6183
+ baseTable[i | 0x100] = 0x0400 >> -e - 14 | 0x8000;
6184
+ shiftTable[i] = -e - 1;
6185
+ shiftTable[i | 0x100] = -e - 1;
6186
+ } else if (e <= 15) {
6187
+ baseTable[i] = e + 15 << 10;
6188
+ baseTable[i | 0x100] = e + 15 << 10 | 0x8000;
6189
+ shiftTable[i] = 13;
6190
+ shiftTable[i | 0x100] = 13;
6191
+ } else if (e < 128) {
6192
+ baseTable[i] = 0x7c00;
6193
+ baseTable[i | 0x100] = 0xfc00;
6194
+ shiftTable[i] = 24;
6195
+ shiftTable[i | 0x100] = 24;
6196
+ } else {
6197
+ baseTable[i] = 0x7c00;
6198
+ baseTable[i | 0x100] = 0xfc00;
6199
+ shiftTable[i] = 13;
6200
+ shiftTable[i | 0x100] = 13;
6201
+ }
6202
+ }
6203
+ return {
6204
+ baseTable: baseTable,
6205
+ shiftTable: shiftTable
6206
+ };
6207
+ };
6208
+ HDRDecoder._createCubemapData = function _createCubemapData(texSize, face, pixels, inputWidth, inputHeight, facePixels) {
6209
+ var invSize = 1 / texSize;
6210
+ var rotDX1X = (face[3] - face[0]) * invSize;
6211
+ var rotDX1Y = (face[4] - face[1]) * invSize;
6212
+ var rotDX1Z = (face[5] - face[2]) * invSize;
6213
+ var rotDX2X = (face[9] - face[6]) * invSize;
6214
+ var rotDX2Y = (face[10] - face[7]) * invSize;
6215
+ var rotDX2Z = (face[11] - face[8]) * invSize;
6216
+ var floatView = HDRDecoder._floatView;
6217
+ var uint32View = HDRDecoder._uint32View;
6218
+ var _HDRDecoder__float2HalfTables = HDRDecoder._float2HalfTables, baseTable = _HDRDecoder__float2HalfTables.baseTable, shiftTable = _HDRDecoder__float2HalfTables.shiftTable;
6219
+ var one = HDRDecoder._one;
6220
+ var fy = 0;
6221
+ for(var y = 0; y < texSize; y++){
6222
+ var xv1X = face[0], xv1Y = face[1], xv1Z = face[2];
6223
+ var xv2X = face[6], xv2Y = face[7], xv2Z = face[8];
6224
+ for(var x = 0; x < texSize; x++){
6225
+ var dirX = xv1X + (xv2X - xv1X) * fy;
6226
+ var dirY = xv1Y + (xv2Y - xv1Y) * fy;
6227
+ var dirZ = xv1Z + (xv2Z - xv1Z) * fy;
6228
+ var invLen = 1 / Math.sqrt(dirX * dirX + dirY * dirY + dirZ * dirZ);
6229
+ dirX *= invLen;
6230
+ dirY *= invLen;
6231
+ dirZ *= invLen;
6232
+ var px = Math.round((Math.atan2(dirZ, dirX) / Math.PI * 0.5 + 0.5) * inputWidth);
6233
+ if (px < 0) px = 0;
6234
+ else if (px >= inputWidth) px = inputWidth - 1;
6235
+ var py = Math.round(Math.acos(dirY) / Math.PI * inputHeight);
6236
+ if (py < 0) py = 0;
6237
+ else if (py >= inputHeight) py = inputHeight - 1;
6238
+ var srcIndex = (inputHeight - py - 1) * inputWidth * 4 + px * 4;
6239
+ var scaleFactor = Math.pow(2, pixels[srcIndex + 3] - 128) / 255;
6240
+ var dstIndex = y * texSize * 4 + x * 4;
6241
+ for(var c = 0; c < 3; c++){
6242
+ floatView[0] = pixels[srcIndex + c] * scaleFactor;
6243
+ var f = uint32View[0];
6244
+ var e = f >> 23 & 0x1ff;
6245
+ facePixels[dstIndex + c] = baseTable[e] + ((f & 0x007fffff) >> shiftTable[e]);
6246
+ }
6247
+ facePixels[dstIndex + 3] = one;
6248
+ xv1X += rotDX1X;
6249
+ xv1Y += rotDX1Y;
6250
+ xv1Z += rotDX1Z;
6251
+ xv2X += rotDX2X;
6252
+ xv2Y += rotDX2Y;
6253
+ xv2Z += rotDX2Z;
6254
+ }
6255
+ fy += invSize;
6256
+ }
6257
+ };
6258
+ HDRDecoder._readStringLine = function _readStringLine(uint8array, startIndex) {
6259
+ var line = "";
6260
+ for(var i = startIndex, n = uint8array.length; i < n; i++){
6261
+ var character = String.fromCharCode(uint8array[i]);
6262
+ if (character === "\n") break;
6263
+ line += character;
6264
+ }
6265
+ return line;
6266
+ };
6267
+ HDRDecoder._readPixels = function _readPixels(buffer, width, height) {
6268
+ var byteLength = buffer.byteLength;
6269
+ var dataRGBA = new Uint8Array(4 * width * height);
6270
+ var offset = 0;
6271
+ var pos = 0;
6272
+ var ptrEnd = 4 * width;
6273
+ var scanLineBuffer = new Uint8Array(ptrEnd);
6274
+ var numScanLines = height;
6275
+ while(numScanLines > 0 && pos < byteLength){
6276
+ var a = buffer[pos++];
6277
+ var b = buffer[pos++];
6278
+ var c = buffer[pos++];
6279
+ var d = buffer[pos++];
6280
+ if (a !== 2 || b !== 2 || c & 0x80 || width < 8 || width > 32767) return buffer;
6281
+ if ((c << 8 | d) !== width) throw "HDRDecoder: wrong scanline width";
6282
+ var ptr = 0;
6283
+ while(ptr < ptrEnd && pos < byteLength){
6284
+ var count = buffer[pos++];
6285
+ var isEncodedRun = count > 128;
6286
+ if (isEncodedRun) count -= 128;
6287
+ if (count === 0 || ptr + count > ptrEnd) throw "HDRDecoder: bad scanline data";
6288
+ if (isEncodedRun) {
6289
+ var byteValue = buffer[pos++];
6290
+ for(var i = 0; i < count; i++)scanLineBuffer[ptr++] = byteValue;
6291
+ } else {
6292
+ scanLineBuffer.set(buffer.subarray(pos, pos + count), ptr);
6293
+ ptr += count;
6294
+ pos += count;
6295
+ }
6296
+ }
6297
+ for(var i1 = 0; i1 < width; i1++, offset += 4){
6298
+ dataRGBA[offset] = scanLineBuffer[i1];
6299
+ dataRGBA[offset + 1] = scanLineBuffer[i1 + width];
6300
+ dataRGBA[offset + 2] = scanLineBuffer[i1 + width * 2];
6301
+ dataRGBA[offset + 3] = scanLineBuffer[i1 + width * 3];
6302
+ }
6303
+ numScanLines--;
6304
+ }
6305
+ return dataRGBA;
6306
+ };
6307
+ return HDRDecoder;
6308
+ }();
6309
+ // Float32 to Float16 lookup tables (http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf)
6310
+ HDRDecoder._float2HalfTables = HDRDecoder._generateFloat2HalfTables();
6311
+ HDRDecoder._floatView = new Float32Array(1);
6312
+ HDRDecoder._uint32View = new Uint32Array(HDRDecoder._floatView.buffer);
6313
+ HDRDecoder._one = 0x3c00 // Half float for 1.0
6314
+ ;
6315
+ // prettier-ignore
6316
+ HDRDecoder._faces = [
6317
+ /* +X */ [
6318
+ 1,
6319
+ -1,
6320
+ -1,
6321
+ 1,
6322
+ -1,
6323
+ 1,
6324
+ 1,
6325
+ 1,
6326
+ -1,
6327
+ 1,
6328
+ 1,
6329
+ 1
6330
+ ],
6331
+ /* -X */ [
6332
+ -1,
6333
+ -1,
6334
+ 1,
6335
+ -1,
6336
+ -1,
6337
+ -1,
6338
+ -1,
6339
+ 1,
6340
+ 1,
6341
+ -1,
6342
+ 1,
6343
+ -1
6344
+ ],
6345
+ /* +Y */ [
6346
+ -1,
6347
+ -1,
6348
+ 1,
6349
+ 1,
6350
+ -1,
6351
+ 1,
6352
+ -1,
6353
+ -1,
6354
+ -1,
6355
+ 1,
6356
+ -1,
6357
+ -1
6358
+ ],
6359
+ /* -Y */ [
6360
+ -1,
6361
+ 1,
6362
+ -1,
6363
+ 1,
6364
+ 1,
6365
+ -1,
6366
+ -1,
6367
+ 1,
6368
+ 1,
6369
+ 1,
6370
+ 1,
6371
+ 1
6372
+ ],
6373
+ /* +Z */ [
6374
+ -1,
6375
+ -1,
6376
+ -1,
6377
+ 1,
6378
+ -1,
6379
+ -1,
6380
+ -1,
6381
+ 1,
6382
+ -1,
6383
+ 1,
6384
+ 1,
6385
+ -1
6386
+ ],
6387
+ /* -Z */ [
6388
+ 1,
6389
+ -1,
6390
+ 1,
6391
+ -1,
6392
+ -1,
6393
+ 1,
6394
+ 1,
6395
+ 1,
6396
+ 1,
6397
+ -1,
6398
+ 1,
6399
+ 1
6400
+ ]
6401
+ ];
6402
+
6466
6403
  var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
6467
6404
  _inherits(TextureCubeLoader, Loader);
6468
6405
  function TextureCubeLoader() {
@@ -6470,6 +6407,44 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
6470
6407
  }
6471
6408
  var _proto = TextureCubeLoader.prototype;
6472
6409
  _proto.load = function load(item, resourceManager) {
6410
+ if (item.urls) {
6411
+ return this._loadCubeFaces(item, resourceManager);
6412
+ } else {
6413
+ return this._loadHDR(item, resourceManager);
6414
+ }
6415
+ };
6416
+ _proto._loadHDR = function _loadHDR(item, resourceManager) {
6417
+ return new AssetPromise(function(resolve, reject) {
6418
+ var engine = resourceManager.engine;
6419
+ var url = item.url;
6420
+ var requestConfig = _extends({}, item, {
6421
+ type: "arraybuffer"
6422
+ });
6423
+ resourceManager// @ts-ignore
6424
+ ._request(url, requestConfig).then(function(buffer) {
6425
+ if (!SystemInfo.supportsTextureFormat(engine, TextureFormat.R16G16B16A16)) {
6426
+ reject(new Error("TextureCubeLoader: HDR texture requires half float support."));
6427
+ return;
6428
+ }
6429
+ var _item_params;
6430
+ 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;
6431
+ var bufferArray = new Uint8Array(buffer);
6432
+ var header = HDRDecoder.parseHeader(bufferArray);
6433
+ var texture = new TextureCube(engine, header.height >> 1, TextureFormat.R16G16B16A16, mipmap, false);
6434
+ HDRDecoder.decodeFaces(bufferArray, header, function(faceIndex, data) {
6435
+ texture.setPixelBuffer(TextureCubeFace.PositiveX + faceIndex, data, 0);
6436
+ });
6437
+ texture.generateMipmaps();
6438
+ texture.anisoLevel = anisoLevel != null ? anisoLevel : texture.anisoLevel;
6439
+ texture.filterMode = filterMode != null ? filterMode : texture.filterMode;
6440
+ texture.wrapModeU = wrapModeU != null ? wrapModeU : texture.wrapModeU;
6441
+ texture.wrapModeV = wrapModeV != null ? wrapModeV : texture.wrapModeV;
6442
+ resourceManager.addContentRestorer(new HDRContentRestorer(texture, url, requestConfig));
6443
+ resolve(texture);
6444
+ }).catch(reject);
6445
+ });
6446
+ };
6447
+ _proto._loadCubeFaces = function _loadCubeFaces(item, resourceManager) {
6473
6448
  return new AssetPromise(function(resolve, reject) {
6474
6449
  var urls = item.urls;
6475
6450
  var requestConfig = _extends({}, item, {
@@ -6483,7 +6458,7 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
6483
6458
  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
6459
  var _images_ = images[0], width = _images_.width, height = _images_.height;
6485
6460
  if (width !== height) {
6486
- console.error("The cube texture must have the same width and height");
6461
+ reject(new Error("The cube texture must have the same width and height"));
6487
6462
  return;
6488
6463
  }
6489
6464
  var engine = resourceManager.engine;
@@ -6496,21 +6471,70 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
6496
6471
  for(var faceIndex = 0; faceIndex < 6; faceIndex++){
6497
6472
  texture.setImageSource(TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);
6498
6473
  }
6499
- generateMipmap && texture.generateMipmaps();
6500
- resourceManager.addContentRestorer(new TextureCubeContentRestorer(texture, urls, requestConfig));
6474
+ texture.generateMipmaps();
6475
+ resourceManager.addContentRestorer(new CubeFaceContentRestorer(texture, urls, requestConfig));
6501
6476
  resolve(texture);
6502
- }).catch(function(e) {
6503
- reject(e);
6504
- });
6477
+ }).catch(reject);
6505
6478
  });
6506
6479
  };
6507
6480
  return TextureCubeLoader;
6508
6481
  }(Loader);
6509
6482
  TextureCubeLoader = __decorate([
6510
6483
  resourceLoader(AssetType.TextureCube, [
6511
- ""
6484
+ "texCube",
6485
+ "hdr"
6512
6486
  ])
6513
6487
  ], TextureCubeLoader);
6488
+ var HDRContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
6489
+ _inherits(HDRContentRestorer, ContentRestorer);
6490
+ function HDRContentRestorer(resource, url, requestConfig) {
6491
+ var _this;
6492
+ _this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
6493
+ return _this;
6494
+ }
6495
+ var _proto = HDRContentRestorer.prototype;
6496
+ _proto.restoreContent = function restoreContent() {
6497
+ var _this = this;
6498
+ return new AssetPromise(function(resolve, reject) {
6499
+ var resource = _this.resource;
6500
+ resource.engine.resourceManager// @ts-ignore
6501
+ ._request(_this.url, _this.requestConfig).then(function(buffer) {
6502
+ var bufferArray = new Uint8Array(buffer);
6503
+ HDRDecoder.decodeFaces(bufferArray, HDRDecoder.parseHeader(bufferArray), function(faceIndex, data) {
6504
+ resource.setPixelBuffer(TextureCubeFace.PositiveX + faceIndex, data, 0);
6505
+ });
6506
+ resource.generateMipmaps();
6507
+ resolve(resource);
6508
+ }).catch(reject);
6509
+ });
6510
+ };
6511
+ return HDRContentRestorer;
6512
+ }(ContentRestorer);
6513
+ var CubeFaceContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
6514
+ _inherits(CubeFaceContentRestorer, ContentRestorer);
6515
+ function CubeFaceContentRestorer(resource, urls, requestConfig) {
6516
+ var _this;
6517
+ _this = ContentRestorer.call(this, resource) || this, _this.urls = urls, _this.requestConfig = requestConfig;
6518
+ return _this;
6519
+ }
6520
+ var _proto = CubeFaceContentRestorer.prototype;
6521
+ _proto.restoreContent = function restoreContent() {
6522
+ var _this = this;
6523
+ return new AssetPromise(function(resolve, reject) {
6524
+ Promise.all(_this.urls.map(function(url) {
6525
+ return request(url, _this.requestConfig);
6526
+ })).then(function(images) {
6527
+ var resource = _this.resource;
6528
+ for(var faceIndex = 0; faceIndex < 6; faceIndex++){
6529
+ resource.setImageSource(TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);
6530
+ }
6531
+ resource.generateMipmaps();
6532
+ resolve(resource);
6533
+ }).catch(reject);
6534
+ });
6535
+ };
6536
+ return CubeFaceContentRestorer;
6537
+ }(ContentRestorer);
6514
6538
 
6515
6539
  var AudioLoader = /*#__PURE__*/ function(Loader) {
6516
6540
  _inherits(AudioLoader, Loader);
@@ -6583,6 +6607,7 @@ var ShaderChunkLoader = /*#__PURE__*/ function(Loader) {
6583
6607
  }
6584
6608
  }
6585
6609
  return Promise.all(shaderChunkPaths.map(function(chunkPath) {
6610
+ // @ts-ignore
6586
6611
  return resourceManager.load({
6587
6612
  type: "ShaderChunk",
6588
6613
  url: chunkPath
@@ -6659,7 +6684,7 @@ var PhysicsMaterialLoader = /*#__PURE__*/ function(Loader) {
6659
6684
  }(Loader);
6660
6685
  PhysicsMaterialLoader = __decorate([
6661
6686
  resourceLoader(AssetType.PhysicsMaterial, [
6662
- "mesh"
6687
+ "physMat"
6663
6688
  ])
6664
6689
  ], PhysicsMaterialLoader);
6665
6690
 
@@ -7331,5 +7356,5 @@ EXT_texture_webp = __decorate([
7331
7356
  registerGLTFExtension("EXT_texture_webp", GLTFExtensionMode.CreateAndParse)
7332
7357
  ], EXT_texture_webp);
7333
7358
 
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 };
7359
+ 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, HierarchyParser, InterpolableValueType, KTX2Loader, KTX2TargetFormat, MaterialLoaderType, MeshDecoder, ParserContext, ParserType, PrefabResource, ReflectionParser, SceneParser, SpecularMode, Texture2DDecoder, decode, decoder, decoderMap, parseSingleKTX, registerGLTFExtension, registerGLTFParser };
7335
7360
  //# sourceMappingURL=module.js.map