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

+43 -1
View File
@@ -431,8 +431,14 @@
"LIVE TRACK": "LIVE-TRACK",
"COMMERCIAL": "ZIVIL",
"{aircraftClass} · {feedState} · COURSE ALIGNED": "{aircraftClass} · {feedState} · IN KURSRICHTUNG",
"{vesselType} · {feedState} · EYE {height}": "{vesselType} · {feedState} · AUGESHÖHE {height}",
"LIVE AIS": "LIVE-AIS",
"ARROW · ESTIMATED DIRECTION": "PFEIL · GESCHÄTZTE RICHTUNG",
"ROUTE DATA UNAVAILABLE": "ROUTENDATEN NICHT VERFÜGBAR",
"CONTACT NAVIGATION OFF": "KONTAKTNAVIGATION AUS",
"THE BRIDGE STAYS WITH THE SELECTED VESSEL": "DIE BRÜCKE BLEIBT BEIM GEWÄHLTEN SCHIFF",
"{range} NM": "{range} SM",
"AIS DESTINATION · CREW REPORTED": "AIS-ZIEL · VON DER BESATZUNG GEMELDET",
"DEST {bearing}": "DEST {bearing}",
"Disable cockpit weather effects": "Cockpit-Wettereffekte deaktivieren",
"Enable cockpit weather effects": "Cockpit-Wettereffekte aktivieren",
@@ -477,6 +483,8 @@
"Reclassify as TR-3B": "Als TR-3B umklassifizieren",
"TRACK ACQUIRED": "TRACK ERFASST",
"{label} · COURSE {heading}°": "{label} · KURS {heading}°",
"{label} · HEADING {heading}°": "{label} · STEUERKURS {heading}°",
"{label} · NO HEADING": "{label} · KEIN STEUERKURS",
"Context could not restore every layer; try again": "Kontext konnte nicht alle Ebenen wiederherstellen; erneut versuchen",
"No selected data layers": "Keine Datenebenen ausgewählt",
"{count} data layers could not be cleared": {
@@ -663,14 +671,27 @@
"Session ended — cost cap {cost}": "Sitzung beendet: Kostenlimit {cost}",
"Radio did not start": "Radio wurde nicht gestartet",
"Aircraft cockpit view": "Flugzeug-Cockpitansicht",
"Ship bridge view": "Ansicht von der Schiffsbrücke",
"LOOK STBD {bearing}°": "BLICK STEUERBORD {bearing}°",
"LOOK PORT {bearing}°": "BLICK BACKBORD {bearing}°",
"LOOK ASTERN": "BLICK ACHTERAUS",
"UP {angle}°": "HOCH {angle}°",
"DOWN {angle}°": "TIEF {angle}°",
"LEVEL": "HORIZONT",
"{direction} · {elevation}": "{direction} · {elevation}",
"LOOK {elevation}": "BLICK {elevation}",
"Estimated destination direction": "Geschätzte Richtung zum Ziel",
"DEST ---°": "DEST ---°",
"BRIDGE WINDOW · FWD": "BRÜCKENFENSTER · VORAUS",
"OPTICAL PLANE · 01": "OPTISCHE EBENE · 01",
"HEADING HOLD · AIS": "STEUERKURS FIX · AIS",
"NO HEADING · AIS": "KEIN STEUERKURS · AIS",
"VISOR LOCK · ACTIVE": "VISIER-LOCK · AKTIV",
"GROUND SPEED · KTS": "GESCHW. ÜBER GRUND · KN",
"SPEED OVER GROUND · KTS": "FAHRT ÜBER GRUND · KN",
"ALTITUDE · FT": "HÖHE · FT",
"FIRST PERSON": "EGO-PERSPEKTIVE",
"BRIDGE VIEW": "BRÜCKENANSICHT",
"LIVE TRACK · COURSE ALIGNED": "LIVE-TRACK · IN KURSRICHTUNG",
"Cockpit vision style": "Sichtstil im Cockpit",
"Previous cockpit vision style": "Vorheriger Cockpit-Sichtstil",
@@ -679,11 +700,24 @@
"Next cockpit vision style": "Nächster Cockpit-Sichtstil",
"Next vision style": "Nächster Sichtstil",
"Current aircraft heading": "Aktueller Flugzeugkurs",
"Look ahead: turn the bridge view back to the bow": "Blick voraus: Brückenansicht zurück zum Bug drehen",
"Look ahead (Home or 0)": "Blick voraus (Pos1 oder 0)",
"LOOK AHEAD": "BLICK VORAUS",
"Current vessel heading": "Aktueller Steuerkurs des Schiffs",
"GROUND SPEED": "GESCHW. ÜBER GRUND",
"SPEED OVER GROUND": "FAHRT ÜBER GRUND",
"COURSE OVER GROUND": "KURS ÜBER GRUND",
"ALTITUDE": "HÖHE",
"Contact cockpit summary": "Cockpit-Zusammenfassung des Kontakts",
"CONTACT": "KONTAKT",
"CONTACTS · 250 KM": "KONTAKTE · 250 KM",
"RINGS {spacing} NM": "RINGE {spacing} SM",
"{count} CONTACTS": {
"one": "{count} KONTAKT",
"other": "{count} KONTAKTE"
},
"Radar range {range}. Select for the next range.": "Radarreichweite {range}. Auswählen, um zur nächsten Reichweite zu wechseln.",
"Bridge radar": "Brückenradar",
"Contact navigation": "Kontaktnavigation",
"CONTEXT ONLY": "NUR KONTEXT",
"Nearby cohort counts": "Anzahl Kontakte in der Nähe",
@@ -691,7 +725,9 @@
"AVAILABLE INPUTS ONLY · NOT AN ALL-CLEAR": "NUR VERFÜGBARE QUELLEN · KEINE ENTWARNUNG",
"Cockpit briefing carousel": "Cockpit-Briefing-Karussell",
"Estimated flight plan": "Geschätzter Flugplan",
"Reported voyage": "Gemeldete Reise",
"ESTIMATED FLIGHT PLAN": "GESCHÄTZTER FLUGPLAN",
"REPORTED VOYAGE": "GEMELDETE REISE",
"FROM": "VON",
"TO": "NACH",
"Cockpit briefing controls": "Cockpit-Briefing-Steuerung",
@@ -722,7 +758,9 @@
"Exit cockpit and return to full globe view": "Cockpit verlassen und zur Vollglobus-Ansicht zurückkehren",
"RESET": "RESET",
"Exit cockpit view": "Cockpitansicht verlassen",
"Exit bridge view": "Brückenansicht verlassen",
"EXIT COCKPIT": "COCKPIT VERLASSEN",
"EXIT BRIDGE": "BRÜCKE VERLASSEN",
"Navigation, voice, and visual preset controls": "Steuerung für Navigation, Sprache und visuelle Presets",
"Expand Visual Presets": "Visuelle Presets ausklappen",
"Pin visual presets": "Visuelle Presets anheften",
@@ -752,6 +790,7 @@
"SELECT CONTEXT": "KONTEXT WÄHLEN",
"Contact Context actions": "Aktionen für Kontaktkontext",
"COCKPIT": "COCKPIT",
"BRIDGE": "BRÜCKE",
"SEARCH NEARBY SITES": "STANDORTE IN DER NÄHE SUCHEN",
"Reclassify tracked contact as TR-3B": "Verfolgten Kontakt als TR-3B umklassifizieren",
"CONTACTS CONTEXT OFF": "KONTAKTKONTEXT AUS",
@@ -2836,6 +2875,8 @@
"LOCAL": "LOKAL",
"ESC EXIT": "ESC BEENDEN",
"C TOGGLE": "C UMSCHALTEN",
"ARROWS LOOK": "PFEILE UMSEHEN",
"HOME RESET": "POS1 ZURÜCKSETZEN",
"Active weather products": "Aktive Wetterprodukte",
"RECENT IMAGERY": "AKTUELLE BILDDATEN",
"Imagery days in the box": "Bildtage im Bereich",
@@ -3184,5 +3225,6 @@
"Close camera preview": "Kameravorschau schließen",
"Refresh map still": "Kartenstandbild aktualisieren",
"The map still uses a separate request and may show a different moment.": "Das Kartenstandbild wird separat abgerufen und kann einen anderen Moment zeigen.",
"Video plays from Québec 511, which sees your IP address.": "Das Video wird von Québec 511 abgespielt, das Ihre IP-Adresse sieht."
"Video plays from Québec 511, which sees your IP address.": "Das Video wird von Québec 511 abgespielt, das Ihre IP-Adresse sieht.",
"COURSE HOLD · AIS": "KURS FIX · AIS"
}