aboutsummaryrefslogtreecommitdiff
path: root/docs/tomes
diff options
context:
space:
mode:
Diffstat (limited to 'docs/tomes')
-rw-r--r--docs/tomes/02-architecture.md17
1 files changed, 17 insertions, 0 deletions
diff --git a/docs/tomes/02-architecture.md b/docs/tomes/02-architecture.md
index b44bd51..0d0ea11 100644
--- a/docs/tomes/02-architecture.md
+++ b/docs/tomes/02-architecture.md
@@ -346,6 +346,23 @@ end-of-render callbacks. Эти callbacks позволяют объектам б
изменит движение, камеру и сценарные таймеры. Подробности render item и рисков
кадровой совместимости вынесены в справочник [Render frame](../reference/render-frame.md).
+У исходного Control источник времени прослежен статически до World3D.
+World3D берёт миллисекунды `timeGetTime()`, учитывает игровое смещение и паузу,
+затем передаёт младшие 32 бита результата всем объектам в событии `6/1`.
+После этого следуют шаг мировой физики и второй обход объектов с событием
+`6/0x1c`; они получают то же значение часов. Поэтому порядок обновлений имеет
+значение даже тогда, когда все участники видят одинаковое время.
+
+Объект AniMesh передаёт первое событие последовательно в Behavior, Wizard,
+CollObject, Control и PhysicalModel, пропуская отсутствующие интерфейсы, а затем
+ещё раз в CollObject с подсобытием `0x1c`. Control численно преобразует
+беззнаковые миллисекунды в `f32` и выбирает обработчик по классу объекта.
+Это абсолютные часы: длительность шага обработчик вычисляет из сохранённых
+значений сам. Таблицы, адреса и различие путей классов приведены в
+[техническом разборе](../appendices/script-vm.md#доставка-игровых-часов-в-control).
+Статическая цепочка ещё не доказывает исполнение активного Control update на
+миссии. Rust пока сохраняет начальные provider-снимки и не изменяет их этим путём.
+
## World3D
World3D связывает игровые объекты, события, время, ввод, камеру, сетевые