diff --git a/packages/frontend/src/world/room/ObjectContainer.ts b/packages/frontend/src/world/room/ObjectContainer.ts index 9220bea209..8284f2e2ac 100644 --- a/packages/frontend/src/world/room/ObjectContainer.ts +++ b/packages/frontend/src/world/room/ObjectContainer.ts @@ -243,6 +243,7 @@ export class ObjectContainer { this.model = null; this.subRoot?.dispose(); this.root.removeChild(this.subRoot); + this.scene.removeTransformNode(this.subRoot); this.timer = new Timer(); @@ -263,10 +264,12 @@ export class ObjectContainer { } public destroy() { + this.sr.disableSnapshotRendering(); this.timer.dispose(); this.instance?.dispose?.(); - this.subRoot?.dispose(); - this.root.dispose(true); + this.subRoot.dispose(); + this.root.dispose(); this.scene.removeTransformNode(this.root); + this.sr.enableSnapshotRendering(); } } diff --git a/packages/frontend/src/world/room/objects/allInOnePc.ts b/packages/frontend/src/world/room/objects/allInOnePc.ts index 0ddb12d06d..282c960188 100644 --- a/packages/frontend/src/world/room/objects/allInOnePc.ts +++ b/packages/frontend/src/world/room/objects/allInOnePc.ts @@ -145,6 +145,7 @@ export const allInOnePc = defineObject({ dispose: () => { light.dispose(); if (lc != null) lc.removeLight(light); + scene.removeLight(light); // lc使用時はsceneには追加してないはずだが、これがないとクラッシュする babylonのバグ? }, }; }, diff --git a/packages/frontend/src/world/room/objects/beamLamp.ts b/packages/frontend/src/world/room/objects/beamLamp.ts index 610727c2ef..f1a49bd431 100644 --- a/packages/frontend/src/world/room/objects/beamLamp.ts +++ b/packages/frontend/src/world/room/objects/beamLamp.ts @@ -33,6 +33,7 @@ export const beamLamp = defineObject({ dispose: () => { light.dispose(); if (lc != null) lc.removeLight(light); + scene.removeLight(light); // lc使用時はsceneには追加してないはずだが、これがないとクラッシュする babylonのバグ? }, }; }, diff --git a/packages/frontend/src/world/room/objects/desktopPc.ts b/packages/frontend/src/world/room/objects/desktopPc.ts index 5aec987b41..11556b3a60 100644 --- a/packages/frontend/src/world/room/objects/desktopPc.ts +++ b/packages/frontend/src/world/room/objects/desktopPc.ts @@ -134,6 +134,8 @@ export const desktopPc = defineObject({ lc.removeLight(light1); lc.removeLight(light2); } + scene.removeLight(light1); // lc使用時はsceneには追加してないはずだが、これがないとクラッシュする babylonのバグ? + scene.removeLight(light2); // lc使用時はsceneには追加してないはずだが、これがないとクラッシュする babylonのバグ? }, }; }, diff --git a/packages/frontend/src/world/room/objects/ductRailSpotLights.ts b/packages/frontend/src/world/room/objects/ductRailSpotLights.ts index d6cadff39f..2036cd11b9 100644 --- a/packages/frontend/src/world/room/objects/ductRailSpotLights.ts +++ b/packages/frontend/src/world/room/objects/ductRailSpotLights.ts @@ -130,6 +130,7 @@ export const ductRailSpotLights = defineObject({ for (const light of lights) { light.dispose(); if (lc != null) lc.removeLight(light); + scene.removeLight(light); // lc使用時はsceneには追加してないはずだが、これがないとクラッシュする babylonのバグ? } }, }; diff --git a/packages/frontend/src/world/room/objects/laptopPc.ts b/packages/frontend/src/world/room/objects/laptopPc.ts index e936aeeccf..09f7b56c4d 100644 --- a/packages/frontend/src/world/room/objects/laptopPc.ts +++ b/packages/frontend/src/world/room/objects/laptopPc.ts @@ -170,6 +170,7 @@ export const laptopPc = defineObject({ dispose: () => { light.dispose(); if (lc != null) lc.removeLight(light); + scene.removeLight(light); // lc使用時はsceneには追加してないはずだが、これがないとクラッシュする babylonのバグ? }, }; }, diff --git a/packages/frontend/src/world/room/objects/lavaLamp.ts b/packages/frontend/src/world/room/objects/lavaLamp.ts index 449b03f3f6..8b6a53e3b4 100644 --- a/packages/frontend/src/world/room/objects/lavaLamp.ts +++ b/packages/frontend/src/world/room/objects/lavaLamp.ts @@ -157,6 +157,7 @@ export const lavaLamp = defineObject({ dispose: () => { light.dispose(); if (lc != null) lc.removeLight(light); + scene.removeLight(light); // lc使用時はsceneには追加してないはずだが、これがないとクラッシュする babylonのバグ? if (animationObserver != null) { scene.onAfterAnimationsObservable.remove(animationObserver); } diff --git a/packages/frontend/src/world/room/objects/monitor.ts b/packages/frontend/src/world/room/objects/monitor.ts index 381746e71f..b3093455ae 100644 --- a/packages/frontend/src/world/room/objects/monitor.ts +++ b/packages/frontend/src/world/room/objects/monitor.ts @@ -133,6 +133,7 @@ export const monitor = defineObject({ dispose: () => { light.dispose(); if (lc != null) lc.removeLight(light); + scene.removeLight(light); // lc使用時はsceneには追加してないはずだが、これがないとクラッシュする babylonのバグ? }, }; }, diff --git a/packages/frontend/src/world/room/objects/spotLight.ts b/packages/frontend/src/world/room/objects/spotLight.ts index 67c2da0d5c..34d94a5656 100644 --- a/packages/frontend/src/world/room/objects/spotLight.ts +++ b/packages/frontend/src/world/room/objects/spotLight.ts @@ -115,6 +115,7 @@ export const spotLight = defineObject({ dispose: () => { light.dispose(); if (lc != null) lc.removeLight(light); + scene.removeLight(light); // lc使用時はsceneには追加してないはずだが、これがないとクラッシュする babylonのバグ? }, }; }, diff --git a/packages/frontend/src/world/room/objects/tv.ts b/packages/frontend/src/world/room/objects/tv.ts index 8590da8f6a..7ed423dc34 100644 --- a/packages/frontend/src/world/room/objects/tv.ts +++ b/packages/frontend/src/world/room/objects/tv.ts @@ -99,6 +99,7 @@ export const tv = defineObject({ dispose: () => { light.dispose(); if (lc != null) lc.removeLight(light); + scene.removeLight(light); // lc使用時はsceneには追加してないはずだが、これがないとクラッシュする babylonのバグ? }, }; }, diff --git a/packages/frontend/src/world/room/objects/wallMountSpotLight.ts b/packages/frontend/src/world/room/objects/wallMountSpotLight.ts index 81288c73fe..e2c5f429c4 100644 --- a/packages/frontend/src/world/room/objects/wallMountSpotLight.ts +++ b/packages/frontend/src/world/room/objects/wallMountSpotLight.ts @@ -116,6 +116,7 @@ export const wallMountSpotLight = defineObject({ dispose: () => { light.dispose(); if (lc != null) lc.removeLight(light); + scene.removeLight(light); // lc使用時はsceneには追加してないはずだが、これがないとクラッシュする babylonのバグ? }, }; }, diff --git a/packages/frontend/src/world/room/objects/woodRingFloorLamp.ts b/packages/frontend/src/world/room/objects/woodRingFloorLamp.ts index 946968a020..196cecb5aa 100644 --- a/packages/frontend/src/world/room/objects/woodRingFloorLamp.ts +++ b/packages/frontend/src/world/room/objects/woodRingFloorLamp.ts @@ -109,8 +109,9 @@ export const woodRingFloorLamp = defineObject({ for (const light of lights) { light.dispose(); if (lc != null) lc.removeLight(light); + scene.removeLight(light); // lc使用時はsceneには追加してないはずだが、これがないとクラッシュする babylonのバグ? } - } + }, }; }, }); diff --git a/packages/frontend/src/world/room/objects/woodRingsPendantLight.ts b/packages/frontend/src/world/room/objects/woodRingsPendantLight.ts index d6b695be4f..5b0730d412 100644 --- a/packages/frontend/src/world/room/objects/woodRingsPendantLight.ts +++ b/packages/frontend/src/world/room/objects/woodRingsPendantLight.ts @@ -129,6 +129,7 @@ export const woodRingsPendantLight = defineObject({ dispose: () => { light.dispose(); if (lc != null) lc.removeLight(light); + scene.removeLight(light); // lc使用時はsceneには追加してないはずだが、これがないとクラッシュする babylonのバグ? }, }; },