feat(cockpit): ride the selected vessel from its bridge

With no aircraft tracked, Cockpit can ride the selected AIS vessel. Entry
needs only Live AIS Vessels and a selected vessel; C, double-click and the
entry buttons (reading BRIDGE with a ship icon) enter it, while voice stays
aircraft-only.

The eye sits on the AIS position at a representative bridge height for the
vessel's type family, looks along true heading and moves along course over
ground. The last fix is dead-reckoned for up to 180 s between the layer's
refreshes, and on rivers and lakes the waterline is read from the rendered
surface around the ship rather than the geoid.

The bridge HUD shows speed and course over ground, a straight heading
tape, window mullions, the AIS destination as a reported voyage and a
heading-up radar of nearby ships (3 to 24 NM). The arrow keys look around,
Home or 0 looks ahead again. The vessel layer hides the ridden ship's
sprite and card, ignores scene clicks while held, and returns the camera
to the vessel's map view on exit.
This commit is contained in:
Denis Groshev committed 2026-11-07 19:52:30 +01:00
1 parent 52187c91d1
commit 72112ecb45
58 files changed
+5313 -137

No files matched your search

+44 -1
View File
@@ -1700,8 +1700,14 @@
"COMMERCIAL": "COMMERCIALE",
"{aircraftClass} · {emergency} · {feedState}": "{aircraftClass} · {emergency} · {feedState}",
"{aircraftClass} · {feedState} · COURSE ALIGNED": "{aircraftClass} · {feedState} · ROTTA ALLINEATA",
"{vesselType} · {feedState} · EYE {height}": "{vesselType} · {feedState} · ALTEZZA OCCHIO {height}",
"LIVE AIS": "AIS LIVE",
"ARROW · ESTIMATED DIRECTION": "FRECCIA · DIREZIONE STIMATA",
"ROUTE DATA UNAVAILABLE": "DATI ROTTA NON DISPONIBILI",
"CONTACT NAVIGATION OFF": "NAVIGAZIONE CONTATTI DISATTIVATA",
"THE BRIDGE STAYS WITH THE SELECTED VESSEL": "LA PLANCIA RESTA SULLA NAVE SELEZIONATA",
"{range} NM": "{range} MN",
"AIS DESTINATION · CREW REPORTED": "DESTINAZIONE AIS · DICHIARATA DALL'EQUIPAGGIO",
"DEST {bearing}": "DEST {bearing}",
"Disable cockpit weather effects": "Disattiva gli effetti meteo del cockpit",
"Enable cockpit weather effects": "Attiva gli effetti meteo del cockpit",
@@ -1748,6 +1754,8 @@
"Reclassify as TR-3B": "Riclassifica come TR-3B",
"TRACK ACQUIRED": "TRACCIA ACQUISITA",
"{label} · COURSE {heading}°": "{label} · ROTTA {heading}°",
"{label} · HEADING {heading}°": "{label} · PRUA {heading}°",
"{label} · NO HEADING": "{label} · NESSUNA PRUA",
"Context could not restore every layer; try again": "Il Contesto non ha potuto ripristinare tutti i livelli; riprova",
"No selected data layers": "Nessun livello dati selezionato",
"{count} data layers could not be cleared": {
@@ -2697,14 +2705,27 @@
"Recent speech": "Parlato recente",
"HERE": "QUI",
"Aircraft cockpit view": "Vista cockpit dell'aereo",
"Ship bridge view": "Vista dalla plancia della nave",
"LOOK STBD {bearing}°": "VISTA DRITTA {bearing}°",
"LOOK PORT {bearing}°": "VISTA SINISTRA {bearing}°",
"LOOK ASTERN": "VISTA A POPPA",
"UP {angle}°": "SU {angle}°",
"DOWN {angle}°": "GIÙ {angle}°",
"LEVEL": "ORIZZONTE",
"{direction} · {elevation}": "{direction} · {elevation}",
"LOOK {elevation}": "VISTA {elevation}",
"Estimated destination direction": "Direzione stimata della destinazione",
"DEST ---°": "DEST ---°",
"BRIDGE WINDOW · FWD": "FINESTRA PLANCIA · AVANTI",
"OPTICAL PLANE · 01": "PIANO OTTICO · 01",
"HEADING HOLD · AIS": "BLOCCO PRUA · AIS",
"NO HEADING · AIS": "NESSUNA PRUA · AIS",
"VISOR LOCK · ACTIVE": "BLOCCO VISIERA · ATTIVO",
"GROUND SPEED · KTS": "VEL. AL SUOLO · KTS",
"SPEED OVER GROUND · KTS": "VEL. SUL FONDO · KTS",
"ALTITUDE · FT": "QUOTA · FT",
"FIRST PERSON": "PRIMA PERSONA",
"BRIDGE VIEW": "VISTA PLANCIA",
"LIVE TRACK · COURSE ALIGNED": "TRACCIA LIVE · ROTTA ALLINEATA",
"Cockpit vision style": "Stile di visione del cockpit",
"Previous cockpit vision style": "Stile di visione precedente del cockpit",
@@ -2713,13 +2734,27 @@
"Next cockpit vision style": "Stile di visione successivo del cockpit",
"Next vision style": "Stile di visione successivo",
"Current aircraft heading": "Prua attuale dell'aereo",
"Look ahead: turn the bridge view back to the bow": "Guarda a prua: riporta la vista plancia verso la prua",
"Look ahead (Home or 0)": "Guarda a prua (Home o 0)",
"LOOK AHEAD": "GUARDA A PRUA",
"Current vessel heading": "Prua attuale della nave",
"GROUND SPEED": "VEL. AL SUOLO",
"SPEED OVER GROUND": "VEL. SUL FONDO",
"COURSE OVER GROUND": "ROTTA SUL FONDO",
"KTS": "KTS",
"ALTITUDE": "ALTITUDINE",
"FT": "FT",
"Contact cockpit summary": "Riepilogo contatto del cockpit",
"CONTACT": "CONTATTO",
"CONTACTS · 250 KM": "CONTATTI · 250 KM",
"RINGS {spacing} NM": "CERCHI {spacing} MN",
"{count} CONTACTS": {
"one": "{count} CONTATTO",
"many": "{count} DI CONTATTI",
"other": "{count} CONTATTI"
},
"Radar range {range}. Select for the next range.": "Portata radar {range}. Seleziona per passare alla portata successiva.",
"Bridge radar": "Radar di plancia",
"Contact navigation": "Navigazione contatti",
"CONTEXT ONLY": "SOLO CONTESTO",
"Nearby cohort counts": "Conteggi dei gruppi vicini",
@@ -2731,7 +2766,9 @@
"WX": "METEO",
"Cockpit briefing carousel": "Carosello briefing del cockpit",
"Estimated flight plan": "Piano di volo stimato",
"Reported voyage": "Viaggio dichiarato",
"ESTIMATED FLIGHT PLAN": "PIANO DI VOLO STIMATO",
"REPORTED VOYAGE": "VIAGGIO DICHIARATO",
"FROM": "DA",
"TO": "A",
"Cockpit briefing controls": "Controlli briefing del cockpit",
@@ -2765,11 +2802,15 @@
"Cockpit Radio volume": "Volume Radio del cockpit",
"ESC EXIT": "ESC ESCI",
"C TOGGLE": "C ALTERNA",
"ARROWS LOOK": "FRECCE GUARDA",
"HOME RESET": "HOME RIPRISTINA",
"View switcher": "Selettore vista",
"Exit cockpit and return to full globe view": "Esci dal cockpit e torna alla vista del globo intero",
"RESET": "RESET",
"Exit cockpit view": "Esci dalla vista cockpit",
"Exit bridge view": "Esci dalla vista plancia",
"EXIT COCKPIT": "ESCI DAL COCKPIT",
"EXIT BRIDGE": "ESCI DALLA PLANCIA",
"Navigation, voice, and visual preset controls": "Controlli di navigazione, voce e preset visivi",
"Expand Visual Presets": "Espandi Preset visivi",
"Pin visual presets": "Fissa i preset visivi",
@@ -2802,6 +2843,7 @@
"SELECT CONTEXT": "SELEZIONA CONTESTO",
"Contact Context actions": "Azioni Contesto contatto",
"COCKPIT": "COCKPIT",
"BRIDGE": "PLANCIA",
"SEARCH NEARBY SITES": "CERCA SITI VICINI",
"Reclassify tracked contact as TR-3B": "Riclassifica il contatto tracciato come TR-3B",
"CONTACTS CONTEXT OFF": "CONTESTO CONTATTI DISATTIVATO",
@@ -3259,5 +3301,6 @@
"Close camera preview": "Chiudi anteprima della telecamera",
"Refresh map still": "Aggiorna immagine fissa sulla mappa",
"The map still uses a separate request and may show a different moment.": "L’immagine sulla mappa usa una richiesta separata e può mostrare un momento diverso.",
"Video plays from Québec 511, which sees your IP address.": "Il video viene riprodotto da Québec 511, che vede il tuo indirizzo IP."
"Video plays from Québec 511, which sees your IP address.": "Il video viene riprodotto da Québec 511, che vede il tuo indirizzo IP.",
"COURSE HOLD · AIS": "BLOCCO ROTTA · AIS"
}