@galacean/engine-loader 1.0.0-beta.9 → 1.1.0-alpha.0
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 +55 -48
- package/dist/main.js.map +1 -1
- package/dist/miniprogram.js +55 -48
- package/dist/module.js +57 -50
- package/dist/module.js.map +1 -1
- package/package.json +5 -5
- package/types/GLTFContentRestorer.d.ts +1 -1
- package/types/gltf/GLTFUtils.d.ts +1 -1
- package/types/gltf/extensions/GLTFExtensionSchema.d.ts +1 -1
- package/types/gltf/parser/GLTFMeshParser.d.ts +1 -1
- package/types/gltf/parser/GLTFParser.d.ts +1 -1
- package/types/gltf/parser/GLTFParserContext.d.ts +1 -1
- package/types/resource-deserialize/index.d.ts +3 -3
- package/types/resource-deserialize/resources/mesh/MeshDecoder.d.ts +1 -1
- package/types/resource-deserialize/resources/parser/PrefabParser.d.ts +5 -0
- package/types/resource-deserialize/resources/parser/ReflectionParser.d.ts +14 -0
- package/types/resource-deserialize/resources/scene/SceneParser.d.ts +1 -1
- package/types/resource-deserialize/resources/scene/SceneParserContext.d.ts +1 -1
- package/types/resource-deserialize/resources/schema/BasicSchema.d.ts +61 -0
- package/types/resource-deserialize/resources/schema/MaterialSchema.d.ts +91 -0
- package/types/resource-deserialize/resources/schema/SceneSchema.d.ts +41 -0
- package/types/resource-deserialize/resources/schema/index.d.ts +3 -0
package/dist/main.js
CHANGED
|
@@ -3025,6 +3025,15 @@ KTXLoader = __decorate([
|
|
|
3025
3025
|
])
|
|
3026
3026
|
], KTXLoader);
|
|
3027
3027
|
|
|
3028
|
+
function parseProperty(object, key, value) {
|
|
3029
|
+
if (typeof value === "object") {
|
|
3030
|
+
for(var subKey in value){
|
|
3031
|
+
parseProperty(object[key], subKey, value[subKey]);
|
|
3032
|
+
}
|
|
3033
|
+
} else {
|
|
3034
|
+
object[key] = value;
|
|
3035
|
+
}
|
|
3036
|
+
}
|
|
3028
3037
|
var MaterialLoader = /*#__PURE__*/ function(Loader) {
|
|
3029
3038
|
_inherits(MaterialLoader, Loader);
|
|
3030
3039
|
function MaterialLoader() {
|
|
@@ -3036,7 +3045,7 @@ var MaterialLoader = /*#__PURE__*/ function(Loader) {
|
|
|
3036
3045
|
return new engineCore.AssetPromise(function(resolve, reject) {
|
|
3037
3046
|
_this.request(item.url, _extends({}, item, {
|
|
3038
3047
|
type: "json"
|
|
3039
|
-
})).then(function(
|
|
3048
|
+
})).then(function(materialSchema) {
|
|
3040
3049
|
var _loop = function(key) {
|
|
3041
3050
|
var _shaderData_key = shaderData[key], type = _shaderData_key.type, value = _shaderData_key.value;
|
|
3042
3051
|
switch(type){
|
|
@@ -3064,27 +3073,8 @@ var MaterialLoader = /*#__PURE__*/ function(Loader) {
|
|
|
3064
3073
|
}
|
|
3065
3074
|
};
|
|
3066
3075
|
var engine = resourceManager.engine;
|
|
3067
|
-
var name =
|
|
3068
|
-
var material;
|
|
3069
|
-
switch(shader){
|
|
3070
|
-
case "pbr":
|
|
3071
|
-
material = new engineCore.PBRMaterial(engine);
|
|
3072
|
-
break;
|
|
3073
|
-
case "pbr-specular":
|
|
3074
|
-
material = new engineCore.PBRSpecularMaterial(engine);
|
|
3075
|
-
break;
|
|
3076
|
-
case "unlit":
|
|
3077
|
-
material = new engineCore.UnlitMaterial(engine);
|
|
3078
|
-
break;
|
|
3079
|
-
case "blinn-phong":
|
|
3080
|
-
material = new engineCore.BlinnPhongMaterial(engine);
|
|
3081
|
-
break;
|
|
3082
|
-
case "bake-pbr":
|
|
3083
|
-
// @todo refactor custom shader later
|
|
3084
|
-
// @ts-ignore
|
|
3085
|
-
material = new engineCore.PBRBaseMaterial(engine, engineCore.Shader.find("bake-pbr"));
|
|
3086
|
-
break;
|
|
3087
|
-
}
|
|
3076
|
+
var name = materialSchema.name, shader = materialSchema.shader, shaderData = materialSchema.shaderData, macros = materialSchema.macros, renderState = materialSchema.renderState;
|
|
3077
|
+
var material = new engineCore.Material(engine, engineCore.Shader.find(shader));
|
|
3088
3078
|
material.name = name;
|
|
3089
3079
|
var texturePromises = new Array();
|
|
3090
3080
|
var materialShaderData = material.shaderData;
|
|
@@ -3097,9 +3087,7 @@ var MaterialLoader = /*#__PURE__*/ function(Loader) {
|
|
|
3097
3087
|
materialShaderData.enableMacro(name1, value);
|
|
3098
3088
|
}
|
|
3099
3089
|
}
|
|
3100
|
-
|
|
3101
|
-
material[key1] = renderState[key1];
|
|
3102
|
-
}
|
|
3090
|
+
parseProperty(material, "renderState", renderState);
|
|
3103
3091
|
return Promise.all(texturePromises).then(function() {
|
|
3104
3092
|
resolve(material);
|
|
3105
3093
|
});
|
|
@@ -3854,6 +3842,12 @@ exports.AnimationClipDecoder = __decorate([
|
|
|
3854
3842
|
decoder("AnimationClip")
|
|
3855
3843
|
], exports.AnimationClipDecoder);
|
|
3856
3844
|
|
|
3845
|
+
exports.SpecularMode = void 0;
|
|
3846
|
+
(function(SpecularMode) {
|
|
3847
|
+
SpecularMode["Sky"] = "Sky";
|
|
3848
|
+
SpecularMode["Custom"] = "Custom";
|
|
3849
|
+
})(exports.SpecularMode || (exports.SpecularMode = {}));
|
|
3850
|
+
|
|
3857
3851
|
var SceneParserContext = /*#__PURE__*/ function() {
|
|
3858
3852
|
function SceneParserContext(originalData, scene) {
|
|
3859
3853
|
this.originalData = originalData;
|
|
@@ -4412,47 +4406,63 @@ var SceneLoader = /*#__PURE__*/ function(Loader) {
|
|
|
4412
4406
|
// @ts-ignore
|
|
4413
4407
|
engine.resourceManager.initVirtualResources(data.files);
|
|
4414
4408
|
return SceneParser.parse(engine, data).then(function(scene) {
|
|
4409
|
+
var promises = [];
|
|
4415
4410
|
// parse ambient light
|
|
4416
4411
|
var ambient = data.scene.ambient;
|
|
4417
|
-
var
|
|
4418
|
-
if (ambient.
|
|
4419
|
-
|
|
4420
|
-
|
|
4421
|
-
|
|
4412
|
+
var useCustomAmbient = ambient.specularMode === "Custom";
|
|
4413
|
+
if (useCustomAmbient && ambient.customAmbientLight) {
|
|
4414
|
+
// @ts-ignore
|
|
4415
|
+
// prettier-ignore
|
|
4416
|
+
var customAmbientPromise = resourceManager.getResourceByRef(ambient.customAmbientLight).then(function(ambientLight) {
|
|
4417
|
+
scene.ambientLight = ambientLight;
|
|
4422
4418
|
scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
|
|
4423
4419
|
scene.ambientLight.specularIntensity = ambient.specularIntensity;
|
|
4420
|
+
scene.ambientLight.diffuseMode = ambient.diffuseMode;
|
|
4421
|
+
scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
|
|
4424
4422
|
});
|
|
4425
|
-
|
|
4426
|
-
|
|
4427
|
-
|
|
4428
|
-
|
|
4423
|
+
promises.push(customAmbientPromise);
|
|
4424
|
+
} else if (!useCustomAmbient && ambient.ambientLight) {
|
|
4425
|
+
// @ts-ignore
|
|
4426
|
+
// prettier-ignore
|
|
4427
|
+
var ambientLightPromise = resourceManager.getResourceByRef(ambient.ambientLight).then(function(ambientLight) {
|
|
4428
|
+
scene.ambientLight = ambientLight;
|
|
4429
|
+
scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
|
|
4430
|
+
scene.ambientLight.specularIntensity = ambient.specularIntensity;
|
|
4431
|
+
scene.ambientLight.diffuseMode = ambient.diffuseMode;
|
|
4432
|
+
scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
|
|
4433
|
+
});
|
|
4434
|
+
promises.push(ambientLightPromise);
|
|
4429
4435
|
}
|
|
4430
4436
|
var background = data.scene.background;
|
|
4431
4437
|
scene.background.mode = background.mode;
|
|
4432
|
-
var backgroundPromise = Promise.resolve();
|
|
4433
4438
|
switch(scene.background.mode){
|
|
4434
4439
|
case engineCore.BackgroundMode.SolidColor:
|
|
4435
4440
|
scene.background.solidColor.copyFrom(background.color);
|
|
4436
4441
|
break;
|
|
4437
4442
|
case engineCore.BackgroundMode.Sky:
|
|
4438
|
-
if (background.
|
|
4443
|
+
if (background.skyMesh && background.skyMaterial) {
|
|
4444
|
+
// @ts-ignore
|
|
4445
|
+
var skyMeshPromise = resourceManager.getResourceByRef(background.skyMesh).then(function(mesh) {
|
|
4446
|
+
scene.background.sky.mesh = mesh;
|
|
4447
|
+
});
|
|
4439
4448
|
// @ts-ignore
|
|
4440
|
-
|
|
4441
|
-
|
|
4442
|
-
|
|
4443
|
-
skyMaterial.texture = light.specularTexture;
|
|
4444
|
-
skyMaterial.textureDecodeRGBM = true;
|
|
4445
|
-
sky.material = skyMaterial;
|
|
4446
|
-
sky.mesh = engineCore.PrimitiveMesh.createCuboid(engine, 1, 1, 1);
|
|
4449
|
+
// prettier-ignore
|
|
4450
|
+
var skyMaterialPromise = resourceManager.getResourceByRef(background.skyMaterial).then(function(material) {
|
|
4451
|
+
scene.background.sky.material = material;
|
|
4447
4452
|
});
|
|
4453
|
+
promises.push(skyMeshPromise, skyMaterialPromise);
|
|
4454
|
+
} else {
|
|
4455
|
+
engineCore.Logger.warn("Sky background mode requires skyMesh and skyMaterial");
|
|
4448
4456
|
}
|
|
4449
4457
|
break;
|
|
4450
4458
|
case engineCore.BackgroundMode.Texture:
|
|
4451
4459
|
if (background.texture) {
|
|
4452
4460
|
// @ts-ignore
|
|
4453
|
-
|
|
4461
|
+
// prettier-ignore
|
|
4462
|
+
var backgroundPromise = resourceManager.getResourceByRef(background.texture).then(function(texture) {
|
|
4454
4463
|
scene.background.texture = texture;
|
|
4455
4464
|
});
|
|
4465
|
+
promises.push(backgroundPromise);
|
|
4456
4466
|
}
|
|
4457
4467
|
break;
|
|
4458
4468
|
}
|
|
@@ -4464,10 +4474,7 @@ var SceneLoader = /*#__PURE__*/ function(Loader) {
|
|
|
4464
4474
|
if (shadow.shadowDistance != undefined) scene.shadowDistance = shadow.shadowDistance;
|
|
4465
4475
|
if (shadow.shadowCascades != undefined) scene.shadowCascades = shadow.shadowCascades;
|
|
4466
4476
|
}
|
|
4467
|
-
return Promise.all(
|
|
4468
|
-
ambientLightPromise,
|
|
4469
|
-
backgroundPromise
|
|
4470
|
-
]).then(function() {
|
|
4477
|
+
return Promise.all(promises).then(function() {
|
|
4471
4478
|
resolve(scene);
|
|
4472
4479
|
});
|
|
4473
4480
|
});
|