Team Create (���������� ��������������) + ���������� ���� + ������ 16/17/20/40/44/05 #34

Merged
min merged 69 commits from restore/all-tasks into main 2026-06-08 01:13:01 +00:00
3 changed files with 16 additions and 1 deletions
Showing only changes of commit 018fce474b - Show all commits

View File

@ -526,6 +526,9 @@ export class ModelManager {
opacity: typeof data.opacity === 'number' ? data.opacity : 1, opacity: typeof data.opacity === 'number' ? data.opacity : 1,
tint: data.tint || null, tint: data.tint || null,
name: data.name || null, name: data.name || null,
// folderId — принадлежность к папке (иначе модели вываливаются
// из папки после Play/Stop). Баг 2026-06-05.
...(data.folderId != null ? { folderId: data.folderId } : {}),
// Параметры геймплея (HP, скорость врага, лимит спавнера и т.п.) // Параметры геймплея (HP, скорость врага, лимит спавнера и т.п.)
gameplayParams: data.gameplayParams || null, gameplayParams: data.gameplayParams || null,
}); });
@ -768,6 +771,7 @@ export class ModelManager {
if (m.tint) data.tint = m.tint; if (m.tint) data.tint = m.tint;
if (m.name) data.name = m.name; if (m.name) data.name = m.name;
if (m.gameplayParams) data.gameplayParams = m.gameplayParams; if (m.gameplayParams) data.gameplayParams = m.gameplayParams;
if (m.folderId != null) data.folderId = m.folderId; // восстановить папку
if (data.opacity != null || data.tint) this._applyMaterialOverrides(data); if (data.opacity != null || data.tint) this._applyMaterialOverrides(data);
} }
// Гарантируем что _nextInstanceId стоит ПОСЛЕ максимального восстановленного id — // Гарантируем что _nextInstanceId стоит ПОСЛЕ максимального восстановленного id —

View File

@ -945,6 +945,9 @@ export class PrimitiveManager {
anchored: d.anchored, anchored: d.anchored,
mass: d.mass, mass: d.mass,
name: d.name || null, name: d.name || null,
// folderId — принадлежность к папке. БЕЗ него примитивы вываливались
// из папки после Play/Stop (снапшот терял группировку). Баг 2026-06-05.
...(d.folderId != null ? { folderId: d.folderId } : {}),
// locked — защита от выделения/перемещения (Фаза 5.11). // locked — защита от выделения/перемещения (Фаза 5.11).
...(d.locked ? { locked: true } : {}), ...(d.locked ? { locked: true } : {}),
// id пользовательской текстуры (картинка из AssetManager). // id пользовательской текстуры (картинка из AssetManager).

View File

@ -599,6 +599,8 @@ export class UserModelManager {
// instanceId — чтобы target-скрипты могли стабильно ссылаться // instanceId — чтобы target-скрипты могли стабильно ссылаться
// на конкретный инстанс после перезагрузки. // на конкретный инстанс после перезагрузки.
instanceId: inst.instanceId, instanceId: inst.instanceId,
// folderId — принадлежность к папке (иначе вываливается после Play/Stop).
...(inst.folderId != null ? { folderId: inst.folderId } : {}),
}); });
} }
return arr; return arr;
@ -663,7 +665,13 @@ export class UserModelManager {
forceInstanceId: item.instanceId, 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) { } catch (e) {
console.warn('[UserModelManager] failed to load instance', item, e); console.warn('[UserModelManager] failed to load instance', item, e);
} }