feat(runtime): update live Control provider amounts
Docs Deploy / Build and Deploy MkDocs (push) Successful in 37s

This commit is contained in:
Valentin Popov committed 2026-10-29 16:55:09 +04:00
1 parent f35c9ec1f0
commit acdf635ffb
6 files changed
+522 -34

No files matched your search

+16 -10
View File
@@ -334,21 +334,27 @@ sidecar недоступен, запрос `0xe00` сообщает это от
проецируются из AniMesh по глобальному ordinal; точные правила, native ABI
векторы и лицензированная root/`EXTO` fixture описаны в
[техническом подразделе](script-vm.md#начальная-msh-часть-строки-provider).
Проверки подтверждают только начальный снимок: сборка runtime parent-ов
MSH-часть проверки подтверждает начальный снимок: сборка runtime parent-ов
остаётся статическим выводом по RVA `AniMesh.dll+0xa460`, а последующие
изменения в полном Control/animation tick-е не проверялись.
Для provider-строки Rust также хранит одно `initial_amount_bits`. Нативный
`Control.dll` `FUN_1000f940` (RVA `0xf940`) кладёт результат selector `3` в
текущее и обработанное значения строки; при подтверждённых единичных множителях
это raw `max_volume` NDP. Последующее обновление меняет оба native поля, поэтому
снимок не моделирует вместимость или изменяемый Control amount.
Для provider-строки Rust сохраняет исходные и текущие amount/type-1 поля
отдельно, а `processed_amount_bits` соответствует native `+0x0c`. Инициализатор
`Control.dll+0xf940` кладёт результат selector `3` в текущее и обработанное
количество; при подтверждённых единичных множителях это raw `max_volume` NDP.
Прямой API `apply_loaded_mission_control_node_delta` меняет amount, долю, флаг
истощения, aggregate и dirty, возвращая обязательную публикацию `0x200` для
узла. Он пока не доставляет её в AniMesh и не выполняет пересчёт стадий,
видимости, FX или время Control. Поэтому обработанное количество остаётся
прежним. Гибель root/critical узла и неизвестные flags/aggregate дают явную
ошибку до записи; неподдержанные численные диапазоны тоже отклоняются.
Rust query обращается к загруженному объекту и поддерживает `0xe00` только для
текущего descriptor tag `26` с factory tag `26`; другие активные typed tags и
factory paths остаются явными границами. Этот запрос возвращает начальный
type-1 provider value (`1.0`); дальнейшее изменение provider amount в Rust не
реализовано.
factory paths остаются явными границами. Запрос читает текущее type-1 значение.
Licensed `min_l_n1.dat` подтверждает изменение `0xe00` и Behavior `0x1002` с
`1.0` до `0.5` после явного уменьшения количества вдвое; это ещё не
автоматический бюджетный цикл.
Native oracle проверил изолированные пути распределения, обновления класса `4`,
стадийную арифметику `0x11220`, обход дочерних provider-строк `0x11130` и
visibility transition `0x11920` с исходными AniMesh callbacks. Отдельный
@@ -389,7 +395,7 @@ World3D RVA `0x6bf0` вычисляет часы из `timeGetTime()` с игр
RVA `0xbcf0` для остальных. Это подтверждает статическую цепочку вызовов, но не
её исполнение на миссии: связывание интерфейсов, активация устройств и shapes,
остальные ветви `0xbcf0` и
изменение provider-снимков Rust остаются открытыми. Источник контактного коэффициента прослежен статически,
автоматическое изменение provider через clock и бюджет Rust остаются открытыми. Источник контактного коэффициента прослежен статически,
но не исполнен. Подробные векторы и статические границы приведены в
[техническом подразделе о provider-состоянии Control](script-vm.md#изменение-provider-состояния-control).