@galacean/engine-loader 2.0.0-alpha.43 → 2.0.0-alpha.44

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/main.js CHANGED
@@ -5780,6 +5780,7 @@ var KTXContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
5780
5780
  return KTXContentRestorer;
5781
5781
  }(engineCore.ContentRestorer);
5782
5782
 
5783
+ var materialLoaderTypes = new Set(Object.values(MaterialLoaderType));
5783
5784
  var MaterialLoader = /*#__PURE__*/ function(Loader) {
5784
5785
  _inherits(MaterialLoader, Loader);
5785
5786
  function MaterialLoader() {
@@ -5788,23 +5789,32 @@ var MaterialLoader = /*#__PURE__*/ function(Loader) {
5788
5789
  var _proto = MaterialLoader.prototype;
5789
5790
  _proto.load = function load(item, resourceManager) {
5790
5791
  var _this = this;
5791
- return new engineCore.AssetPromise(function(resolve, reject) {
5792
- resourceManager// @ts-ignore
5793
- ._request(item.url, _extends({}, item, {
5794
- type: "json"
5795
- })).then(function(materialSchema) {
5796
- var engine = resourceManager.engine;
5797
- var shaderRef = materialSchema.shaderRef, shaderName = materialSchema.shader;
5798
- var shader = engineCore.Shader.find(shaderName);
5799
- if (shader) {
5800
- resolve(_this._getMaterialByShader(materialSchema, shader, engine));
5801
- } else if (shaderRef) {
5802
- resolve(resourceManager// @ts-ignore
5803
- .getResourceByRef(shaderRef).then(function(shader) {
5804
- return _this._getMaterialByShader(materialSchema, shader, engine);
5805
- }));
5792
+ // @ts-expect-error _request is @internal
5793
+ return resourceManager._request(item.url, _extends({}, item, {
5794
+ type: "json"
5795
+ })).then(function(materialSchema) {
5796
+ var shaderData = materialSchema.shaderData, shaderRef = materialSchema.shaderRef, shaderName = materialSchema.shader;
5797
+ for(var key in shaderData){
5798
+ var type = shaderData[key].type;
5799
+ if (!materialLoaderTypes.has(type)) {
5800
+ throw new Error('MaterialLoader: unsupported shader data type "' + type + '".');
5806
5801
  }
5807
- }).catch(reject);
5802
+ }
5803
+ var engine = resourceManager.engine;
5804
+ var shader = engineCore.Shader.find(shaderName);
5805
+ if (shader) {
5806
+ return _this._getMaterialByShader(materialSchema, shader, engine);
5807
+ }
5808
+ if (!shaderRef) {
5809
+ throw new Error('MaterialLoader: shader "' + shaderName + '" not found.');
5810
+ }
5811
+ // @ts-expect-error getResourceByRef is @internal
5812
+ return resourceManager.getResourceByRef(shaderRef).then(function(shader) {
5813
+ if (!_instanceof(shader, engineCore.Shader)) {
5814
+ throw new Error('MaterialLoader: shader reference "' + shaderRef.url + '" did not resolve to a Shader.');
5815
+ }
5816
+ return _this._getMaterialByShader(materialSchema, shader, engine);
5817
+ });
5808
5818
  });
5809
5819
  };
5810
5820
  _proto._getMaterialByShader = function _getMaterialByShader(materialSchema, shader, engine) {
@@ -5827,8 +5837,11 @@ var MaterialLoader = /*#__PURE__*/ function(Loader) {
5827
5837
  materialShaderData.setFloat(key, value);
5828
5838
  break;
5829
5839
  case MaterialLoaderType.Texture:
5830
- texturePromises.push(// @ts-ignore
5840
+ texturePromises.push(// @ts-expect-error getResourceByRef is @internal
5831
5841
  engine.resourceManager.getResourceByRef(value).then(function(texture) {
5842
+ if (!_instanceof(texture, engineCore.Texture)) {
5843
+ throw new Error('MaterialLoader: texture reference "' + value.url + '" did not resolve to a Texture.');
5844
+ }
5832
5845
  materialShaderData.setTexture(key, texture);
5833
5846
  }));
5834
5847
  break;
@@ -5838,6 +5851,8 @@ var MaterialLoader = /*#__PURE__*/ function(Loader) {
5838
5851
  case MaterialLoaderType.Integer:
5839
5852
  materialShaderData.setInt(key, Number(value));
5840
5853
  break;
5854
+ default:
5855
+ throw new Error('MaterialLoader: unsupported shader data type "' + type + '".');
5841
5856
  }
5842
5857
  };
5843
5858
  var name = materialSchema.name, shaderData = materialSchema.shaderData, macros = materialSchema.macros;
@@ -5856,6 +5871,9 @@ var MaterialLoader = /*#__PURE__*/ function(Loader) {
5856
5871
  }
5857
5872
  return Promise.all(texturePromises).then(function() {
5858
5873
  return material;
5874
+ }, function(error) {
5875
+ material.destroy();
5876
+ throw error;
5859
5877
  });
5860
5878
  };
5861
5879
  return MaterialLoader;
@@ -6414,11 +6432,11 @@ var ShaderLoader = /*#__PURE__*/ function(Loader) {
6414
6432
  type: "text"
6415
6433
  })).then(function(code) {
6416
6434
  var source = code.trimStart();
6417
- if (source.startsWith("{")) {
6418
- // @ts-expect-error _createFromPrecompiled is @internal
6419
- return engineCore.Shader._createFromPrecompiled(JSON.parse(source));
6435
+ var shader = source.startsWith("{") ? engineCore.Shader._createFromPrecompiled(JSON.parse(source)) : engineCore.Shader.create(code, undefined, url);
6436
+ if (!shader) {
6437
+ throw new Error('ShaderLoader: failed to create shader "' + url + '".');
6420
6438
  }
6421
- return engineCore.Shader.create(code, undefined, url);
6439
+ return shader;
6422
6440
  });
6423
6441
  };
6424
6442
  return ShaderLoader;