Run the Navara paths without the Cesium SDK, and load it on demand for the features that still build on it

Every Cesium read that a Navara page made was surveyed with the strict acceptance (GEV_QA_CESIUM_TRAP=record). Math on those paths now uses src/geo: screen annotations, weather and wind center readings, cyclone picks, scene data pack polygons and images (new navaraGeometry.js), the awareness subject, the orbit offset of camera verbs, voice frame_overhead, the agent world packet and Directions colours and ground picks. The celestial ring's Sun and Moon come from a bit-identical port of Cesium's Simon1994 model, JulianDate and TEME rotation (src/geo/simon1994.js, julianDate.js, transforms.js); a Cesium globe still applies its ICRF rotation once loaded.

Traffic, Street Level, the Nepal event and locator and geo import build on Cesium's math or entity model on either globe; their enable (or the import) now loads the SDK first through src/app/loadCesium.js, synchronously when it is already there. A production page guards the global so a missed read is reported and starts the load. No module reads Cesium while it loads (scripts/check-cesium-load-time.mjs, run by npm test). Cesium.js is still loaded by index.html here.
This commit is contained in:
German Khokhlov committed 2026-11-04 17:15:21 +04:00
1 parent f87da8523e
commit b8305de14b
58 files changed
+2130 -325

No files matched your search

+3 -17
View File
@@ -7,22 +7,9 @@ import { inspectWindAtCenter } from './inspection.js';
import { windReadingResult } from './presentation.js';
import { sampleWind, windColor, windSpeed } from './model.js';
import { windStats } from './index.js';
import * as geo from '../../geo/index.js';
const cesium = {
Cartesian2: class {
constructor(x, y) {
this.x = x;
this.y = y;
}
},
Ellipsoid: { WGS84: {} },
Cartographic: { fromCartesian: (p) => p },
Math: { toDegrees: (x) => (x * 180) / Math.PI },
};
const at = (lonDeg, latDeg) => ({
longitude: (lonDeg * Math.PI) / 180,
latitude: (latDeg * Math.PI) / 180,
});
const at = (lonDeg, latDeg) => geo.cartesian3.fromDegrees(lonDeg, latDeg);
const grid = { nx: 4, ny: 3, lo1: 0, la1: 90, dx: 90, dy: 90 };
const field = (u, v) => ({
grid,
@@ -44,11 +31,10 @@ const viaViewer = (snapshot, point) =>
camera: { pickEllipsoid: () => point },
scene: { canvas: { clientWidth: 800, clientHeight: 600 } },
},
cesium,
options,
);
const viaPosition = (snapshot, point) =>
inspectWindAtCenter(snapshot, null, cesium, { ...options, position: point });
inspectWindAtCenter(snapshot, null, { ...options, position: point });
const windLine = (reading) =>
windReadingResult(reading).lines.find(({ id }) => id === 'wind').text;