fix: use live V2X vehicles only in preview
This commit is contained in:
@@ -48,7 +48,6 @@
|
||||
const metadata = await fetchJson(config.metadataName);
|
||||
const descriptor = config.previewDescriptorName ? await fetchOptionalJson(config.previewDescriptorName) : null;
|
||||
adaptPackageManifest(metadata, descriptor);
|
||||
const routeData = await fetchOptionalJson(config.routeName);
|
||||
const signalData = await fetchOptionalJson(config.trafficSignalsName);
|
||||
const placement = scenePlacement(metadata);
|
||||
const viewer = createViewer();
|
||||
@@ -56,7 +55,7 @@
|
||||
const assets = await loadSceneAssets(viewer, metadata, placement);
|
||||
const trafficStart = Cesium.JulianDate.now();
|
||||
const trafficSignals = addTrafficSignals(viewer, signalData, trafficStart, assets);
|
||||
const cruise = addVehicleCruises(viewer, routeData, signalData, trafficStart, config.vehicleModelNames, config.vehicleModelName);
|
||||
const cruise = createLiveVehicleState();
|
||||
const cameras = createCameraPresets(viewer, metadata, placement, cruise);
|
||||
const v2xOverlay = typeof window.createV2xCesiumOverlay === "function"
|
||||
? window.createV2xCesiumOverlay({ viewer, metadata, placement, config })
|
||||
@@ -66,7 +65,7 @@
|
||||
buildSemanticToggles(viewer, assets, placement);
|
||||
bindRuntimeControls(viewer, assets, cruise, cameras, placement, trafficSignals);
|
||||
bindVehicleInfoCard(viewer, cruise);
|
||||
startDiagnostics(viewer, metadata, assets, cruise, placement, trafficSignals);
|
||||
startDiagnostics(viewer, metadata, assets, cruise, placement, trafficSignals, v2xOverlay);
|
||||
cameras.overview();
|
||||
baseStatus = summaryText(metadata, assets, cruise);
|
||||
setStatus(baseStatus);
|
||||
@@ -590,6 +589,7 @@
|
||||
baseSpeed: speed,
|
||||
state: { selectedIndex: 0 },
|
||||
simulation,
|
||||
usingLiveData: false,
|
||||
};
|
||||
syncSelectedRouteVisibility(cruise);
|
||||
return cruise;
|
||||
@@ -597,10 +597,20 @@
|
||||
|
||||
function syncSelectedRouteVisibility(cruise) {
|
||||
for (let index = 0; index < cruise.vehicles.length; index += 1) {
|
||||
cruise.vehicles[index].routeEntity.show = toggleRoutes.checked && index === cruise.state.selectedIndex;
|
||||
cruise.vehicles[index].routeEntity.show = !cruise.usingLiveData && toggleRoutes.checked && index === cruise.state.selectedIndex;
|
||||
}
|
||||
}
|
||||
|
||||
function createLiveVehicleState() {
|
||||
return {
|
||||
vehicles: [],
|
||||
baseSpeed: 0,
|
||||
state: { selectedIndex: 0 },
|
||||
simulation: null,
|
||||
usingLiveData: true,
|
||||
};
|
||||
}
|
||||
|
||||
function addTrafficSignals(viewer, signalData, start, assets) {
|
||||
const dynamic = assets.find((asset) => asset.category === "dynamic" && asset.model);
|
||||
const countdownModels = new Map(assets
|
||||
@@ -1324,7 +1334,7 @@
|
||||
|
||||
// Camera-dependent readouts have to track the camera, so refresh off the
|
||||
// render loop rather than a fixed timer, throttled to stay off the hot path.
|
||||
function startDiagnostics(viewer, metadata, assets, cruise, placement, trafficSignals) {
|
||||
function startDiagnostics(viewer, metadata, assets, cruise, placement, trafficSignals, v2xOverlay) {
|
||||
const center = placement.position;
|
||||
const stats = metadata.scene_stats || {};
|
||||
const failed = assets.filter((asset) => asset.error);
|
||||
@@ -1345,11 +1355,9 @@
|
||||
"Trees: " + Number(stats.trees || 0),
|
||||
"Road layer source: " + (metadata.source_geojson ? "osm2streets" : "OSM fallback")
|
||||
];
|
||||
if (cruise.simulation) {
|
||||
const simulation = cruise.simulation.diagnostics();
|
||||
lines.push("Simulation: native-preview-traffic-simulation/v1");
|
||||
lines.push("Stopped: " + simulation.stoppedVehicles);
|
||||
lines.push("Queue: " + simulation.queueLength);
|
||||
if (v2xOverlay?.state) {
|
||||
lines.push("Vehicle data: " + (v2xOverlay.state.vehicleSource === "live" ? "live V2X" : "waiting for live V2X"));
|
||||
lines.push("Live vehicles: " + v2xOverlay.state.vehicles.size);
|
||||
}
|
||||
if (failed.length) {
|
||||
lines.push("Failed assets: " + failed.map((asset) => asset.url).join(", "));
|
||||
@@ -1371,7 +1379,7 @@
|
||||
return [
|
||||
config.areaId,
|
||||
liveAssets(assets).map((asset) => asset.url).join(", "),
|
||||
cruise.vehicles.length ? "vehicles " + cruise.vehicles.length : "no drivable route",
|
||||
"live V2X vehicles only",
|
||||
"buildings " + Number(stats.buildings || 0),
|
||||
"trees " + Number(stats.trees || 0)
|
||||
].filter(Boolean).join(" | ");
|
||||
|
||||
Reference in New Issue
Block a user