From e4125e64885b794029af7297d9938f07e13a4f50 Mon Sep 17 00:00:00 2001 From: min Date: Fri, 5 Jun 2026 19:00:38 +0300 Subject: [PATCH] =?UTF-8?q?fix(player):=20folderId=20=D0=B2=20serialize/lo?= =?UTF-8?q?ad=20(=D0=BF=D0=B0=D1=80=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D1=81?= =?UTF-8?q?=D0=BE=20=D1=81=D1=82=D1=83=D0=B4=D0=B8=D0=B5=D0=B9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- src/engine/ModelManager.js | 2 ++ src/engine/PrimitiveManager.js | 1 + src/engine/UserModelManager.js | 9 ++++++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/engine/ModelManager.js b/src/engine/ModelManager.js index 954bbef..82877c8 100644 --- a/src/engine/ModelManager.js +++ b/src/engine/ModelManager.js @@ -542,6 +542,7 @@ export class ModelManager { opacity: typeof data.opacity === 'number' ? data.opacity : 1, tint: data.tint || null, name: data.name || null, + ...(data.folderId != null ? { folderId: data.folderId } : {}), // папка // Параметры геймплея (HP, скорость врага, лимит спавнера и т.п.) gameplayParams: data.gameplayParams || null, }); @@ -775,6 +776,7 @@ export class ModelManager { if (m.tint) data.tint = m.tint; if (m.name) data.name = m.name; if (m.gameplayParams) data.gameplayParams = m.gameplayParams; + if (m.folderId != null) data.folderId = m.folderId; if (data.opacity != null || data.tint) this._applyMaterialOverrides(data); } } diff --git a/src/engine/PrimitiveManager.js b/src/engine/PrimitiveManager.js index 99b448e..fd8a085 100644 --- a/src/engine/PrimitiveManager.js +++ b/src/engine/PrimitiveManager.js @@ -865,6 +865,7 @@ export class PrimitiveManager { anchored: d.anchored, mass: d.mass, name: d.name || null, + ...(d.folderId != null ? { folderId: d.folderId } : {}), // папка (парность со студией) // locked — защита от выделения/перемещения (Фаза 5.11). ...(d.locked ? { locked: true } : {}), // id пользовательской текстуры (картинка из AssetManager). diff --git a/src/engine/UserModelManager.js b/src/engine/UserModelManager.js index 9e8629a..a7d654f 100644 --- a/src/engine/UserModelManager.js +++ b/src/engine/UserModelManager.js @@ -599,6 +599,7 @@ export class UserModelManager { // instanceId — чтобы target-скрипты могли стабильно ссылаться // на конкретный инстанс после перезагрузки. instanceId: inst.instanceId, + ...(inst.folderId != null ? { folderId: inst.folderId } : {}), }); } return arr; @@ -663,7 +664,13 @@ export class UserModelManager { forceInstanceId: item.instanceId, }, ); - if (id != null) loaded++; + if (id != null) { + loaded++; + if (item.folderId != null) { + const inst = this.instances.get(id); + if (inst) inst.folderId = item.folderId; + } + } } catch (e) { console.warn('[UserModelManager] failed to load instance', item, e); }