diff options
| author | Valentin Popov <valentin@popov.link> | 2026-10-29 16:08:08 +0300 |
|---|---|---|
| committer | Valentin Popov <valentin@popov.link> | 2026-10-29 16:08:08 +0300 |
| commit | 6eb1dcaf7036e4e1702de15d0dd02181a3577852 (patch) | |
| tree | ab0e2969e599227810e4de670f5cd1cf4b6729f7 /docs/tomes/06-behavior.md | |
| parent | acdf635ffb3868eee4fa383303cac75fdeea8e23 (diff) | |
| download | fparkan-6eb1dcaf7036e4e1702de15d0dd02181a3577852.tar.xz fparkan-6eb1dcaf7036e4e1702de15d0dd02181a3577852.zip | |
feat(runtime): publish provider values into model node state
Diffstat (limited to 'docs/tomes/06-behavior.md')
| -rw-r--r-- | docs/tomes/06-behavior.md | 19 |
1 files changed, 16 insertions, 3 deletions
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 объекта, а не только нового количества. |
