mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-14 23:32:20 +00:00
Move shared follow offsets and Draw onto the globe contract
Share links read the current follow handle and displayed position through engine.camera and restore their ENU offset with follow's swingTo option. Cesium retains its first-frame wait, displayed-position cache, 60-degree frame limit and range interpolation. Navara and the fake engine apply the same swing. Cancellation, camera handoff and destruction release it; an externally tracked Cesium entity keeps its existing handle. Draw uses one surface with engine input, geodesic lines and point movers. An exclusive pointer claim suppresses ambient subscriptions and deferred picks across ownership changes. Cesium owns suspension and exact restoration of its stock select and track actions. Camera gestures remain enabled. Detaching releases the sketch and preview and retains shape and colour. The separate Navara surface and Cesium data-source preview are removed. Cesium remains the reference for clicked heights, line width and dash, vertex size and outline, keyboard handling and completed annotations. One deliberate visual fix is that the occluded rubber band uses the selected colour instead of retaining the initial amber: it now identifies the same sketch as its visible segment. Navara adopts Cesium's geodesic preview edges. Finished annotation drapes are unchanged. External Cesium import files fall from 7 to 5, viewer lines from 1005 to 953, and engine-name lines from 39 to 37. No coupling metric grows. The full unit suite, import directions, package boundaries, formatting and coupling checks pass. Checked in the browser, keyless: the contract suite passes on Navara and on Cesium apart from the camera-events check that also fails intermittently before; qa-navara-draw passes; qa-draw-tool passes apart from its hidden-line pixel check, which fails the same way before this change. Its destroy check now expects no preview data source, since the preview has none.
This commit is contained in:
1 parent
910d693b94
commit
dacfd33f10
31 files changed
+1071
-785
No files matched your search
@@ -566,3 +566,27 @@ Annotation drapes still use their existing renderers. Their bounded building
|
||||
classification volumes, animated fills and wire cages are not ordinary world
|
||||
triangles; they need a classification contract before that migration can
|
||||
preserve Cesium's behaviour.
|
||||
|
||||
## Shared follow offsets and manual drawing
|
||||
|
||||
`engine.camera.follow({ position, viewFrom, swingTo })` can swing from the
|
||||
initial follow frame to `swingTo`, an east/north/up offset in metres. Each
|
||||
frame turns at most 60 degrees and interpolates range, preserving Cesium's
|
||||
tracked-camera crossing guard. `handle.retarget({ swingTo })` changes only
|
||||
the pending swing; `null` cancels it. Stopping or replacing the follow, a
|
||||
camera command or engine destruction ends it. Share links read the current
|
||||
handle's target and label identity and the camera pose through the contract.
|
||||
|
||||
`engine.input.acquirePointer()` returns an exclusive claim, or `null` if
|
||||
one is held. Pass it to `input.on(type, listener, { pointer: claim })` and
|
||||
call `claim.release()` when done. Other screen subscriptions yield, including
|
||||
picks that settle after ownership changes. Camera gestures stay enabled.
|
||||
Cesium suspends its stock select and track clicks and restores the original
|
||||
functions when the claim is released or the engine is destroyed.
|
||||
|
||||
The Draw tool uses one `drawSurface.js` on every engine: a dashed geodesic
|
||||
line and a point mover set at the clicked heights. The dim, occluded band
|
||||
uses the selected colour as well as the visible band. Finished geometry still
|
||||
goes through the annotation board. Detaching the scene releases the claim,
|
||||
listeners and preview while retaining the chosen shape and colour. The
|
||||
page's pointer lease still arbitrates Draw against other tools.
|
||||
Reference in new issue
Block a user