From 50f7c742590e4e9c60706ce26b7737811aa1d8d6 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sun, 3 May 2026 12:17:55 +0900 Subject: [PATCH] Update controller.ts --- packages/frontend/src/world/room/controller.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/frontend/src/world/room/controller.ts b/packages/frontend/src/world/room/controller.ts index c74bc3e1fc..095356e54c 100644 --- a/packages/frontend/src/world/room/controller.ts +++ b/packages/frontend/src/world/room/controller.ts @@ -141,14 +141,15 @@ export class RoomController { if (deepEqual(this.roomState.value, roomState)) return; // vueのリアクティビティが反応して無限ループになることがあるため this.roomState.value = JSON.parse(JSON.stringify(roomState)); if (this.selected.value != null) { - // そのまま入れると「オブジェクト(newSelected)の内容」は変わってるけど「オブジェクトの参照」そのものは変化していないから、 - // その状態で代入しようがtriggerRef呼ぼうがVueは「子に対しては」更新があったと見做してくれない(親から当該refをwatchする場合は発火する)っぽい(バグか仕様かは不明) - // そのため新しい参照にするためにdeepClone - const newSelected = JSON.parse(JSON.stringify(roomState.installedObjects.find(o => o.id === this.selected.value.objectId))); + const newSelected = roomState.installedObjects.find(o => o.id === this.selected.value.objectId); if (newSelected) { this.selected.value = { objectId: newSelected.id, - objectState: newSelected, + + // そのまま入れると「オブジェクト(newSelected)の内容」は変わってるけど「オブジェクトの参照」そのものは変化していないから、 + // その状態で代入しようがtriggerRef呼ぼうがVueは「子に対しては」更新があったと見做してくれない(親から当該refをwatchする場合は発火する)っぽい(バグか仕様かは不明) + // そのため新しい参照にするためにdeepClone + objectState: JSON.parse(JSON.stringify(newSelected)), }; } else { this.selected.value = null;