From 51ff3ee84fb8aae46819d5c7db914b3dc873062f Mon Sep 17 00:00:00 2001 From: Codeboy Date: Thu, 21 Mar 2024 20:35:09 +0800 Subject: [PATCH] fix: object is disabled after removeChild (#381) * chore: remove sample_candleflame maskMap * fix: addChild and removeChild related * chore: remove log --- samples/base/Sample_AddRemove.ts | 22 +++++++++++++++------- src/components/renderer/RenderNode.ts | 1 - src/loader/LoaderBase.ts | 2 +- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/samples/base/Sample_AddRemove.ts b/samples/base/Sample_AddRemove.ts index d1153d75..e43835e1 100644 --- a/samples/base/Sample_AddRemove.ts +++ b/samples/base/Sample_AddRemove.ts @@ -41,13 +41,20 @@ class Sample_AddRemove { } private async test() { - let list: Object3D[] = []; + let visibleList: Object3D[] = []; + let invisibleList: Object3D[] = []; let player = await Engine3D.res.loadGltf('gltfs/anim/Minion_Lane_Super_Dawn/Minion_Lane_Super_Dawn.glb'); // gui GUIHelp.init(); GUIHelp.addButton("add", async () => { /******** player1 *******/ - let clone = player.clone() + let clone: Object3D + if (invisibleList.length > 0) { + clone = invisibleList[invisibleList.length-1]; + invisibleList.splice(invisibleList.length-1, 1); + } else { + clone = player.clone(); + } clone.transform.x = Math.random() * 100 - 50; clone.transform.y = Math.random() * 100 - 50; clone.transform.z = Math.random() * 100 - 50; @@ -56,16 +63,17 @@ class Sample_AddRemove { clone.transform.scaleZ = 20; this.view.scene.addChild(clone); - list.push(clone); + visibleList.push(clone); }); GUIHelp.addButton("remove", () => { - let index = Math.floor(list.length * Math.random()); - let obj = list[index]; + let index = Math.floor(visibleList.length * Math.random()); + let obj = visibleList[index]; if (obj) { - list.splice(index, 1) + visibleList.splice(index, 1) this.view.scene.removeChild(obj) - obj.destroy(true); + // obj.destroy(true); + invisibleList.push(obj) } }); diff --git a/src/components/renderer/RenderNode.ts b/src/components/renderer/RenderNode.ts index b3b3c2d2..04d46ce6 100644 --- a/src/components/renderer/RenderNode.ts +++ b/src/components/renderer/RenderNode.ts @@ -237,7 +237,6 @@ export class RenderNode extends ComponentBase { } public onDisable(): void { - this._enable = false; EntityCollect.instance.removeRenderNode(this.transform.scene3D, this); super.onDisable?.(); } diff --git a/src/loader/LoaderBase.ts b/src/loader/LoaderBase.ts index 3cdf6393..b27c748e 100644 --- a/src/loader/LoaderBase.ts +++ b/src/loader/LoaderBase.ts @@ -155,7 +155,7 @@ export class LoaderBase { } if (receivedArr.length > 0) { for (let i = 0; i < chunks.length; i++) { - console.log(receivedArr[i]); + // console.log(receivedArr[i]); if (loaderFunctions && loaderFunctions.onProgress) { loaderFunctions.onProgress.call(this, receivedArr[i], receivedLength, url); }