Draw CCTV and data packs through engine.meshes

Add indexed world triangles to the required globe contract on Cesium,
Navara and the fake engine. Own geometry, textures, visibility, depth tests,
pick identities and teardown inside each engine. Reused canvas images
request another frame until their new pixels upload. Move obstruction rays
and owned mesh, line and mover exclusions into the Cesium surface adapter.

Draw CCTV monitor planes and viewshed volumes through shared mesh handles.
Draw data-pack points, straight lines, raised polygons, image rectangles
and media captions through movers, lines and meshes. Delete the feature
renderers for each engine and retain decoded assets across scene rebinds.
Register the modules, dependency, format scope and reduced coupling baseline.

Cesium is the reference for geometry, colours, image placement, marker sizes,
caption offsets, picking and resource ownership. Navara now uses straight
pack lines and per-position polygon heights without edge densification.
Navara meshes draw in the transparent pass after the effects, with the
scene-depth test and the view's exposure undone, as the pack meshes did:
in the scene pass the landscape look's exposure washed a red pack image to
white. The scene-depth helper moves into the Navara engine, and the stems
helper that only its test still used is deleted. The mesh picker takes the
globe when Navara's depth read answers with the camera itself, which it
does right after another click and which hid a polygon from a quick second
click. The 256 px media caption is not pickable: its transparent square took
clicks meant for nearby pack features, and no action targets it. Annotation drapes remain on their existing
renderers because bounded building classification, animated fills and wire
cages need a separate contract extension to preserve Cesium behaviour.

Coupling falls from 344 to 210 Cesium layer-renderer lines, 1294 to 794 Navara
layer-renderer lines, 9 to 7 external Cesium import files, 1026 to 1005 viewer
lines, 9 to 6 extension reads and 42 to 39 engine-name lines. Other counts do
not grow. The full unit suite, import directions, package boundaries,
formatting and coupling checks pass. No user-visible strings change.

In the browser, keyless: the contract suite passes on Navara and on Cesium
apart from the camera-events check that also fails intermittently before
this change; CCTV v2 (58 checks), the CCTV and director engine switches pass,
with the pack image at the same pixel as before on both engines. The mesh
contract fixture now sits at 3 km, above the terrain Navara draws there. The
director interactions script starts at its view in the link so the app's
arrival flight no longer lands after the shot, and waits for the click's
asynchronous pick; its last step, the next-shot action, fails the same way
before this change.
This commit is contained in:
German Khokhlov committed 2026-11-07 13:57:29 +04:00
1 parent 3907b7084e
commit f4b83a3a31
57 files changed
+1891 -1588

No files matched your search

+18 -15
View File
@@ -1302,7 +1302,8 @@
"src/director/packs/manifest.js",
"src/scenes/dataPacks/controller.js",
"src/scenes/dataPacks/presentation.js",
"src/scenes/dataPacks/geometry.js",
"src/scenes/dataPacks/display.js",
"src/scenes/dataPacks/shapes.js",
"src/director/interactions/document.js",
"src/director/interactions/session.js",
"src/scenes/interactions.js",
@@ -1341,7 +1342,7 @@
"src/globe/contract.js",
"src/geo/"
],
"external": ["cesium", "vue", "pinia", "vue-i18n"]
"external": ["cesium", "vue", "pinia", "vue-i18n", "earcut"]
},
"live-observations": {
"exports": ["./sources/live"],
@@ -3150,7 +3151,8 @@
"src/director/packs/manifest.js",
"src/scenes/dataPacks/controller.js",
"src/scenes/dataPacks/presentation.js",
"src/scenes/dataPacks/geometry.js",
"src/scenes/dataPacks/display.js",
"src/scenes/dataPacks/shapes.js",
"src/director/interactions/document.js",
"src/director/interactions/session.js",
"src/scenes/interactions.js",
@@ -3456,10 +3458,7 @@
"src/celestialRing/view.js",
"src/layers/shared/render/navaraPolygons.js",
"src/layers/awareness/render/navaraPulses.js",
"src/layers/shared/render/navaraStems.js",
"src/layers/shared/render/navaraSceneDepth.js",
"src/scenes/dataPacks/navara.js",
"src/scenes/dataPacks/navaraGeometry.js",
"src/globe/navara/sceneDepth.js",
"src/layers/shared/render/navaraStory.js",
"src/layers/wind/render/flowMesh.js",
"src/layers/shared/render/navaraGroundPicks.js",
@@ -3469,7 +3468,6 @@
"src/layers/firms/rectangle.js",
"src/layers/shared/render/navaraMoverBank.js",
"src/layers/shared/render/moverBank.js",
"src/layers/cctv/render/navaraMeshes.js",
"src/layers/radio/screenClusters.js",
"src/layers/shared/render/imageAtlas.js",
"src/layers/shared/render/navaraGroundSurface.js",
@@ -3538,7 +3536,6 @@
"src/globe/navara/ground/pass.js",
"src/globe/navara/ground/pack.js",
"src/globe/navara/ground/index.js",
"src/layers/cctv/render/cesiumMeshes.js",
"src/layers/cctv/render/meshes.js",
"src/layers/cctv/render/display.js",
"src/layers/cctv/worldClick.js",
@@ -3579,7 +3576,10 @@
"src/globe/cesium/postStages.js",
"src/data/geoImportRecords.js",
"src/data/geoImportKml.js",
"src/data/geoImportDisplay.js"
"src/data/geoImportDisplay.js",
"src/globe/cesium/meshes.js",
"src/globe/meshes.js",
"src/globe/navara/meshes.js"
],
"external": [
"hls.js",
@@ -3598,7 +3598,8 @@
"@navaramap/three",
"@navaramap/three-default-plugin",
"three",
"postprocessing"
"postprocessing",
"earcut"
]
},
"application-catalog": {
@@ -4289,7 +4290,6 @@
"src/layers/radio/render/display.js",
"src/layers/transit/render/style.js",
"src/layers/cctv/render/style.js",
"src/layers/cctv/render/cesiumMeshes.js",
"src/layers/cctv/render/meshes.js",
"src/layers/cctv/render/display.js",
"src/layers/cctv/worldClick.js",
@@ -4322,7 +4322,6 @@
"src/layers/wind/render/navaraFlow.js",
"src/layers/bhoteKoshi/render/display.js",
"src/layers/shared/render/navaraStory.js",
"src/layers/cctv/render/navaraMeshes.js",
"src/layers/shared/render/navaraGroundSurface.js",
"src/layers/wind/render/flowMesh.js",
"src/layers/shared/render/navaraGroundEffect.js",
@@ -4338,7 +4337,9 @@
"src/styles/noir.js",
"src/data/geoImportRecords.js",
"src/data/geoImportKml.js",
"src/data/geoImportDisplay.js"
"src/data/geoImportDisplay.js",
"src/globe/cesium/meshes.js",
"src/globe/meshes.js"
],
"external": [
"hls.js",
@@ -5100,7 +5101,9 @@
"src/styles/surveillance.js",
"src/styles/thermal.js",
"src/styles/anime.js",
"src/styles/noir.js"
"src/styles/noir.js",
"src/globe/cesium/meshes.js",
"src/globe/meshes.js"
],
"external": ["cesium", "egm96-universal", "pbf"]
},