Skip to Content
This documentation is provided with the HEAT environment and describes this HEAT instance.

Data produced by the SimConnect module

One entity per tick: the user’s own aircraft. Neither package captures AI traffic or any aircraft other than the one the user is flying.

Entity

FieldValue
IdAn FNV-1a hash of the aircraft’s TITLE SimVar - deterministic across runs, not randomized per process. 0 if the simulator ever reports an empty title.
NameThe aircraft’s TITLE, or the literal string "Unknown Aircraft" if SimConnect reports none

Aircraft type (fixed-wing, rotary-wing, or unknown) is classified from the CATEGORY SimVar: Helicopter maps to rotary-wing; Airplane, Glider and Amphibian map to fixed-wing; anything else is unknown. This classification gates which events can fire - see below.

Shared components

Both packages populate the same components from the same SimConnect variable groups. Units are converted to SI where HEAT ProtoLib expects it (feet to meters, knots to meters/second, pounds-force to newtons); everything else keeps the unit stated in its field description.

ComponentWhat it carries
WorldPositionComponentLatitude, longitude, altitude, true heading
DynamicsComponentWorld velocity and acceleration, ground speed
AirDataComponentAmbient temperature, pressure, wind, visibility, in-cloud state
GenericAircraftComponentIndicated altitude, radio height, G-force
AircraftEngineComponentCombustion state, throttle position, jet thrust, reverse thrust
AircraftLandingGearComponentGear position, gear handle, parking brake
FWAControlSurfacesComponent, FWAInputComponent, FWADataComponentFixed-wing only: control surfaces, trim, flaps, spoilers, pedal/yoke input, airspeed, mach, stall/overspeed flags
RotaryWingDataComponentRotary-wing only: rotor torque and trim
AircraftAvionicsComponentAutopilot master, flight director, autothrottle, selected heading/altitude/airspeed/mach/vertical speed, hold-mode states
ResourceStoresComponent, FuelSystemComponentFuel quantities per tank (main, center, aux, tip, external), dump and crossfeed state. Transfer rate, refuel state and selected source fields are published at their proto default since SimConnect does not provide them
ATCDataComponentATC identity, callsign, transponder code

The PropulsionControlData group (throttle lever, reverse thrust, afterburner state) is subscribed and shown in this module’s own debug view, but is not mapped into any published component in this version.

Transition events

All state-change events are StateChangedEvents with a plain string state label, detected by comparing this tick’s value against the previous tick’s - not against every value SimConnect delivered in between. See Configure for why a fast transition can be missed entirely if Interval is too high.

Eventstate value(s)Condition
Ground/air transitiongrounded, airborneAny aircraft type
Engine stateengine_running, engine_stoppedAny aircraft type
Stall warningstall_warning_on, stall_warning_offFixed-wing only - never fires for a rotary-wing or unknown-type aircraft
Overspeed warningoverspeed_warning_onFixed-wing only. There is no overspeed_warning_off - once triggered, nothing in this module’s output signals the warning clearing

Because the event detector’s internal “previous state” resets to a fixed default at the start of every session (assumes grounded, engine off), starting a session with the aircraft already airborne or with the engine already running publishes a grounded-to-airborne or engine_stopped-to-engine_running transition on the very first tick, even though nothing actually changed at that instant. Treat the first tick’s events as suspect, not a real transition.

Prepar3D-only: weapons and combat

Prepar3D’s package additionally polls weapon, gun, countermeasure and fire-control-system state every tick and emits discrete events on change - MSFS’s package has none of this.

EventTriggerReal limitation
FiredEvent (weapon)A weapon station’s object count decreasesbullet_entity_id is the station’s own object id; weapon_name/munition_name both come from the same WEAPON TYPE SimVar
FiredEvent (gun)The gun trigger’s rising edgeFires on the trigger edge alone, with no ammo-count check - weapon_name: "gun", munition_name: "rounds" regardless of whether rounds actually left the gun
CountermeasureEventA countermeasure station’s object count decreasescountermeasure_name is always empty - there is no chaff/flare/decoy identification, only “something was dispensed”
TargetTrackingEventThe FCS targeted object id changesEmits a Released for the old target (if any) followed by a Locked for the new one (if any) in the same tick when switching directly between two targets
StateChangedEventMaster arm toggles, or weapon selection changesmaster_arm_on/master_arm_off; weapon_selected:<type> where <type> is whatever WEAPON TYPE reports, not a fixed vocabulary. No event fires when the selection clears to none

Up to 16 weapon/gun/countermeasure stations are tracked; SimConnect itself reports 0 for stations beyond the aircraft’s actual STATION COUNT, so this cap is not usually a practical limit.

Prepar3D-only: cockpit display state

A small always-on probe reports two fixed display slots, primary_flight_display and multifunction_display, into AircraftDisplayStateComponent, each with a coarse active_page value: off, active, or a *_partial value naming which avionics circuit is degraded. This reads only Prepar3D’s generic, simulator-wide A: variables; it cannot see aircraft-specific gauge (L:) variables, so it cannot represent a custom multi-function-display page layout - only whether the avionics behind it are powered and intact.

Opens your browser's print dialog. Choose "Save as PDF" as the destination.