diff --git a/packages/controls/src/FreeControl.ts b/packages/controls/src/FreeControl.ts index 53cab157cd..05e2079b98 100644 --- a/packages/controls/src/FreeControl.ts +++ b/packages/controls/src/FreeControl.ts @@ -72,7 +72,7 @@ export class FreeControl extends Script { this.camera = entity; // @ts-ignore // @todo In the future, the dependence on html elements will be removed and realized through the input of the packaging engine. - this.mainElement = this.scene.engine.canvas._webCanvas; + this.mainElement = this.engine.canvas._webCanvas; this.domElement = document; this.movementSpeed = 1.0; diff --git a/packages/core/src/RenderPipeline/BasicRenderPipeline.ts b/packages/core/src/RenderPipeline/BasicRenderPipeline.ts index 327ec60758..5a687087b7 100644 --- a/packages/core/src/RenderPipeline/BasicRenderPipeline.ts +++ b/packages/core/src/RenderPipeline/BasicRenderPipeline.ts @@ -180,10 +180,12 @@ export class BasicRenderPipeline { } else { this._opaqueQueue.render(camera, pass.replaceMaterial, pass.mask); this._alphaTestQueue.render(camera, pass.replaceMaterial, pass.mask); - if (background.mode === BackgroundMode.Sky) { - this._drawSky(engine, camera, background.sky); - } else if (background.mode === BackgroundMode.Texture && background.texture) { - this._drawBackgroundTexture(engine, background); + if (camera.clearFlags === CameraClearFlags.DepthColor) { + if (background.mode === BackgroundMode.Sky) { + this._drawSky(engine, camera, background.sky); + } else if (background.mode === BackgroundMode.Texture && background.texture) { + this._drawBackgroundTexture(engine, background); + } } this._transparentQueue.render(camera, pass.replaceMaterial, pass.mask); } diff --git a/packages/core/src/Scene.ts b/packages/core/src/Scene.ts index 2fc7e09b58..eebcd0905c 100644 --- a/packages/core/src/Scene.ts +++ b/packages/core/src/Scene.ts @@ -137,7 +137,7 @@ export class Scene extends EngineObject { removeRootEntity(entity: Entity): void { if (entity._isRoot && entity._scene == this) { this._removeEntity(entity); - this._isActiveInEngine && entity._processInActive(); + this._isActiveInEngine && entity._isActiveInHierarchy && entity._processInActive(); Entity._traverseSetOwnerScene(entity, null); } } diff --git a/packages/core/src/asset/ResourceManager.ts b/packages/core/src/asset/ResourceManager.ts index be051e4a3e..473edba708 100644 --- a/packages/core/src/asset/ResourceManager.ts +++ b/packages/core/src/asset/ResourceManager.ts @@ -213,9 +213,10 @@ export class ResourceManager { promise .then((res: EngineObject) => { if (loader.useCache) this._addAsset(url, res); + delete this._loadingPromises[url]; }) - .catch((err: Error) => Promise.reject(err)) - .finally(() => { + .catch((err: Error) => { + Promise.reject(err) delete this._loadingPromises[url]; }); return promise; diff --git a/packages/core/src/asset/request.ts b/packages/core/src/asset/request.ts index bf79bba6cc..f294055750 100644 --- a/packages/core/src/asset/request.ts +++ b/packages/core/src/asset/request.ts @@ -122,7 +122,8 @@ function requestRes(url: string, config: RequestConfig): AssetPromise { xhr.setRequestHeader(name, headers[name]); }); } - xhr.send(config.body as any); + // @ts-ignore + xhr.send(config.body as XMLHttpRequestBodyInit); }); } diff --git a/packages/core/src/material/BlinnPhongMaterial.ts b/packages/core/src/material/BlinnPhongMaterial.ts index f859f0de49..80c423cf92 100644 --- a/packages/core/src/material/BlinnPhongMaterial.ts +++ b/packages/core/src/material/BlinnPhongMaterial.ts @@ -145,7 +145,7 @@ export class BlinnPhongMaterial extends BaseMaterial { } set shininess(value: number) { - this.shaderData.setFloat(BlinnPhongMaterial._shininessProp, value); + this.shaderData.setFloat(BlinnPhongMaterial._shininessProp, Math.max(value, 1e-4)); } /** diff --git a/packages/core/tests/material/BlinnPhongMaterial.test.ts b/packages/core/tests/material/BlinnPhongMaterial.test.ts index 01fce008d7..767f6adcd3 100644 --- a/packages/core/tests/material/BlinnPhongMaterial.test.ts +++ b/packages/core/tests/material/BlinnPhongMaterial.test.ts @@ -49,11 +49,13 @@ describe("BlinnPhongMaterial", () => { material.specularTexture = null; material.emissiveTexture = null; material.normalTexture = null; + material.shininess = 0; expect(material.baseTexture).toBeNull(); expect(material.specularTexture).toBeNull(); expect(material.emissiveTexture).toBeNull(); expect(material.normalTexture).toBeNull(); + expect(material.shininess).toBe(1e-4); }); it("clone", () => { diff --git a/packages/loader/src/gltf/parser/MeshParser.ts b/packages/loader/src/gltf/parser/MeshParser.ts index 84d64fb709..0a6cc77425 100644 --- a/packages/loader/src/gltf/parser/MeshParser.ts +++ b/packages/loader/src/gltf/parser/MeshParser.ts @@ -164,15 +164,19 @@ export class MeshParser extends Parser { case "TEXCOORD_3": const texturecoords3 = GLTFUtil.floatBufferToVector2Array(bufferData); mesh.setUVs(texturecoords3, 3); + break; case "TEXCOORD_4": const texturecoords4 = GLTFUtil.floatBufferToVector2Array(bufferData); mesh.setUVs(texturecoords4, 4); + break; case "TEXCOORD_5": const texturecoords5 = GLTFUtil.floatBufferToVector2Array(bufferData); mesh.setUVs(texturecoords5, 5); + break; case "TEXCOORD_6": const texturecoords6 = GLTFUtil.floatBufferToVector2Array(bufferData); mesh.setUVs(texturecoords6, 6); + break; case "TEXCOORD_7": const texturecoords7 = GLTFUtil.floatBufferToVector2Array(bufferData); mesh.setUVs(texturecoords7, 7); diff --git a/packages/physics-physx/src/shape/PhysXBoxColliderShape.ts b/packages/physics-physx/src/shape/PhysXBoxColliderShape.ts index 608622cfd8..dc2de23575 100644 --- a/packages/physics-physx/src/shape/PhysXBoxColliderShape.ts +++ b/packages/physics-physx/src/shape/PhysXBoxColliderShape.ts @@ -1,8 +1,8 @@ import { IBoxColliderShape } from "@oasis-engine/design"; import { Vector3 } from "oasis-engine"; import { PhysXPhysics } from "../PhysXPhysics"; -import { PhysXColliderShape } from "./PhysXColliderShape"; import { PhysXPhysicsMaterial } from "../PhysXPhysicsMaterial"; +import { PhysXColliderShape } from "./PhysXColliderShape"; /** * Box collider shape in PhysX.