feat(runtime): add terrain-snapped reference movement
This commit is contained in:
@@ -290,6 +290,30 @@ Control получает world-interface Terrain и использует пов
|
||||
последовательности, а интеграция использует одну политику `dt` и округления.
|
||||
Иначе одинаковая миссия постепенно расходится даже без сети.
|
||||
|
||||
#### Reference controller в текущем runtime
|
||||
|
||||
`fparkan-runtime::advance_reference_movement` — намеренно маленький
|
||||
детерминированный мост между сохранённым mission transform и `TerrainWorld`.
|
||||
Он получает `OriginalObjectId`, явную XY-цель и положительный максимум шага,
|
||||
находит только live/registered object по исходному ID, двигает XY не более чем
|
||||
на этот шаг и записывает высоту из `TerrainWorld::height_at`. Orientation и
|
||||
scale остаются исходными IEEE-754 words; функция не изменяет clock, очередь
|
||||
World3D или animation state. Возвращаемое значение означает достижение именно
|
||||
заданной XY-цели.
|
||||
|
||||
Это **не** восстановленный Control, Behavior или navigation controller:
|
||||
функция не строит маршрут, не использует `dt`, скорость, terrain normal,
|
||||
коллизии, acceleration и оригинальные AI decisions. Она существует как
|
||||
проверяемый reference path, который фиксирует границу будущих controller-ов и
|
||||
не позволяет renderer-у или gameplay обходить terrain query. Non-finite input,
|
||||
неположительный шаг, отсутствующая миссия/объект и XY вне поверхности дают
|
||||
явную ошибку без частичного изменения transform.
|
||||
|
||||
Licensed test на GOG `Autodemo.00` запускает этот путь для live mission object,
|
||||
находит существующую поверхность и проверяет точные XY/Z words после snap. Это
|
||||
доказывает связывание current runtime data, но не доказывает семантику
|
||||
оригинального движения.
|
||||
|
||||
### Различия Control в Части 2
|
||||
|
||||
`Control.dll` пересобрана при неизменных размере, imports и пяти именах/ordinals
|
||||
|
||||
Reference in New Issue
Block a user