Draw movers and lines on Cesium and require them of every engine

Layers are to draw through the globe contract on both engines, so Cesium
gets back the movers and lines removed as unused:

- engine.movers draws sprite sets as a BillboardCollection (atlas cells
  cropped once per set), point sets as a PointPrimitiveCollection and
  model sets as one Model per instance. depthTest, disableWithinM, order,
  scaleByDistance, colorBlend, unlit and minimumPixelSize follow the
  contract; a model's matrix is written in place, so instances no longer
  share one scratch matrix.
- engine.lines draws each line as a polyline Primitive with width in CSS
  px, geodesic arcs, dashes, the tactical and arrow materials,
  depthFailAlpha and modelMatrix; a rebuild keeps its show, matrix,
  colour and place in order.
- The picker returns the pickId a layer wrote last, skips sets that are
  not pickable and instances behind the horizon, and falls through to
  what lies under them. Surface samples can exclude mover sets again.

movers and lines move from the optional capabilities into the required
contract shape, and the contract suite always runs their checks.
This commit is contained in:
German Khokhlov committed 2026-11-07 01:24:59 +04:00
1 parent 59a233db51
commit 2213be6566
19 files changed
+1758 -75

No files matched your search

+5 -2
View File
@@ -184,8 +184,11 @@ one application, and only the globe-bound parts move to the next engine.
on the real Cesium and Navara of a keyless dev server. On November 7, 2026
Cesium passed 57 of 57 and Navara 64 of 67: a resting move raised no
`moveEnd`, a click payload never came, and contact sonar lost an angle-only
change inside the app. `movers` and `lines` are optional capabilities: only
Navara has them, and the suite skips their checks elsewhere.
change inside the app. `movers` and `lines` are required of every engine:
Cesium draws them with billboards, points, models and polyline primitives
(`src/globe/cesium/movers.js`, `lines.js`). The 57 Cesium checks above ran
without them; in Node their checks pass on Cesium without pixels or a
pointer, and the browser run with them is still to come.
- **Engine coupling.** `node scripts/report-engine-coupling.mjs` counts the
engine-specific code outside the engines: renderer lines per engine, Cesium
imports, `viewer` mentions, engine-name checks, raw Navara reads, Navara