mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-14 15:22:21 +00:00
Scope tracked readouts and selection context to each scene
Give each scene attachment its own tracked readout, follow subscription, selected context, active card identity and label-subject cache. Bind layer context publishers to that attachment and preserve the page selection slot and existing selection and awareness event payloads. Mirror a clear to the page only when it clears the page selection. Capture display context services so retired callbacks cannot publish into a replacement attachment. Route aircraft, satellite, Local ADS-B and ALPR label refreshes and annotation card lookup to the attached readout. Remove Local ADS-B contexts before dropping its outgoing renderer, and mirror context pruning to the page. Carry the retained page selection through the layer session when an attachment is released. Adopt it only if the page still selects the same record, seed the incoming readout on initialization, and replace its retained carrier when the new display registers its marker. Keep the original page selection timestamp and avoid a duplicate page selection event. A clear between attachments wins, and page teardown still clears the selection. Seed the incoming readout from that retained record without validating the outgoing display's visibility: FIRMS waits for camera restoration before registering its new display. Keep a matching selected fire in the refresh set before pruning top-N contexts, so weaker selected detections retain the page selection too. Preserve Cesium's label text, selected-card policy, visual anchors and follow-camera anti-jitter. Navara retains the same shared behavior. There is no intended user-visible change on either engine. Tests cover simultaneous follows, identical selection IDs, independent refresh and clear, stale notifications, destruction, parked reattachment and real layer publication on the fake and headless Cesium engines. The production aircraft tests also cover grounded fleet and tracked models, the display floor on both sides of the zoom boundary, follow-label refresh and cached position reads. The fire regression exercises the application scene handoff, delayed viewport resume, top-N pruning, unchanged selection timestamp and deliberate clear on both engines. These fixes preserve the reference Cesium selection behavior. All eleven coupling counts remain unchanged; none fell or grew. The counts remain 0 and 189 renderer lines, 3 external Cesium import files, 891 viewer lines, 1 Navara kind check, 0 engine-sniff calls, 3 extension reads, 1 ground pass, 3 SDK loads, 4 screen-handler files and 32 engine-name lines. Checked in the browser, keyless: the overlay baselines on both engines, the ALPR and FIRMS fire-camera switches, and the layer handoff, Local ADS-B, Contacts, space, infrastructure, CCTV, urban, transit, directions and annotation engine switches pass. The tracking regression passes every check that passes before this change.
This commit is contained in:
1 parent
3814221cbc
commit
c1e857f798
32 files changed
+1751
-414
No files matched your search
@@ -587,8 +587,30 @@ The module helper functions take the engine first. Retained layer models use
|
||||
`init()`. Destruction is terminal, including before initialization; a parked
|
||||
engine needs fresh scene services. An old paint-lane handle cannot mutate its
|
||||
replacement. Font measurements are shared until the last live host releases
|
||||
them. The tracked-readout bridge remains page-owned and publishes into its
|
||||
attached engine's overlay.
|
||||
them.
|
||||
|
||||
`scene.services.trackedReadout` bridges the follow handle's label and selected
|
||||
ALPR or Local ADS-B card into this overlay. `init()` subscribes to that engine's
|
||||
follow changes and that attachment's context events; `refresh(entity)` republishes
|
||||
changed label text, and `activeId()` resolves the card for annotation placement.
|
||||
Positions stay live cached visual anchors. `trackedReadoutFor(engine)` resolves
|
||||
the service; destruction removes its listeners and clears only its own source.
|
||||
|
||||
`scene.services.context` owns selection records and notifications. Layer publishers
|
||||
use `bindContextStore` with their current engine, or a context service captured by
|
||||
their display. It mirrors records to the page context slot and preserves the
|
||||
`gev:entity-selected`, `gev:entity-selection-cleared` and aircraft awareness event
|
||||
payloads for page consumers. A clear reaches the page only when that attachment
|
||||
owns the page's selected record. Readouts listen only to their scene's event target.
|
||||
Identical IDs in different scenes cannot share a card or clear one another's
|
||||
selection. Retired context services cannot publish into a replacement attachment.
|
||||
An engine handoff carries the page-selected record through the layer session.
|
||||
The incoming context adopts it only while the page still selects that record;
|
||||
a clear between attachments wins. Rebuilt markers replace the retained carrier
|
||||
in the incoming readout without announcing another page selection.
|
||||
Readout initialization reads the retained record without testing the outgoing
|
||||
carrier's visibility; layers rebuild their carriers after camera restoration.
|
||||
The page chrome and detection controller still have page lifetimes.
|
||||
|
||||
## Render effects
|
||||
|
||||
|
||||
Reference in new issue
Block a user