feat(app): constrain free-flight movement by building meshes
Docs Deploy / Build and Deploy MkDocs (push) Successful in 35s

This commit is contained in:
Valentin Popov committed 2026-10-31 01:24:21 +04:00
1 parent dbfdcf1e4c
commit e9e01eee9f
6 files changed
+1202 -43

No files matched your search

+24 -9
View File
@@ -236,15 +236,30 @@ distance² = dot(hit_world - original_start, hit_world - original_start)
`af87d1b2e728a0be73c52be3b44cc196ab46da7799f25a15d40f8c9b0b425ead` (RVA
`0x35430`, `0x35961`) и `AniMesh.dll` SHA-256
`65659bf67f20e5be77d67a5b2f59968f61b94293143807fa59ca451c560c4f7e` (RVA
`0x134D0`, `0x10A50`). Игнорируемый тест загружает настоящий объект PLANT 4
миссии AutoDemo и проверяет, что сегмент пересекает геометрию Node3 в исходной
закрытой позе, но проходит без попадания при явно заданной открытой позе frame
`1`. Это проверка запроса для двух поз, а не открытие двери игровой командой.
В загруженных Control-привязках корня PLANT нет tag-21 записи для перехода
Node3; тест задаёт frame `1` напрямую и не исполняет команду открытия из
миссии.
Нативный выбор первого корня и полный мировой обход ещё не сопоставлены с Rust;
app пока не передаёт этой функции живые runtime-позы и bindings.
`0x134D0`, `0x10A50`).
Игнорируемый тест загружает настоящий объект PLANT 4 миссии
AutoDemo и использует его исходную CTLD-привязку Node3: `frame_a = 0`,
`frame_b = 1`, начальное смешивание `0`. В контроллере корневого PLANT нет
записей tag-21. В
закрытой начальной позе запрос, вызванный через обновление камеры приложения,
останавливает движение. Затем тест вручную задаёт время `1` только для
Node3, пересчитывает pose и преобразование присоединения и повторяет тот же
путь обновления камеры; отрезок проходит через проём. Это проверяет подачу
двух заданных в MSH поз в коллизию приложения, а не открытие двери событием
миссии и не её видимое обновление в игровой сцене.
Интерактивный preview создаёт отдельную запись для каждого отрисовываемого
корневого строения класса `FORT` и его отрисовываемых компонентов. На каждом
движении камера получает текущую Node38-иерархию компонента и его актуальное
преобразование присоединения, переводит выбранные узлы и slot-ы в мировой
запрос и выполняет его после ограничения цели рельефом. Попадание сохраняет
прежнюю позицию камеры, но не отменяет новый поворот; повтор ожидающего кадра
не применяет шаг движения второй раз. Так приложение связывает мировой
MSH-запрос с движением свободной preview-камеры. Выбор первого корня и полный
состав мирового списка ещё не сверены с оригиналом; игровые источники поз и
событий, а также поведение стратегической и следящей камеры остаются
открытыми.
## Сторона грани в цветовом проходе