feat(runtime): project initial Behavior control groups
Docs Deploy / Build and Deploy MkDocs (push) Successful in 37s

This commit is contained in:
Valentin Popov committed 2026-10-31 08:24:58 +04:00
1 parent 6412c12c09
commit 8c11e0f470
4 files changed
+328

No files matched your search

+19
View File
@@ -260,6 +260,25 @@ Rust-тест повторно читает лицензированную ми
TMA-записями и проверяет реальные `ObjectHandle`, но помечен `#[ignore]`, чтобы
не требовать оригинальных ресурсов от остальных разработчиков.
После подготовки Control-таблицы можно разобрать и её начальную группировку для
Behavior. Важны текущая метка записи и её порядковый номер в общей таблице:
метка `1` начинает пустую группу, метка `2` становится кандидатом последней
группы, а метка `30` записывает строку в отдельный список той же группы.
Кандидат, встретившийся до первого заголовка, остаётся в списке без группы;
ранняя метка `30` игнорируется. Например,
для текущих меток `[2, 30, 1, 30, 2]` получаются незагруппированный кандидат
`[0]` и группа с заголовком `2`, кандидатом `[4]` и строкой с меткой `30` под
порядковым номером `[3]`. Все номера начинаются с нуля и отсчитываются по общей
Control-таблице, а не по ключам устройств или записям CTLD.
Полная загрузка Rust сохраняет это начальное состояние рядом с подготовленными
Control-таблицами по исходному TMA ID и `ObjectHandle`. Если таблица недоступна,
проекция сохраняет причину ошибки; доступная пустая таблица означает пустую
группировку. При предварительном просмотре список группировок не создаётся. Здесь
разбирается только подготовленный порядок текущих Control-дескрипторов. Проекция
не устанавливает, когда список присоединяется к живому Behavior, как он затем
обновляется и как работает полный игровой цикл.
Список распределителя хранит не только участников, но и долю каждого. При
добавлении двух объектов оба получают по половине общего веса. Если добавить
третий, движок оставляет долю новой записи около одной трети, а оставшийся вес