mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-12 06:12:18 +00:00
Move the engine switch protocol from the layers into the scene binding
attachRenderer takes one context { engine, signal, viewRestored, ... } and
bindCatalog no longer takes a viewer; no layer module receives Cesium's
viewer any more, and a rehearsal check fails if one reads it.
The handoff between engines is one typed object (layers, camera owners,
selection, director) created when the old scene leaves, replacing the
session's handoffLayers, restoringView and selectionContext. viewRestored
resolves where the camera is restored, and the nine layers that kept
their own restoring-view flag wait on it instead. After attach the
binding applies a disabled layer's visibility, registers the picks each
module declares, and resumes the camera owners, so engineSwitch.js no
longer names directions or satellites.
This commit is contained in:
1 parent
a90407d547
commit
a2905eb700
104 files changed
+1029
-537
No files matched your search
@@ -24,9 +24,13 @@ export function createBikeshareLayer({ services, source, rendererFactory }) {
|
||||
let initialized = false;
|
||||
const lifecycle = {
|
||||
init(viewer, options) {
|
||||
return this.attachRenderer(viewer, options);
|
||||
return this.attachRenderer(options);
|
||||
},
|
||||
attachRenderer(viewer, options = {}) {
|
||||
picks: {
|
||||
owner: 'bikeshare',
|
||||
predicate: (id) => state._stationRenderMap.has(id),
|
||||
},
|
||||
attachRenderer(options = {}) {
|
||||
if (initialized)
|
||||
throw new Error('Bikeshare layer is already initialized');
|
||||
renderer ??= rendererFactory({
|
||||
@@ -37,7 +41,7 @@ export function createBikeshareLayer({ services, source, rendererFactory }) {
|
||||
parts.display = renderer;
|
||||
initialized = true;
|
||||
try {
|
||||
state._restoringViewport = Boolean(options.waitForCameraRestore);
|
||||
state._sceneContext = options;
|
||||
renderer.init();
|
||||
if (state._enabled) {
|
||||
const selected = state._selectedKey;
|
||||
@@ -57,13 +61,11 @@ export function createBikeshareLayer({ services, source, rendererFactory }) {
|
||||
}
|
||||
},
|
||||
resumeViewport() {
|
||||
if (!state._restoringViewport) return;
|
||||
state._restoringViewport = false;
|
||||
if (state._enabled) parts.display?.onCameraChanged();
|
||||
},
|
||||
detachRenderer() {
|
||||
if (!renderer) return;
|
||||
state._restoringViewport = true;
|
||||
state._sceneContext = null;
|
||||
clearTimeout(state._cameraDebounceTimer);
|
||||
const selected = state._selectedKey;
|
||||
renderer.detach();
|
||||
|
||||
Reference in new issue
Block a user