Format the layer lifecycle, standalone application and Bhote Koshi event with Prettier

This commit is contained in:
German Khokhlov committed 2026-11-03 14:36:31 +04:00
1 parent 62296a833c
commit 0c190c3a15
3 files changed
+65 -29

No files matched your search

+53 -26
View File
@@ -903,13 +903,19 @@ function focusView(viewer, viewpoint, engine) {
); );
if (engine) { if (engine) {
engine.camera.cancelFlight(); engine.camera.cancelFlight();
engine.camera.flyToSphere({center: target, radius: 80}, { engine.camera.flyToSphere(
heading:offset.heading, pitch:offset.pitch, range:offset.range, duration:2.2, { center: target, radius: 80 },
complete: () => { {
engine.camera.lookAt(target, offset); heading: offset.heading,
engine.camera.lookAtTransform(Cesium.Matrix4.IDENTITY); pitch: offset.pitch,
range: offset.range,
duration: 2.2,
complete: () => {
engine.camera.lookAt(target, offset);
engine.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);
},
}, },
}); );
return; return;
} }
viewer.camera.cancelFlight?.(); viewer.camera.cancelFlight?.();
@@ -1190,7 +1196,10 @@ export function createBhoteKoshiEventLayer({
])); ]));
if (!_enabled) return; if (!_enabled) return;
if (_native) { if (_native) {
await _native.loadImages(event.imagery.rectangle, [beforeProvider, afterProvider]); await _native.loadImages(event.imagery.rectangle, [
beforeProvider,
afterProvider,
]);
setSplit(_split); setSplit(_split);
return; return;
} }
@@ -1210,11 +1219,14 @@ export function createBhoteKoshiEventLayer({
: []; : [];
let sampled = null; let sampled = null;
try { try {
sampled = _engine && !_viewer sampled =
? observations.map(({lon,lat}) => ({ _engine && !_viewer
height: _engine.surface.terrainHeight(Cesium.Cartographic.fromDegrees(lon,lat)), ? observations.map(({ lon, lat }) => ({
})) height: _engine.surface.terrainHeight(
: await terrainSampler(_viewer, observations, { signal }); Cesium.Cartographic.fromDegrees(lon, lat),
),
}))
: await terrainSampler(_viewer, observations, { signal });
} catch (error) { } catch (error) {
if (error?.name === 'AbortError') throw error; if (error?.name === 'AbortError') throw error;
console.warn( console.warn(
@@ -1601,13 +1613,17 @@ export function createBhoteKoshiEventLayer({
if (_sceneControls.evidencePathElevation !== 'source') { if (_sceneControls.evidencePathElevation !== 'source') {
// Sample once while preparing the shot, never from an animation frame. // Sample once while preparing the shot, never from an animation frame.
try { try {
height = _engine?.surface?.sampleHeight?.(position) ?? _viewer?.scene?.sampleHeight?.( height =
position, _engine?.surface?.sampleHeight?.(position) ??
[_floodCore, _floodHalo, _surgePoint].filter(Boolean), _viewer?.scene?.sampleHeight?.(
); position,
[_floodCore, _floodHalo, _surgePoint].filter(Boolean),
);
} catch {} } catch {}
if (!Number.isFinite(height)) if (!Number.isFinite(height))
height = _engine?.surface?.terrainHeight(position) ?? _viewer?.scene?.globe?.getHeight?.(position); height =
_engine?.surface?.terrainHeight(position) ??
_viewer?.scene?.globe?.getHeight?.(position);
} }
if (!Number.isFinite(height)) height = point.fallbackElevationM; if (!Number.isFinite(height)) height = point.fallbackElevationM;
return Cesium.Cartesian3.fromDegrees(point.lon, point.lat, height + 8); return Cesium.Cartesian3.fromDegrees(point.lon, point.lat, height + 8);
@@ -2615,7 +2631,12 @@ export function createBhoteKoshiEventLayer({
function syncFloodSurfaceMode() { function syncFloodSurfaceMode() {
const nextMode = usesPhotorealFloodSurface() ? 'tiles' : 'terrain'; const nextMode = usesPhotorealFloodSurface() ? 'tiles' : 'terrain';
if ((!_viewer && !_native) || !_floodDataSource || _floodSurfaceMode === nextMode) return; if (
(!_viewer && !_native) ||
!_floodDataSource ||
_floodSurfaceMode === nextMode
)
return;
_nativeFlood?.destroy(); _nativeFlood?.destroy();
_nativeFlood = null; _nativeFlood = null;
_viewer?.dataSources.remove(_floodDataSource, true); _viewer?.dataSources.remove(_floodDataSource, true);
@@ -3483,7 +3504,8 @@ export function createBhoteKoshiEventLayer({
_embeddedEvidenceIndex = -1; _embeddedEvidenceIndex = -1;
_embeddedMedia?.hide?.(); _embeddedMedia?.hide?.();
setSplit(0.5); setSplit(0.5);
if (cameraForScene()) focusView(_viewer, _event.viewpoints.corridor, _engine); if (cameraForScene())
focusView(_viewer, _event.viewpoints.corridor, _engine);
} }
function removeImagery() { function removeImagery() {
@@ -3494,17 +3516,20 @@ export function createBhoteKoshiEventLayer({
_imageryLayerCollection = null; _imageryLayerCollection = null;
} }
async function attachRenderer(viewer, {engine = null} = {}) { async function attachRenderer(viewer, { engine = null } = {}) {
_viewer = viewer; _viewer = viewer;
_engine = engine; _engine = engine;
if (!_viewer && _engine) _native = createNativeRenderer(engine); if (!_viewer && _engine) _native = createNativeRenderer(engine);
_embeddedMedia?.attachScene?.(viewer,engine); _embeddedMedia?.attachScene?.(viewer, engine);
if (!_enabled) return; if (!_enabled) return;
// The catalog has rebound the incoming map controller before this call. // The catalog has rebound the incoming map controller before this call.
if (_mapStackController) { if (_mapStackController) {
_comparisonLease = acquireImageryComparison(_mapStackController, { _comparisonLease = acquireImageryComparison(_mapStackController, {
owner: BHOTE_KOSHI_LAYER_ID, owner: BHOTE_KOSHI_LAYER_ID,
switchPolicy: _presentation === BHOTE_KOSHI_SCENE_PRESENTATION ? 'preserve' : 'esri', switchPolicy:
_presentation === BHOTE_KOSHI_SCENE_PRESENTATION
? 'preserve'
: 'esri',
}); });
await _comparisonLease.ready; await _comparisonLease.ready;
} }
@@ -3530,11 +3555,12 @@ export function createBhoteKoshiEventLayer({
detachEvidenceCardActivation(); detachEvidenceCardActivation();
_splitControl?.destroy(); _splitControl?.destroy();
_splitControl = null; _splitControl = null;
_embeddedMedia?.attachScene?.(null,null); _embeddedMedia?.attachScene?.(null, null);
removeImagery(); removeImagery();
_nativeFlood?.destroy(); _nativeFlood?.destroy();
_nativeFlood = null; _nativeFlood = null;
if (_floodDataSource && _viewer) _viewer.dataSources.remove(_floodDataSource,false); if (_floodDataSource && _viewer)
_viewer.dataSources.remove(_floodDataSource, false);
_native?.destroy(); _native?.destroy();
_native = null; _native = null;
_engine = _viewer = null; _engine = _viewer = null;
@@ -3545,7 +3571,7 @@ export function createBhoteKoshiEventLayer({
} }
async function init(viewer, options) { async function init(viewer, options) {
await attachRenderer(viewer,options); await attachRenderer(viewer, options);
_embeddedMedia = embeddedMediaFactory({ viewer, engine: _engine }); _embeddedMedia = embeddedMediaFactory({ viewer, engine: _engine });
await loadEvent(); await loadEvent();
console.log('[Data:BhoteKoshi] Event pack ready'); console.log('[Data:BhoteKoshi] Event pack ready');
@@ -3704,7 +3730,8 @@ export function createBhoteKoshiEventLayer({
_nativeFlood = null; _nativeFlood = null;
_native?.clear(); _native?.clear();
_providers = null; _providers = null;
if (_floodDataSource && _viewer) _viewer.dataSources.remove(_floodDataSource, true); if (_floodDataSource && _viewer)
_viewer.dataSources.remove(_floodDataSource, true);
_floodDataSource = null; _floodDataSource = null;
_floodSurfaceMode = null; _floodSurfaceMode = null;
_floodHalo = null; _floodHalo = null;
+6 -2
View File
@@ -152,9 +152,13 @@ export class LayerLifecycle {
const entry = this.layers.get(layer.id); const entry = this.layers.get(layer.id);
if (!entry) this.register(layer); if (!entry) this.register(layer);
else { else {
if (entry.module !== layer) throw new Error(`Layer owner changed: ${layer.id}`); if (entry.module !== layer)
throw new Error(`Layer owner changed: ${layer.id}`);
if (entry.initialized) { if (entry.initialized) {
const ready = layer.attachRenderer(viewer, { ...this._moduleContext(), ...options }); const ready = layer.attachRenderer(viewer, {
...this._moduleContext(),
...options,
});
if (ready?.then) attachments.push(ready); if (ready?.then) attachments.push(ready);
} }
} }
+6 -1
View File
@@ -136,7 +136,12 @@ export function createStandaloneApplication({
catalog, catalog,
}), }),
createData: (context) => createData: (context) =>
createStandaloneData({ ...context, allowQaRegistration, catalog, layerSession }), createStandaloneData({
...context,
allowQaRegistration,
catalog,
layerSession,
}),
createTools: async (context) => { createTools: async (context) => {
const tools = await createStandaloneTools({ const tools = await createStandaloneTools({
...context, ...context,