feat(app): layer catalog per engine

- src/app/layers/renderers.js: the layer renderer registry
  (registerLayerRenderers(engineKind, { [layerId]: factory }),
  rendererFor(layerId, engine), layerAvailableOn(layerId, engineKind)).
  Every application layer is registered for Cesium as CESIUM_BUILTIN (it
  still draws itself until its render/cesium.js); Navara factories come with
  the layer tasks. On it, the stable availability API phase 4 injects into
  its layer list: createLayerAvailability(engineKind) →
  { engine, isAvailable(id), available(), unavailable() } with { id, name }
  rows (src/app/layers/directory.js holds the ids and names in catalog
  order; a test keeps it equal to the constructed catalog).
- createApplicationCatalog({ engineKind, availability }) constructs only the
  layers the engine can show, in the same order (shared instances made
  once, on demand); the catalog carries `availability` and the others'
  metadata (`unavailableMetadata`). Cesium builds the same 30 layers in the
  same order as before; Navara builds none yet (no Navara renderers) - the
  standalone app now asks the catalog for it instead of making an empty one.
- catalogControlServices: a role whose layer the engine leaves out gets an
  empty stand-in (absentLayerControlServices folded in); any other missing
  layer is still a wiring error.
- LayerLifecycle(viewer, { engine }): every module call (init, enable,
  update, disable, destroy) gets { signal, engine } as its second argument;
  viewer is null on Navara.
- Links: a link that turns on layers this engine leaves out keeps them in
  the durable state (re-saved links carry them; back on Cesium they turn
  on) and activates nothing; a notice names them ("NOT ON THIS ENGINE · Kept
  in the link: …"). The Navara notice lists the engine's data layers from
  the registry.
- The dev launcher's CCTV wiring check matches the new catalog form.
This commit is contained in:
German Khokhlov committed 2026-10-16 22:07:55 +04:00
1 parent e1be2eac19
commit b0cbed081b
23 files changed
+826 -146

No files matched your search

+10 -4
View File
@@ -702,7 +702,8 @@
"src/geo/scaleToGeodeticSurface.js",
"src/geo/check.js",
"src/geo/debug.js",
"src/geo/developerError.js"
"src/geo/developerError.js",
"src/app/layers/directory.js"
],
"external": ["cesium"]
},
@@ -2583,7 +2584,9 @@
"src/globe/navara/movers/modelMover.js",
"src/globe/navara/movers/index.js",
"src/globe/surfaceDetail.js",
"src/globe/navara/followGestures.js"
"src/globe/navara/followGestures.js",
"src/app/layers/directory.js",
"src/app/layers/renderers.js"
],
"external": [
"hls.js",
@@ -3152,7 +3155,9 @@
"src/geo/developerError.js",
"src/time/clock.js",
"src/globe/follow.js",
"src/globe/cesium/follow.js"
"src/globe/cesium/follow.js",
"src/app/layers/directory.js",
"src/app/layers/renderers.js"
],
"external": [
"hls.js",
@@ -3279,7 +3284,8 @@
"src/loadingFeedback.js",
"src/navigationPolicy.js",
"src/ui/shareRestoration.js",
"src/ui/uiLifetime.js"
"src/ui/uiLifetime.js",
"src/app/layers/directory.js"
],
"external": []
},