X-Plane sends a UDP packet every simulation tick. This layer opens
the socket, receives it, validates it, and renames the raw fields into the system's own
vocabulary.
Raw simulator transport and metadata normalisation. UDP socket payload
received, validated, and mapped to internal field names.
NetworkServiceReceives
simulator UDP frames and forwards validated telemetry internally.
→
XPlaneMetadataBridgeExtracts
aircraft identity and environment context from simulator metadata.
Receives: UDP Payload
latitude, longitude float
heading_true float
groundspeed float
altitude_msl,
vertical_speed float
on_ground, sim_time bool/float
Emits: AircraftStateRaw
lat, lon float
headingTrue float
groundspeedKt float
altitudeFt,
verticalSpeedFpm float
onGround, timestamp bool/float
AircraftStateRaw
Takes that raw frame and builds the first real aircraft object. It
remembers the previous sample — so the system knows not just where the aircraft is, but where it
was, and how much time passed.
Constructs a stable, continuous operational aircraft object. First
continuity layer, preserving previous sample for delta calculations.
AircraftStateFirst normalised
aircraft object combining raw motion and simulator metadata.
→
.fromTelemetry()Constructs
the operational AircraftState from normalised telemetry input.
Receives: AircraftStateRaw
lat, lon,
headingTrue
groundspeedKt,
altitudeFt
verticalSpeedFpm,
onGround
timestamp
Emits: AircraftState
position {lat,lon}
heading, track float
groundspeed, altitude
float
previousPosition {lat,lon}
deltaTime float
AircraftState
A permanently loaded map of every airport and runway on Earth. Given
any aircraft position, it returns the nearby runways — their exact threshold coordinates,
heading, dimensions — in milliseconds. Feeds both the geometry layer and the intent engine on
every frame.
Persistent runway reference layer supplying geometry and runway intelligence
with spatial context.
AptDatLoaderParses X-Plane
apt.dat runway definitions into structured memory.
→
RunwayRepositoryPersistent
runway dataset used by all higher runway logic.
→
RunwayFamilyIndexGroups
reciprocal runways into operational families.
→
AirportSpatialIndexFast
lookup structure for nearby airport geometry.
Receives: Context Request
aircraft position
search radius
Emits: RunwayCandidateSet
runwayId,
airportIcao
thresholdA {lat,lon}
thresholdB {lat,lon}
heading, length,
width
RunwayCandidateSet
47,824 airports · 75,000+ runways · X-Plane apt.dat
↷ feeds L03 (geometry) and L05 (RISEngine) on every frame
This is where the aircraft first gets a relationship to a runway. It
calculates how far off-centreline the aircraft is, how far from the threshold, whether the
headings align, and applies magnetic variation so everything is in real-world magnetic
reference.
Converts aircraft state into runway-relative geometry. First layer where
runway relation becomes measurable, fed continuously by L04 runway candidates.
GeoMathLow-level spatial
calculations used across geometry and runway logic.
→
GeoCalculatorDerives
headings, distances, bearings and positional deltas.
→
MagneticModelConverts true
bearings into local magnetic reference.
→
RunwayHeadingResolverAligns
aircraft track against runway magnetic heading families.
Receives
AircraftState
RunwayCandidateSet ← L04
Emits: GeometryState
distanceToThreshold
bearingToThreshold
crossTrackMeters
alongTrackMeters
headingDelta
alignedRunways[]
GeometryState
↶ cross-layer feed: RunwayCandidateSet from L04 on every frame
Geometry says where the aircraft is. This layer says what it's trying
to do. It watches approach corridors, lateral stability, and phase of flight — and commits to a
runway assignment before the pilot crosses the threshold. Touchdown, rollout, and vacate are
latched, not re-evaluated.
Converts geometry into runway intent. RISEngine orchestrates the call chain.
Corridor and lateral detectors run as sibling branches feeding RunwayIntentPredictor after phase
is resolved.
RISEngineCentral
runway-intelligence orchestrator resolving runway intent.
→
RunwayPhaseResolverDetermines
whether aircraft is approach, rollout, or airborne relative to runway.
→
ApproachCorridorDetectorMeasures corridor alignment before runway threshold
entry.
branch
RunwayLateralDetectorTracks lateral displacement relative to runway
centreline.
→
ApproachStabilityMonitorEvaluates approach continuity before intent
confirmation.
→
RunwayIntentPredictorPredicts
target runway before physical threshold crossing.
Receives
AircraftState
GeometryState
RunwayCandidateSet ← L04
Emits: RunwayIntentState
assignedRunway
phase
stableApproach bool
lateralConfidence float
occupancyPrediction
RunwayIntentState
Touchdown · Rollout · Vacated latch
Once on the ground, intent changes character. Four parallel detectors
distinguish between lining up for departure, crossing a runway without departing, backtracking
along it, or accelerating into a takeoff roll. Each answer is a boolean that feeds directly into
controller logic.
Extends runway intelligence into ground operations through parallel surface
detectors resolved under SurfaceIntentResolver.
RunwayIntentPredictorPredicts
target runway before physical threshold crossing.
→
LineupDetectorDetects
deliberate runway entry for departure positioning.
parallel
RunwayCrossingDetectorIdentifies lateral runway traversal without departure
intent.
·
BacktrackDetectorDetects
reverse runway movement after entry.
·
DepartureRollDetectorConfirms acceleration consistent with takeoff
roll.
Receives
RunwayIntentState
AircraftState
Emits: SurfaceState
surfaceIntent
lineup bool
crossing bool
backtrack bool
departureRoll bool
SurfaceState
Taxi V5.1 · Active development
Controller roles only activate after runway certainty and surface
intent are proven in the layers below. Three roles — Ground, Tower, Approach — each derive
clearances from the state stack. A phraseology layer converts those decisions into standard ATC
language. A voice renderer speaks them.
Controller roles derive clearances only after runway certainty and spatial
confidence are established in lower layers.
GroundControllerTaxi
clearances, crossings and surface sequencing.
roles
TowerControllerDepartures, landings and runway occupancy
decisions.
·
ApproachControllerArrivals before tower handoff and runway assignment
continuity.
→
PhraseologyLayerConverts
decisions into standard ATC language.
→
VoiceRendererConverts
operational decisions into ATC voice output.
Receives
RunwayIntentState
SurfaceState
traffic state (future)
Emits: Clearance
clearanceType
assignedRunway
phraseology string
voice audio
e.g. CLEARED TO LAND RWY 28R