aboutsummaryrefslogtreecommitdiff
path: root/docs/tomes
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-10-29 16:08:08 +0300
committerValentin Popov <valentin@popov.link>2026-10-29 16:08:08 +0300
commit6eb1dcaf7036e4e1702de15d0dd02181a3577852 (patch)
treeab0e2969e599227810e4de670f5cd1cf4b6729f7 /docs/tomes
parentacdf635ffb3868eee4fa383303cac75fdeea8e23 (diff)
downloadfparkan-6eb1dcaf7036e4e1702de15d0dd02181a3577852.tar.xz
fparkan-6eb1dcaf7036e4e1702de15d0dd02181a3577852.zip
feat(runtime): publish provider values into model node state
Diffstat (limited to 'docs/tomes')
-rw-r--r--docs/tomes/02-architecture.md4
-rw-r--r--docs/tomes/06-behavior.md19
2 files changed, 18 insertions, 5 deletions
diff --git a/docs/tomes/02-architecture.md b/docs/tomes/02-architecture.md
index 1eaedc7..67dc93d 100644
--- a/docs/tomes/02-architecture.md
+++ b/docs/tomes/02-architecture.md
@@ -362,8 +362,8 @@ CollObject, Control и PhysicalModel, пропуская отсутствующÐ
[техническом разборе](../appendices/script-vm.md#доставка-игровых-часов-в-control).
Статическая цепочка ещё не доказывает исполнение активного Control update на
миссии. Rust сохраняет исходные и текущие provider-поля отдельно. Прямой delta
-API меняет строку и возвращает публикацию узла, но описанный clock/budget-путь
-пока не подключён.
+API меняет строку и значение соответствующего CPU-узла модели, но описанный
+clock/budget-путь и вывод этого состояния в окно пока не подключены.
В текущем runtime `step_headless` и `frame` получают время очереди явным
аргументом `u32`. По нему запускается представленный ресурсный планировщик
diff --git a/docs/tomes/06-behavior.md b/docs/tomes/06-behavior.md
index aa2fa09..6e8d9b1 100644
--- a/docs/tomes/06-behavior.md
+++ b/docs/tomes/06-behavior.md
@@ -945,9 +945,22 @@ let ratio = amount / maximum;
Это три отдельные операции над `f32`, с проверкой поддерживаемого численного
диапазона до записи состояния. Исходные `initial_*` поля сохраняются;
`processed_amount_bits` тоже не меняется, поскольку его обновляет другой
-нативный проход — пересчёт стадий. API возвращает обязательную публикацию
-`ControlNodeProviderPublication` для узла и selector `0x200`; сам callback
-AniMesh и пересчёт стадий этим API не исполняются. Истощение корня либо узла
+нативный проход — пересчёт стадий. Публикация selector `0x200` теперь применяется
+к CPU-состоянию соответствующего узла модели. Результат
+`ControlNodeProviderPublication` описывает уже выполненную запись. Пересчёт
+стадий и вывод изменённой модели в окно этим API ещё не запускаются.
+
+У AniMesh есть собственное поле значения узла, отдельное от доли Control.
+Конструктор `AniMesh.dll+0x123e0` начинает его с `1.0`, а видимую стадию — с
+`0`. Callback `+0x5750` при selector `0x200` записывает число в поле `+0x124`
+строки модели с шагом `0x130`, не меняя её стадию `+0x1c` и соседние узлы.
+Native oracle соединяет исходные `Control+0x10f30` и `AniMesh+0x5750`; между
+ними стоит только запись диагностической трассы. Прямая добавка `20` к
+количеству `40` из максимума `100` записывает `0.6` и в provider, и в узел
+модели. Эти поля нельзя объединять: наследование родительской доли в отдельном
+стадийном проходе меняет provider, не повторяя callback `0x200`.
+В Rust `mesh_state` хранит это отдельное значение и видимую стадию;
+неразрешённый узел прерывает изменение до записи остальных полей. Истощение корня либо узла
с критическим флагом `1` пока возвращает ошибку без изменения состояния:
эта ветвь требует полного lifecycle объекта, а не только нового количества.