diff options
Diffstat (limited to 'docs/tomes/02-architecture.md')
| -rw-r--r-- | docs/tomes/02-architecture.md | 17 |
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 связывает игровые объекты, события, время, ввод, камеру, сетевые |
