@galacean/engine-loader 1.0.0-beta.1 → 1.0.0-beta.11
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 +156 -96
- package/dist/main.js.map +1 -1
- package/dist/miniprogram.js +156 -96
- package/dist/module.js +158 -98
- package/dist/module.js.map +1 -1
- package/package.json +5 -5
- package/types/GLTFContentRestorer.d.ts +1 -1
- package/types/gltf/GLTFResource.d.ts +2 -3
- package/types/gltf/GLTFUtil.d.ts +4 -4
- package/types/gltf/GLTFUtils.d.ts +1 -1
- package/types/gltf/extensions/GLTFExtensionSchema.d.ts +1 -1
- package/types/gltf/extensions/KHR_materials_ior.d.ts +1 -0
- package/types/gltf/extensions/index.d.ts +1 -0
- 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/prefab/PrefabDesign.d.ts +4 -4
- 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
|
@@ -1627,6 +1627,10 @@ var GLTFEntityParser = /*#__PURE__*/ function(GLTFParser) {
|
|
|
1627
1627
|
}
|
|
1628
1628
|
glTFResource.sceneRoots = sceneRoots;
|
|
1629
1629
|
glTFResource.defaultSceneRoot = sceneRoots[sceneID];
|
|
1630
|
+
// @ts-ignore
|
|
1631
|
+
glTFResource.defaultSceneRoot._hookResource = glTFResource;
|
|
1632
|
+
// @ts-ignore
|
|
1633
|
+
glTFResource._addReferCount(1);
|
|
1630
1634
|
};
|
|
1631
1635
|
return GLTFEntityParser;
|
|
1632
1636
|
}(GLTFParser);
|
|
@@ -1823,21 +1827,31 @@ var GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
|
|
|
1823
1827
|
var vertexCount;
|
|
1824
1828
|
var bufferBindIndex = 0;
|
|
1825
1829
|
var positions;
|
|
1826
|
-
|
|
1830
|
+
var boneIndices;
|
|
1831
|
+
var boneWeights;
|
|
1832
|
+
if (keepMeshData) {
|
|
1833
|
+
positions = new Array(vertexCount);
|
|
1834
|
+
boneIndices = new Array(vertexCount);
|
|
1835
|
+
boneWeights = new Array(vertexCount);
|
|
1836
|
+
}
|
|
1827
1837
|
for(var attribute in attributes){
|
|
1828
1838
|
var accessor = accessors[attributes[attribute]];
|
|
1829
1839
|
var accessorBuffer = GLTFUtils.getAccessorBuffer(context, gltf.bufferViews, accessor);
|
|
1830
1840
|
var dataElementSize = GLTFUtils.getAccessorTypeSize(accessor.type);
|
|
1831
|
-
var
|
|
1841
|
+
var accessorCount = accessor.count;
|
|
1832
1842
|
var vertices = accessorBuffer.data;
|
|
1833
1843
|
var vertexElement = void 0;
|
|
1834
1844
|
var meshId = mesh.instanceId;
|
|
1835
1845
|
var vertexBindingInfos = accessorBuffer.vertexBindingInfos;
|
|
1836
|
-
var
|
|
1846
|
+
var elementNormalized = accessor.normalized;
|
|
1847
|
+
var elementFormat = GLTFUtils.getElementFormat(accessor.componentType, dataElementSize, elementNormalized);
|
|
1848
|
+
var scaleFactor = void 0;
|
|
1849
|
+
elementNormalized && (scaleFactor = GLTFUtils.getNormalizedComponentScale(accessor.componentType));
|
|
1850
|
+
var elementOffset = void 0;
|
|
1837
1851
|
if (accessorBuffer.interleaved) {
|
|
1838
1852
|
var byteOffset = accessor.byteOffset || 0;
|
|
1839
1853
|
var stride = accessorBuffer.stride;
|
|
1840
|
-
|
|
1854
|
+
elementOffset = byteOffset % stride;
|
|
1841
1855
|
if (vertexBindingInfos[meshId] === undefined) {
|
|
1842
1856
|
vertexElement = new engineCore.VertexElement(attribute, elementOffset, elementFormat, bufferBindIndex);
|
|
1843
1857
|
var vertexBuffer = accessorBuffer.vertexBuffer;
|
|
@@ -1853,7 +1867,8 @@ var GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
|
|
|
1853
1867
|
vertexElement = new engineCore.VertexElement(attribute, elementOffset, elementFormat, vertexBindingInfos[meshId]);
|
|
1854
1868
|
}
|
|
1855
1869
|
} else {
|
|
1856
|
-
|
|
1870
|
+
elementOffset = 0;
|
|
1871
|
+
vertexElement = new engineCore.VertexElement(attribute, elementOffset, elementFormat, bufferBindIndex);
|
|
1857
1872
|
var vertexBuffer1 = new engineCore.Buffer(engine, engineCore.BufferBindFlag.VertexBuffer, vertices.byteLength, engineCore.BufferUsage.Static);
|
|
1858
1873
|
vertexBuffer1.setData(vertices);
|
|
1859
1874
|
meshRestoreInfo.vertexBuffers.push(new BufferRestoreInfo(vertexBuffer1, accessorBuffer.restoreInfo));
|
|
@@ -1862,35 +1877,61 @@ var GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
|
|
|
1862
1877
|
}
|
|
1863
1878
|
vertexElements.push(vertexElement);
|
|
1864
1879
|
if (attribute === "POSITION") {
|
|
1865
|
-
vertexCount =
|
|
1880
|
+
vertexCount = accessorCount;
|
|
1866
1881
|
var _mesh_bounds = mesh.bounds, min = _mesh_bounds.min, max = _mesh_bounds.max;
|
|
1867
1882
|
if (accessor.min && accessor.max) {
|
|
1868
1883
|
min.copyFromArray(accessor.min);
|
|
1869
1884
|
max.copyFromArray(accessor.max);
|
|
1870
1885
|
if (keepMeshData) {
|
|
1871
|
-
var
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1886
|
+
var baseOffset = elementOffset / vertices.BYTES_PER_ELEMENT;
|
|
1887
|
+
var stride1 = vertices.length / accessorCount;
|
|
1888
|
+
for(var j = 0; j < accessorCount; j++){
|
|
1889
|
+
var offset = baseOffset + j * stride1;
|
|
1890
|
+
var position = new engineMath.Vector3(vertices[offset], vertices[offset + 1], vertices[offset + 2]);
|
|
1891
|
+
elementNormalized && position.scale(scaleFactor);
|
|
1892
|
+
positions[j] = position;
|
|
1875
1893
|
}
|
|
1876
1894
|
}
|
|
1877
1895
|
} else {
|
|
1878
|
-
var
|
|
1896
|
+
var position1 = GLTFMeshParser._tempVector3;
|
|
1879
1897
|
min.set(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);
|
|
1880
1898
|
max.set(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);
|
|
1881
|
-
var
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
engineMath.Vector3.
|
|
1899
|
+
var baseOffset1 = elementOffset / vertices.BYTES_PER_ELEMENT;
|
|
1900
|
+
var stride2 = vertices.length / accessorCount;
|
|
1901
|
+
for(var j1 = 0; j1 < accessorCount; j1++){
|
|
1902
|
+
var offset1 = baseOffset1 + j1 * stride2;
|
|
1903
|
+
position1.copyFromArray(vertices, offset1);
|
|
1904
|
+
engineMath.Vector3.min(min, position1, min);
|
|
1905
|
+
engineMath.Vector3.max(max, position1, max);
|
|
1906
|
+
if (keepMeshData) {
|
|
1907
|
+
var clonePosition = position1.clone();
|
|
1908
|
+
elementNormalized && clonePosition.scale(scaleFactor);
|
|
1909
|
+
positions[j1] = clonePosition;
|
|
1910
|
+
}
|
|
1887
1911
|
}
|
|
1888
1912
|
}
|
|
1889
|
-
if (
|
|
1890
|
-
var scaleFactor = GLTFUtils.getNormalizedComponentScale(accessor.componentType);
|
|
1913
|
+
if (elementNormalized) {
|
|
1891
1914
|
min.scale(scaleFactor);
|
|
1892
1915
|
max.scale(scaleFactor);
|
|
1893
1916
|
}
|
|
1917
|
+
} else if (attribute === "JOINTS_0" && keepMeshData) {
|
|
1918
|
+
var baseOffset2 = elementOffset / vertices.BYTES_PER_ELEMENT;
|
|
1919
|
+
var stride3 = vertices.length / accessorCount;
|
|
1920
|
+
for(var j2 = 0; j2 < accessorCount; j2++){
|
|
1921
|
+
var offset2 = baseOffset2 + j2 * stride3;
|
|
1922
|
+
var boneIndex = new engineMath.Vector4(vertices[offset2], vertices[offset2 + 1], vertices[offset2 + 2], vertices[offset2 + 3]);
|
|
1923
|
+
elementNormalized && boneIndex.scale(scaleFactor);
|
|
1924
|
+
boneIndices[j2] = boneIndex;
|
|
1925
|
+
}
|
|
1926
|
+
} else if (attribute === "WEIGHTS_0" && keepMeshData) {
|
|
1927
|
+
var baseOffset3 = elementOffset / vertices.BYTES_PER_ELEMENT;
|
|
1928
|
+
var stride4 = vertices.length / accessorCount;
|
|
1929
|
+
for(var j3 = 0; j3 < accessorCount; j3++){
|
|
1930
|
+
var offset3 = baseOffset3 + j3 * stride4;
|
|
1931
|
+
var boneWeight = new engineMath.Vector4(vertices[offset3], vertices[offset3 + 1], vertices[offset3 + 2], vertices[offset3 + 3]);
|
|
1932
|
+
elementNormalized && boneWeight.scale(scaleFactor);
|
|
1933
|
+
boneWeights[j3] = boneWeight;
|
|
1934
|
+
}
|
|
1894
1935
|
}
|
|
1895
1936
|
}
|
|
1896
1937
|
mesh.setVertexElements(vertexElements);
|
|
@@ -1909,6 +1950,10 @@ var GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
|
|
|
1909
1950
|
mesh.uploadData(!keepMeshData);
|
|
1910
1951
|
//@ts-ignore
|
|
1911
1952
|
mesh._positions = positions;
|
|
1953
|
+
//@ts-ignore
|
|
1954
|
+
mesh._boneIndices = boneIndices;
|
|
1955
|
+
//@ts-ignore
|
|
1956
|
+
mesh._boneWeights = boneWeights;
|
|
1912
1957
|
return Promise.resolve(mesh);
|
|
1913
1958
|
};
|
|
1914
1959
|
/**
|
|
@@ -1999,14 +2044,7 @@ var GLTFSceneParser = /*#__PURE__*/ function(GLTFParser1) {
|
|
|
1999
2044
|
camera.enabled = false;
|
|
2000
2045
|
};
|
|
2001
2046
|
_proto._createRenderer = function _createRenderer(context, glTFNode, entity) {
|
|
2002
|
-
var
|
|
2003
|
-
var glTFMeshes = glTF.meshes;
|
|
2004
|
-
var engine = glTFResource.engine, meshes = glTFResource.meshes, materials = glTFResource.materials, skins = glTFResource.skins;
|
|
2005
|
-
var meshID = glTFNode.mesh, skinID = glTFNode.skin;
|
|
2006
|
-
var glTFMesh = glTFMeshes[meshID];
|
|
2007
|
-
var glTFMeshPrimitives = glTFMesh.primitives;
|
|
2008
|
-
var blendShapeWeights = glTFNode.weights || glTFMesh.weights;
|
|
2009
|
-
for(var i = 0; i < glTFMeshPrimitives.length; i++){
|
|
2047
|
+
var _loop = function(i) {
|
|
2010
2048
|
var gltfPrimitive = glTFMeshPrimitives[i];
|
|
2011
2049
|
var mesh = meshes[meshID][i];
|
|
2012
2050
|
var renderer = void 0;
|
|
@@ -2028,8 +2066,22 @@ var GLTFSceneParser = /*#__PURE__*/ function(GLTFParser1) {
|
|
|
2028
2066
|
var materialIndex = gltfPrimitive.material;
|
|
2029
2067
|
var material = (materials == null ? void 0 : materials[materialIndex]) || GLTFSceneParser._getDefaultMaterial(engine);
|
|
2030
2068
|
renderer.setMaterial(material);
|
|
2069
|
+
// Enable vertex color if mesh has COLOR_0 vertex element
|
|
2070
|
+
mesh.vertexElements.forEach(function(element) {
|
|
2071
|
+
if (element.semantic === "COLOR_0") {
|
|
2072
|
+
renderer.enableVertexColor = true;
|
|
2073
|
+
}
|
|
2074
|
+
});
|
|
2031
2075
|
GLTFParser.executeExtensionsAdditiveAndParse(gltfPrimitive.extensions, context, renderer, gltfPrimitive);
|
|
2032
|
-
}
|
|
2076
|
+
};
|
|
2077
|
+
var glTFResource = context.glTFResource, glTF = context.glTF;
|
|
2078
|
+
var glTFMeshes = glTF.meshes;
|
|
2079
|
+
var engine = glTFResource.engine, meshes = glTFResource.meshes, materials = glTFResource.materials, skins = glTFResource.skins;
|
|
2080
|
+
var meshID = glTFNode.mesh, skinID = glTFNode.skin;
|
|
2081
|
+
var glTFMesh = glTFMeshes[meshID];
|
|
2082
|
+
var glTFMeshPrimitives = glTFMesh.primitives;
|
|
2083
|
+
var blendShapeWeights = glTFNode.weights || glTFMesh.weights;
|
|
2084
|
+
for(var i = 0; i < glTFMeshPrimitives.length; i++)_loop(i);
|
|
2033
2085
|
};
|
|
2034
2086
|
_proto._createAnimator = function _createAnimator(context) {
|
|
2035
2087
|
if (!context.hasSkinned && !context.glTFResource.animations) {
|
|
@@ -2318,31 +2370,16 @@ var GLTFValidator = /*#__PURE__*/ function(GLTFParser1) {
|
|
|
2318
2370
|
|
|
2319
2371
|
/**
|
|
2320
2372
|
* Product after glTF parser, usually, `defaultSceneRoot` is only needed to use.
|
|
2321
|
-
*/ var GLTFResource = /*#__PURE__*/ function(
|
|
2322
|
-
_inherits(GLTFResource,
|
|
2373
|
+
*/ var GLTFResource = /*#__PURE__*/ function(ReferResource) {
|
|
2374
|
+
_inherits(GLTFResource, ReferResource);
|
|
2323
2375
|
function GLTFResource(engine, url) {
|
|
2324
2376
|
var _this;
|
|
2325
|
-
_this =
|
|
2377
|
+
_this = ReferResource.call(this, engine) || this;
|
|
2326
2378
|
_this.url = url;
|
|
2327
2379
|
return _this;
|
|
2328
2380
|
}
|
|
2329
|
-
var _proto = GLTFResource.prototype;
|
|
2330
|
-
_proto._onDestroy = function _onDestroy() {
|
|
2331
|
-
EngineObject.prototype._onDestroy.call(this);
|
|
2332
|
-
this.defaultSceneRoot.destroy();
|
|
2333
|
-
this.textures = null;
|
|
2334
|
-
this.materials = null;
|
|
2335
|
-
this.meshes = null;
|
|
2336
|
-
this.skins = null;
|
|
2337
|
-
this.animations = null;
|
|
2338
|
-
this.entities = null;
|
|
2339
|
-
this.cameras = null;
|
|
2340
|
-
this.lights = null;
|
|
2341
|
-
this.sceneRoots = null;
|
|
2342
|
-
this.extensionsData = null;
|
|
2343
|
-
};
|
|
2344
2381
|
return GLTFResource;
|
|
2345
|
-
}(engineCore.
|
|
2382
|
+
}(engineCore.ReferResource);
|
|
2346
2383
|
|
|
2347
2384
|
var GLTFLoader = /*#__PURE__*/ function(Loader) {
|
|
2348
2385
|
_inherits(GLTFLoader, Loader);
|
|
@@ -2975,6 +3012,15 @@ KTXLoader = __decorate([
|
|
|
2975
3012
|
])
|
|
2976
3013
|
], KTXLoader);
|
|
2977
3014
|
|
|
3015
|
+
function parseProperty(object, key, value) {
|
|
3016
|
+
if (typeof value === "object") {
|
|
3017
|
+
for(var subKey in value){
|
|
3018
|
+
parseProperty(object[key], subKey, value[subKey]);
|
|
3019
|
+
}
|
|
3020
|
+
} else {
|
|
3021
|
+
object[key] = value;
|
|
3022
|
+
}
|
|
3023
|
+
}
|
|
2978
3024
|
var MaterialLoader = /*#__PURE__*/ function(Loader) {
|
|
2979
3025
|
_inherits(MaterialLoader, Loader);
|
|
2980
3026
|
function MaterialLoader() {
|
|
@@ -2986,7 +3032,7 @@ var MaterialLoader = /*#__PURE__*/ function(Loader) {
|
|
|
2986
3032
|
return new engineCore.AssetPromise(function(resolve, reject) {
|
|
2987
3033
|
_this.request(item.url, _extends({}, item, {
|
|
2988
3034
|
type: "json"
|
|
2989
|
-
})).then(function(
|
|
3035
|
+
})).then(function(materialSchema) {
|
|
2990
3036
|
var _loop = function(key) {
|
|
2991
3037
|
var _shaderData_key = shaderData[key], type = _shaderData_key.type, value = _shaderData_key.value;
|
|
2992
3038
|
switch(type){
|
|
@@ -3014,27 +3060,8 @@ var MaterialLoader = /*#__PURE__*/ function(Loader) {
|
|
|
3014
3060
|
}
|
|
3015
3061
|
};
|
|
3016
3062
|
var engine = resourceManager.engine;
|
|
3017
|
-
var name =
|
|
3018
|
-
var material;
|
|
3019
|
-
switch(shader){
|
|
3020
|
-
case "pbr":
|
|
3021
|
-
material = new engineCore.PBRMaterial(engine);
|
|
3022
|
-
break;
|
|
3023
|
-
case "pbr-specular":
|
|
3024
|
-
material = new engineCore.PBRSpecularMaterial(engine);
|
|
3025
|
-
break;
|
|
3026
|
-
case "unlit":
|
|
3027
|
-
material = new engineCore.UnlitMaterial(engine);
|
|
3028
|
-
break;
|
|
3029
|
-
case "blinn-phong":
|
|
3030
|
-
material = new engineCore.BlinnPhongMaterial(engine);
|
|
3031
|
-
break;
|
|
3032
|
-
case "bake-pbr":
|
|
3033
|
-
// @todo refactor custom shader later
|
|
3034
|
-
// @ts-ignore
|
|
3035
|
-
material = new engineCore.PBRBaseMaterial(engine, engineCore.Shader.find("bake-pbr"));
|
|
3036
|
-
break;
|
|
3037
|
-
}
|
|
3063
|
+
var name = materialSchema.name, shader = materialSchema.shader, shaderData = materialSchema.shaderData, macros = materialSchema.macros, renderState = materialSchema.renderState;
|
|
3064
|
+
var material = new engineCore.Material(engine, engineCore.Shader.find(shader));
|
|
3038
3065
|
material.name = name;
|
|
3039
3066
|
var texturePromises = new Array();
|
|
3040
3067
|
var materialShaderData = material.shaderData;
|
|
@@ -3047,9 +3074,7 @@ var MaterialLoader = /*#__PURE__*/ function(Loader) {
|
|
|
3047
3074
|
materialShaderData.enableMacro(name1, value);
|
|
3048
3075
|
}
|
|
3049
3076
|
}
|
|
3050
|
-
|
|
3051
|
-
material[key1] = renderState[key1];
|
|
3052
|
-
}
|
|
3077
|
+
parseProperty(material, "renderState", renderState);
|
|
3053
3078
|
return Promise.all(texturePromises).then(function() {
|
|
3054
3079
|
resolve(material);
|
|
3055
3080
|
});
|
|
@@ -3804,6 +3829,12 @@ exports.AnimationClipDecoder = __decorate([
|
|
|
3804
3829
|
decoder("AnimationClip")
|
|
3805
3830
|
], exports.AnimationClipDecoder);
|
|
3806
3831
|
|
|
3832
|
+
exports.SpecularMode = void 0;
|
|
3833
|
+
(function(SpecularMode) {
|
|
3834
|
+
SpecularMode["Sky"] = "Sky";
|
|
3835
|
+
SpecularMode["Custom"] = "Custom";
|
|
3836
|
+
})(exports.SpecularMode || (exports.SpecularMode = {}));
|
|
3837
|
+
|
|
3807
3838
|
var SceneParserContext = /*#__PURE__*/ function() {
|
|
3808
3839
|
function SceneParserContext(originalData, scene) {
|
|
3809
3840
|
this.originalData = originalData;
|
|
@@ -4086,7 +4117,7 @@ var SpriteAtlasLoader = /*#__PURE__*/ function(Loader) {
|
|
|
4086
4117
|
var atlasItem = atlasItems[i];
|
|
4087
4118
|
if (atlasItem.img) {
|
|
4088
4119
|
chainPromises.push(resourceManager.load({
|
|
4089
|
-
url: atlasItem.img,
|
|
4120
|
+
url: engineCore.Utils.resolveAbsoluteUrl(item.url, atlasItem.img),
|
|
4090
4121
|
type: engineCore.AssetType.Texture2D,
|
|
4091
4122
|
params: {
|
|
4092
4123
|
format: format,
|
|
@@ -4362,47 +4393,63 @@ var SceneLoader = /*#__PURE__*/ function(Loader) {
|
|
|
4362
4393
|
// @ts-ignore
|
|
4363
4394
|
engine.resourceManager.initVirtualResources(data.files);
|
|
4364
4395
|
return SceneParser.parse(engine, data).then(function(scene) {
|
|
4396
|
+
var promises = [];
|
|
4365
4397
|
// parse ambient light
|
|
4366
4398
|
var ambient = data.scene.ambient;
|
|
4367
|
-
var
|
|
4368
|
-
if (ambient.
|
|
4369
|
-
|
|
4370
|
-
|
|
4371
|
-
|
|
4399
|
+
var useCustomAmbient = ambient.specularMode === "Custom";
|
|
4400
|
+
if (useCustomAmbient && ambient.customAmbientLight) {
|
|
4401
|
+
// @ts-ignore
|
|
4402
|
+
// prettier-ignore
|
|
4403
|
+
var customAmbientPromise = resourceManager.getResourceByRef(ambient.customAmbientLight).then(function(ambientLight) {
|
|
4404
|
+
scene.ambientLight = ambientLight;
|
|
4372
4405
|
scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
|
|
4373
4406
|
scene.ambientLight.specularIntensity = ambient.specularIntensity;
|
|
4407
|
+
scene.ambientLight.diffuseMode = ambient.diffuseMode;
|
|
4408
|
+
scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
|
|
4374
4409
|
});
|
|
4375
|
-
|
|
4376
|
-
|
|
4377
|
-
|
|
4378
|
-
|
|
4410
|
+
promises.push(customAmbientPromise);
|
|
4411
|
+
} else if (!useCustomAmbient && ambient.ambientLight) {
|
|
4412
|
+
// @ts-ignore
|
|
4413
|
+
// prettier-ignore
|
|
4414
|
+
var ambientLightPromise = resourceManager.getResourceByRef(ambient.ambientLight).then(function(ambientLight) {
|
|
4415
|
+
scene.ambientLight = ambientLight;
|
|
4416
|
+
scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
|
|
4417
|
+
scene.ambientLight.specularIntensity = ambient.specularIntensity;
|
|
4418
|
+
scene.ambientLight.diffuseMode = ambient.diffuseMode;
|
|
4419
|
+
scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
|
|
4420
|
+
});
|
|
4421
|
+
promises.push(ambientLightPromise);
|
|
4379
4422
|
}
|
|
4380
4423
|
var background = data.scene.background;
|
|
4381
4424
|
scene.background.mode = background.mode;
|
|
4382
|
-
var backgroundPromise = Promise.resolve();
|
|
4383
4425
|
switch(scene.background.mode){
|
|
4384
4426
|
case engineCore.BackgroundMode.SolidColor:
|
|
4385
4427
|
scene.background.solidColor.copyFrom(background.color);
|
|
4386
4428
|
break;
|
|
4387
4429
|
case engineCore.BackgroundMode.Sky:
|
|
4388
|
-
if (background.
|
|
4430
|
+
if (background.skyMesh && background.skyMaterial) {
|
|
4389
4431
|
// @ts-ignore
|
|
4390
|
-
|
|
4391
|
-
|
|
4392
|
-
var skyMaterial = new engineCore.SkyBoxMaterial(engine);
|
|
4393
|
-
skyMaterial.texture = light.specularTexture;
|
|
4394
|
-
skyMaterial.textureDecodeRGBM = true;
|
|
4395
|
-
sky.material = skyMaterial;
|
|
4396
|
-
sky.mesh = engineCore.PrimitiveMesh.createCuboid(engine, 1, 1, 1);
|
|
4432
|
+
var skyMeshPromise = resourceManager.getResourceByRef(background.skyMesh).then(function(mesh) {
|
|
4433
|
+
scene.background.sky.mesh = mesh;
|
|
4397
4434
|
});
|
|
4435
|
+
// @ts-ignore
|
|
4436
|
+
// prettier-ignore
|
|
4437
|
+
var skyMaterialPromise = resourceManager.getResourceByRef(background.skyMaterial).then(function(material) {
|
|
4438
|
+
scene.background.sky.material = material;
|
|
4439
|
+
});
|
|
4440
|
+
promises.push(skyMeshPromise, skyMaterialPromise);
|
|
4441
|
+
} else {
|
|
4442
|
+
engineCore.Logger.warn("Sky background mode requires skyMesh and skyMaterial");
|
|
4398
4443
|
}
|
|
4399
4444
|
break;
|
|
4400
4445
|
case engineCore.BackgroundMode.Texture:
|
|
4401
4446
|
if (background.texture) {
|
|
4402
4447
|
// @ts-ignore
|
|
4403
|
-
|
|
4448
|
+
// prettier-ignore
|
|
4449
|
+
var backgroundPromise = resourceManager.getResourceByRef(background.texture).then(function(texture) {
|
|
4404
4450
|
scene.background.texture = texture;
|
|
4405
4451
|
});
|
|
4452
|
+
promises.push(backgroundPromise);
|
|
4406
4453
|
}
|
|
4407
4454
|
break;
|
|
4408
4455
|
}
|
|
@@ -4414,10 +4461,7 @@ var SceneLoader = /*#__PURE__*/ function(Loader) {
|
|
|
4414
4461
|
if (shadow.shadowDistance != undefined) scene.shadowDistance = shadow.shadowDistance;
|
|
4415
4462
|
if (shadow.shadowCascades != undefined) scene.shadowCascades = shadow.shadowCascades;
|
|
4416
4463
|
}
|
|
4417
|
-
return Promise.all(
|
|
4418
|
-
ambientLightPromise,
|
|
4419
|
-
backgroundPromise
|
|
4420
|
-
]).then(function() {
|
|
4464
|
+
return Promise.all(promises).then(function() {
|
|
4421
4465
|
resolve(scene);
|
|
4422
4466
|
});
|
|
4423
4467
|
});
|
|
@@ -4677,6 +4721,22 @@ KHR_materials_clearcoat = __decorate([
|
|
|
4677
4721
|
registerGLTFExtension("KHR_materials_clearcoat", exports.GLTFExtensionMode.AdditiveParse)
|
|
4678
4722
|
], KHR_materials_clearcoat);
|
|
4679
4723
|
|
|
4724
|
+
var KHR_materials_ior = /*#__PURE__*/ function(GLTFExtensionParser) {
|
|
4725
|
+
_inherits(KHR_materials_ior, GLTFExtensionParser);
|
|
4726
|
+
function KHR_materials_ior() {
|
|
4727
|
+
return GLTFExtensionParser.apply(this, arguments);
|
|
4728
|
+
}
|
|
4729
|
+
var _proto = KHR_materials_ior.prototype;
|
|
4730
|
+
_proto.additiveParse = function additiveParse(context, material, schema) {
|
|
4731
|
+
var _schema_ior = schema.ior, ior = _schema_ior === void 0 ? 1.5 : _schema_ior;
|
|
4732
|
+
material.ior = ior;
|
|
4733
|
+
};
|
|
4734
|
+
return KHR_materials_ior;
|
|
4735
|
+
}(GLTFExtensionParser);
|
|
4736
|
+
KHR_materials_ior = __decorate([
|
|
4737
|
+
registerGLTFExtension("KHR_materials_ior", exports.GLTFExtensionMode.AdditiveParse)
|
|
4738
|
+
], KHR_materials_ior);
|
|
4739
|
+
|
|
4680
4740
|
var KHR_materials_pbrSpecularGlossiness = /*#__PURE__*/ function(GLTFExtensionParser) {
|
|
4681
4741
|
_inherits(KHR_materials_pbrSpecularGlossiness, GLTFExtensionParser);
|
|
4682
4742
|
function KHR_materials_pbrSpecularGlossiness() {
|