From cc5c6414ce68e93a9b7f3c95cc07e9120b400fc1 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Thu, 29 Oct 2026 21:20:45 +0400 Subject: feat(runtime): project native Control object classes --- docs/tomes/06-behavior.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'docs/tomes/06-behavior.md') 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 -- cgit v1.2.3