Hand features the engine instead of guessing it from a viewer

No code outside src/globe calls isGlobeEngine or engineFromViewer any
more (14 calls left before this). The features that still sniffed take
the engine from their caller:

- Projection and surface helpers (focus de-emphasis, icon orientation,
  ground snap, the mesh floor sampler, ground picks) take the engine; the
  engine view's scene carries its projector instead of registering itself
  as a viewer.
- Credits go only through engine.credits, so annotations and layers
  share one OSM credit state on Cesium too (it could show twice).
- The annotation board and the resolver work on the engine: camera
  assists, visibility and picks go through engine.camera,
  engine.projector and src/geo, without Cesium.
- The Recent Imagery box tool has one implementation for both engines,
  on capture-phase canvas pointer events with the layer's engine.ground
  preview; the Navara copy goes. On Cesium the preview outline is solid
  now, as on Navara.
- Scene interactions take the engine, and the render governor has an
  engine variant beside the Cesium one.

Remaining engine-specific features stay behind explicit seams until the
contract covers them: the draw tool's Cesium surface (stock click actions
cannot be suspended), the annotation drapes (animated materials), share
follow, Cesium post effects and cyber sonar, and data packs (meshes).

Coupling: Cesium-importing files fall from 31 to 27, `viewer` lines
from 1367 to 1234, engine sniffing calls from 14 to 0.
This commit is contained in:
German Khokhlov committed 2026-11-07 08:46:30 +04:00
1 parent 406dd9122e
commit f1ec9d4a22
61 files changed
+823 -1230

No files matched your search

+6 -6
View File
@@ -2,15 +2,15 @@
"metrics": {
"cesiumLayerRendererLines": 330,
"navaraLayerRendererLines": 2304,
"cesiumImportFiles": 31,
"viewerLines": 1367,
"navaraKindChecks": 6,
"engineSniffCalls": 14,
"cesiumImportFiles": 27,
"viewerLines": 1234,
"navaraKindChecks": 5,
"engineSniffCalls": 0,
"engineExtensionReads": 12,
"groundEffectPasses": 3,
"cesiumSdkLoads": 4,
"screenSpaceHandlerFiles": 4,
"engineNameLines": 78
"engineNameLines": 73
},
"measuredAt": "after engine.imagery with FIRMS heat and Recent Imagery on it, 2026-11-07"
"measuredAt": "after the phase 7 feature moves, 2026-11-07"
}