refactor(camera): use the globe engine

The startup fly-in, orbit, world-target focus, the arrival ground guard,
arrival ownership, camera sensitivity claims, landmark/viewport/globe
flights and place search (with its view bias and near-view recovery) take
the globe engine. Callers that still hold a viewer (voice, layers until
phase 1c) reach the same engine through engineFromViewer, and arrival
ownership is keyed by the engine whichever one a caller names.

The ground guard yields on camera.commanded instead of patching the
viewer camera itself; on Cesium that event hooks the same command methods
and tracking changes, so direct Cesium callers still end it. Landmark
framing reads the frustum fov from the pose's fovy and aspectRatio.

Tests that built viewer doubles now run on the fake engine (or on the
Cesium engine over the same double), with the same expectations.
This commit is contained in:
German Khokhlov committed 2026-10-15 19:47:43 +04:00
1 parent a3e929870d
commit 16e63f4c50
19 files changed
+601 -215

No files matched your search

+12 -1
View File
@@ -550,6 +550,7 @@
"ui-shell": {
"exports": ["./ui/shell"],
"modules": [
"src/globe/cesium/engineFromViewer.js",
"src/globe/contract.js",
"src/hudLayouts.js",
"src/hudLayoutPolicy.js",
@@ -758,6 +759,8 @@
"scenes": {
"exports": ["./scenes"],
"modules": [
"src/globe/cesium/engineFromViewer.js",
"src/globe/contract.js",
"src/scenes/nepalEvidencePack.js",
"src/data/bhoteKoshiIncidentPlaces.js",
"src/data/bhoteKoshiShotPaths.js",
@@ -3087,6 +3090,7 @@
"application-operations": {
"exports": ["./application/operations"],
"modules": [
"src/globe/cesium/engineFromViewer.js",
"src/globe/cesium/credits.js",
"src/services/groundSnap.js",
"src/globe/contract.js",
@@ -3164,12 +3168,19 @@
},
"layer-lifecycle": {
"exports": ["./data/lifecycle"],
"modules": ["src/data/lifecycle.js", "src/data/cameraArrival.js"],
"modules": [
"src/globe/cesium/engineFromViewer.js",
"src/globe/contract.js",
"src/data/lifecycle.js",
"src/data/cameraArrival.js"
],
"external": []
},
"ui-navigation": {
"exports": ["./ui/navigation"],
"modules": [
"src/globe/cesium/engineFromViewer.js",
"src/globe/contract.js",
"src/navigationPolicy.js",
"src/ui/navigationController.js",
"src/app/stateChannel.js",