From 90d49908deb54627a308e0e34caef0e4be7841d4 Mon Sep 17 00:00:00 2001 From: Shiguanghai <46474644+shiguanghai@users.noreply.github.com> Date: Thu, 22 Sep 2022 14:50:32 +0800 Subject: [PATCH 01/17] Fix wrong word recieveShadow to receiveShadow (#1065) fix: wrong word recieveShadow to receiveShadow --- packages/core/src/shadow/Extension.ts | 4 ++-- packages/core/src/shadow/ShadowFeature.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/core/src/shadow/Extension.ts b/packages/core/src/shadow/Extension.ts index cec2ecdae..910b91017 100644 --- a/packages/core/src/shadow/Extension.ts +++ b/packages/core/src/shadow/Extension.ts @@ -32,10 +32,10 @@ Object.defineProperty(Light.prototype, "enableShadow", { */ Object.defineProperty(Component.prototype, "receiveShadow", { get: function () { - return this._recieveShadow; + return this._receiveShadow; }, set: function (enabled) { - this._recieveShadow = enabled; + this._receiveShadow = enabled; } }); diff --git a/packages/core/src/shadow/ShadowFeature.ts b/packages/core/src/shadow/ShadowFeature.ts index 96b307955..bd6496648 100644 --- a/packages/core/src/shadow/ShadowFeature.ts +++ b/packages/core/src/shadow/ShadowFeature.ts @@ -92,7 +92,7 @@ export class ShadowFeature extends SceneFeature { const item = items[i]; const component: Component = item.component; - const receiveShadow = (component as any).recieveShadow; + const receiveShadow = (component as any).receiveShadow; const castShadow = (component as any).castShadow; if (receiveShadow === true) { component.entity.layer |= Layer.Layer30; //SHADOW; From a6ddd00207917570abbc57fbf2b1e2f9287cfce6 Mon Sep 17 00:00:00 2001 From: Hu Song Date: Fri, 23 Sep 2022 10:47:09 +0800 Subject: [PATCH 02/17] Support glTF materials remap (#1034) * support gltF materials remap --- packages/design/package.json | 0 packages/loader/package.json | 0 .../gltf/extensions/OASIS_materials_remap.ts | 13 ++++++++++ packages/loader/src/gltf/extensions/Schema.ts | 6 +++++ packages/loader/src/gltf/extensions/index.ts | 1 + .../loader/src/gltf/parser/MaterialParser.ts | 17 +++++++++++- .../loader/src/gltf/parser/SceneParser.ts | 26 +++++++++++++++---- packages/math/package.json | 0 packages/oasis-engine/package.json | 0 packages/rhi-webgl/package.json | 0 10 files changed, 57 insertions(+), 6 deletions(-) mode change 100755 => 100644 packages/design/package.json mode change 100755 => 100644 packages/loader/package.json create mode 100644 packages/loader/src/gltf/extensions/OASIS_materials_remap.ts mode change 100755 => 100644 packages/math/package.json mode change 100755 => 100644 packages/oasis-engine/package.json mode change 100755 => 100644 packages/rhi-webgl/package.json diff --git a/packages/design/package.json b/packages/design/package.json old mode 100755 new mode 100644 diff --git a/packages/loader/package.json b/packages/loader/package.json old mode 100755 new mode 100644 diff --git a/packages/loader/src/gltf/extensions/OASIS_materials_remap.ts b/packages/loader/src/gltf/extensions/OASIS_materials_remap.ts new file mode 100644 index 000000000..3eff7c8f7 --- /dev/null +++ b/packages/loader/src/gltf/extensions/OASIS_materials_remap.ts @@ -0,0 +1,13 @@ +import { Material } from "@oasis-engine/core"; +import { GLTFResource } from "../GLTFResource"; +import { registerExtension } from "../parser/Parser"; +import { ExtensionParser } from "./ExtensionParser"; +import { IOasisMaterialRemap } from "./Schema"; + +@registerExtension("OASIS_materials_remap") +class OasisMaterialsRemap extends ExtensionParser { + createEngineResource(schema: IOasisMaterialRemap, context: GLTFResource): Promise { + const { engine } = context; + return engine.resourceManager.getResourceByRef(schema); + } +} diff --git a/packages/loader/src/gltf/extensions/Schema.ts b/packages/loader/src/gltf/extensions/Schema.ts index 59d67fd64..53793d546 100644 --- a/packages/loader/src/gltf/extensions/Schema.ts +++ b/packages/loader/src/gltf/extensions/Schema.ts @@ -153,6 +153,12 @@ export interface IKHRXmp_Node { packet: number; } +export interface IOasisMaterialRemap { + refId: string; + key?: string; + isClone?: boolean; +} + export type ExtensionSchema = | IKHRLightsPunctual_Light | IKHRDracoMeshCompression diff --git a/packages/loader/src/gltf/extensions/index.ts b/packages/loader/src/gltf/extensions/index.ts index 7ef0b8892..a9ee9e029 100644 --- a/packages/loader/src/gltf/extensions/index.ts +++ b/packages/loader/src/gltf/extensions/index.ts @@ -11,3 +11,4 @@ import "./KHR_materials_volume"; import "./KHR_mesh_quantization"; import "./KHR_texture_basisu"; import "./KHR_texture_transform"; +import "./OASIS_materials_remap"; diff --git a/packages/loader/src/gltf/parser/MaterialParser.ts b/packages/loader/src/gltf/parser/MaterialParser.ts index 802a9278b..461cbd663 100644 --- a/packages/loader/src/gltf/parser/MaterialParser.ts +++ b/packages/loader/src/gltf/parser/MaterialParser.ts @@ -41,7 +41,12 @@ export class MaterialParser extends Parser { name = "" } = gltf.materials[i]; - const { KHR_materials_unlit, KHR_materials_pbrSpecularGlossiness, KHR_materials_clearcoat } = extensions; + const { + KHR_materials_unlit, + KHR_materials_pbrSpecularGlossiness, + KHR_materials_clearcoat, + OASIS_materials_remap + } = extensions; let material: UnlitMaterial | PBRMaterial | PBRSpecularMaterial = null; @@ -133,6 +138,16 @@ export class MaterialParser extends Parser { } } + if (OASIS_materials_remap) { + context.gltf.extensions = context.gltf.extensions ?? {}; + context.gltf.extensions["OASIS_materials_remap"] = context.gltf.extensions["OASIS_materials_remap"] ?? {}; + context.gltf.extensions["OASIS_materials_remap"][i] = Parser.createEngineResource( + "OASIS_materials_remap", + OASIS_materials_remap, + context + ); + } + if (doubleSided) { material.renderFace = RenderFace.Double; } else { diff --git a/packages/loader/src/gltf/parser/SceneParser.ts b/packages/loader/src/gltf/parser/SceneParser.ts index c08eda2b0..a200dab4d 100644 --- a/packages/loader/src/gltf/parser/SceneParser.ts +++ b/packages/loader/src/gltf/parser/SceneParser.ts @@ -26,7 +26,7 @@ export class SceneParser extends Parser { return SceneParser._defaultMaterial; } - parse(context: GLTFResource): void { + parse(context: GLTFResource): Promise { const { gltf: { nodes, cameras: gltfCameras }, entities @@ -34,6 +34,8 @@ export class SceneParser extends Parser { if (!nodes) return; + const promises = []; + for (let i = 0; i < nodes.length; i++) { const gltfNode = nodes[i]; const { camera: cameraID, mesh: meshID, extensions = {} } = gltfNode; @@ -45,7 +47,7 @@ export class SceneParser extends Parser { } if (meshID !== undefined) { - this._createRenderer(context, gltfNode, entity); + promises.push(this._createRenderer(context, gltfNode, entity)); } if (KHR_lights_punctual) { @@ -59,6 +61,9 @@ export class SceneParser extends Parser { if (context.defaultSceneRoot) { this._createAnimator(context); } + + delete context.gltf.extensions["OASIS_materials_remap"]; + return Promise.all(promises); } private _createCamera(context: GLTFResource, cameraSchema: ICamera, entity: Entity): void { @@ -101,7 +106,7 @@ export class SceneParser extends Parser { camera.enabled = false; } - private _createRenderer(context: GLTFResource, gltfNode: INode, entity: Entity): void { + private _createRenderer(context: GLTFResource, gltfNode: INode, entity: Entity): Promise { const { engine, gltf: { meshes: gltfMeshes }, @@ -114,6 +119,7 @@ export class SceneParser extends Parser { const gltfMeshPrimitives = glTFMesh.primitives; const blendShapeWeights = gltfNode.weights || glTFMesh.weights; + const promises = []; for (let i = 0; i < gltfMeshPrimitives.length; i++) { const mesh = meshes[meshID][i]; let renderer: MeshRenderer | SkinnedMeshRenderer; @@ -134,8 +140,17 @@ export class SceneParser extends Parser { } const materialIndex = gltfMeshPrimitives[i].material; - const material = materials?.[materialIndex] || SceneParser._getDefaultMaterial(engine); - renderer.setMaterial(material); + const remapMaterials = context.gltf.extensions["OASIS_materials_remap"]; + if (remapMaterials && remapMaterials[materialIndex]) { + promises.push( + remapMaterials[materialIndex].then((mtl) => { + renderer.setMaterial(mtl); + }) + ); + } else { + const material = materials?.[materialIndex] || SceneParser._getDefaultMaterial(engine); + renderer.setMaterial(material); + } const { extensions = {} } = gltfMeshPrimitives[i]; const { KHR_materials_variants } = extensions; @@ -143,6 +158,7 @@ export class SceneParser extends Parser { Parser.parseEngineResource("KHR_materials_variants", KHR_materials_variants, renderer, context); } } + return Promise.all(promises); } private _createAnimator(context: GLTFResource) { diff --git a/packages/math/package.json b/packages/math/package.json old mode 100755 new mode 100644 diff --git a/packages/oasis-engine/package.json b/packages/oasis-engine/package.json old mode 100755 new mode 100644 diff --git a/packages/rhi-webgl/package.json b/packages/rhi-webgl/package.json old mode 100755 new mode 100644 From a09d8bb29095a0247c50d789f6c3b209d776fae5 Mon Sep 17 00:00:00 2001 From: Hu Song Date: Fri, 23 Sep 2022 16:56:05 +0800 Subject: [PATCH 03/17] Fix Material Resolved with Texture References (#1076) * fix: material resolved with Texture References --- packages/loader/src/MaterialLoader.ts | 17 +++++++++++------ packages/loader/src/gltf/parser/SceneParser.ts | 4 ++-- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/packages/loader/src/MaterialLoader.ts b/packages/loader/src/MaterialLoader.ts index 60d1d026b..452836851 100644 --- a/packages/loader/src/MaterialLoader.ts +++ b/packages/loader/src/MaterialLoader.ts @@ -41,9 +41,10 @@ class MaterialLoader extends Loader { break; } - const materialShaderData: ShaderData = material.shaderData; + const texturePromises = new Array>(); + const materialShaderData = material.shaderData; for (let key in shaderData) { - const { type, value } = shaderData[key]; + const { type, value } = shaderData[key];`` switch (type) { case "Vector2": @@ -62,9 +63,11 @@ class MaterialLoader extends Loader { materialShaderData.setFloat(key, value); break; case "Texture": - resourceManager.getResourceByRef(value).then((texture) => { - materialShaderData.setTexture(key, texture); - }); + texturePromises.push( + resourceManager.getResourceByRef(value).then((texture) => { + materialShaderData.setTexture(key, texture); + }) + ); break; } } @@ -82,7 +85,9 @@ class MaterialLoader extends Loader { materialShaderData[key] = renderState[key]; } - resolve(material); + Promise.all(texturePromises).then(() => { + resolve(material); + }); }); }); } diff --git a/packages/loader/src/gltf/parser/SceneParser.ts b/packages/loader/src/gltf/parser/SceneParser.ts index a200dab4d..c4fad40d0 100644 --- a/packages/loader/src/gltf/parser/SceneParser.ts +++ b/packages/loader/src/gltf/parser/SceneParser.ts @@ -62,7 +62,7 @@ export class SceneParser extends Parser { this._createAnimator(context); } - delete context.gltf.extensions["OASIS_materials_remap"]; + context.gltf.extensions && delete context.gltf.extensions["OASIS_materials_remap"]; return Promise.all(promises); } @@ -140,7 +140,7 @@ export class SceneParser extends Parser { } const materialIndex = gltfMeshPrimitives[i].material; - const remapMaterials = context.gltf.extensions["OASIS_materials_remap"]; + const remapMaterials = context.gltf.extensions && context.gltf.extensions["OASIS_materials_remap"]; if (remapMaterials && remapMaterials[materialIndex]) { promises.push( remapMaterials[materialIndex].then((mtl) => { From 00e4aab14109ea7cd6602c4247f1dfc8e1808bf6 Mon Sep 17 00:00:00 2001 From: GuoLei1990 Date: Fri, 23 Sep 2022 17:50:47 +0800 Subject: [PATCH 04/17] v0.8.0-beta.27 --- lerna.json | 2 +- packages/core/package.json | 6 +++--- packages/design/package.json | 4 ++-- packages/draco/package.json | 4 ++-- packages/loader/package.json | 10 +++++----- packages/math/package.json | 2 +- packages/oasis-engine/package.json | 10 +++++----- packages/physics-lite/package.json | 6 +++--- packages/physics-physx/package.json | 4 ++-- packages/rhi-webgl/package.json | 8 ++++---- tests/package.json | 10 +++++----- 11 files changed, 33 insertions(+), 33 deletions(-) diff --git a/lerna.json b/lerna.json index 25f12631e..ae6e51437 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "npmClient": "npm", - "version": "0.8.0-beta.26", + "version": "0.8.0-beta.27", "bootstrap": { "hoist": true }, diff --git a/packages/core/package.json b/packages/core/package.json index 7d8ef7078..92f687b3d 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/core", - "version": "0.8.0-beta.26", + "version": "0.8.0-beta.27", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -18,9 +18,9 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/math": "0.8.0-beta.26" + "@oasis-engine/math": "0.8.0-beta.27" }, "devDependencies": { - "@oasis-engine/design": "0.8.0-beta.26" + "@oasis-engine/design": "0.8.0-beta.27" } } diff --git a/packages/design/package.json b/packages/design/package.json index 926fae0bf..8cb571597 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/design", - "version": "0.8.0-beta.26", + "version": "0.8.0-beta.27", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -17,6 +17,6 @@ ], "types": "types/index.d.ts", "dependencies": { - "@oasis-engine/math": "0.8.0-beta.26" + "@oasis-engine/math": "0.8.0-beta.27" } } diff --git a/packages/draco/package.json b/packages/draco/package.json index 499c6ea2b..18e83b434 100644 --- a/packages/draco/package.json +++ b/packages/draco/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/draco", - "version": "0.8.0-beta.26", + "version": "0.8.0-beta.27", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -17,6 +17,6 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.26" + "@oasis-engine/core": "0.8.0-beta.27" } } diff --git a/packages/loader/package.json b/packages/loader/package.json index 14f426f5f..2e461e18f 100644 --- a/packages/loader/package.json +++ b/packages/loader/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/loader", - "version": "0.8.0-beta.26", + "version": "0.8.0-beta.27", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -18,9 +18,9 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.26", - "@oasis-engine/draco": "0.8.0-beta.26", - "@oasis-engine/math": "0.8.0-beta.26", - "@oasis-engine/rhi-webgl": "0.8.0-beta.26" + "@oasis-engine/core": "0.8.0-beta.27", + "@oasis-engine/draco": "0.8.0-beta.27", + "@oasis-engine/math": "0.8.0-beta.27", + "@oasis-engine/rhi-webgl": "0.8.0-beta.27" } } diff --git a/packages/math/package.json b/packages/math/package.json index fe9980fcb..4ad0241ff 100644 --- a/packages/math/package.json +++ b/packages/math/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/math", - "version": "0.8.0-beta.26", + "version": "0.8.0-beta.27", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/oasis-engine/package.json b/packages/oasis-engine/package.json index aa354051b..223d31f68 100644 --- a/packages/oasis-engine/package.json +++ b/packages/oasis-engine/package.json @@ -1,6 +1,6 @@ { "name": "oasis-engine", - "version": "0.8.0-beta.26", + "version": "0.8.0-beta.27", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -18,9 +18,9 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.26", - "@oasis-engine/loader": "0.8.0-beta.26", - "@oasis-engine/math": "0.8.0-beta.26", - "@oasis-engine/rhi-webgl": "0.8.0-beta.26" + "@oasis-engine/core": "0.8.0-beta.27", + "@oasis-engine/loader": "0.8.0-beta.27", + "@oasis-engine/math": "0.8.0-beta.27", + "@oasis-engine/rhi-webgl": "0.8.0-beta.27" } } diff --git a/packages/physics-lite/package.json b/packages/physics-lite/package.json index fd9792752..5349bea17 100644 --- a/packages/physics-lite/package.json +++ b/packages/physics-lite/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/physics-lite", - "version": "0.8.0-beta.26", + "version": "0.8.0-beta.27", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -19,9 +19,9 @@ "types/**/*" ], "devDependencies": { - "@oasis-engine/design": "0.8.0-beta.26" + "@oasis-engine/design": "0.8.0-beta.27" }, "peerDependencies": { - "oasis-engine": "0.8.0-beta.26" + "oasis-engine": "0.8.0-beta.27" } } diff --git a/packages/physics-physx/package.json b/packages/physics-physx/package.json index 3329b4ceb..caa211a0a 100644 --- a/packages/physics-physx/package.json +++ b/packages/physics-physx/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/physics-physx", - "version": "0.8.0-beta.26", + "version": "0.8.0-beta.27", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -20,7 +20,7 @@ "types/**/*" ], "devDependencies": { - "@oasis-engine/design": "0.8.0-beta.26" + "@oasis-engine/design": "0.8.0-beta.27" }, "peerDependencies": { "oasis-engine": "0.8.0-beta.26" diff --git a/packages/rhi-webgl/package.json b/packages/rhi-webgl/package.json index 90b3e475d..3455443ab 100644 --- a/packages/rhi-webgl/package.json +++ b/packages/rhi-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/rhi-webgl", - "version": "0.8.0-beta.26", + "version": "0.8.0-beta.27", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -18,10 +18,10 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.26", - "@oasis-engine/math": "0.8.0-beta.26" + "@oasis-engine/core": "0.8.0-beta.27", + "@oasis-engine/math": "0.8.0-beta.27" }, "devDependencies": { - "@oasis-engine/design": "0.8.0-beta.26" + "@oasis-engine/design": "0.8.0-beta.27" } } diff --git a/tests/package.json b/tests/package.json index ca2a2d157..5964218ac 100644 --- a/tests/package.json +++ b/tests/package.json @@ -1,7 +1,7 @@ { "name": "@oasis-engine/tests", "private": true, - "version": "0.8.0-beta.26", + "version": "0.8.0-beta.27", "license": "MIT", "main": "dist/main.js", "module": "dist/module.js", @@ -15,9 +15,9 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.26", - "@oasis-engine/design": "0.8.0-beta.26", - "@oasis-engine/math": "0.8.0-beta.26", - "@oasis-engine/rhi-webgl": "0.8.0-beta.26" + "@oasis-engine/core": "0.8.0-beta.27", + "@oasis-engine/design": "0.8.0-beta.27", + "@oasis-engine/math": "0.8.0-beta.27", + "@oasis-engine/rhi-webgl": "0.8.0-beta.27" } } From 9a64ce493611c9507f71801ed4a9dee45eee5224 Mon Sep 17 00:00:00 2001 From: GuoLei1990 Date: Fri, 23 Sep 2022 22:43:48 +0800 Subject: [PATCH 05/17] v0.8.0-beta.28 --- lerna.json | 2 +- packages/core/package.json | 6 +++--- packages/design/package.json | 4 ++-- packages/draco/package.json | 4 ++-- packages/loader/package.json | 10 +++++----- packages/math/package.json | 2 +- packages/oasis-engine/package.json | 10 +++++----- packages/physics-lite/package.json | 6 +++--- packages/physics-physx/package.json | 6 +++--- packages/rhi-webgl/package.json | 8 ++++---- tests/package.json | 10 +++++----- 11 files changed, 34 insertions(+), 34 deletions(-) diff --git a/lerna.json b/lerna.json index ae6e51437..ab6695c5a 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "npmClient": "npm", - "version": "0.8.0-beta.27", + "version": "0.8.0-beta.28", "bootstrap": { "hoist": true }, diff --git a/packages/core/package.json b/packages/core/package.json index 92f687b3d..9c5a2aa23 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/core", - "version": "0.8.0-beta.27", + "version": "0.8.0-beta.28", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -18,9 +18,9 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/math": "0.8.0-beta.27" + "@oasis-engine/math": "0.8.0-beta.28" }, "devDependencies": { - "@oasis-engine/design": "0.8.0-beta.27" + "@oasis-engine/design": "0.8.0-beta.28" } } diff --git a/packages/design/package.json b/packages/design/package.json index 8cb571597..eb666d9e6 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/design", - "version": "0.8.0-beta.27", + "version": "0.8.0-beta.28", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -17,6 +17,6 @@ ], "types": "types/index.d.ts", "dependencies": { - "@oasis-engine/math": "0.8.0-beta.27" + "@oasis-engine/math": "0.8.0-beta.28" } } diff --git a/packages/draco/package.json b/packages/draco/package.json index 18e83b434..130d6b0de 100644 --- a/packages/draco/package.json +++ b/packages/draco/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/draco", - "version": "0.8.0-beta.27", + "version": "0.8.0-beta.28", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -17,6 +17,6 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.27" + "@oasis-engine/core": "0.8.0-beta.28" } } diff --git a/packages/loader/package.json b/packages/loader/package.json index 2e461e18f..c969f48cb 100644 --- a/packages/loader/package.json +++ b/packages/loader/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/loader", - "version": "0.8.0-beta.27", + "version": "0.8.0-beta.28", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -18,9 +18,9 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.27", - "@oasis-engine/draco": "0.8.0-beta.27", - "@oasis-engine/math": "0.8.0-beta.27", - "@oasis-engine/rhi-webgl": "0.8.0-beta.27" + "@oasis-engine/core": "0.8.0-beta.28", + "@oasis-engine/draco": "0.8.0-beta.28", + "@oasis-engine/math": "0.8.0-beta.28", + "@oasis-engine/rhi-webgl": "0.8.0-beta.28" } } diff --git a/packages/math/package.json b/packages/math/package.json index 4ad0241ff..39f7c126e 100644 --- a/packages/math/package.json +++ b/packages/math/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/math", - "version": "0.8.0-beta.27", + "version": "0.8.0-beta.28", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/oasis-engine/package.json b/packages/oasis-engine/package.json index 223d31f68..bdab43ee6 100644 --- a/packages/oasis-engine/package.json +++ b/packages/oasis-engine/package.json @@ -1,6 +1,6 @@ { "name": "oasis-engine", - "version": "0.8.0-beta.27", + "version": "0.8.0-beta.28", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -18,9 +18,9 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.27", - "@oasis-engine/loader": "0.8.0-beta.27", - "@oasis-engine/math": "0.8.0-beta.27", - "@oasis-engine/rhi-webgl": "0.8.0-beta.27" + "@oasis-engine/core": "0.8.0-beta.28", + "@oasis-engine/loader": "0.8.0-beta.28", + "@oasis-engine/math": "0.8.0-beta.28", + "@oasis-engine/rhi-webgl": "0.8.0-beta.28" } } diff --git a/packages/physics-lite/package.json b/packages/physics-lite/package.json index 5349bea17..0d0b98a6b 100644 --- a/packages/physics-lite/package.json +++ b/packages/physics-lite/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/physics-lite", - "version": "0.8.0-beta.27", + "version": "0.8.0-beta.28", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -19,9 +19,9 @@ "types/**/*" ], "devDependencies": { - "@oasis-engine/design": "0.8.0-beta.27" + "@oasis-engine/design": "0.8.0-beta.28" }, "peerDependencies": { - "oasis-engine": "0.8.0-beta.27" + "oasis-engine": "0.8.0-beta.28" } } diff --git a/packages/physics-physx/package.json b/packages/physics-physx/package.json index caa211a0a..b9cbff8f9 100644 --- a/packages/physics-physx/package.json +++ b/packages/physics-physx/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/physics-physx", - "version": "0.8.0-beta.27", + "version": "0.8.0-beta.28", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -20,9 +20,9 @@ "types/**/*" ], "devDependencies": { - "@oasis-engine/design": "0.8.0-beta.27" + "@oasis-engine/design": "0.8.0-beta.28" }, "peerDependencies": { - "oasis-engine": "0.8.0-beta.26" + "oasis-engine": "0.8.0-beta.28" } } diff --git a/packages/rhi-webgl/package.json b/packages/rhi-webgl/package.json index 3455443ab..69e449e52 100644 --- a/packages/rhi-webgl/package.json +++ b/packages/rhi-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/rhi-webgl", - "version": "0.8.0-beta.27", + "version": "0.8.0-beta.28", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -18,10 +18,10 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.27", - "@oasis-engine/math": "0.8.0-beta.27" + "@oasis-engine/core": "0.8.0-beta.28", + "@oasis-engine/math": "0.8.0-beta.28" }, "devDependencies": { - "@oasis-engine/design": "0.8.0-beta.27" + "@oasis-engine/design": "0.8.0-beta.28" } } diff --git a/tests/package.json b/tests/package.json index 5964218ac..5f1465fd6 100644 --- a/tests/package.json +++ b/tests/package.json @@ -1,7 +1,7 @@ { "name": "@oasis-engine/tests", "private": true, - "version": "0.8.0-beta.27", + "version": "0.8.0-beta.28", "license": "MIT", "main": "dist/main.js", "module": "dist/module.js", @@ -15,9 +15,9 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.27", - "@oasis-engine/design": "0.8.0-beta.27", - "@oasis-engine/math": "0.8.0-beta.27", - "@oasis-engine/rhi-webgl": "0.8.0-beta.27" + "@oasis-engine/core": "0.8.0-beta.28", + "@oasis-engine/design": "0.8.0-beta.28", + "@oasis-engine/math": "0.8.0-beta.28", + "@oasis-engine/rhi-webgl": "0.8.0-beta.28" } } From 8ea1d3d6c31198c6a3a6937a132d0a18b3ddc644 Mon Sep 17 00:00:00 2001 From: AZhan Date: Sat, 24 Sep 2022 15:08:56 +0800 Subject: [PATCH 06/17] fix: texture load bug in miniprogram (#1077) --- packages/loader/src/gltf/GLTFUtil.ts | 5 ++--- .../resources/texture2D/TextureDecoder.ts | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/loader/src/gltf/GLTFUtil.ts b/packages/loader/src/gltf/GLTFUtil.ts index 9501e0cf3..8f6727193 100644 --- a/packages/loader/src/gltf/GLTFUtil.ts +++ b/packages/loader/src/gltf/GLTFUtil.ts @@ -273,9 +273,6 @@ export class GLTFUtil { return new Promise((resolve, reject) => { const blob = new window.Blob([imageBuffer], { type }); const img = new Image(); - img.src = URL.createObjectURL(blob); - - img.crossOrigin = "anonymous"; img.onerror = function () { reject(new Error("Failed to load image buffer")); }; @@ -288,6 +285,8 @@ export class GLTFUtil { img.onabort = null; }); }; + img.crossOrigin = "anonymous"; + img.src = URL.createObjectURL(blob); }); } diff --git a/packages/loader/src/resource-deserialize/resources/texture2D/TextureDecoder.ts b/packages/loader/src/resource-deserialize/resources/texture2D/TextureDecoder.ts index 496060a66..0a555a8f0 100644 --- a/packages/loader/src/resource-deserialize/resources/texture2D/TextureDecoder.ts +++ b/packages/loader/src/resource-deserialize/resources/texture2D/TextureDecoder.ts @@ -42,7 +42,6 @@ export class Texture2DDecoder { } else { const blob = new window.Blob([imagesData[0]]); const img = new Image(); - img.src = URL.createObjectURL(blob); img.onload = () => { texture2D.setImageSource(img); let completedCount = 0; @@ -58,14 +57,15 @@ export class Texture2DDecoder { for (let i = 1; i < mipCount; i++) { const blob = new window.Blob([imagesData[i]]); const img = new Image(); - img.src = URL.createObjectURL(blob); img.onload = () => { texture2D.setImageSource(img, i); onComplete(); }; + img.src = URL.createObjectURL(blob); } } }; + img.src = URL.createObjectURL(blob); } }); } From 32867395a3876d164dab385c7a013e255786a6d3 Mon Sep 17 00:00:00 2001 From: GuoLei1990 Date: Sat, 24 Sep 2022 15:10:36 +0800 Subject: [PATCH 07/17] v0.8.0-beta.29 --- lerna.json | 2 +- packages/core/package.json | 6 +++--- packages/design/package.json | 4 ++-- packages/draco/package.json | 4 ++-- packages/loader/package.json | 10 +++++----- packages/math/package.json | 2 +- packages/oasis-engine/package.json | 10 +++++----- packages/physics-lite/package.json | 6 +++--- packages/physics-physx/package.json | 6 +++--- packages/rhi-webgl/package.json | 8 ++++---- tests/package.json | 10 +++++----- 11 files changed, 34 insertions(+), 34 deletions(-) diff --git a/lerna.json b/lerna.json index ab6695c5a..4f54f0348 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "npmClient": "npm", - "version": "0.8.0-beta.28", + "version": "0.8.0-beta.29", "bootstrap": { "hoist": true }, diff --git a/packages/core/package.json b/packages/core/package.json index 9c5a2aa23..748f7b737 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/core", - "version": "0.8.0-beta.28", + "version": "0.8.0-beta.29", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -18,9 +18,9 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/math": "0.8.0-beta.28" + "@oasis-engine/math": "0.8.0-beta.29" }, "devDependencies": { - "@oasis-engine/design": "0.8.0-beta.28" + "@oasis-engine/design": "0.8.0-beta.29" } } diff --git a/packages/design/package.json b/packages/design/package.json index eb666d9e6..10ed28062 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/design", - "version": "0.8.0-beta.28", + "version": "0.8.0-beta.29", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -17,6 +17,6 @@ ], "types": "types/index.d.ts", "dependencies": { - "@oasis-engine/math": "0.8.0-beta.28" + "@oasis-engine/math": "0.8.0-beta.29" } } diff --git a/packages/draco/package.json b/packages/draco/package.json index 130d6b0de..33fafff64 100644 --- a/packages/draco/package.json +++ b/packages/draco/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/draco", - "version": "0.8.0-beta.28", + "version": "0.8.0-beta.29", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -17,6 +17,6 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.28" + "@oasis-engine/core": "0.8.0-beta.29" } } diff --git a/packages/loader/package.json b/packages/loader/package.json index c969f48cb..52518e4ab 100644 --- a/packages/loader/package.json +++ b/packages/loader/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/loader", - "version": "0.8.0-beta.28", + "version": "0.8.0-beta.29", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -18,9 +18,9 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.28", - "@oasis-engine/draco": "0.8.0-beta.28", - "@oasis-engine/math": "0.8.0-beta.28", - "@oasis-engine/rhi-webgl": "0.8.0-beta.28" + "@oasis-engine/core": "0.8.0-beta.29", + "@oasis-engine/draco": "0.8.0-beta.29", + "@oasis-engine/math": "0.8.0-beta.29", + "@oasis-engine/rhi-webgl": "0.8.0-beta.29" } } diff --git a/packages/math/package.json b/packages/math/package.json index 39f7c126e..b4dc2f671 100644 --- a/packages/math/package.json +++ b/packages/math/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/math", - "version": "0.8.0-beta.28", + "version": "0.8.0-beta.29", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/oasis-engine/package.json b/packages/oasis-engine/package.json index bdab43ee6..92d9874ea 100644 --- a/packages/oasis-engine/package.json +++ b/packages/oasis-engine/package.json @@ -1,6 +1,6 @@ { "name": "oasis-engine", - "version": "0.8.0-beta.28", + "version": "0.8.0-beta.29", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -18,9 +18,9 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.28", - "@oasis-engine/loader": "0.8.0-beta.28", - "@oasis-engine/math": "0.8.0-beta.28", - "@oasis-engine/rhi-webgl": "0.8.0-beta.28" + "@oasis-engine/core": "0.8.0-beta.29", + "@oasis-engine/loader": "0.8.0-beta.29", + "@oasis-engine/math": "0.8.0-beta.29", + "@oasis-engine/rhi-webgl": "0.8.0-beta.29" } } diff --git a/packages/physics-lite/package.json b/packages/physics-lite/package.json index 0d0b98a6b..187488845 100644 --- a/packages/physics-lite/package.json +++ b/packages/physics-lite/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/physics-lite", - "version": "0.8.0-beta.28", + "version": "0.8.0-beta.29", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -19,9 +19,9 @@ "types/**/*" ], "devDependencies": { - "@oasis-engine/design": "0.8.0-beta.28" + "@oasis-engine/design": "0.8.0-beta.29" }, "peerDependencies": { - "oasis-engine": "0.8.0-beta.28" + "oasis-engine": "0.8.0-beta.29" } } diff --git a/packages/physics-physx/package.json b/packages/physics-physx/package.json index b9cbff8f9..e5b4e922f 100644 --- a/packages/physics-physx/package.json +++ b/packages/physics-physx/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/physics-physx", - "version": "0.8.0-beta.28", + "version": "0.8.0-beta.29", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -20,9 +20,9 @@ "types/**/*" ], "devDependencies": { - "@oasis-engine/design": "0.8.0-beta.28" + "@oasis-engine/design": "0.8.0-beta.29" }, "peerDependencies": { - "oasis-engine": "0.8.0-beta.28" + "oasis-engine": "0.8.0-beta.29" } } diff --git a/packages/rhi-webgl/package.json b/packages/rhi-webgl/package.json index 69e449e52..86aaeed56 100644 --- a/packages/rhi-webgl/package.json +++ b/packages/rhi-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/rhi-webgl", - "version": "0.8.0-beta.28", + "version": "0.8.0-beta.29", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -18,10 +18,10 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.28", - "@oasis-engine/math": "0.8.0-beta.28" + "@oasis-engine/core": "0.8.0-beta.29", + "@oasis-engine/math": "0.8.0-beta.29" }, "devDependencies": { - "@oasis-engine/design": "0.8.0-beta.28" + "@oasis-engine/design": "0.8.0-beta.29" } } diff --git a/tests/package.json b/tests/package.json index 5f1465fd6..b6ac898cc 100644 --- a/tests/package.json +++ b/tests/package.json @@ -1,7 +1,7 @@ { "name": "@oasis-engine/tests", "private": true, - "version": "0.8.0-beta.28", + "version": "0.8.0-beta.29", "license": "MIT", "main": "dist/main.js", "module": "dist/module.js", @@ -15,9 +15,9 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.28", - "@oasis-engine/design": "0.8.0-beta.28", - "@oasis-engine/math": "0.8.0-beta.28", - "@oasis-engine/rhi-webgl": "0.8.0-beta.28" + "@oasis-engine/core": "0.8.0-beta.29", + "@oasis-engine/design": "0.8.0-beta.29", + "@oasis-engine/math": "0.8.0-beta.29", + "@oasis-engine/rhi-webgl": "0.8.0-beta.29" } } From 54116e7e7357463235a2f8699462371ca6c4d339 Mon Sep 17 00:00:00 2001 From: AZhan Date: Wed, 28 Sep 2022 15:21:21 +0800 Subject: [PATCH 08/17] fix: pointer moving delta bug (#1083) --- packages/core/src/input/pointer/PointerManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/input/pointer/PointerManager.ts b/packages/core/src/input/pointer/PointerManager.ts index 653683a5b..56f7c3f02 100644 --- a/packages/core/src/input/pointer/PointerManager.ts +++ b/packages/core/src/input/pointer/PointerManager.ts @@ -86,6 +86,7 @@ export class PointerManager implements IInput { this._upList.length = 0; this._movingDelta.set(0, 0); this._nativeEvents.length > 0 && this._handlePointerEvent(this._nativeEvents, frameCount); + this._pointers.length > 0 && (this._lastPositionFrameCount = frameCount); if (this._engine.physicsManager._initialized) { const rayCastEntity = this._pointerRayCast(); const { _keyEventCount: keyEventCount } = this; @@ -309,7 +310,6 @@ export class PointerManager implements IInput { if (this._lastPositionFrameCount === frameCount - 1) { this._movingDelta.set(currentPosition.x - lastX, currentPosition.y - lastY); } - this._lastPositionFrameCount = frameCount; } nativeEvents.length = 0; } From ea58e245af93705a0ea7fbdd40bc5017a3c62a8a Mon Sep 17 00:00:00 2001 From: GuoLei1990 Date: Wed, 28 Sep 2022 15:35:01 +0800 Subject: [PATCH 09/17] v0.8.0-beta.30 --- lerna.json | 2 +- packages/core/package.json | 6 +++--- packages/design/package.json | 4 ++-- packages/draco/package.json | 4 ++-- packages/loader/package.json | 10 +++++----- packages/math/package.json | 2 +- packages/oasis-engine/package.json | 10 +++++----- packages/physics-lite/package.json | 6 +++--- packages/physics-physx/package.json | 6 +++--- packages/rhi-webgl/package.json | 8 ++++---- tests/package.json | 10 +++++----- 11 files changed, 34 insertions(+), 34 deletions(-) diff --git a/lerna.json b/lerna.json index 4f54f0348..01f9db3c5 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "npmClient": "npm", - "version": "0.8.0-beta.29", + "version": "0.8.0-beta.30", "bootstrap": { "hoist": true }, diff --git a/packages/core/package.json b/packages/core/package.json index 748f7b737..a6a8145ac 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/core", - "version": "0.8.0-beta.29", + "version": "0.8.0-beta.30", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -18,9 +18,9 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/math": "0.8.0-beta.29" + "@oasis-engine/math": "0.8.0-beta.30" }, "devDependencies": { - "@oasis-engine/design": "0.8.0-beta.29" + "@oasis-engine/design": "0.8.0-beta.30" } } diff --git a/packages/design/package.json b/packages/design/package.json index 10ed28062..b9094c16f 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/design", - "version": "0.8.0-beta.29", + "version": "0.8.0-beta.30", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -17,6 +17,6 @@ ], "types": "types/index.d.ts", "dependencies": { - "@oasis-engine/math": "0.8.0-beta.29" + "@oasis-engine/math": "0.8.0-beta.30" } } diff --git a/packages/draco/package.json b/packages/draco/package.json index 33fafff64..5d0087bae 100644 --- a/packages/draco/package.json +++ b/packages/draco/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/draco", - "version": "0.8.0-beta.29", + "version": "0.8.0-beta.30", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -17,6 +17,6 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.29" + "@oasis-engine/core": "0.8.0-beta.30" } } diff --git a/packages/loader/package.json b/packages/loader/package.json index 52518e4ab..3436a89e1 100644 --- a/packages/loader/package.json +++ b/packages/loader/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/loader", - "version": "0.8.0-beta.29", + "version": "0.8.0-beta.30", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -18,9 +18,9 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.29", - "@oasis-engine/draco": "0.8.0-beta.29", - "@oasis-engine/math": "0.8.0-beta.29", - "@oasis-engine/rhi-webgl": "0.8.0-beta.29" + "@oasis-engine/core": "0.8.0-beta.30", + "@oasis-engine/draco": "0.8.0-beta.30", + "@oasis-engine/math": "0.8.0-beta.30", + "@oasis-engine/rhi-webgl": "0.8.0-beta.30" } } diff --git a/packages/math/package.json b/packages/math/package.json index b4dc2f671..709cfe9d5 100644 --- a/packages/math/package.json +++ b/packages/math/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/math", - "version": "0.8.0-beta.29", + "version": "0.8.0-beta.30", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/oasis-engine/package.json b/packages/oasis-engine/package.json index 92d9874ea..c2647b401 100644 --- a/packages/oasis-engine/package.json +++ b/packages/oasis-engine/package.json @@ -1,6 +1,6 @@ { "name": "oasis-engine", - "version": "0.8.0-beta.29", + "version": "0.8.0-beta.30", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -18,9 +18,9 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.29", - "@oasis-engine/loader": "0.8.0-beta.29", - "@oasis-engine/math": "0.8.0-beta.29", - "@oasis-engine/rhi-webgl": "0.8.0-beta.29" + "@oasis-engine/core": "0.8.0-beta.30", + "@oasis-engine/loader": "0.8.0-beta.30", + "@oasis-engine/math": "0.8.0-beta.30", + "@oasis-engine/rhi-webgl": "0.8.0-beta.30" } } diff --git a/packages/physics-lite/package.json b/packages/physics-lite/package.json index 187488845..455750115 100644 --- a/packages/physics-lite/package.json +++ b/packages/physics-lite/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/physics-lite", - "version": "0.8.0-beta.29", + "version": "0.8.0-beta.30", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -19,9 +19,9 @@ "types/**/*" ], "devDependencies": { - "@oasis-engine/design": "0.8.0-beta.29" + "@oasis-engine/design": "0.8.0-beta.30" }, "peerDependencies": { - "oasis-engine": "0.8.0-beta.29" + "oasis-engine": "0.8.0-beta.30" } } diff --git a/packages/physics-physx/package.json b/packages/physics-physx/package.json index e5b4e922f..52b771498 100644 --- a/packages/physics-physx/package.json +++ b/packages/physics-physx/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/physics-physx", - "version": "0.8.0-beta.29", + "version": "0.8.0-beta.30", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -20,9 +20,9 @@ "types/**/*" ], "devDependencies": { - "@oasis-engine/design": "0.8.0-beta.29" + "@oasis-engine/design": "0.8.0-beta.30" }, "peerDependencies": { - "oasis-engine": "0.8.0-beta.29" + "oasis-engine": "0.8.0-beta.30" } } diff --git a/packages/rhi-webgl/package.json b/packages/rhi-webgl/package.json index 86aaeed56..7734006e8 100644 --- a/packages/rhi-webgl/package.json +++ b/packages/rhi-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/rhi-webgl", - "version": "0.8.0-beta.29", + "version": "0.8.0-beta.30", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -18,10 +18,10 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.29", - "@oasis-engine/math": "0.8.0-beta.29" + "@oasis-engine/core": "0.8.0-beta.30", + "@oasis-engine/math": "0.8.0-beta.30" }, "devDependencies": { - "@oasis-engine/design": "0.8.0-beta.29" + "@oasis-engine/design": "0.8.0-beta.30" } } diff --git a/tests/package.json b/tests/package.json index b6ac898cc..796183fe1 100644 --- a/tests/package.json +++ b/tests/package.json @@ -1,7 +1,7 @@ { "name": "@oasis-engine/tests", "private": true, - "version": "0.8.0-beta.29", + "version": "0.8.0-beta.30", "license": "MIT", "main": "dist/main.js", "module": "dist/module.js", @@ -15,9 +15,9 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.29", - "@oasis-engine/design": "0.8.0-beta.29", - "@oasis-engine/math": "0.8.0-beta.29", - "@oasis-engine/rhi-webgl": "0.8.0-beta.29" + "@oasis-engine/core": "0.8.0-beta.30", + "@oasis-engine/design": "0.8.0-beta.30", + "@oasis-engine/math": "0.8.0-beta.30", + "@oasis-engine/rhi-webgl": "0.8.0-beta.30" } } From a4baff3d120c27a426f9ad471a2047f736147443 Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Tue, 11 Oct 2022 20:16:20 +0800 Subject: [PATCH 10/17] Add AnimatorController loader for AniamtorController Editor (#1078) * feat: add AnimatorController loader for AniamtorController Editor --- packages/core/src/asset/AssetType.ts | 6 +- .../loader/src/AnimatorControllerLoader.ts | 87 ++++++++++++++++++ packages/loader/src/index.ts | 3 +- .../loader/src/resource-deserialize/index.ts | 1 - .../AnimatorControllerDecoder.ts | 89 ------------------- .../resources/animatorController/type.ts | 27 ------ .../resources/prefab/ReflectionParser.ts | 6 +- 7 files changed, 98 insertions(+), 121 deletions(-) create mode 100644 packages/loader/src/AnimatorControllerLoader.ts delete mode 100644 packages/loader/src/resource-deserialize/resources/animatorController/AnimatorControllerDecoder.ts delete mode 100644 packages/loader/src/resource-deserialize/resources/animatorController/type.ts diff --git a/packages/core/src/asset/AssetType.ts b/packages/core/src/asset/AssetType.ts index 18ffbb6f4..fa4407135 100644 --- a/packages/core/src/asset/AssetType.ts +++ b/packages/core/src/asset/AssetType.ts @@ -25,8 +25,10 @@ export enum AssetType { Material = "material", /** Mesh. */ Mesh = "mesh", - /** Animation Clip. */ - AnimationClip = "animation-clip", + /** AnimationClip. */ + AnimationClip = "AnimationClip", + /** AnimatorController. */ + AnimatorController = "AnimatorController", /** Prefab.*/ Prefab = "prefab", /** Compress Texture. */ diff --git a/packages/loader/src/AnimatorControllerLoader.ts b/packages/loader/src/AnimatorControllerLoader.ts new file mode 100644 index 000000000..0925eaa65 --- /dev/null +++ b/packages/loader/src/AnimatorControllerLoader.ts @@ -0,0 +1,87 @@ +import { + resourceLoader, + Loader, + AssetPromise, + AssetType, + LoadItem, + ResourceManager, + AnimatorController, + AnimatorControllerLayer, + AnimatorStateMachine, + AnimatorStateTransition +} from "@oasis-engine/core"; + +@resourceLoader(AssetType.AnimatorController, ["json"], false) +class AnimatorControllerLoader extends Loader { + load(item: LoadItem, resourceManager: ResourceManager): AssetPromise { + return new AssetPromise((resolve, reject) => { + this.request(item.url, { + ...item, + type: "json" + }).then(async (data) => { + const animatorController = new AnimatorController(); + const { layers } = data; + const promises = []; + layers.forEach((layerData, layerIndex: number) => { + const { name, blendingMode, weight, stateMachine: stateMachineData } = layerData; + const layer = new AnimatorControllerLayer(name); + layer.blendingMode = blendingMode; + layer.weight = weight; + if (stateMachineData) { + const { states } = stateMachineData; + const stateMachine = (layer.stateMachine = new AnimatorStateMachine()); + states.forEach((stateData, stateIndex: number) => { + const { + name, + speed, + wrapMode, + clipStartNormalizedTime, + clipEndNormalizedTime, + isDefaultState, + clip: clipData + } = stateData; + const state = stateMachine.addState(name); + state.speed = speed; + state.wrapMode = wrapMode; + state.clipStartTime = clipStartNormalizedTime; + state.clipEndTime = clipEndNormalizedTime; + if (clipData) { + promises.push( + new Promise(async (resolve) => { + resolve({ + layerIndex, + stateIndex, + clip: await resourceManager.getResourceByRef(clipData) + }); + }) + ); + } + }); + states.forEach((stateData) => { + const { name, transitions } = stateData; + transitions.forEach((transitionData) => { + const { targetStateName, duration, offset, exitTime } = transitionData; + const sourceState = stateMachine.findStateByName(name); + const destState = stateMachine.findStateByName(targetStateName); + const transition = new AnimatorStateTransition(); + transition.destinationState = destState; + transition.duration = duration; + transition.exitTime = exitTime; + transition.offset = offset; + sourceState.addTransition(transition); + }); + }); + } + animatorController.addLayer(layer); + }); + Promise.all(promises).then((clipData) => { + clipData.forEach((data) => { + const { layerIndex, stateIndex, clip } = data; + animatorController.layers[layerIndex].stateMachine.states[stateIndex].clip = clip; + }); + resolve(animatorController); + }); + }); + }); + } +} diff --git a/packages/loader/src/index.ts b/packages/loader/src/index.ts index 4f22eccfe..a92150f6b 100644 --- a/packages/loader/src/index.ts +++ b/packages/loader/src/index.ts @@ -12,8 +12,9 @@ import "./HDRLoader"; import "./gltf/extensions/index"; import "./MaterialLoader"; import "./MeshLoader"; +import "./AnimatorControllerLoader"; export * from "./resource-deserialize"; export { GLTFResource } from "./gltf/GLTFResource"; export * from "./SceneLoader"; -export { parseSingleKTX } from "./compressed-texture"; \ No newline at end of file +export { parseSingleKTX } from "./compressed-texture"; diff --git a/packages/loader/src/resource-deserialize/index.ts b/packages/loader/src/resource-deserialize/index.ts index ba4ee892b..d00e5bffe 100644 --- a/packages/loader/src/resource-deserialize/index.ts +++ b/packages/loader/src/resource-deserialize/index.ts @@ -9,7 +9,6 @@ export { ReflectionParser } from "./resources/prefab/ReflectionParser"; export { PrefabParser } from "./resources/prefab/PrefabParser"; export type { IModelMesh } from "./resources/mesh/IModelMesh"; export type { IAnimationClipAsset } from "./resources/animationClip/type"; -export type { IAnimatorControllerAsset } from "./resources/animatorController/type"; /** * Decode engine binary resource. diff --git a/packages/loader/src/resource-deserialize/resources/animatorController/AnimatorControllerDecoder.ts b/packages/loader/src/resource-deserialize/resources/animatorController/AnimatorControllerDecoder.ts deleted file mode 100644 index b4e68aa78..000000000 --- a/packages/loader/src/resource-deserialize/resources/animatorController/AnimatorControllerDecoder.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { - Engine, - AnimatorController, - AnimatorControllerLayer, - AnimatorStateMachine, - AnimationClip, - AnimatorStateTransition, - AssetType -} from "@oasis-engine/core"; -import type { BufferReader } from "../../utils/BufferReader"; -import { decoder } from "../../utils/Decorator"; - -@decoder("AnimatorController") -export class AnimatorControllerDecoder { - public static decode(engine: Engine, bufferReader: BufferReader): Promise { - return new Promise(async (resolve) => { - const animatorController = new AnimatorController(); - const objectId = bufferReader.nextStr(); - const layersLen = bufferReader.nextUint16(); - const clipLoadPromises = []; - - for (let i = 0; i < layersLen; ++i) { - const name = bufferReader.nextStr(); - const layer = new AnimatorControllerLayer(name); - layer.blendingMode = bufferReader.nextUint8(); - layer.weight = bufferReader.nextFloat32(); - const stateMachine = new AnimatorStateMachine(); - const statesLen = bufferReader.nextUint16(); - for (let j = 0; j < statesLen; ++j) { - const stateName = bufferReader.nextStr(); - const state = stateMachine.addState(stateName); - state.speed = bufferReader.nextFloat32(); - state.wrapMode = bufferReader.nextUint8(); - const isDefaultState = bufferReader.nextUint8() ? true : false; - const clipStartNormalizedTime = bufferReader.nextFloat32(); - const clipEndNormalizedTime = bufferReader.nextFloat32(); - const clipPath = bufferReader.nextStr(); - const clipObjectId = bufferReader.nextStr(); - clipLoadPromises.push( - AnimatorControllerDecoder.loadAndSetClip(engine, clipPath, clipObjectId).then((clip) => { - state.clip = clip; - state.clipStartTime = clip.length * clipStartNormalizedTime; - state.clipEndTime = clip.length * clipEndNormalizedTime; - }) - ); - // @ts-ignore - isDefaultState && (stateMachine._defaultState = state); - - const transitionsLen = bufferReader.nextUint16(); - for (let k = 0; k < transitionsLen; ++k) { - const transition = new AnimatorStateTransition(); - transition.duration = bufferReader.nextFloat32(); - transition.offset = bufferReader.nextFloat32(); - transition.exitTime = bufferReader.nextFloat32(); - transition.exitTime = bufferReader.nextFloat32(); - transition.destinationState = stateMachine.findStateByName(bufferReader.nextStr()); - state.addTransition(transition); - } - } - layer.stateMachine = stateMachine; - animatorController.addLayer(layer); - } - - Promise.all(clipLoadPromises).then(() => { - // @ts-ignore - engine.resourceManager._objectPool[objectId] = animatorController; - resolve(animatorController); - }); - }); - } - - public static loadAndSetClip(engine: Engine, path: string, objectId: string): Promise { - // @ts-ignore - return Promise.resolve(engine.resourceManager._objectPool[objectId]); - // return new Promise((resolve) => { - // engine.resourceManager - // .load({ - // url: path, - // // @ts-ignore - // type: AssetType.Oasis - // }) - // .then(() => { - // // 从缓存池获取对象 - // // @ts-ignore - // resolve(engine.resourceManager._objectPool[objectId]); - // }); - // }); - } -} diff --git a/packages/loader/src/resource-deserialize/resources/animatorController/type.ts b/packages/loader/src/resource-deserialize/resources/animatorController/type.ts deleted file mode 100644 index b42c66187..000000000 --- a/packages/loader/src/resource-deserialize/resources/animatorController/type.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { AnimatorState, AnimatorLayerBlendingMode, WrapMode } from "@oasis-engine/core"; - -export interface IAnimatorControllerAsset { - objectId: string; - layers: Array<{ - name: string; - blending: AnimatorLayerBlendingMode; - weight: number; - stateMachine: { - states: Array<{ - name: string; - speed: number; - wrapMode: WrapMode; - isDefaultState: boolean; - clipStartNormalizedTime: number; - clipEndNormalizedTime: number; - clip: { path: string; objectId: string }; - transitions: Array<{ - duration: number; - offset: number; - exitTime: number; - targetStateName: string; - }>; - }>; - }; - }>; -} diff --git a/packages/loader/src/resource-deserialize/resources/prefab/ReflectionParser.ts b/packages/loader/src/resource-deserialize/resources/prefab/ReflectionParser.ts index 94e6053c6..994752777 100644 --- a/packages/loader/src/resource-deserialize/resources/prefab/ReflectionParser.ts +++ b/packages/loader/src/resource-deserialize/resources/prefab/ReflectionParser.ts @@ -19,7 +19,11 @@ export class ReflectionParser { for (let i = 0; i < entityConfig.components.length; i++) { const componentConfig = entityConfig.components[i]; const key = !componentConfig.refId ? componentConfig.class : componentConfig.refId; - const component = entity.addComponent(Loader.getClass(key)); + let component; + if (key === "Animator") { + component = entity.getComponent(Loader.getClass(key)); + } + component = component || entity.addComponent(Loader.getClass(key)); const promise = this.parsePropsAndMethods(component, componentConfig, engine); promises.push(promise); } From 0635388ad6ea2bde03bccbb152eeeffd3ae75c58 Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Thu, 13 Oct 2022 22:05:52 +0800 Subject: [PATCH 11/17] fix: onDisable() call back scene is null bug (#1098) --- packages/core/src/Entity.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/core/src/Entity.ts b/packages/core/src/Entity.ts index a4b07bca0..c481c4db8 100644 --- a/packages/core/src/Entity.ts +++ b/packages/core/src/Entity.ts @@ -491,16 +491,15 @@ export class Entity extends EngineObject { if (parent) { parent._addToChildrenList(siblingIndex, this); - const parentScene = parent._scene; - if (this._scene !== parentScene) { - Entity._traverseSetOwnerScene(this, parentScene); - } - if (parent._isActiveInHierarchy) { !this._isActiveInHierarchy && this._isActive && this._processActive(); } else { this._isActiveInHierarchy && this._processInActive(); } + const parentScene = parent._scene; + if (this._scene !== parentScene) { + Entity._traverseSetOwnerScene(this, parentScene); + } } else { this._isActiveInHierarchy && this._processInActive(); if (oldParent) { From ddf27757bff5fd3b5f34b224779b482ca100f4d7 Mon Sep 17 00:00:00 2001 From: ChenMo Date: Sat, 15 Oct 2022 00:08:50 +0800 Subject: [PATCH 12/17] Revert "fix: onDisable() call back scene is null bug (#1098)" (#1101) This reverts commit 0635388ad6ea2bde03bccbb152eeeffd3ae75c58. --- packages/core/src/Entity.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/core/src/Entity.ts b/packages/core/src/Entity.ts index c481c4db8..a4b07bca0 100644 --- a/packages/core/src/Entity.ts +++ b/packages/core/src/Entity.ts @@ -491,15 +491,16 @@ export class Entity extends EngineObject { if (parent) { parent._addToChildrenList(siblingIndex, this); + const parentScene = parent._scene; + if (this._scene !== parentScene) { + Entity._traverseSetOwnerScene(this, parentScene); + } + if (parent._isActiveInHierarchy) { !this._isActiveInHierarchy && this._isActive && this._processActive(); } else { this._isActiveInHierarchy && this._processInActive(); } - const parentScene = parent._scene; - if (this._scene !== parentScene) { - Entity._traverseSetOwnerScene(this, parentScene); - } } else { this._isActiveInHierarchy && this._processInActive(); if (oldParent) { From 7eb64bc0bb0b3915670d90e7a8b71339b293c5f9 Mon Sep 17 00:00:00 2001 From: ChenMo Date: Sat, 15 Oct 2022 01:18:45 +0800 Subject: [PATCH 13/17] Fix `Compoment`/`Script` `onDisable` and `onEnable` bug (#1087) * fix: `compoment`/`script` `onDisable` and `onEnable` bu --- packages/core/src/Component.ts | 19 ++++++++++------- tests/src/core/Script.test.ts | 38 ++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 8 deletions(-) diff --git a/packages/core/src/Component.ts b/packages/core/src/Component.ts index 9cc6fb820..197d51427 100644 --- a/packages/core/src/Component.ts +++ b/packages/core/src/Component.ts @@ -30,14 +30,17 @@ export abstract class Component extends EngineObject { } set enabled(value: boolean) { - if (value === this._enabled) { - return; - } - this._enabled = value; - if (value) { - this._entity.isActiveInHierarchy && this._onEnable(); - } else { - this._entity.isActiveInHierarchy && this._onDisable(); + if (value !== this._enabled) { + this._enabled = value; + if (this._entity.isActiveInHierarchy) { + if (value) { + this._phasedActive = true; + this._onEnable(); + } else { + this._phasedActive = false; + this._onDisable(); + } + } } } diff --git a/tests/src/core/Script.test.ts b/tests/src/core/Script.test.ts index dd878dcb5..c787386f5 100644 --- a/tests/src/core/Script.test.ts +++ b/tests/src/core/Script.test.ts @@ -118,5 +118,43 @@ describe("Scene", () => { expect(childScript.onEnable).to.have.been.called.exactly(0); expect(childScript.onDisable).to.have.been.called.exactly(0); }); + + it("Entity isActive = true after script call enabled = false", () => { + class TestScript extends Script { + onAwake() { + console.log("TestScript___onAwake"); + } + onEnable() { + console.log("TestScript___onEnable"); + } + + onDisable() { + console.log("TestScript___onDisable"); + } + + onDestroy() { + console.log("TestScript___onDestroy"); + } + } + TestScript.prototype.onAwake = chai.spy(TestScript.prototype.onAwake); + TestScript.prototype.onEnable = chai.spy(TestScript.prototype.onEnable); + TestScript.prototype.onDisable = chai.spy(TestScript.prototype.onDisable); + + const scene = engine.sceneManager.activeScene; + const rootEntity = scene.createRootEntity(); + + const entity = rootEntity.createChild("entity"); + const script = entity.addComponent(TestScript); + + entity.isActive = false; + script.enabled = false; + entity.isActive = true; + script.enabled = true; + entity.isActive = false; + + expect(script.onAwake).to.have.been.called.exactly(1); + expect(script.onEnable).to.have.been.called.exactly(2); + expect(script.onDisable).to.have.been.called.exactly(2); + }); }); }); From 310ea2bbb21d02d40aa8bd73843db2c262d14630 Mon Sep 17 00:00:00 2001 From: Kbscript Date: Mon, 17 Oct 2022 10:59:42 +0800 Subject: [PATCH 14/17] feat: add release action (#1102) --- .github/workflows/release.yml | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..98a0d79d7 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,34 @@ +# This is a basic workflow to help you get started with Actions + +name: Release Note + +# Controls when the workflow will run +on: + # Triggers the workflow on push or pull request events but only for the "master" branch + release: + types: [published] + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "build" + message: + # The type of runner that the job will run on + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Dump Github context + env: + GITHUB_CONTEXT: ${{ toJSON(github) }} + run: echo "$GITHUB_CONTEXT" + - name: Send notification to Dingding + if: success() + uses: mrkou47/action-dingding-webhook@main + env: + DINGDING_SECRET_TOKEN_MAP: ${{ secrets.DINGDING_SECRET_TOKEN_MAP }} + with: + title: Release Note ${{ github.event.release.tag_name }} + text: ${{ toJSON(github.event.release.body) }} + From f4e23d6ec0974d8e1f20e7e98094ecbaf48c386c Mon Sep 17 00:00:00 2001 From: GuoLei1990 Date: Mon, 17 Oct 2022 13:32:49 +0800 Subject: [PATCH 15/17] v0.8.0-beta.31 --- lerna.json | 2 +- packages/core/package.json | 6 +++--- packages/design/package.json | 4 ++-- packages/draco/package.json | 4 ++-- packages/loader/package.json | 10 +++++----- packages/math/package.json | 2 +- packages/oasis-engine/package.json | 10 +++++----- packages/physics-lite/package.json | 6 +++--- packages/physics-physx/package.json | 6 +++--- packages/rhi-webgl/package.json | 8 ++++---- tests/package.json | 10 +++++----- 11 files changed, 34 insertions(+), 34 deletions(-) diff --git a/lerna.json b/lerna.json index 01f9db3c5..31c3f54ff 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "npmClient": "npm", - "version": "0.8.0-beta.30", + "version": "0.8.0-beta.31", "bootstrap": { "hoist": true }, diff --git a/packages/core/package.json b/packages/core/package.json index a6a8145ac..3f18da712 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/core", - "version": "0.8.0-beta.30", + "version": "0.8.0-beta.31", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -18,9 +18,9 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/math": "0.8.0-beta.30" + "@oasis-engine/math": "0.8.0-beta.31" }, "devDependencies": { - "@oasis-engine/design": "0.8.0-beta.30" + "@oasis-engine/design": "0.8.0-beta.31" } } diff --git a/packages/design/package.json b/packages/design/package.json index b9094c16f..09dbfacbd 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/design", - "version": "0.8.0-beta.30", + "version": "0.8.0-beta.31", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -17,6 +17,6 @@ ], "types": "types/index.d.ts", "dependencies": { - "@oasis-engine/math": "0.8.0-beta.30" + "@oasis-engine/math": "0.8.0-beta.31" } } diff --git a/packages/draco/package.json b/packages/draco/package.json index 5d0087bae..5fda26980 100644 --- a/packages/draco/package.json +++ b/packages/draco/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/draco", - "version": "0.8.0-beta.30", + "version": "0.8.0-beta.31", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -17,6 +17,6 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.30" + "@oasis-engine/core": "0.8.0-beta.31" } } diff --git a/packages/loader/package.json b/packages/loader/package.json index 3436a89e1..b8148f96d 100644 --- a/packages/loader/package.json +++ b/packages/loader/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/loader", - "version": "0.8.0-beta.30", + "version": "0.8.0-beta.31", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -18,9 +18,9 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.30", - "@oasis-engine/draco": "0.8.0-beta.30", - "@oasis-engine/math": "0.8.0-beta.30", - "@oasis-engine/rhi-webgl": "0.8.0-beta.30" + "@oasis-engine/core": "0.8.0-beta.31", + "@oasis-engine/draco": "0.8.0-beta.31", + "@oasis-engine/math": "0.8.0-beta.31", + "@oasis-engine/rhi-webgl": "0.8.0-beta.31" } } diff --git a/packages/math/package.json b/packages/math/package.json index 709cfe9d5..575c2b956 100644 --- a/packages/math/package.json +++ b/packages/math/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/math", - "version": "0.8.0-beta.30", + "version": "0.8.0-beta.31", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/oasis-engine/package.json b/packages/oasis-engine/package.json index c2647b401..44394ccd9 100644 --- a/packages/oasis-engine/package.json +++ b/packages/oasis-engine/package.json @@ -1,6 +1,6 @@ { "name": "oasis-engine", - "version": "0.8.0-beta.30", + "version": "0.8.0-beta.31", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -18,9 +18,9 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.30", - "@oasis-engine/loader": "0.8.0-beta.30", - "@oasis-engine/math": "0.8.0-beta.30", - "@oasis-engine/rhi-webgl": "0.8.0-beta.30" + "@oasis-engine/core": "0.8.0-beta.31", + "@oasis-engine/loader": "0.8.0-beta.31", + "@oasis-engine/math": "0.8.0-beta.31", + "@oasis-engine/rhi-webgl": "0.8.0-beta.31" } } diff --git a/packages/physics-lite/package.json b/packages/physics-lite/package.json index 455750115..71d10e393 100644 --- a/packages/physics-lite/package.json +++ b/packages/physics-lite/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/physics-lite", - "version": "0.8.0-beta.30", + "version": "0.8.0-beta.31", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -19,9 +19,9 @@ "types/**/*" ], "devDependencies": { - "@oasis-engine/design": "0.8.0-beta.30" + "@oasis-engine/design": "0.8.0-beta.31" }, "peerDependencies": { - "oasis-engine": "0.8.0-beta.30" + "oasis-engine": "0.8.0-beta.31" } } diff --git a/packages/physics-physx/package.json b/packages/physics-physx/package.json index 52b771498..5499a350b 100644 --- a/packages/physics-physx/package.json +++ b/packages/physics-physx/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/physics-physx", - "version": "0.8.0-beta.30", + "version": "0.8.0-beta.31", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -20,9 +20,9 @@ "types/**/*" ], "devDependencies": { - "@oasis-engine/design": "0.8.0-beta.30" + "@oasis-engine/design": "0.8.0-beta.31" }, "peerDependencies": { - "oasis-engine": "0.8.0-beta.30" + "oasis-engine": "0.8.0-beta.31" } } diff --git a/packages/rhi-webgl/package.json b/packages/rhi-webgl/package.json index 7734006e8..37c602101 100644 --- a/packages/rhi-webgl/package.json +++ b/packages/rhi-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@oasis-engine/rhi-webgl", - "version": "0.8.0-beta.30", + "version": "0.8.0-beta.31", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" @@ -18,10 +18,10 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.30", - "@oasis-engine/math": "0.8.0-beta.30" + "@oasis-engine/core": "0.8.0-beta.31", + "@oasis-engine/math": "0.8.0-beta.31" }, "devDependencies": { - "@oasis-engine/design": "0.8.0-beta.30" + "@oasis-engine/design": "0.8.0-beta.31" } } diff --git a/tests/package.json b/tests/package.json index 796183fe1..189db8dfe 100644 --- a/tests/package.json +++ b/tests/package.json @@ -1,7 +1,7 @@ { "name": "@oasis-engine/tests", "private": true, - "version": "0.8.0-beta.30", + "version": "0.8.0-beta.31", "license": "MIT", "main": "dist/main.js", "module": "dist/module.js", @@ -15,9 +15,9 @@ "types/**/*" ], "dependencies": { - "@oasis-engine/core": "0.8.0-beta.30", - "@oasis-engine/design": "0.8.0-beta.30", - "@oasis-engine/math": "0.8.0-beta.30", - "@oasis-engine/rhi-webgl": "0.8.0-beta.30" + "@oasis-engine/core": "0.8.0-beta.31", + "@oasis-engine/design": "0.8.0-beta.31", + "@oasis-engine/math": "0.8.0-beta.31", + "@oasis-engine/rhi-webgl": "0.8.0-beta.31" } } From 4b8d3b3b85e0cd1dc21bf0127411ea347851f608 Mon Sep 17 00:00:00 2001 From: Hu Song Date: Mon, 17 Oct 2022 14:13:16 +0800 Subject: [PATCH 16/17] fix: resource parser error (#1105) --- .../resources/prefab/ReflectionParser.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/loader/src/resource-deserialize/resources/prefab/ReflectionParser.ts b/packages/loader/src/resource-deserialize/resources/prefab/ReflectionParser.ts index 994752777..367332c95 100644 --- a/packages/loader/src/resource-deserialize/resources/prefab/ReflectionParser.ts +++ b/packages/loader/src/resource-deserialize/resources/prefab/ReflectionParser.ts @@ -63,7 +63,7 @@ export class ReflectionParser { ): Promise { if (Array.isArray(value)) { return Promise.all(value.map((item) => this.parseBasicType(item, engine, resourceManager))); - } else if (typeof value === "object") { + } else if (typeof value === "object" && value != null) { if (this._isClass(value)) { // 类对象 return this.parseClassObject(value, engine, resourceManager); @@ -127,10 +127,10 @@ export class ReflectionParser { } private static _isClass(value: any): value is IClassObject { - return "class" in value; + return value["class"] != undefined; } private static _isRef(value: any): value is IReferenceType { - return "refId" in value; + return value["refId"] != undefined; } } From b391c7441fc934139bf74d997424627b33ea9779 Mon Sep 17 00:00:00 2001 From: yangfengzzz Date: Mon, 17 Oct 2022 14:14:20 +0800 Subject: [PATCH 17/17] Fix physics lite raycast bug (#999) (#1104) * fix: physics lite raycast bug (#999) --- packages/core/src/physics/DynamicCollider.ts | 2 -- .../src/shape/LiteBoxColliderShape.ts | 15 ++++++++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/core/src/physics/DynamicCollider.ts b/packages/core/src/physics/DynamicCollider.ts index 0ed76387e..eef0222b6 100644 --- a/packages/core/src/physics/DynamicCollider.ts +++ b/packages/core/src/physics/DynamicCollider.ts @@ -272,8 +272,6 @@ export class DynamicCollider extends Collider { const { transform } = this.entity; const { worldPosition, worldRotationQuaternion } = transform; (this._nativeCollider).getWorldTransform(worldPosition, worldRotationQuaternion); - transform.worldPosition = worldPosition; - transform.worldRotationQuaternion = worldRotationQuaternion; this._updateFlag.flag = false; } } diff --git a/packages/physics-lite/src/shape/LiteBoxColliderShape.ts b/packages/physics-lite/src/shape/LiteBoxColliderShape.ts index 29169009c..d19d72c55 100644 --- a/packages/physics-lite/src/shape/LiteBoxColliderShape.ts +++ b/packages/physics-lite/src/shape/LiteBoxColliderShape.ts @@ -10,6 +10,7 @@ import { LitePhysicsMaterial } from "../LitePhysicsMaterial"; export class LiteBoxColliderShape extends LiteColliderShape implements IBoxColliderShape { private static _tempBox: BoundingBox = new BoundingBox(); private _halfSize: Vector3 = new Vector3(); + private _scale: Vector3 = new Vector3(1, 1, 1); /** @internal */ _boxMin: Vector3 = new Vector3(-0.5, -0.5, -0.5); @@ -42,7 +43,7 @@ export class LiteBoxColliderShape extends LiteColliderShape implements IBoxColli */ setWorldScale(scale: Vector3): void { this._transform.position = this._transform.position.multiply(scale); - this._halfSize.multiply(scale); + this._scale.copyFrom(scale); } /** @@ -60,8 +61,16 @@ export class LiteBoxColliderShape extends LiteColliderShape implements IBoxColli const localRay = this._getLocalRay(ray); const boundingBox = LiteBoxColliderShape._tempBox; - boundingBox.min.set(-this._halfSize.x, -this._halfSize.y, -this._halfSize.z); - boundingBox.max.set(this._halfSize.x, this._halfSize.y, this._halfSize.z); + boundingBox.min.set( + -this._halfSize.x * this._scale.x, + -this._halfSize.y * this._scale.y, + -this._halfSize.z * this._scale.z + ); + boundingBox.max.set( + this._halfSize.x * this._scale.x, + this._halfSize.y * this._scale.y, + this._halfSize.z * this._scale.z + ); const rayDistance = localRay.intersectBox(boundingBox); if (rayDistance !== -1) { this._updateHitResult(localRay, rayDistance, hit, ray.origin);