About Aircraft Control
The X-Plane plugin system allows control of other aircraft within X-Plane.
We provide location information and X-Plane takes care of the graphics.
X-Plane loads a finite number of aircraft that it loads and manages. Each
has a model (loaded from an aircraft file) with one texture and one set of
flight model data. There are basically two ways to work with X-Plane's
Directly controlling the position of X-Plane's aircraft is the easiest way to
control them and probably the best choice for simple applications.
However, directly controlling the aircraft has two limitations: we can
only have a fixed number of planes (seven besides the users plane in X-Plane
660) and we must load a new ACF file to change what one of the aircraft
looks like (even if the same model is being used for another aircraft number).
Specify the position and configuration (flaps, etc.) information of each
aircraft to move them. X-Plane's "AI" aircraft code is disabled. We
can update the positions of the planes as often as we want (or do not want),
but for smooth motion we should update the planes' positions every frame.
We draw the aircraft, using X-Plane's aircraft drawing routine. This
provides lower level drawing control over aircraft, but is more complicated.
We must draw the aircraft every frame.
We can get around some of these limitations by drawing aircraft ourself.
When we draw aircraft ourself, we control whether aircraft are
drawn as full aircraft or just landing lights and we must cull aircraft
that are not on screen. We can draw any plane at any time,
allowing the immediate placing of any of the loaded aircraft models
at any location. However, the planes we draw are only painted; they
do not interact with the sim (for example, we will not see them on the
In all cases, X-Plane's control of the aircraft is fully
disabled. We are responsible for interpolating landing gear
position, checking for collisions with the ground, and computing flight
Controlling Aircraft Exclusively
In order to control aircraft we must gain exclusive access to them.
Only one plugin can control aircraft at a time. If another plugin
is accessing aircraft, we can provide a callback function that will be
called when that other plugin releases the aircraft or is disabled.
(Disabling a plugin forces aircraft to be released.) Exclusive
access is taken for all aircraft at once; individual aircraft cannot be split
between multiple plugins.
Once we control aircraft, we can set their locations. We
do this by setting datarefs; see the data ref master list for the datarefs that
control the multiplayer aircraft.
Loading Aircraft Sets
When we take exclusive access of the aircraft we specify a set of
aircraft we would like loaded. (This set can be empty if we do
not want to load aircraft when taking control.) However, providing an
aircraft set is a good way to load our aircraft because only aircraft that are
not already loaded are reloaded and if our plugin takes control of aircraft at
startup then X-Plane will load our aircraft initially. (This saves the
time of loading 7 aircraft, then reloading them with different models).
Aircraft are specified by path.
We can draw an individual aircraft. When we draw the
aircraft, we specify all of its parameters (position, orientation, and
other aircraft attributes). We control which aircraft model is drawn
by choosing an aircraft number. We can only draw aircraft during an
external drawing callback; typically plugins that want to draw their own
aircraft register a callback for after objects are drawn.
Limiting the Number of Active Aircraft
We can control the number of active aircraft and enable or disable whether
X-Plane's "AI" is working on them. This allows reduction of the
number of AI planes present or control the number of planes we are working
Using Aircraft Control
Controlling the User's Plane
Getting Information About Planes
Exclusive Access to the Aircraft
Getting Access to Aircraft
Loading Aircraft Sets
Limiting Aircraft Number
Drawing Our Own Aircraft
Controlling Aircraft Ourselves