diff options
| author | Valentin Popov <valentin@popov.link> | 2026-10-29 20:20:45 +0300 |
|---|---|---|
| committer | Valentin Popov <valentin@popov.link> | 2026-10-29 20:20:45 +0300 |
| commit | cc5c6414ce68e93a9b7f3c95cc07e9120b400fc1 (patch) | |
| tree | 6932d76d4041901a31415d3412b66271a233f8e9 /docs/tomes/06-behavior.md | |
| parent | 6c079d9457fddf9927d3e2057463d95c502d4673 (diff) | |
| download | fparkan-cc5c6414ce68e93a9b7f3c95cc07e9120b400fc1.tar.xz fparkan-cc5c6414ce68e93a9b7f3c95cc07e9120b400fc1.zip | |
feat(runtime): project native Control object classes
Diffstat (limited to 'docs/tomes/06-behavior.md')
| -rw-r--r-- | docs/tomes/06-behavior.md | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/docs/tomes/06-behavior.md b/docs/tomes/06-behavior.md index 45a6303..68a35e6 100644 --- a/docs/tomes/06-behavior.md +++ b/docs/tomes/06-behavior.md @@ -662,6 +662,20 @@ parent ID через Control IID `0x202`, virtual slot `+0x44`, только еÑ исходный ключ `1` становится `22`. Этот ключ выбирает модельный узел, а не строку Control. Записи корня остаются в исходном виде. +#### Входной класс контроллера + +Таблица устройств и класс самого Control-контроллера выбираются разными +частями загрузки. У полного объекта из Unit DAT старший бит флагов корня решает, +каким путём создать host. В ветви с этим битом объект проходит через Terrain; +эта оболочка передаёт AniMesh native-класс Control `3`. Если бит не установлен, +класс выбирает FourCC записи корневого ресурса: `BTLU` даёт `4`, `BULL` — `9`, +`WPNS` — `2`, `STAT` — `10`, а неизвестный FourCC оставляет класс `0`. + +Например, `min_l_n1.dat` хранит флаги `0x80000004`, поэтому его проекция +получает класс `3`. Это аргумент конструктора Control, а не номер строки +устройства и не само по себе включение движения или обновлений. Техническая +цепочка и границы проверки описаны в [приложении](../appendices/script-vm.md#входной-класс-control-при-загрузке-unit-dat). + ### Как Control добавляет и переопределяет устройства В `Control.dll` (SHA-256 |
