fix(studio): глобальные скрипты (target=game) видны в дереве и удаляемы
Баг: фильтр дерева был scripts.filter(s => !s.target) → скрипты с target:'game' (главные скрипты игры) НЕ показывались в группе «Скрипты» (дерево писало «Скрипты (0)»), хотя в Play исполнялись и удалить их было нельзя. Теперь глобальный = нет target ИЛИ target==='game'. - ПКМ по «Точка спавна» в дереве → выбирает её (открывает свойства). - Кит «Точка спавна» → «Стартовая площадка» (точка спавна уже есть по умолчанию, дубль путал; её нельзя удалить — это by design). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
4284fef704
commit
781c3cf945
@ -786,7 +786,8 @@ const HierarchyPanel = ({
|
||||
className={`${cl.item} ${selection?.type === 'spawn' ? cl.itemSelected : ''}`}
|
||||
onClick={() => onSelectSpawn?.()}
|
||||
onDoubleClick={() => { onSelectSpawn?.(); onFocusSelection?.(); }}
|
||||
title="Точка спавна игрока"
|
||||
onContextMenu={(e) => { e.preventDefault(); onSelectSpawn?.(); }}
|
||||
title="Точка спавна игрока (ПКМ — выбрать и открыть свойства)"
|
||||
>
|
||||
<span className={cl.itemIcon} style={{ display: 'inline-flex' }}><Icon name="flag" size={14} /></span>
|
||||
<span className={cl.itemLabel}>Точка спавна</span>
|
||||
@ -1149,7 +1150,12 @@ const HierarchyPanel = ({
|
||||
{/* === 📜 СКРИПТЫ === — только глобальные (без target).
|
||||
Скрипты с target отображаются под объектом-носителем. */}
|
||||
{(() => {
|
||||
const globalScripts = scripts.filter(s => !s.target);
|
||||
// Глобальные скрипты: без target ИЛИ target==='game' (строка).
|
||||
// Раньше фильтр был `!s.target` → скрипты с target:'game'
|
||||
// (главный скрипт игры) НЕ показывались в дереве и их нельзя
|
||||
// было удалить, хотя в Play они исполнялись.
|
||||
const isGlobalTarget = (t) => !t || t === 'game';
|
||||
const globalScripts = scripts.filter(s => isGlobalTarget(s.target));
|
||||
return (
|
||||
<>
|
||||
<GroupRow
|
||||
|
||||
@ -74,11 +74,11 @@ game.every(0.3, () => showCoins());
|
||||
globalThis.__addCoins = (n) => { coins += (n||1); showCoins(); };` }],
|
||||
},
|
||||
{
|
||||
id: 'spawn-point',
|
||||
name: 'Точка спавна',
|
||||
desc: 'Зелёная платформа-маркер — место появления игрока. Поставь где нужно.',
|
||||
id: 'start-pad',
|
||||
name: 'Стартовая площадка',
|
||||
desc: 'Светящаяся платформа-постамент для оформления зоны старта (точка спавна в проекте уже есть по умолчанию).',
|
||||
icon: 'flag', category: 'world',
|
||||
prims: [{ type: 'cylinder', x: 0, y: 0.15, z: 0, sx: 3, sy: 0.3, sz: 3, color: '#36d57a', material: 'neon', name: 'Точка спавна' }],
|
||||
prims: [{ type: 'cylinder', x: 0, y: 0.15, z: 0, sx: 3, sy: 0.3, sz: 3, color: '#36d57a', material: 'neon', name: 'Стартовая площадка' }],
|
||||
},
|
||||
{
|
||||
id: 'checkpoint',
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user