diff options
Diffstat (limited to 'docs/tomes/06-behavior.md')
| -rw-r--r-- | docs/tomes/06-behavior.md | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/docs/tomes/06-behavior.md b/docs/tomes/06-behavior.md index 2eea626..0ebbbf7 100644 --- a/docs/tomes/06-behavior.md +++ b/docs/tomes/06-behavior.md @@ -897,6 +897,23 @@ row `1` в общей позиции `22` со значением `6000.0`. даёт `[14, 28, 10]`. При вычитании последовательный способ начинает с последней строки. Так одна таблица описывает и текущее значение, и то, как оно меняется. +У строк есть и связи с родительскими узлами. Когда стадия родителя меняется, +Control пересчитывает дочерние строки в глубину: ребёнка вместе со всем его +поддеревом, затем следующего ребёнка. Для числа вариантов `count` внутренняя +стадия вычисляется как `count - ceil(f32(count * ratio))`, а видимое значение +ограничивается диапазоном модели. Например, при трёх стадиях доли +`[0.1, 0.4, 0.5, 1, 0]` дали `[2, 1, 1, 0, 3]`; последнее значение — sentinel +истощения, а в модель передаётся индекс не выше `count - 1`. Нативные проверки +подтвердили порядок обхода и передачу состояния в AniMesh. + +Выбранная стадия также задаёт, какие данные MSH попадают в пересчёт видимости. +У одного синтетического узла первый слот давал `[42, 330]`, а слот другой стадии — +`[102, 570]`. В проверенных векторах одинаковые данные при скрытии и повторном +включении восстановили суммы; переходы с разными слотами — нет. Эти проверки +исполняют исходные DLL на тестовых строках, но не являются запуском Control на +полной миссии; Rust пока сохраняет только начальное состояние provider-строк. +Подробные границы приведены в [техническом приложении](../appendices/script-vm.md#родители-стадии-и-видимость-provider-узлов). + Для точного повтора важен порядок округления. При исходных значениях `[2^24, 2]` и запросе `-1` оригинал сначала складывает общий итог с изменением, затем вычитает прежний итог. Из-за округления фактическое изменение получается `-2`. |
