refactor(vessels): Cesium rendering behind a renderer interface

src/layers/vessels/render/cesium.js holds the Cesium objects the layer
built itself, one for one: the translucent BillboardCollection of
chevrons (centred, screen-aligned, never depth-tested), the horizon
occluder, window projection, canvas size, viewer.trackedEntityChanged,
and the trail (data/trailRenderer's entity polyline, kept on Cesium: the
engine.lines Primitive path did not draw below the photoreal mesh in
round 6 — the plan's T13/T15 blocker; flights does the same).
The logic imports no Cesium: geo math, Rgba WHITE, the chevron artwork in
icons.js, clicks through the engine's selection dispatcher (own-rule
owner, same rule). Registered as CESIUM_LAYER_RENDERERS['ais-live-vessels'];
src/layers/vessels joins the boundary rule.

W1 replay vs 7c7422e2: vessels/flights/military/localAdsb counts, known
objects, screen points, requests and shot sha256 identical.
qa-vessel-cards --data synthetic 2/2 and qa-vessel-datum (?qaFeed=
vessels:fixture) 4/4, the same as 6eec8f6c.

Tests moved with the code (same meaning): cameraHandoff (the click body
is handleClick), inputOwnership (the guard precedes the click rule's
read of the pick), renderers.test (vessels in the extracted list),
importDirections (an unmoved example layer is satellites), the
ownership services fixture (renderer service).
This commit is contained in:
German Khokhlov committed 2026-10-17 12:47:14 +04:00
1 parent 6b27b21cc4
commit 1fe8267550
23 files changed
+810 -198

No files matched your search

+7 -1
View File
@@ -1016,10 +1016,12 @@
"src/layers/vessels/policy.js",
"src/layers/vessels/queries.js",
"src/layers/vessels/rendering.js",
"src/layers/vessels/icons.js",
"src/layers/vessels/selection.js",
"src/layers/vessels/state.js",
"src/layers/vessels/testing.js",
"src/layers/vessels/tracking.js",
"src/layers/shared/color.js",
"src/data/iconOrientation.js",
"src/data/vesselLabels.js",
"src/layers/vessels/records.js",
@@ -2170,6 +2172,7 @@
"src/layers/vessels/policy.js",
"src/layers/vessels/queries.js",
"src/layers/vessels/rendering.js",
"src/layers/vessels/icons.js",
"src/layers/vessels/selection.js",
"src/layers/vessels/state.js",
"src/layers/vessels/testing.js",
@@ -2602,6 +2605,7 @@
"src/layers/military/render/navara.js",
"src/layers/aircraft/qaDrawn.js",
"src/layers/localAdsb/render/cesium.js",
"src/layers/vessels/render/cesium.js",
"src/layers/localAdsb/render/navara.js"
],
"external": [
@@ -2975,6 +2979,7 @@
"src/layers/vessels/policy.js",
"src/layers/vessels/queries.js",
"src/layers/vessels/rendering.js",
"src/layers/vessels/icons.js",
"src/layers/vessels/selection.js",
"src/layers/vessels/state.js",
"src/layers/vessels/testing.js",
@@ -3180,7 +3185,8 @@
"src/layers/flights/render/cesium.js",
"src/layers/military/render/cesium.js",
"src/layers/aircraft/qaDrawn.js",
"src/layers/localAdsb/render/cesium.js"
"src/layers/localAdsb/render/cesium.js",
"src/layers/vessels/render/cesium.js"
],
"external": [
"hls.js",