Files
gods-eye-view/src/layers/launches/state.js
T

141 lines
2.7 KiB
JavaScript

import * as Cesium from 'cesium';
export function createState({ services }) {
const { setOverlayEntries, setOverlaySourceVisible, clearOverlaySource } =
services.overlays;
const state = {};
state.DEFAULT_OVERLAY_HOST = Object.freeze({
setEntries: setOverlayEntries,
setVisible: setOverlaySourceVisible,
clearSource: clearOverlaySource,
});
state._dataSource = null;
state._count = 0;
state._lastUpdate = null;
state._lastError = null;
state._stale = false;
state._orbitMatches = 0;
state._clickHandler = null;
state._moveHandler = null;
state._viewer = null;
state._declutterHandler = null;
state._dataManager = null;
state._retryTimer = null;
state._postTleRetryCount = 0;
state._updatePromise = null;
state._updatePromiseToken = 0;
state._updateDirty = false;
state._lifecycleToken = 0;
state._enabled = false;
state._selectedLaunchId = null;
state._explicitSelection = false;
state._launches = [];
state._missionPanel = null;
state._missionRoster = null;
state._missionRosterHoverTimer = null;
state._hoveredRosterLaunchId = null;
state._missionRosterPreviewOwnership = null;
state._missionHoverReticleImage = null;
state._replayVehicleOverlay = null;
state._replayVehicleOverlayText = '';
state._animationStarts = new Map();
state._satelliteTelemetry = new Map();
state._lastPanelTelemetryMs = 0;
state._lastMissionRingRotationMs = 0;
state._activeTleText = null;
state._activeTlePromise = null;
state._activeTlePromiseToken = 0;
state._renderedTleText = null;
state._focusAfterActiveLookup = false;
state._satelliteStateBeforeMission = null;
state._satelliteActivationPromise = null;
state._replayCameraRemover = null;
state._replayCameraLaunchId = null;
state._replayCameraToken = 0;
state._replayPaused = false;
state._replayPausedAtMs = null;
state._replaySpeed = 1;
state._replayTracks = new Map();
state._missionOverlayRecords = new Map();
state._missionOverlayHost = state.DEFAULT_OVERLAY_HOST;
state._selectedMissionOverlayTimeText = null;
state._missionZoomAnchorRemover = null;
state._missionZoomAnchorId = null;
state._launchPadZonePrimitive = null;
state._launchPadZoneRemover = null;
state._launchPadZoneLaunchId = null;
state._missionOrbitPrimitives = new Map();
state._declutterTime = new Cesium.JulianDate();
state._declutterOccluder = new Cesium.EllipsoidalOccluder(
Cesium.Ellipsoid.WGS84,
new Cesium.Cartesian3(),
);
state._missionRingDate = new Date(0);
state._missionOrbitPatternRegistered = false;
state._pathDistanceCache = new WeakMap();
state._sourceController = new AbortController();
return state;
}