feat(fx): track phase and restart per effect instance
Docs Deploy / Build and Deploy MkDocs (push) Successful in 38s
Docs Deploy / Build and Deploy MkDocs (push) Successful in 38s
This commit is contained in:
7 files changed
+379
-152
No files matched your search
+15
-1
@@ -740,6 +740,19 @@ struct FxHeader60 {
|
||||
локальную точку опоры, scale -- базовый масштаб экземпляра. Unknown flags и
|
||||
settings ID сохраняются.
|
||||
|
||||
У каждого экземпляра эффекта есть своё начало отсчёта. Например, эффект
|
||||
длительностью четыре секунды, созданный на 135-й секунде, на 137-й находится
|
||||
в середине цикла: `(137 − 135) / 4 = 0,5`. Режим может идти вперёд,
|
||||
повторяться, идти назад или сохранять постоянную фазу. Вызывающий код может
|
||||
сменить режим экземпляра, не меняя документ. Запрос перезапуска ждёт конца
|
||||
текущего цикла и начинает новый при следующем обновлении.
|
||||
|
||||
Эти правила реализованы в `fparkan-fx::clock`. Приложение передаёт одну фазу
|
||||
геометрии, свету и звуку одной Control-строки; повторная отправка кадра не
|
||||
пересчитывает её и не расходует случайные числа повторно. В статической сцене
|
||||
все экземпляры пока рождаются в момент ноль. Управляющие команды Control и
|
||||
очередь обновления с шагом 50 миллисекунд остаются задачами игрового цикла.
|
||||
|
||||
Каждая команда начинается с `uint32_t command_word`:
|
||||
|
||||
```text
|
||||
@@ -867,7 +880,8 @@ Effect renderer подавляет header bit `0x800` только при
|
||||
render selector 0. Native AniMesh component path захвачен с selector 1, а в
|
||||
его 53-entry manager присутствуют FX entries с header `0xD00`; preview
|
||||
использует selector 1 и пропускает такие visual commands. Изменения manager
|
||||
`A8`, которые задают runtime phase/header gate, пока не моделируются. Header
|
||||
`A8`, которые задают runtime phase/header gate, пока заменены нулём с явным
|
||||
счётчиком `control_fx_manager_flag_stub`. Header
|
||||
bit `0x10` относится к activation lifecycle и не выключает draw.
|
||||
|
||||
Для visual effect renderer использует MAT0, указанный самой командой. Его
|
||||
|
||||
Reference in new issue
Block a user