aboutsummaryrefslogtreecommitdiff
path: root/docs/tomes/06-behavior.md
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-10-29 20:20:45 +0300
committerValentin Popov <valentin@popov.link>2026-10-29 20:20:45 +0300
commitcc5c6414ce68e93a9b7f3c95cc07e9120b400fc1 (patch)
tree6932d76d4041901a31415d3412b66271a233f8e9 /docs/tomes/06-behavior.md
parent6c079d9457fddf9927d3e2057463d95c502d4673 (diff)
downloadfparkan-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.md14
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