chore(render): report unexpanded ambient effects
Docs Deploy / Build and Deploy MkDocs (push) Successful in 40s

This commit is contained in:
Valentin Popov committed 2026-11-01 08:41:00 +04:00
1 parent 651f5e10a7
commit 6c603976d4
4 files changed
+64 -6

No files matched your search

+3
View File
@@ -90,6 +90,9 @@ Control Op1 пока использует цвет и радиус без слу
Control Op2 воспроизводит modes 0/2; modes 1/3, body+76 и неподдержанные
time modes/привязки считаются как `render_coverage control_op2_unsupported`.
Управление фазой экземпляра командами Control остаётся до его подключения в runtime.
При расширении выбранных начальных строк все пропущенные команды считаются
в `control_fx_unsupported`, а time modes 4–17 — в `control_fx_requires_game_state`;
причина и владелец выводятся в лог. Неразобранные FXID считаются отдельно в `control_fx_invalid_documents`.
Размеры команд, resource references, lifecycle, flags families и используемые
time modes известны. Не закрыто значение каждого поля body opcodes 1--10,
+9
View File
@@ -420,6 +420,15 @@ FX-команды используют общий preview clock и ограни
mode 0 оставляет фазу равной нулю, mode 1 вычисляет `elapsed / duration` без
зажатия, mode 2 повторяет цикл. Header flags `0x200` и `0x20` преобразуют эту
фазу; command path `0x8120` зажимает результат только после преобразований.
В [эталонной Effect.dll](original-binaries.md) RVA `0x5C60` режимы 4–17
читают состояние владельца или провайдера; режим 14 тоже входит в эту группу.
Пропуски при расширении выбранных начальных Control-строк учитываются по
командам: `control_fx_requires_game_state` для этих режимов и
`control_fx_unsupported` для остальных непреобразованных команд. Диагностика
сохраняет причину, ресурс, объект, компонент, строку и номер команды.
`control_fx_invalid_documents` отдельно считает неразобранные FXID, где число
команд неизвестно. Счётчики суммируются по компонентам миссии; они не заменяют
учёт ещё не выбранных Control-групп и условных строк в фазе G.
Effect renderer проверяет header bit `0x800` только при
render selector 0; native AniMesh component path был захвачен с selector 1,
поэтому preview использует selector 1 и не подавляет такие visual commands.