fix(g7): спавненные unanchored примитивы регистрируются в физике

DynamicsManager.start() собирает unanchored объекты только при входе
в Play. Куб созданный из скрипта в runtime не попадал в bodies →
не падал, висел в воздухе.

Фикс: после pm.addInstance с anchored=false вызываем
dm.registerPrimitive(data) — кладёт тело в физический мир сразу
после спавна.
This commit is contained in:
min 2026-06-09 17:41:20 +03:00
parent c9acb4fb3b
commit 2af9b96088

View File

@ -150,6 +150,16 @@ export function handleLuaCommand(_scriptId, cmd, payload, runtime) {
canCollide: payload?.canCollide !== false,
};
pm.addInstance(payload?.type || 'cube', opts);
// Если unanchored — регистрируем в физике на лету, иначе он не падает.
if (opts.anchored === false) {
try {
const dm = runtime.scene3d?.dynamicsManager;
const data = pm.instances?.get?.(opts.id);
if (dm && data) dm.registerPrimitive(data);
} catch (e) {
console.warn('[sceneCreate] registerPrimitive failed', e);
}
}
} catch (e) {
console.error('[sceneCreate]', e);
}