Give the Cesium camera port its user camera controls

camera.controls now maps the contract's CameraControls onto the scene's
ScreenSpaceCameraController: the enable flags, zoom distances, zoom
factor, coast as Cesium inertia (decay seconds, 0 for no coast), the
collision switch, the tilt limit as the upper end of pitchRange, and the
zoom bindings by name. suspend and enabled use the scene's shared input
holds, so they count with the input port's and the dispatcher's.

A follow's zoom hold now composes with the settings: minDistance and
coast.zoom read and set what the follow gives back, a higher floor takes
effect at once, and a follow never lengthens a shorter zoom coast.

The ctrl+wheel binding check reuses the controls' binding helpers, and
the controls checks run in the Cesium conformance set, the settings one
in Node as well.
This commit is contained in:
Sameh Khamis committed 2026-11-06 17:26:03 -08:00
1 parent c6bab5dcaa
commit 96bc73181b
13 files changed
+574 -36

No files matched your search

+33
View File
@@ -9,6 +9,7 @@
"src/data/infrastructure.js",
"src/data/localGeojsonCore.js",
"src/render/cesium/camera.js",
"src/render/cesium/cameraControls.js",
"src/render/cesium/credits.js",
"src/render/creditMarkup.js",
"src/render/cesium/follow.js",
@@ -871,6 +872,7 @@
"src/ui/cockpitRollingValue.js",
"src/ui/cockpitCamera.js",
"src/render/cesium/camera.js",
"src/render/cesium/cameraControls.js",
"src/render/cesium/credits.js",
"src/render/creditMarkup.js",
"src/render/cesium/follow.js",
@@ -1003,6 +1005,7 @@
"src/render/cesium/effects.js",
"src/data/followed.js",
"src/render/cesium/camera.js",
"src/render/cesium/cameraControls.js",
"src/render/cesium/credits.js",
"src/render/creditMarkup.js",
"src/render/cesium/follow.js",
@@ -1271,6 +1274,7 @@
"src/scenes/director.js",
"src/data/followed.js",
"src/render/cesium/camera.js",
"src/render/cesium/cameraControls.js",
"src/render/cesium/credits.js",
"src/render/creditMarkup.js",
"src/data/entityRecords.js",
@@ -1415,6 +1419,7 @@
"src/layers/flights/policy.js",
"src/layers/flights/queries.js",
"src/render/cesium/camera.js",
"src/render/cesium/cameraControls.js",
"src/render/cesium/credits.js",
"src/render/creditMarkup.js",
"src/data/followed.js",
@@ -1508,6 +1513,7 @@
"src/layers/military/policy.js",
"src/layers/military/queries.js",
"src/render/cesium/camera.js",
"src/render/cesium/cameraControls.js",
"src/render/cesium/credits.js",
"src/render/creditMarkup.js",
"src/geo/index.js",
@@ -1657,6 +1663,7 @@
"src/render/rendererOf.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/cesium/cameraControls.js",
"src/render/input/router.js"
],
"external": ["cesium"]
@@ -1752,6 +1759,7 @@
"src/render/cesium/common.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/cesium/cameraControls.js",
"src/render/input/router.js"
],
"external": ["cesium"]
@@ -1780,6 +1788,7 @@
"src/layers/satellites/testing.js",
"src/layers/satellites/tracking.js",
"src/render/cesium/camera.js",
"src/render/cesium/cameraControls.js",
"src/render/cesium/credits.js",
"src/render/creditMarkup.js",
"src/data/inputOwnership.js",
@@ -1828,6 +1837,7 @@
"src/layers/launches/controls.js",
"src/layers/launches/index.js",
"src/render/cesium/camera.js",
"src/render/cesium/cameraControls.js",
"src/render/cesium/credits.js",
"src/render/creditMarkup.js",
"src/data/entityRecords.js",
@@ -1894,6 +1904,7 @@
"src/data/installationNames.js",
"src/layers/installations/controls.js",
"src/render/cesium/camera.js",
"src/render/cesium/cameraControls.js",
"src/render/cesium/credits.js",
"src/render/creditMarkup.js",
"src/render/cesium/follow.js",
@@ -1977,6 +1988,8 @@
"src/layers/awareness/dependencies.js",
"src/layers/awareness/focus.js",
"src/render/cesium/camera.js",
"src/render/cesium/cameraControls.js",
"src/render/cesium/cameraInput.js",
"src/render/cesium/credits.js",
"src/render/creditMarkup.js",
"src/render/cesium/follow.js",
@@ -2126,6 +2139,7 @@
"src/render/cesium/common.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/cesium/cameraControls.js",
"src/render/input/router.js",
"src/queries/heights.js"
],
@@ -2164,6 +2178,7 @@
"src/layers/cctv/modelSpecs.js",
"src/layers/cctv/navigation.js",
"src/render/cesium/camera.js",
"src/render/cesium/cameraControls.js",
"src/render/cesium/credits.js",
"src/render/creditMarkup.js",
"src/render/cesium/follow.js",
@@ -2239,6 +2254,7 @@
"src/layers/streetLevel/viewerHost.js",
"src/layers/streetLevel/cameraFraming.js",
"src/render/cesium/camera.js",
"src/render/cesium/cameraControls.js",
"src/render/cesium/follow.js",
"src/render/rendererOf.js",
"src/render/camera/events.js",
@@ -2328,6 +2344,7 @@
"src/layers/alpr/policy.js",
"src/layers/alpr/presentation.js",
"src/render/cesium/camera.js",
"src/render/cesium/cameraControls.js",
"src/render/cesium/credits.js",
"src/render/creditMarkup.js",
"src/render/cesium/follow.js",
@@ -2403,6 +2420,7 @@
"src/layers/radio/navigation.js",
"src/data/followed.js",
"src/render/cesium/camera.js",
"src/render/cesium/cameraControls.js",
"src/render/cesium/credits.js",
"src/render/creditMarkup.js",
"src/data/entityRecords.js",
@@ -2463,6 +2481,7 @@
"src/geo/index.js",
"src/layers/submarineCables/interaction.js",
"src/render/cesium/camera.js",
"src/render/cesium/cameraControls.js",
"src/render/cesium/credits.js",
"src/render/creditMarkup.js",
"src/render/cesium/follow.js",
@@ -2548,7 +2567,9 @@
"src/maps/catalog.js",
"src/maps/controller.js",
"src/render/cesium/credits.js",
"src/render/cesium/cameraInput.js",
"src/render/cesium/camera.js",
"src/render/cesium/cameraControls.js",
"src/render/camera/events.js",
"src/geo/celestial.js",
"src/geo/quaternion.js",
@@ -2765,6 +2786,7 @@
"src/render/cesium/effects.js",
"src/render/cesium/common.js",
"src/render/cesium/camera.js",
"src/render/cesium/cameraControls.js",
"src/render/cesium/follow.js",
"src/render/camera/events.js",
"src/render/contract/index.js",
@@ -3740,6 +3762,7 @@
"src/data/bhoteKoshiEmbeddedMedia.js",
"src/data/bhoteKoshiLocator.js",
"src/render/cesium/camera.js",
"src/render/cesium/cameraControls.js",
"src/render/cesium/follow.js",
"src/data/bhoteKoshiIncidentPlaces.js",
"src/data/bhoteKoshiFloodPath.js",
@@ -4388,6 +4411,8 @@
"src/layers/firms/anchors.js",
"src/locations.js",
"src/render/cesium/camera.js",
"src/render/cesium/cameraControls.js",
"src/render/cesium/cameraInput.js",
"src/render/cesium/credits.js",
"src/render/creditMarkup.js",
"src/data/entityRecords.js",
@@ -4473,6 +4498,7 @@
"src/render/cesium/common.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/cesium/cameraControls.js",
"src/render/input/router.js",
"src/input/sensorPick.js",
"src/styles/styleStages.js",
@@ -4494,6 +4520,8 @@
"src/geo/index.js",
"src/ui/navigationController.js",
"src/render/cesium/camera.js",
"src/render/cesium/cameraControls.js",
"src/render/cesium/cameraInput.js",
"src/render/cesium/credits.js",
"src/render/creditMarkup.js",
"src/data/followed.js",
@@ -4760,6 +4788,7 @@
"src/render/cesium/internals.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/cesium/cameraControls.js",
"src/render/input/router.js"
],
"external": ["cesium"]
@@ -5022,6 +5051,7 @@
"src/cyberSonar.js",
"src/celestialRing.js",
"src/render/cesium/camera.js",
"src/render/cesium/cameraControls.js",
"src/render/cesium/credits.js",
"src/render/creditMarkup.js",
"src/render/cesium/follow.js",
@@ -5174,6 +5204,7 @@
"src/render/cesium/common.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/cesium/cameraControls.js",
"src/render/input/router.js",
"src/queries/heights.js",
"src/render/cesium/internals.js"
@@ -5250,6 +5281,7 @@
"src/render/cesium/internals.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/cesium/cameraControls.js",
"src/render/input/router.js"
],
"external": ["cesium"]
@@ -5361,6 +5393,7 @@
"src/data/entityRecords.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/cesium/cameraControls.js",
"src/render/input/router.js",
"src/queries/heights.js"
],