Howto:Implement a Control Display Unit
|IMPORTANT: Some, and possibly most, of the features/ideas discussed here are likely to be affected, and possibly even deprecated, by the ongoing work on providing a property tree-based 2D drawing API accessible from Nasal using the new Canvas system available since FlightGear 2.80 (08/2012). Please see: Canvas MCDU Framework for further information
You are advised not to start working on anything directly related to this without first discussing/coordinating your ideas with other FlightGear contributors using the FlightGear developers mailing list or the Canvas subforum . Anything related to Canvas Core Development should be discussed first of all with TheTom and Zakalawe. Nasal-space frameworks are being maintained by Philosopher and Hooray currently. talk page.
FlightGear has a generic Control Display Unit (CDU) model available, for easy implementation into aircraft. Currently only a Boeing style one is available, under Aircraft/Instruments-3d/cdu/. Be sure you have implemented a V-speed calculator before implementing the CDU.
The Boeing 747-400 is an example aircraft for the generic CDU.
As of 01/2013, a new CDU framework is being worked on by James, based on a combination of C++ and Nasal code, for further details please check out FlightGear Newsletter January 2013#Canvas-based CDU development.
For each single CDU unit, the following code block is required in your aircraft's model .xml file. You can add as many CDUs as you need.
<model> <path>Aircraft/Instruments-3d/cdu/boeing.xml</path> <offsets> <x-m> 0.858</x-m> <y-m> 0.186</y-m> <z-m> 0.489</z-m> <pitch-deg>-75</pitch-deg> </offsets> <overlay> <texture>boeing_brown.png</texture> </overlay> </model>
- offsets: use these to position the CDU in your cockpit. The CDU model's origin is in the center of the model.
- texture: currently there are two textures to chose from, in order to fit your aircraft's panel color:
These should all be placed outside the <sim></sim> part.
<instrumentation> <cdu> <display>IDENT</display> <ident> <model>747-400</model> <engines>-80C2B1F</engines> </ident> <input type="string"/> <serviceable type="bool">true</serviceable> </cdu> </instrumentation> <nasal> <cdu> <file>Aircraft/Instruments-3d/cdu/boeing.nas</file> </cdu> </nasal>
- display: the initial page, when power is first applied to the aircraft.
- ident: data to be displayed on the IDENTIFICATION page.