import { StyleManager } from '../ui/composition.js'; import { flyToAustin } from '../camera.js'; import { initCockpitCloudEffects } from '../cockpitCloudEffects.js'; /** Construct the existing controls and camera presentation. */ export function createApplicationControls({ scene: { viewer, mapStackController }, loaderStatus, Controls = StyleManager, services, placeSearch, defer, }) { // Initialize the style manager (post-processing, HUD, locations, share links) const styleManager = new Controls(viewer, { services, mapStackController, placeSearch, }); defer(() => styleManager.orbitController.stop()); defer(() => styleManager.hud.destroy()); defer(() => styleManager.dispose()); // The previous multi-canvas weather compositor remains disabled. Cockpit // clouds use a separate, capped low-resolution GPU pass that never attaches // Cesium fog or post-process stages and is fully stopped in map mode. const weatherEffects = null; const cockpitCloudEffects = initCockpitCloudEffects(viewer); defer(() => cockpitCloudEffects?.destroy()); // If no share link state, do default fly-to Austin if (!styleManager.hasShareState) { loaderStatus.textContent = 'Flying to Austin, TX...'; defer(flyToAustin(viewer)); } else { loaderStatus.textContent = 'Restoring shared view...'; } return { styleManager, weatherEffects, cockpitCloudEffects }; }