<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.flightgear.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AndersM</id>
	<title>FlightGear wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.flightgear.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AndersM"/>
	<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/Special:Contributions/AndersM"/>
	<updated>2026-05-27T07:37:21Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Template:Model_Gallery&amp;diff=139788</id>
		<title>Template:Model Gallery</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Template:Model_Gallery&amp;diff=139788"/>
		<updated>2024-04-26T13:22:44Z</updated>

		<summary type="html">&lt;p&gt;AndersM: Correct version Draken&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ #switch: {{{section|}}}&lt;br /&gt;
 | carrier_borne_aircraft =&lt;br /&gt;
  {{Gallery&lt;br /&gt;
  | Buccaneer.jpg | [[Blackburn Buccaneer]]&lt;br /&gt;
  | Douglas_A4.jpg | [[Douglas A-4 Skyhawk]]&lt;br /&gt;
  | A-6E.jpg | [[Grumman A-6E|Grumman A-6E Intruder]]&lt;br /&gt;
  | F-8E.jpg | [[F-8 Crusader]]&lt;br /&gt;
  | F-14.jpg | [[Grumman F-14 Tomcat]]&lt;br /&gt;
  | Hawker_Seahawk.jpg | [[Hawker Seahawk|Hawker Seahawk FGA6]]&lt;br /&gt;
  }}&lt;br /&gt;
 | experimental =&lt;br /&gt;
  {{Gallery&lt;br /&gt;
  | BAC_TSR-2_Prototype.jpg | [[BAC TSR-2 Prototype]]&lt;br /&gt;
  | V22Osprey.jpg |[[Bell Boeing V22 Osprey | Bell V-22 Osprey]]&lt;br /&gt;
  | X15.jpg | [[North American X-15]]&lt;br /&gt;
  | YF-23.jpg | [[Northrop/McDonnell Douglas YF-23]]&lt;br /&gt;
  }}&lt;br /&gt;
 | helicopters =&lt;br /&gt;
  {{Gallery&lt;br /&gt;
  | Ah-1_vietnam_firebase.png | [[AH-1 Cobra]]&lt;br /&gt;
  | H21c.jpg | [[Boeing-Vertol H21C]]&lt;br /&gt;
  | CH-47 Chinook.jpg | [[CH-47 Chinook Helicopter]]&lt;br /&gt;
  | Bo105.jpg | [[Eurocopter Bo105]]&lt;br /&gt;
  | Ec135.jpg | [[Eurocopter EC135]]&lt;br /&gt;
  | EC130.jpg | [[Eurocopter EC130 B4]]&lt;br /&gt;
  | OH-6.png | [[Hughes OH-6 Cayuse]]&lt;br /&gt;
  | WG13.jpg | [[Lynx WG13]]&lt;br /&gt;
  | S51.jpg | [[Sikorsky S51]]&lt;br /&gt;
  | S58.jpg | [[Sikorsky S58]]&lt;br /&gt;
  | s76c_landed.jpg | [[Sikorsky S76C]]&lt;br /&gt;
  | Uh60.jpg| [[Sikorsky UH60]]&lt;br /&gt;
  | Aluette2.jpg | [[Aérospatiale Alouette II|Alouette II]]&lt;br /&gt;
  | Hup-3.jpg | [[Piasecki HUP-3]]&lt;br /&gt;
  | R22.jpg | [[Robinson R22]]&lt;br /&gt;
  }}&lt;br /&gt;
 | historical_aircraft =&lt;br /&gt;
  {{Gallery&lt;br /&gt;
  | Couzinet70.jpg  |[[Couzinet 70]]&lt;br /&gt;
  | dh91.jpg | [[De Havilland D.H. 91 Albatross]]&lt;br /&gt;
  | Douglas_DC3.jpg | [[Douglas DC-3]]&lt;br /&gt;
  | ComperSwift.jpg | [[ComperSwift Comper]]&lt;br /&gt;
  | Lockheed_1049.jpg | [[Lockheed 1049|Lockheed Constellation]]&lt;br /&gt;
  | 314.jpg | [[Boeing 314]]&lt;br /&gt;
  | DHC-3.jpg | [[de Havilland Canada DHC-3 Otter]]&lt;br /&gt;
  | 1903_Wright_Flyer.jpg | [[Wright Flyer (UIUC)]]&lt;br /&gt;
  | Short_Empire.jpg | [[Short Empire]]&lt;br /&gt;
  | Dc-3-splash.png | [[Douglas DC-3-C47]]&lt;br /&gt;
  }}&lt;br /&gt;
 | light_civilian_aircraft =&lt;br /&gt;
  {{Gallery&lt;br /&gt;
  | A24-liverie-default.png | [[Aeroprakt A24 Viking]]&lt;br /&gt;
  | Aerostar_700.jpg | [[Aerostar 700]]&lt;br /&gt;
  | FK9MK2.jpg | [[B&amp;amp;F FK9 Mark 2]]&lt;br /&gt;
  | Beech99.jpg | [[Beechcraft Model 99]]&lt;br /&gt;
  | Cessna_172P.jpg | [[Cessna C172|Cessna 172P]] (1982)&lt;br /&gt;
  | Edgley_Optica_01.jpg | [[Edgley Optica]]&lt;br /&gt;
  | PA28-Warrior.jpg | [[Piper_PA28_Warrior_II|Piper PA28 Warrior II]]&lt;br /&gt;
  | Pa-24.jpg | [[Piper PA-24 Comanche|Piper Comanche (PA24-250)]]&lt;br /&gt;
  | Piper j3cub.jpg | [[Piper J3 Cub]] (1946)&lt;br /&gt;
  | Piper SenecaII.jpg | [[Piper PA34-200T Seneca II|Piper Seneca II (PA34-200T)]]&lt;br /&gt;
  | dr400.jpg | [[Robin DR400]]&lt;br /&gt;
  | DR400-dauphin.jpg | [[Robin DR400 Dauphin]]&lt;br /&gt;
  | Rallye-MS893.jpg | [[Rallye-MS893E]]&lt;br /&gt;
  | Piper_Dakota.png | [[Piper Dakota]]&lt;br /&gt;
  | Velocity-XL-RG.jpg | [[Velocity XL RG]]&lt;br /&gt;
  }}&lt;br /&gt;
 | lighter_than_air =&lt;br /&gt;
  {{Gallery&lt;br /&gt;
  | Zeppelin_NT.jpg | [[Zeppelin NT]]&lt;br /&gt;
  | ZF_Navy_free_balloon.jpg | [[ZF Navy free balloon]]&lt;br /&gt;
  | Submarine_Scout.jpg | [[Submarine Scout]]&lt;br /&gt;
  | Zeppelin_LZ_121_Nordstern.jpg | [[Zeppelin LZ 121 Nordstern]]&lt;br /&gt;
  }}&lt;br /&gt;
 | business_jets =&lt;br /&gt;
  {{Gallery&lt;br /&gt;
  | CessnaCitationX.jpg | [[Cessna Citation X]]&lt;br /&gt;
  }}&lt;br /&gt;
 | modern_airliners_narrowbody_midsize =&lt;br /&gt;
  {{Gallery&lt;br /&gt;
  | A320-family.jpg | [[Airbus A320 family]]&lt;br /&gt;
  | Beechcraft B1900D.png | [[Beechcraft B1900D]]&lt;br /&gt;
  | 707.jpg | [[Boeing 707]]&lt;br /&gt;
  | 717-200.jpg | [[Boeing 717]]&lt;br /&gt;
  | B727-200-1.png | [[Boeing 727|Boeing 727]]&lt;br /&gt;
  | 737-100.png | [[Boeing 737-100]]&lt;br /&gt;
  | 737-300.jpg | [[Boeing 737-300]]&lt;br /&gt;
  | Boeing 737-400 British Airways.jpg | [[Boeing 737-400]]&lt;br /&gt;
  | 757-2002.jpg | [[Boeing 757-200|Boeing 757 series]]&lt;br /&gt;
  | Picture 11.png | [[Bombardier CRJ-200LR]]&lt;br /&gt;
  | CRJ700.jpg | [[Bombardier CRJ700 series]]&lt;br /&gt;
  | Concorde.png | [[Concorde]]&lt;br /&gt;
  | Fokker50.jpg | [[Fokker 50]]&lt;br /&gt;
  | MD-80.png | [[McDonnell Douglas MD-80]]&lt;br /&gt;
  | Tu154.jpg | [[Tupolev 154]]&lt;br /&gt;
  }}&lt;br /&gt;
 | modern_airliners_widebody_jumbo =&lt;br /&gt;
  {{Gallery&lt;br /&gt;
  | Fgfs-20230726152543.png | [[Airbus_A330|Airbus A330 family]]&lt;br /&gt;
  | A340-313X-001.png | [[Airbus A340-313X|Airbus A340-300]]&lt;br /&gt;
  | A340-600HGW-3.png | [[Airbus A340-600HGW|Airbus A340-600]]&lt;br /&gt;
  | A350picture.png | [[Airbus A350]]&lt;br /&gt;
  | A380.jpg | [[Airbus A380]]&lt;br /&gt;
  | 747-400.jpg | [[Boeing 747-400]]&lt;br /&gt;
  | 747-8i.png | [[Boeing_747-8i|Boeing 747-8]]&lt;br /&gt;
  | Boeing 767-300.png | [[Boeing 767-300]]&lt;br /&gt;
  | Boeing777-200LR.jpg | [[Boeing 777-200|Boeing 777 series]]&lt;br /&gt;
  | 787.png | [[Boeing 787]]&lt;br /&gt;
  | DC10_NWA_landing.jpg | [[McDonnell_Douglas_DC-10-30|McDonnell Douglas DC-10]]&lt;br /&gt;
  | MD-11-Octal450.png | [[McDonnell Douglas MD-11]]&lt;br /&gt;
  }}&lt;br /&gt;
 | modern_military_aircraft =&lt;br /&gt;
  {{Gallery&lt;br /&gt;
  | A-10.jpg | [[Fairchild A-10]]&lt;br /&gt;
  | B-52F.jpg | [[Boeing B-52]]&lt;br /&gt;
  | E-3B.jpg | [[Boeing E-3 Sentry]]&lt;br /&gt;
  | F-15C.jpg | [[F-15C Eagle]]&lt;br /&gt;
  | F-80C.jpg | [[F-80C Shooting Star]]&lt;br /&gt;
  | Harrier.jpg | [[British Aerospace Harrier]]&lt;br /&gt;
  | General_Dynamics_F16.jpg | [[General Dynamics F-16]]&lt;br /&gt;
  | Cessna T-37.jpg | [[Cessna T-37]]&lt;br /&gt;
  | Dassault Mirage F.1 at altitude.png | [[Dassault Mirage F.1]]&lt;br /&gt;
  | M20005prespic.png | [[Dassault Mirage 2000-5]]&lt;br /&gt;
  | Northrop_T-38.jpg | [[Northrop T-38]]&lt;br /&gt;
  | OV-10A2.jpg | [[North American OV-10A Bronco]]&lt;br /&gt;
  | Saab_J35.jpg | [[Saab J 35Ã– Draken|Saab J35F Draken]]&lt;br /&gt;
  | LCA.jpeg | [[HAL Tejas]]&lt;br /&gt;
  | F-22.png | [[Lockheed Martin F-22 Raptor]]&lt;br /&gt;
  | MiG-29_splash.png | [[Mikoyan-Gurevich_MiG-29]]&lt;br /&gt;
  | PC-9M.jpg | [[Pilatus PC-9M]]&lt;br /&gt;
  | PC-21.jpg | [[Pilatus PC-21]]&lt;br /&gt;
  }}&lt;br /&gt;
 | science_fiction =&lt;br /&gt;
  {{Gallery&lt;br /&gt;
  | bluebird_hovercraft.jpg | [[Bluebird]]&lt;br /&gt;
  | UFO.jpg | [[UFO from the 'White Project' of the UNESCO]]&lt;br /&gt;
  }}&lt;br /&gt;
 | spacecraft =&lt;br /&gt;
  {{Gallery&lt;br /&gt;
  | Shuttle.jpg | [[Space Shuttle]]&lt;br /&gt;
  | Vostok-1-Exterior.png | [[Vostok-1]]&lt;br /&gt;
  }}&lt;br /&gt;
 | ultra_light = &amp;lt;!-- gliders, sailplanes, &amp;amp; ultralights --&amp;gt;&lt;br /&gt;
  {{Gallery&lt;br /&gt;
  | AirwaveXtreme150.jpg | [[Airwave Xtreme 150]]&lt;br /&gt;
  | Hornet.jpg | [[GDT Hornet (autogyro)]]&lt;br /&gt;
  | DG-101G_001.jpg | [[Glaser-Dirks DG-101G]]&lt;br /&gt;
  | DG-300.jpg | [[Glaser-Dirks DG-300]]&lt;br /&gt;
  | Dragonfly-towing.jpg | [[Dragonfly|Moyes Dragonfly]]&lt;br /&gt;
  | Paraglider.jpg | [[Paraglider]]&lt;br /&gt;
  | Asw20.jpg | [[ASW-20 sailplane|Schleicher ASW-20]]&lt;br /&gt;
  | Sgs233.jpg | [[Schweizer 2-33]]&lt;br /&gt;
  }}&lt;br /&gt;
 | vehicles = &amp;lt;!-- cars, tanks, etc. --&amp;gt;&lt;br /&gt;
  {{Gallery&lt;br /&gt;
  | AerocarI_1.png | {{int|Taylor Aerocar}}&lt;br /&gt;
  | Follow_me.jpg | {{int|Follow me}}&lt;br /&gt;
  | Jeep.jpg | {{int|Jeep}}&lt;br /&gt;
  | Lamborghini Murcielago LP640 March10.jpg | {{int|Lamborghini Murcielago}}&lt;br /&gt;
  | M113AS3.jpg | {{int|M113AS3}}&lt;br /&gt;
  | Mobile_Stairs.jpg | {{int|Mobile Stairs}}&lt;br /&gt;
  | Pushback.jpg | {{int|Pushback}}&lt;br /&gt;
  | Snowplow.jpg | {{int|Snowplow}}&lt;br /&gt;
  }}&lt;br /&gt;
 | warbirds =&lt;br /&gt;
  {{Gallery&lt;br /&gt;
  | Beaufighter.png | [[Bristol Beaufighter]]&lt;br /&gt;
  | Fokker_DrI.jpg | [[Fokker Dr.I]]&lt;br /&gt;
  | P51d-mustang.png | [[P-51D Mustang]]&lt;br /&gt;
  | A6M2_fgfs-screen-166.jpg | [[A6M2 Zero]]&lt;br /&gt;
  | ki-84.jpg | [[Nakajima Ki-84]]&lt;br /&gt;
  | Fw190.jpg | [[Focke-Wulf Fw 190]]&lt;br /&gt;
  | Sopwith_Camel.png | [[Sopwith Camel]]&lt;br /&gt;
  | Spitfire.jpg | [[Supermarine Spitfire]]&lt;br /&gt;
  | MiG-15bis-Exterior.jpg | [[MiG-15]]&lt;br /&gt;
  | F4u-park.jpg | [[F4U Corsair]]&lt;br /&gt;
  | 109-1.png | [[Messerschmitt Bf 109]]&lt;br /&gt;
  }}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Informative template | 1=&lt;br /&gt;
__NOTOC__&lt;br /&gt;
== Goal ==&lt;br /&gt;
This template is used in aircraft/helicopter/vehicle gallery pages and their translations.  By using and maintaining this template the translations of the gallery pages can be up to date and synchronised with the least required work possible.&lt;br /&gt;
&lt;br /&gt;
This is the right place to add aircrafts to the lists in [[Aircraft]], [[:de:Flugzeuge]], [[:es:Aeronaves]], etc.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{&amp;lt;/nowiki&amp;gt;'''Model Gallery''' &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;section=&amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
; section:  Section of aircraft to show.  Must be one of the following or no gallery will be shown:&lt;br /&gt;
:* '''carrier_borne_aircraft'''&lt;br /&gt;
:* '''experimental'''&lt;br /&gt;
:* '''helicopters'''&lt;br /&gt;
:* '''historical_aircraft'''&lt;br /&gt;
:* '''light_civilian_aircraft'''&lt;br /&gt;
:* '''lighter_than_air'''&lt;br /&gt;
:* '''modern_airliners_narrowbody_midsize'''&lt;br /&gt;
:* '''modern_airliners_widebody_jumbo'''&lt;br /&gt;
:* '''modern_military_aircraft'''&lt;br /&gt;
:* '''science_fiction'''&lt;br /&gt;
:* '''spacecraft'''&lt;br /&gt;
:* '''ultra_light'''&lt;br /&gt;
:* '''vehicles'''&lt;br /&gt;
:* '''warbirds'''&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{Model Gallery |section=lighter_than_air}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
{{Model Gallery |section=lighter_than_air}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken/info&amp;diff=139115</id>
		<title>Saab 35 Draken/info</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken/info&amp;diff=139115"/>
		<updated>2024-02-12T13:52:39Z</updated>

		<summary type="html">&lt;p&gt;AndersM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{infobox aircraft&lt;br /&gt;
| name           = Saab 35 Draken&lt;br /&gt;
| hangar         = fgaddon&lt;br /&gt;
| aircraft       = SaabJ35F&lt;br /&gt;
| image          = Saab_J35.jpg&lt;br /&gt;
| image2         = Saab_J35_cockpit.jpg&lt;br /&gt;
| type           = Fighter aircraft&lt;br /&gt;
| config         = Delta-wing aircraft&lt;br /&gt;
| propulsion     = Single-engine jet&lt;br /&gt;
| authors        = Anders M (3D model, FDM, Cockpit)&lt;br /&gt;
| fdm            = JSBSim&lt;br /&gt;
| fgname         = SaabJ35F&lt;br /&gt;
| manufacturer   = Saab&lt;br /&gt;
| status-fdm     = 3&lt;br /&gt;
| status-systems = 3&lt;br /&gt;
| status-cockpit = 4&lt;br /&gt;
| status-model   = 4&lt;br /&gt;
| status         = 0.9.6&lt;br /&gt;
| forumtid       = 18798&lt;br /&gt;
| navbar         = 1&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This is the aircraft infobox subpage of the [[Saab 35 Draken]].&lt;br /&gt;
[[Category:Aircraft infobox documentation]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken&amp;diff=139114</id>
		<title>Saab 35 Draken</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken&amp;diff=139114"/>
		<updated>2024-02-11T12:08:50Z</updated>

		<summary type="html">&lt;p&gt;AndersM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:{{PAGENAME}}/info}}&lt;br /&gt;
The '''Saab J35 Draken''' (Dragon) is a Swedish supersonic interceptor developed in the 1950s. The model F was delivered between 1965 and 1972 and is the model that the FG plane is based on.&lt;br /&gt;
&lt;br /&gt;
== Description of the features ==&lt;br /&gt;
Number in parenthesis refers to the cockpit images.&lt;br /&gt;
 &lt;br /&gt;
=== Special aircraft keys ===&lt;br /&gt;
{| class=&amp;quot;keytable&amp;quot;&lt;br /&gt;
! Key&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|S}}&lt;br /&gt;
| Automatic start sequence including all systems. (The aircraft needs to be stationary.)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|L}}&lt;br /&gt;
| Attach or remove drop tanks on ground. (Stationary and drop tank selector off)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|J}}&lt;br /&gt;
| Jettison drop tanks in air.&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|D}}&lt;br /&gt;
| Unlocks and opens/closes and locks canopy. Closed and locked canopy - first press unlocks second opens canopy. Closed and unlocked canopy at simulation start - first press locks. Open canopy - first press closes canopy second locks&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|Q}} &lt;br /&gt;
| Fuel cut off, not normally needed.&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|P}} &lt;br /&gt;
| Use drag chute handle&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|e}}&lt;br /&gt;
| Fire ADEN 30mm cannon (100 rounds available, 1700 rounds per minute)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|z}}&lt;br /&gt;
|Sight ring: Decreased distance&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|Z}}&lt;br /&gt;
| Sight ring: Increased distance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Special indicators ===&lt;br /&gt;
&lt;br /&gt;
*GLÖM EJ LAND-STÄLL: (&amp;quot;Do not forget landing gear&amp;quot;) flashes if altitude &amp;lt; 1450 m, airspeed &amp;lt; 450 km/h and throttle &amp;lt; 85%&lt;br /&gt;
&lt;br /&gt;
*HUVUDVARN.: Main caution light. Indicates important system warnings. See below. Acknowledge by pressing the light to silence the alarm. No warning signal while taxing.&lt;br /&gt;
&lt;br /&gt;
*HÖJDV: Flashes when autopilot HÖJD (altitude hold) is set and aircraft not at target altitude or vertical speed above 200 m/min. Lit when stable at target altitude. It is recommended to be at target altitude before setting autopilot to HÖJD.&lt;br /&gt;
*Landing gear down and locked: (LANDSTÄLL LÅST UTE) Green lights front lower left&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Gauges and instruments ===&lt;br /&gt;
&lt;br /&gt;
'''Fuel gauge'''&lt;br /&gt;
&lt;br /&gt;
Shows percent of drop-tanks left until they are empty if attached. Otherwise percent of internal fuel remaining. The two needles shows left/front and right/rear tank level. The engine is supplied by the two tanks alternating if not on afterburner, therefore the needles will chase each other down the scale.&lt;br /&gt;
&lt;br /&gt;
'''G-gauge'''&lt;br /&gt;
&lt;br /&gt;
Max G-force is displayed by a striped needle. Reset by clicking the small reset pin on the right side of the instrument.&lt;br /&gt;
&lt;br /&gt;
'''Altitude gauge'''&lt;br /&gt;
&lt;br /&gt;
Pressure setting is done by clicking left or right side of the setting knob (lower left of he instrument).&lt;br /&gt;
&lt;br /&gt;
'''Altitude selector'''&lt;br /&gt;
&lt;br /&gt;
Right side below secondary AI. Sets target altitude for autopilot. (7). Click for PLANÉ mode.&lt;br /&gt;
&lt;br /&gt;
'''Course selector'''&lt;br /&gt;
&lt;br /&gt;
Below Heading indicator. Sets course needle on the heading indicator (compass).&lt;br /&gt;
&lt;br /&gt;
'''Clock'''&lt;br /&gt;
&lt;br /&gt;
Clock ring: Knob furthest right from clock turns the ring. Set pointing to the minute hand before lift off to keep track of flying time.&lt;br /&gt;
&lt;br /&gt;
Clock mode button: Lowest knob. Switches between clock and stopwatch. In reality also setting of the clock but not implemented.&lt;br /&gt;
&lt;br /&gt;
Stopwatch button: Starts, stops and resets the stopwatch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''AHK'''&lt;br /&gt;
&lt;br /&gt;
The real AHK (swe.Avstånd Höjd Kommando, eng. distance altitude command), on the right side of the radar, was an instrument connected to the Swedish air combat control centres (The system is part of &amp;quot;STRIL60&amp;quot;). It gave tactical information to the pilot by 20 different commands, displayed as words at the top of the instrument, and also by the distance scale and the arrow needle on the height scale. Some of the commands are reused  as instrument modes.(6)&lt;br /&gt;
&lt;br /&gt;
In all modes the &amp;quot;HÖJD&amp;quot; (altitude) scale shows pressure-altitude. Dot-needle from 0-2000 m and tape-needle from 0-20000 m.&lt;br /&gt;
&lt;br /&gt;
Modes:&lt;br /&gt;
&lt;br /&gt;
*0: (Off) Only altitude shown&lt;br /&gt;
*HÖJDÄNDRING: Arrow shows height reached in one minute at current vertical speed. Scale 0-20000 m. &amp;quot;AVST&amp;quot; tape shows distance over ground to change altitude 1000 m at current vertical speed. Speed over ground calculated from IAS using standard atmosphere.&lt;br /&gt;
*LANDA: Arrow shows height reached in one minute at current vertical speed. Scale 0-2000 m.&lt;br /&gt;
&amp;quot;AVST&amp;quot; tape shows distance over ground until tuchdown at sealevel and current vertical speed. Speed over ground calculated from IAS using standard atmosphere.&lt;br /&gt;
*AVST. 400: Arrow shows height reached in one minute at current vertical speed. AVST tape shows distance to beacon 0-400 km.&lt;br /&gt;
*AVSTÅND 40: Arrow shows height reached in one minute at current vertical speed. AVST tape shows distance to beacon 0-40 km.&lt;br /&gt;
*BARBRO: Arrow shows height reached in one minute at current vertical speed, scale 0-2000 m. AVST tape shows distance to beacon 0-40 km.&lt;br /&gt;
*NYTT MÅL: Arrow shows Route Manager cruise altitude 0- 20000 m. AVST shows distance 0-400 km to next Route Manager waypoint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Caution panel'''&lt;br /&gt;
&lt;br /&gt;
Lower right.(9) Shows system cautions and warnings.&lt;br /&gt;
Those with ! in front triggers main caution light:&lt;br /&gt;
&lt;br /&gt;
*!BRAND MOTOR: (fire engine) not implemented&lt;br /&gt;
*!BRAND EBK P: (fire afterburner pump) not implemented&lt;br /&gt;
*!STYR AUT: (autopilot) autopilot off&lt;br /&gt;
*MOTOR IS: (engine ice) engine deicing on not implemented yet&lt;br /&gt;
*!TANK LUFT: (tank air) airpressure fault in fuel system. Not implemented&lt;br /&gt;
*!OLJE TRYCK: (oil pressure) low oil pressure.&lt;br /&gt;
*EBK: (afterburner) Indicates that the exhaust nozzle is working as AB is turned off or on&lt;br /&gt;
or open when idle on the ground to keep engine from overheating. (Not lit constantly when using AB.)&lt;br /&gt;
*!SYR GAS: (oxygen pressure) not implemented&lt;br /&gt;
*!EL FEL: (electric fault) fault in AC circuit or generator off.&lt;br /&gt;
*!HYDR I, HYDR II: (hydraulic I and II) Low pressure in hydraulic circuit&lt;br /&gt;
*!KABIN TRYCK: (cabin pressure) Cabin pressure too low. Not implemented.&lt;br /&gt;
*!HUV LÅS: (canopy lock) canopy not locked.&lt;br /&gt;
&lt;br /&gt;
TANK LUFT, OLJE TRYCK, EL FEL, HYDR I and HYDR II will be lit when generator off. But should go off during engine start up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Radar'''&lt;br /&gt;
&lt;br /&gt;
Only a limited simulation of the radar is implemented:&lt;br /&gt;
&lt;br /&gt;
* Showing a sweep and antenna azimut. (mode TYST and SÄND)&lt;br /&gt;
&lt;br /&gt;
* In multiplayer the radar shows aircrafts in radar range: dist &amp;lt; 40 km, +-60 deg in yaw, +-30 deg in pitch and &amp;gt; 100 m above ground. (mode SÄND)&lt;br /&gt;
&lt;br /&gt;
Radar Modes. Set by radar panel on the right side of cockpit(16):&lt;br /&gt;
&lt;br /&gt;
FRÅN: Power off&lt;br /&gt;
&lt;br /&gt;
BER: Readies radar for transmission. Takes 20 sec (In reality 3 min)&lt;br /&gt;
&lt;br /&gt;
TILL: Like BER but sights and weapon connections also ready. (Same as BER in the simulation.)&lt;br /&gt;
&lt;br /&gt;
TYST: Everything running but no emissions from antenna.&lt;br /&gt;
&lt;br /&gt;
SÄND: Everything running and antenna emitting.&lt;br /&gt;
&lt;br /&gt;
Yellow lines are navigation indicators used by the navigation system. See below.&lt;br /&gt;
&lt;br /&gt;
Knobs on radar panel set intensity of scope (LJUSSTYRKA FSKOP) and navigation lines (KORSVISARE). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Radio'''&lt;br /&gt;
The radio equipment consists of two transceiver and one control unit of model Fr-21. They are on the left horizontal panel. In the simulation both transceivers are used for communication. In the real aircraft one was the receiver for combat control data feeding the AHK and other avionics. The letters A-K stores pre set frequencies for transceiver A (closest to the control unit) and the numbers 1-5 stores pre set frequencies for transceiver B. A stores the COM1 frequency at FG start up. Number 1 stores the COM2 frequency at FG start up. The frequency for the other letters and numbers are in the text file $FG_HOME/Export/SaabJ35F-Fr21.txt and can be changed by the user.&lt;br /&gt;
Pressing the buttons marked with dash (-) makes it possible to manually set the frequency using the knobs on the two manual units. Changing mode from Normal to Reserv changes sending unit from A to B.&lt;br /&gt;
The radio is off at simulation start. Transceiver B uses battery power and transceiver A uses main AC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Autopilot'''&lt;br /&gt;
&lt;br /&gt;
The autopilot is on the right side of the seat (11) and has the following functions and controls:&lt;br /&gt;
*HÖJD: Altitude hold. If plané on altitude selector the autopilot will folow a glide slope of approx 3 degrees.&lt;br /&gt;
*ATTITYD: Attitude hold- pitch and roll&lt;br /&gt;
*DÄMPN: Pitch and yaw-damper on. This is on in all normal flight conditions&lt;br /&gt;
*SVÄNG: Banks the aircraft in attitude mode&lt;br /&gt;
*NOS: Pitch setting in attitude mode&lt;br /&gt;
*FRÅN TILL: Main autopilot switch. Normally left on. Triggers caution light if off.&lt;br /&gt;
*ROLL: Roll trim elevon setting&lt;br /&gt;
*GIR: Rudder trim setting&lt;br /&gt;
*Middle mouse button zeros the slider/knob.&lt;br /&gt;
&lt;br /&gt;
''IMPORTANT:'' The autopilot has an automatic switch to only damping if airspeed is Mach 0.95-1.05 or G-force is above 4 G or below -0.5 G. No warning is given.&lt;br /&gt;
&lt;br /&gt;
At present the autopilot is not as stable as it should be, especially altitude hold.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Navigation radio and mode selector'''&lt;br /&gt;
&lt;br /&gt;
Right side panel below cautions.(10) Main mode selector for navigation, AHK and radar.&lt;br /&gt;
&lt;br /&gt;
Draken does not have ordinary navigation instruments. It has a special system that was integrated in the combat command and navigation system of the Swedish airforce. A letter code was used to select navigation beacons and airbase landing system. There was two parts of the system: Anita - general navigation and Barbro - landing guidance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To simulate this and still be compatible with FG there is a file beacons.txt in the aircraft's directory. In that file you write a line for each beacon you want to use. The format is a comma separated list: letter code,type,frequenzy,note&lt;br /&gt;
*letter code: Three letters A-P that identifies the beacon. Anita (VOR, NDB) does only use the first two (you can set the last to any character you want). Barbro (ILS) uses all three.&lt;br /&gt;
*type: VOR, NDB or ILS.&lt;br /&gt;
*frequency: The beacons frequency VOR/ILS in MHz, NDB in kHz.&lt;br /&gt;
*note: Descriptive note. Must have at least one character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The selected mode sets input to course needle (cn), radar and AHK:&lt;br /&gt;
*FRÅN: (Off)  No nav radio, AHK 0, cn manual, Radar lines parked.&lt;br /&gt;
*FÖRV: (Preselected) No nav radio, AHK HÖJDÄNDRING, cn manual, Radar lines parked.&lt;br /&gt;
*STRIL: (Combat control) Activates Route Manager, AHK NYTT MÅL, cn direction to next waypoint, Radar lines parked.&lt;br /&gt;
*STRID: (Combat) No nav info, AHK HÖJDÄNDRING, cn manual, Radar lines parked.&lt;br /&gt;
*NAVRIKTN: (Navigation direction) Uses NDB/VOR set by the two letters NAV. Radar shows direction line, AHK HÖJDÄNDRING, cn ADF.&lt;br /&gt;
*NAV 400: (Navigation 400 km) Uses VOR/NDB set by the two letters NAV. Radar shows direction line, AHK AVST. 400 (shows 0 if NDB), cn direction to VOR. In plané mode a glideslope will also be shown on radar.&lt;br /&gt;
*NAV 40: (Navigation 40 km) Uses VOR/NDB set by the two letters NAV. Radar shows direction line, AHK AVSTÅND 40 (shows 0 if NDB), cn direction to beacon. In plané mode a glideslope will also be shown on radar.&lt;br /&gt;
*LANDN 40: (Landing 40 km) Uses ILS set by the three letters. Radar shows direction line and glide path, AHK LANDA, cn direction to ILS beacon.&lt;br /&gt;
*BARBRO: (Barbro) Uses ILS set by the three letters. Radar shows direction line, AHK BARBRO, cn direction to ILS beacon. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important controls and switches'''&lt;br /&gt;
&lt;br /&gt;
* Drag chute handle: (BROMSFALLSKÄRM) Lower left.(15) First use deploys drag chute. Second drops it. It takes approx. 3 seconds to deploy and should be done under 320 km/h and above 200 km/h. The handle can not be used if throttle above 85%.&lt;br /&gt;
* Throttle: (GASKRAN) lower left.&lt;br /&gt;
* Landing gear: (LAND-STÄLL) lower left.&lt;br /&gt;
* Droptank fuel valve: Right front canopy rim.(8) Set to on (forward) when using drop tanks.&lt;br /&gt;
*Parking brake: Center console below instrument panel to the right.(5)&lt;br /&gt;
*Jettison droptanks: Left side with red protection ring.(4)&lt;br /&gt;
*Canopy handle: Left side(3)&lt;br /&gt;
*Landing light switches: (LAND TAXI) Left front canopy rim.(12) Left and right landing light. If switches are in on position the lights will be automatically turned on/off as landing gear are lowered/rised. &lt;br /&gt;
*Navigation lights: (LANTERNOR) Right aft panel.(13) Four settings off, bright, blinking and dim.&lt;br /&gt;
*Indicator lights: (IND. LAMPOR) Sets full or half intensity of indicator lights and caution panel,&lt;br /&gt;
*Instrument lighting: (INST-LYSE) Left side above throttle. (1) Sets the brightness of the red instrument lighting.&lt;br /&gt;
*Consol light: (KONS_LYSE) Left side above throttle.(1) Sets the brightness of the consol lights illuminating the left and right consols.&lt;br /&gt;
*Cabin light: (KABIN LYSE) Left side above throttle.(1) Turns cabin light on or off.&lt;br /&gt;
*Clock ring: Knob right of clock turns the ring. Set pointing to the minutehand before lift off to keep track of flying time.&lt;br /&gt;
*Start panel: Lower left instrument panel.(2) Se below.&lt;br /&gt;
&lt;br /&gt;
====== Weapons and sight ======&lt;br /&gt;
ADEN 30 mm cannon implemented. Choose AKAN with weapon chooser knob. Right side radar panel(16). If AKAN is selected a gyroscopic gun sight is projected. Use knob on the sights right side(17) to set target wing span and keyboard controls (z/Z) to adjust ring diameter. Nose wheel needs to be up for weapons to function.&lt;br /&gt;
&lt;br /&gt;
=== Flying ===&lt;br /&gt;
[[File:J35 Draken start panel.jpg|thumb|Start panel]]&lt;br /&gt;
'''Starting the aircraft'''&lt;br /&gt;
&lt;br /&gt;
Either press Shift-S and let the automatic start make the work or follow the check list below.&lt;br /&gt;
&lt;br /&gt;
* Battery switch on. The smaller covered switch on the start panel.(no. 1) Click cover to open and then switch.&lt;br /&gt;
* Lock canopy. Click handle. The HUV LÅS caution should now go out.&lt;br /&gt;
* Turn on main fuel pump. Under the large cover on he start panel.(no. 2)&lt;br /&gt;
* Turn on afterburner fuel pump. Leftmost switch on the start panel.(no. 3) The red light on the start panel is now off.&lt;br /&gt;
* Turn on drop tanks fuel valve. The yellow light on the start panel is now unlit.&lt;br /&gt;
* Press START button on the start panel and wait until the engine is ignited.(no. 4)&lt;br /&gt;
* Switch on the generator when engine at 30%. The switch next to the start button.(no. 5)&lt;br /&gt;
All caution lights should now be unlit in a few seconds.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''Normal operations'''&lt;br /&gt;
* Draken has elevons, combined ailerons and elevators. Large elevon deflections decreases the available aileron difference.&lt;br /&gt;
* The aircraft has non-linear control response in elevation to lessen effect of small stick movements.&lt;br /&gt;
* It is neutral in roll at low alpha. Keep an eye on the horizon.&lt;br /&gt;
* To avoid accidents on landing is it not possible to retract landing gears if throttle &amp;lt; 90 %&lt;br /&gt;
* Rotation 270 km/h&lt;br /&gt;
* Max airspeed(Vne) 1350 km/h. Max speed with gear extended 500 km/h.&lt;br /&gt;
* Touch down speed ca. 300 km/h. 12 degrees AoA&lt;br /&gt;
* Too long with negative G causes fuel starvation.&lt;br /&gt;
* Watch alpha and speed. Drag increases fast with increasing alpha and pitch can occur at alpha &amp;gt; 25 deg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lift off: Rotate at 270 km/h to 10-12 degrees pitch. Lift off at approx 300 km/h. Turn of afterburner at 500 km/h if not needed for climbing. Normal climb speed Mach 0.9.&lt;br /&gt;
&lt;br /&gt;
Landing: Lower speed to 500 km/h. Lower gears and turn on landing lights. Turn to final lowering the speed to 325 km/h. Keep a speed of 300 km/h and a plané of 3 degrees (100 m at 2 km distance), RPM 80-85%. After touchdown raise the nose up to increase drag until speed is 240 km/h. Apply brakes. Lower nose at 160 km/h.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External link ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Saab_35_Draken Saab 35 Draken] (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
{{Saab}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Delta-wing aircraft]]&lt;br /&gt;
[[Category:Fighter aircraft]]&lt;br /&gt;
[[Category:Single-engine jets]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken&amp;diff=139113</id>
		<title>Saab 35 Draken</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken&amp;diff=139113"/>
		<updated>2024-02-11T12:08:09Z</updated>

		<summary type="html">&lt;p&gt;AndersM: Updating info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:{{PAGENAME}}/info}}&lt;br /&gt;
The '''Saab J35 Draken''' (Dragon) is a Swedish supersonic interceptor developed in the 1950s. The model F was delivered between 1965 and 1972 and is the model that the FG plane is based on.&lt;br /&gt;
&lt;br /&gt;
== Description of the features ==&lt;br /&gt;
Number in parenthesis refers to the cockpit images.&lt;br /&gt;
 &lt;br /&gt;
=== Special aircraft keys ===&lt;br /&gt;
{| class=&amp;quot;keytable&amp;quot;&lt;br /&gt;
! Key&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|S}}&lt;br /&gt;
| Automatic start sequence including all systems. (The aircraft needs to be stationary.)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|L}}&lt;br /&gt;
| Attach or remove drop tanks on ground. (Stationary and drop tank selector off)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|J}}&lt;br /&gt;
| Jettison drop tanks in air.&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|D}}&lt;br /&gt;
| Unlocks and opens/closes and locks canopy. Closed and locked canopy - first press unlocks second opens canopy. Closed and unlocked canopy at simulation start - first press locks. Open canopy - first press closes canopy second locks&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|Q}} &lt;br /&gt;
| Fuel cut off, not normally needed.&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|P}} &lt;br /&gt;
| Use drag chute handle&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|e}}&lt;br /&gt;
| Fire ADEN 30mm cannon (100 rounds available, 1700 rounds per minute)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|z}}&lt;br /&gt;
|Sight ring: Decreased distance&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|Z}}&lt;br /&gt;
| Sight ring: Increased distance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Special indicators ===&lt;br /&gt;
&lt;br /&gt;
*GLÖM EJ LAND-STÄLL: (&amp;quot;Do not forget landing gear&amp;quot;) flashes if altitude &amp;lt; 1450 m, airspeed &amp;lt; 450 km/h and throttle &amp;lt; 85%&lt;br /&gt;
&lt;br /&gt;
*HUVUDVARN.: Main caution light. Indicates important system warnings. See below. Acknowledge by pressing the light to silence the alarm. No warning signal while taxing.&lt;br /&gt;
&lt;br /&gt;
*HÖJDV: Flashes when autopilot HÖJD (altitude hold) is set and aircraft not at target altitude or vertical speed above 200 m/min. Lit when stable at target altitude. It is recommended to be at target altitude before setting autopilot to HÖJD.&lt;br /&gt;
*Landing gear down and locked: (LANDSTÄLL LÅST UTE) Green lights front lower left&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Gauges and instruments ===&lt;br /&gt;
&lt;br /&gt;
'''Fuel gauge'''&lt;br /&gt;
&lt;br /&gt;
Shows percent of drop-tanks left until they are empty if attached. Otherwise percent of internal fuel remaining. The two needles shows left/front and right/rear tank level. The engine is supplied by the two tanks alternating if not on afterburner, therefore the needles will chase each other down the scale.&lt;br /&gt;
&lt;br /&gt;
'''G-gauge'''&lt;br /&gt;
&lt;br /&gt;
Max G-force is displayed by a striped needle. Reset by clicking the small reset pin on the right side of the instrument.&lt;br /&gt;
&lt;br /&gt;
'''Altitude gauge'''&lt;br /&gt;
&lt;br /&gt;
Pressure setting is done by clicking left or right side of the setting knob (lower left of he instrument).&lt;br /&gt;
&lt;br /&gt;
'''Altitude selector'''&lt;br /&gt;
&lt;br /&gt;
Right side below secondary AI. Sets target altitude for autopilot. (7). Click for PLANÉ mode.&lt;br /&gt;
&lt;br /&gt;
'''Course selector'''&lt;br /&gt;
&lt;br /&gt;
Below Heading indicator. Sets course needle on the heading indicator (compass).&lt;br /&gt;
&lt;br /&gt;
'''Clock'''&lt;br /&gt;
Clock ring: Knob furthest right from clock turns the ring. Set pointing to the minute hand before lift off to keep track of flying time.&lt;br /&gt;
&lt;br /&gt;
Clock mode button: Lowest knob. Switches between clock and stopwatch. In reality also setting of the clock but not implemented.&lt;br /&gt;
&lt;br /&gt;
Stopwatch button: Starts, stops and resets the stopwatch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''AHK'''&lt;br /&gt;
&lt;br /&gt;
The real AHK (swe.Avstånd Höjd Kommando, eng. distance altitude command), on the right side of the radar, was an instrument connected to the Swedish air combat control centres (The system is part of &amp;quot;STRIL60&amp;quot;). It gave tactical information to the pilot by 20 different commands, displayed as words at the top of the instrument, and also by the distance scale and the arrow needle on the height scale. Some of the commands are reused  as instrument modes.(6)&lt;br /&gt;
&lt;br /&gt;
In all modes the &amp;quot;HÖJD&amp;quot; (altitude) scale shows pressure-altitude. Dot-needle from 0-2000 m and tape-needle from 0-20000 m.&lt;br /&gt;
&lt;br /&gt;
Modes:&lt;br /&gt;
&lt;br /&gt;
*0: (Off) Only altitude shown&lt;br /&gt;
*HÖJDÄNDRING: Arrow shows height reached in one minute at current vertical speed. Scale 0-20000 m. &amp;quot;AVST&amp;quot; tape shows distance over ground to change altitude 1000 m at current vertical speed. Speed over ground calculated from IAS using standard atmosphere.&lt;br /&gt;
*LANDA: Arrow shows height reached in one minute at current vertical speed. Scale 0-2000 m.&lt;br /&gt;
&amp;quot;AVST&amp;quot; tape shows distance over ground until tuchdown at sealevel and current vertical speed. Speed over ground calculated from IAS using standard atmosphere.&lt;br /&gt;
*AVST. 400: Arrow shows height reached in one minute at current vertical speed. AVST tape shows distance to beacon 0-400 km.&lt;br /&gt;
*AVSTÅND 40: Arrow shows height reached in one minute at current vertical speed. AVST tape shows distance to beacon 0-40 km.&lt;br /&gt;
*BARBRO: Arrow shows height reached in one minute at current vertical speed, scale 0-2000 m. AVST tape shows distance to beacon 0-40 km.&lt;br /&gt;
*NYTT MÅL: Arrow shows Route Manager cruise altitude 0- 20000 m. AVST shows distance 0-400 km to next Route Manager waypoint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Caution panel'''&lt;br /&gt;
&lt;br /&gt;
Lower right.(9) Shows system cautions and warnings.&lt;br /&gt;
Those with ! in front triggers main caution light:&lt;br /&gt;
&lt;br /&gt;
*!BRAND MOTOR: (fire engine) not implemented&lt;br /&gt;
*!BRAND EBK P: (fire afterburner pump) not implemented&lt;br /&gt;
*!STYR AUT: (autopilot) autopilot off&lt;br /&gt;
*MOTOR IS: (engine ice) engine deicing on not implemented yet&lt;br /&gt;
*!TANK LUFT: (tank air) airpressure fault in fuel system. Not implemented&lt;br /&gt;
*!OLJE TRYCK: (oil pressure) low oil pressure.&lt;br /&gt;
*EBK: (afterburner) Indicates that the exhaust nozzle is working as AB is turned off or on&lt;br /&gt;
or open when idle on the ground to keep engine from overheating. (Not lit constantly when using AB.)&lt;br /&gt;
*!SYR GAS: (oxygen pressure) not implemented&lt;br /&gt;
*!EL FEL: (electric fault) fault in AC circuit or generator off.&lt;br /&gt;
*!HYDR I, HYDR II: (hydraulic I and II) Low pressure in hydraulic circuit&lt;br /&gt;
*!KABIN TRYCK: (cabin pressure) Cabin pressure too low. Not implemented.&lt;br /&gt;
*!HUV LÅS: (canopy lock) canopy not locked.&lt;br /&gt;
&lt;br /&gt;
TANK LUFT, OLJE TRYCK, EL FEL, HYDR I and HYDR II will be lit when generator off. But should go off during engine start up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Radar'''&lt;br /&gt;
&lt;br /&gt;
Only a limited simulation of the radar is implemented:&lt;br /&gt;
&lt;br /&gt;
* Showing a sweep and antenna azimut. (mode TYST and SÄND)&lt;br /&gt;
&lt;br /&gt;
* In multiplayer the radar shows aircrafts in radar range: dist &amp;lt; 40 km, +-60 deg in yaw, +-30 deg in pitch and &amp;gt; 100 m above ground. (mode SÄND)&lt;br /&gt;
&lt;br /&gt;
Radar Modes. Set by radar panel on the right side of cockpit(16):&lt;br /&gt;
&lt;br /&gt;
FRÅN: Power off&lt;br /&gt;
&lt;br /&gt;
BER: Readies radar for transmission. Takes 20 sec (In reality 3 min)&lt;br /&gt;
&lt;br /&gt;
TILL: Like BER but sights and weapon connections also ready. (Same as BER in the simulation.)&lt;br /&gt;
&lt;br /&gt;
TYST: Everything running but no emissions from antenna.&lt;br /&gt;
&lt;br /&gt;
SÄND: Everything running and antenna emitting.&lt;br /&gt;
&lt;br /&gt;
Yellow lines are navigation indicators used by the navigation system. See below.&lt;br /&gt;
&lt;br /&gt;
Knobs on radar panel set intensity of scope (LJUSSTYRKA FSKOP) and navigation lines (KORSVISARE). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Radio'''&lt;br /&gt;
The radio equipment consists of two transceiver and one control unit of model Fr-21. They are on the left horizontal panel. In the simulation both transceivers are used for communication. In the real aircraft one was the receiver for combat control data feeding the AHK and other avionics. The letters A-K stores pre set frequencies for transceiver A (closest to the control unit) and the numbers 1-5 stores pre set frequencies for transceiver B. A stores the COM1 frequency at FG start up. Number 1 stores the COM2 frequency at FG start up. The frequency for the other letters and numbers are in the text file $FG_HOME/Export/SaabJ35F-Fr21.txt and can be changed by the user.&lt;br /&gt;
Pressing the buttons marked with dash (-) makes it possible to manually set the frequency using the knobs on the two manual units. Changing mode from Normal to Reserv changes sending unit from A to B.&lt;br /&gt;
The radio is off at simulation start. Transceiver B uses battery power and transceiver A uses main AC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Autopilot'''&lt;br /&gt;
&lt;br /&gt;
The autopilot is on the right side of the seat (11) and has the following functions and controls:&lt;br /&gt;
*HÖJD: Altitude hold. If plané on altitude selector the autopilot will folow a glide slope of approx 3 degrees.&lt;br /&gt;
*ATTITYD: Attitude hold- pitch and roll&lt;br /&gt;
*DÄMPN: Pitch and yaw-damper on. This is on in all normal flight conditions&lt;br /&gt;
*SVÄNG: Banks the aircraft in attitude mode&lt;br /&gt;
*NOS: Pitch setting in attitude mode&lt;br /&gt;
*FRÅN TILL: Main autopilot switch. Normally left on. Triggers caution light if off.&lt;br /&gt;
*ROLL: Roll trim elevon setting&lt;br /&gt;
*GIR: Rudder trim setting&lt;br /&gt;
*Middle mouse button zeros the slider/knob.&lt;br /&gt;
&lt;br /&gt;
''IMPORTANT:'' The autopilot has an automatic switch to only damping if airspeed is Mach 0.95-1.05 or G-force is above 4 G or below -0.5 G. No warning is given.&lt;br /&gt;
&lt;br /&gt;
At present the autopilot is not as stable as it should be, especially altitude hold.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Navigation radio and mode selector'''&lt;br /&gt;
&lt;br /&gt;
Right side panel below cautions.(10) Main mode selector for navigation, AHK and radar.&lt;br /&gt;
&lt;br /&gt;
Draken does not have ordinary navigation instruments. It has a special system that was integrated in the combat command and navigation system of the Swedish airforce. A letter code was used to select navigation beacons and airbase landing system. There was two parts of the system: Anita - general navigation and Barbro - landing guidance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To simulate this and still be compatible with FG there is a file beacons.txt in the aircraft's directory. In that file you write a line for each beacon you want to use. The format is a comma separated list: letter code,type,frequenzy,note&lt;br /&gt;
*letter code: Three letters A-P that identifies the beacon. Anita (VOR, NDB) does only use the first two (you can set the last to any character you want). Barbro (ILS) uses all three.&lt;br /&gt;
*type: VOR, NDB or ILS.&lt;br /&gt;
*frequency: The beacons frequency VOR/ILS in MHz, NDB in kHz.&lt;br /&gt;
*note: Descriptive note. Must have at least one character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The selected mode sets input to course needle (cn), radar and AHK:&lt;br /&gt;
*FRÅN: (Off)  No nav radio, AHK 0, cn manual, Radar lines parked.&lt;br /&gt;
*FÖRV: (Preselected) No nav radio, AHK HÖJDÄNDRING, cn manual, Radar lines parked.&lt;br /&gt;
*STRIL: (Combat control) Activates Route Manager, AHK NYTT MÅL, cn direction to next waypoint, Radar lines parked.&lt;br /&gt;
*STRID: (Combat) No nav info, AHK HÖJDÄNDRING, cn manual, Radar lines parked.&lt;br /&gt;
*NAVRIKTN: (Navigation direction) Uses NDB/VOR set by the two letters NAV. Radar shows direction line, AHK HÖJDÄNDRING, cn ADF.&lt;br /&gt;
*NAV 400: (Navigation 400 km) Uses VOR/NDB set by the two letters NAV. Radar shows direction line, AHK AVST. 400 (shows 0 if NDB), cn direction to VOR. In plané mode a glideslope will also be shown on radar.&lt;br /&gt;
*NAV 40: (Navigation 40 km) Uses VOR/NDB set by the two letters NAV. Radar shows direction line, AHK AVSTÅND 40 (shows 0 if NDB), cn direction to beacon. In plané mode a glideslope will also be shown on radar.&lt;br /&gt;
*LANDN 40: (Landing 40 km) Uses ILS set by the three letters. Radar shows direction line and glide path, AHK LANDA, cn direction to ILS beacon.&lt;br /&gt;
*BARBRO: (Barbro) Uses ILS set by the three letters. Radar shows direction line, AHK BARBRO, cn direction to ILS beacon. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important controls and switches'''&lt;br /&gt;
&lt;br /&gt;
* Drag chute handle: (BROMSFALLSKÄRM) Lower left.(15) First use deploys drag chute. Second drops it. It takes approx. 3 seconds to deploy and should be done under 320 km/h and above 200 km/h. The handle can not be used if throttle above 85%.&lt;br /&gt;
* Throttle: (GASKRAN) lower left.&lt;br /&gt;
* Landing gear: (LAND-STÄLL) lower left.&lt;br /&gt;
* Droptank fuel valve: Right front canopy rim.(8) Set to on (forward) when using drop tanks.&lt;br /&gt;
*Parking brake: Center console below instrument panel to the right.(5)&lt;br /&gt;
*Jettison droptanks: Left side with red protection ring.(4)&lt;br /&gt;
*Canopy handle: Left side(3)&lt;br /&gt;
*Landing light switches: (LAND TAXI) Left front canopy rim.(12) Left and right landing light. If switches are in on position the lights will be automatically turned on/off as landing gear are lowered/rised. &lt;br /&gt;
*Navigation lights: (LANTERNOR) Right aft panel.(13) Four settings off, bright, blinking and dim.&lt;br /&gt;
*Indicator lights: (IND. LAMPOR) Sets full or half intensity of indicator lights and caution panel,&lt;br /&gt;
*Instrument lighting: (INST-LYSE) Left side above throttle. (1) Sets the brightness of the red instrument lighting.&lt;br /&gt;
*Consol light: (KONS_LYSE) Left side above throttle.(1) Sets the brightness of the consol lights illuminating the left and right consols.&lt;br /&gt;
*Cabin light: (KABIN LYSE) Left side above throttle.(1) Turns cabin light on or off.&lt;br /&gt;
*Clock ring: Knob right of clock turns the ring. Set pointing to the minutehand before lift off to keep track of flying time.&lt;br /&gt;
*Start panel: Lower left instrument panel.(2) Se below.&lt;br /&gt;
&lt;br /&gt;
====== Weapons and sight ======&lt;br /&gt;
ADEN 30 mm cannon implemented. Choose AKAN with weapon chooser knob. Right side radar panel(16). If AKAN is selected a gyroscopic gun sight is projected. Use knob on the sights right side(17) to set target wing span and keyboard controls (z/Z) to adjust ring diameter. Nose wheel needs to be up for weapons to function.&lt;br /&gt;
&lt;br /&gt;
=== Flying ===&lt;br /&gt;
[[File:J35 Draken start panel.jpg|thumb|Start panel]]&lt;br /&gt;
'''Starting the aircraft'''&lt;br /&gt;
&lt;br /&gt;
Either press Shift-S and let the automatic start make the work or follow the check list below.&lt;br /&gt;
&lt;br /&gt;
* Battery switch on. The smaller covered switch on the start panel.(no. 1) Click cover to open and then switch.&lt;br /&gt;
* Lock canopy. Click handle. The HUV LÅS caution should now go out.&lt;br /&gt;
* Turn on main fuel pump. Under the large cover on he start panel.(no. 2)&lt;br /&gt;
* Turn on afterburner fuel pump. Leftmost switch on the start panel.(no. 3) The red light on the start panel is now off.&lt;br /&gt;
* Turn on drop tanks fuel valve. The yellow light on the start panel is now unlit.&lt;br /&gt;
* Press START button on the start panel and wait until the engine is ignited.(no. 4)&lt;br /&gt;
* Switch on the generator when engine at 30%. The switch next to the start button.(no. 5)&lt;br /&gt;
All caution lights should now be unlit in a few seconds.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''Normal operations'''&lt;br /&gt;
* Draken has elevons, combined ailerons and elevators. Large elevon deflections decreases the available aileron difference.&lt;br /&gt;
* The aircraft has non-linear control response in elevation to lessen effect of small stick movements.&lt;br /&gt;
* It is neutral in roll at low alpha. Keep an eye on the horizon.&lt;br /&gt;
* To avoid accidents on landing is it not possible to retract landing gears if throttle &amp;lt; 90 %&lt;br /&gt;
* Rotation 270 km/h&lt;br /&gt;
* Max airspeed(Vne) 1350 km/h. Max speed with gear extended 500 km/h.&lt;br /&gt;
* Touch down speed ca. 300 km/h. 12 degrees AoA&lt;br /&gt;
* Too long with negative G causes fuel starvation.&lt;br /&gt;
* Watch alpha and speed. Drag increases fast with increasing alpha and pitch can occur at alpha &amp;gt; 25 deg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lift off: Rotate at 270 km/h to 10-12 degrees pitch. Lift off at approx 300 km/h. Turn of afterburner at 500 km/h if not needed for climbing. Normal climb speed Mach 0.9.&lt;br /&gt;
&lt;br /&gt;
Landing: Lower speed to 500 km/h. Lower gears and turn on landing lights. Turn to final lowering the speed to 325 km/h. Keep a speed of 300 km/h and a plané of 3 degrees (100 m at 2 km distance), RPM 80-85%. After touchdown raise the nose up to increase drag until speed is 240 km/h. Apply brakes. Lower nose at 160 km/h.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External link ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Saab_35_Draken Saab 35 Draken] (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
{{Saab}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Delta-wing aircraft]]&lt;br /&gt;
[[Category:Fighter aircraft]]&lt;br /&gt;
[[Category:Single-engine jets]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken/info&amp;diff=139112</id>
		<title>Saab 35 Draken/info</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken/info&amp;diff=139112"/>
		<updated>2024-02-11T11:59:03Z</updated>

		<summary type="html">&lt;p&gt;AndersM: Recent improvements&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{infobox aircraft&lt;br /&gt;
| name           = Saab 35 Draken&lt;br /&gt;
| hangar         = fgaddon&lt;br /&gt;
| aircraft       = SaabJ35F&lt;br /&gt;
| image          = Saab_J35.jpg&lt;br /&gt;
| image2         = Saab_J35_cockpit.jpg&lt;br /&gt;
| type           = Fighter aircraft&lt;br /&gt;
| config         = Delta-wing aircraft&lt;br /&gt;
| propulsion     = Single-engine jet&lt;br /&gt;
| authors        = Anders M (3D model, FDM, Cockpit)&lt;br /&gt;
| fdm            = JSBSim&lt;br /&gt;
| fgname         = SaabJ35F&lt;br /&gt;
| manufacturer   = Saab&lt;br /&gt;
| status-fdm     = 3&lt;br /&gt;
| status-systems = 3&lt;br /&gt;
| status-cockpit = 5&lt;br /&gt;
| status-model   = 4&lt;br /&gt;
| status         = 0.9.6&lt;br /&gt;
| forumtid       = 18798&lt;br /&gt;
| navbar         = 1&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This is the aircraft infobox subpage of the [[Saab 35 Draken]].&lt;br /&gt;
[[Category:Aircraft infobox documentation]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Using_listeners_and_signals_with_Nasal&amp;diff=139111</id>
		<title>Using listeners and signals with Nasal</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Using_listeners_and_signals_with_Nasal&amp;diff=139111"/>
		<updated>2024-02-11T11:22:20Z</updated>

		<summary type="html">&lt;p&gt;AndersM: /* setlistener() */ More reliable code.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Nasal Navigation}}&lt;br /&gt;
&lt;br /&gt;
== Behind the Scenes of Listeners ==&lt;br /&gt;
&lt;br /&gt;
Repeatedly calling getprop() to update a property is called polling. Doing that at frame rate (each time a frame is updated) can become pretty expensive and often isn't necessary, especially for properties that are rarely updated.&lt;br /&gt;
&lt;br /&gt;
Polling is only really recommended for properties that change per frame or really often. Otherwise, you will probably want to use listeners or less-frequent polling using a custom timer.&lt;br /&gt;
&lt;br /&gt;
For example, a listener would be quite appropriate for an on/off switch or similar, an update loop for everything that needs to be updated each frame/update (i.e. engine rpm), and if something is changing every frame anyways or is a tied property, you might as well use the update loop for several reasons: besides the fact that it might be necessary, it linearizes your data flow and moves it closer to the use of the data, it makes use of the current known efficiency of getprop(), and I would venture that it seems most familiar to you. I really wouldn't worry about listener efficiency here&lt;br /&gt;
&lt;br /&gt;
The props.Node wrappers are slower than getprop/setprop because there's more Nasal-space overhead. Intuitively, the props.Node stuff should be faster, because of the cached reference - but the getprop()/setprop() code is native C code that uses a heavily optimized algorithm to look up properties (this may change once the props bindings start using the new cppbind framework).&lt;br /&gt;
&lt;br /&gt;
There will certainly be a break-even point, depending on how often properties change - and how many properties are involved. But usually, listeners should be superior to polling at frame rate for properties that do not change per frame.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that listeners are not &amp;quot;background processes&amp;quot; at all - a listener will be triggered by the property tree once a node is accessed, which will invoke the Nasal callback. Timers and listeners are NOT background &amp;quot;processes&amp;quot;. They are just invoked by different subsystems, i.e. the property tree (listeners) or the events subsystem (timers). There are other subsystems that can also invoke Nasal handlers, such as the GUI system or the AI code. This all takes place inside the FG main loop (=main thread), not some separate background/worker thread. Which is also the reason why all the Nasal APIs are safe to be used.&lt;br /&gt;
&lt;br /&gt;
It is important to understand that a &amp;quot;listener&amp;quot; is a passive thing, i.e. a &amp;quot;list&amp;quot; (array) of optional functions that are to be invoked whenever a property is modified/written to - thus, once you modify the property, the property tree code will check the size of the &amp;quot;callback list&amp;quot; that contains callbacks that are to be notified (called) when the property is written - and then calls each callback in a foreach() loop.&lt;br /&gt;
&lt;br /&gt;
Which is to say that those performance monitor stats are not necessarily representative when it comes to Nasal callbacks invoked as timers/listeners, which also applies to C++ code using these two APIs (timers &amp;amp; listeners).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Listeners are not actively &amp;quot;listening&amp;quot; at all - there's no &amp;quot;listener watch&amp;quot; running - unlike timers, listeners are totally passive instead - it works basically like this:&lt;br /&gt;
&lt;br /&gt;
* register a listener for some property named &amp;quot;foo&amp;quot;, to call some Nasal code&lt;br /&gt;
* which just adds a callback to a property specific vector, NOTHING else.&lt;br /&gt;
* once setprop(&amp;quot;foo&amp;quot;, value) is called&lt;br /&gt;
* the property tree is updated&lt;br /&gt;
* next the property tree checks if any listeners are registered for that branch&lt;br /&gt;
* if there are listeners attached, they are all called (there's basically a vector of listeners)&lt;br /&gt;
&lt;br /&gt;
So listeners are not really &amp;quot;processes&amp;quot; at all - neither background nor foreground: Merely their *callbacks* become processes after being invoked. Otherwise, they're just a vector of Nasal callbacks - which are only ever called if the property is modified. In other words, there's basically zero cost. Listener overhead is mainly determined by the callback's payload - not by listening (which is just checking vector.size() != 0 and calling each element), unless the property is updated frequently (in terms of frame rate)&lt;br /&gt;
&lt;br /&gt;
Admittedly, having many callbacks/listeners attached, could also add up quickly.&lt;br /&gt;
&lt;br /&gt;
So for benchmarking purposes, you can just use a closure to wrap your callback and update your systime() object accordingly, you could provide a separate &amp;quot;timed_listener&amp;quot; function or just override setlistener().&lt;br /&gt;
&lt;br /&gt;
== Listeners and Signals ==&lt;br /&gt;
The important thing to keep in mind is that custom listeners are generally not about loading or running Nasal files, most of the Nasal files are loaded and executed implicitly during startup. Only the Nasal sub modules (i.e. inside their own [[$FG_ROOT]]/Nasal/ directory) are dynamically loaded using a listener). So listeners are really just a simple way to talk to the property tree:&lt;br /&gt;
'''Hey property tree, would you please be so kind to call this Nasal function whenever this property is modified?'''&lt;br /&gt;
&lt;br /&gt;
So, listeners are callback functions that are attached to property nodes. They are triggered whenever the node is written to, or, depending on the listener type, also when children are added or removed, and when children are written to. Unlike polling loops, listeners don't have the least effect on the frame rate when they aren't triggered, which makes them preferable to monitor properties that aren't written to frequently. &lt;br /&gt;
&lt;br /&gt;
To learn more about managing resources like timers and listeners, please see [[Developing and debugging Nasal code#Managing timers and listeners]].&lt;br /&gt;
&lt;br /&gt;
===setlistener() vs. _setlistener() ===&lt;br /&gt;
You are requested '''not''' to use the raw _setlistener() function, except in files in [[$FG_ROOT]]/Nasal/ when they are&lt;br /&gt;
needed immediately. Only then the raw function is required, as it doesn't rely on props.nas. Using setlistener() once props.nas is loaded allows using high-level objects to reference properties, instead of raw C-objects (called &amp;quot;ghosts&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Once [[Nasal/CppBind|cppbind]] is used to replace props.nas, _setlistener() will be deprecated because the builtin function will be effectively using the same mechanism as what the wrapper function (the current setlistener()) does right now.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;When listeners don't work&amp;lt;/tt&amp;gt;===&lt;br /&gt;
Unfortunately, '''listeners don't work on so-called &amp;quot;tied&amp;quot; properties''' when the node value isn't set via property methods. Tied properties are a semi-deprecated API to allow C++ code to handle the value directly and control getting/setting directly, usually avoiding the property tree altogether. (You can spot such tied properties by Ctrl-clicking the &amp;quot;.&amp;quot; entry in the property browser: they are marked with a &amp;quot;T&amp;quot;.) The problem comes when the C++ value is written to outside of the property tree, which means that the property tree doesn't receive a notification, even though normal sets via the property tree would still fire the listeners. Most of the FDM properties are &amp;quot;tied&amp;quot;, and a few in other subsystems.&lt;br /&gt;
&lt;br /&gt;
Examples of properties where setlistener ''won't'' work: &lt;br /&gt;
&lt;br /&gt;
* /position/elevation-ft&lt;br /&gt;
* /ai/models/aircraft/orientation/heading-deg&lt;br /&gt;
* /instrumentation/marker-beacon/[inner|middle|outer]&lt;br /&gt;
* Any property node created as an alias&lt;br /&gt;
* Lots of others&lt;br /&gt;
&lt;br /&gt;
Before working to create a listener, always check whether a listener will work with that property node by control-clicking the &amp;quot;.&amp;quot; in property browser to put it into verbose mode, and then checking whether the property node for which you want to set up a listener is marked with a &amp;quot;T&amp;quot; or not.&lt;br /&gt;
&lt;br /&gt;
If you can't set a listener for a particular property, the alternative is to use settimer to set up a timer loop that checks the property value regularly. &lt;br /&gt;
&lt;br /&gt;
Listeners are most efficient for properties that change only occasionally.  No code is called at all during frames where the listener function is not called.  If the property value changes every frame, setting up a settimer loop with time=0 will execute every frame, just the same as setlistener would, and the settimer loop is more efficient than setting a listener. This is one reason the fact the setlistener doesn't work on certain tied and FDM properties is not a great loss.  See the section on timer loops below.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;setlistener()&amp;lt;/tt&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var listener_id = setlistener(&amp;lt;property&amp;gt;, &amp;lt;function&amp;gt; [, &amp;lt;startup=0&amp;gt; [, &amp;lt;runtime=1&amp;gt;]]);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;property&amp;gt;''' The first argument is a property node object (&amp;lt;tt&amp;gt;props.Node()&amp;lt;/tt&amp;gt; hash) or a property path. Because the node hash depends on the props.nas module being loaded, &amp;lt;tt&amp;gt;setlistener()&amp;lt;/tt&amp;gt; calls need to be deferred when used in an [[$FG_ROOT]]/Nasal/*.nas file, usually by calling them in a &amp;lt;tt&amp;gt;settimer(func {}, 0)&amp;lt;/tt&amp;gt; construction. To avoid that, one can use the raw &amp;lt;tt&amp;gt;_setlistener()&amp;lt;/tt&amp;gt; function directly, for which &amp;lt;tt&amp;gt;setlistener()&amp;lt;/tt&amp;gt; is a wrapper. The raw function does only accept node paths (e.g. &amp;quot;/sim/menubar/visibility&amp;quot;), but not props.Node() objects.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;function&amp;gt;''' The second argument is a function object (not a function call!). The function you pass here will be called with the target property node as its sole argument as soon as someone writes to the property.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;startup=0&amp;gt;''' The third argument is optional. If it is non-zero, then it causes the listener to be called initially (but not if runtime is 1). This is useful to let the callback function pick up the node value at startup.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;runtime=1&amp;gt;''' The fourth argument is optional, and defaults to 1. This means that the callback function will be executed whenever the property is written to, independent of the value. &lt;br /&gt;
&lt;br /&gt;
If the argument is set to 0, then the function will only get triggered if a value other than the current value is written to the node. This is important for cases where a property is written to once per frame, no matter if the value changed or not. YASim, for example, does that for /gear/gear/wow or /gear/launchbar/state.&lt;br /&gt;
So, this should be used for properties that are written to in every frame, although the written value is mostly the same. If the argument is 2, then also write access to children will get reported, as well as the creation and removal of children nodes.&lt;br /&gt;
&lt;br /&gt;
For both optional flags 0 means less calls, and 1 means more calls. The first is for startup behavior, and the second for runtime behavior.&lt;br /&gt;
&lt;br /&gt;
Here's a real-life example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
setlistener(&amp;quot;/gear/launchbar/state&amp;quot;, func (node) {&lt;br /&gt;
    if (node.getValue() == &amp;quot;Engaged&amp;quot;)&lt;br /&gt;
        setprop(&amp;quot;/sim/messages/copilot&amp;quot;, &amp;quot;Engaged!&amp;quot;);&lt;br /&gt;
}, 1, 0);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
YASim writes once per frame the string &amp;quot;Disengaged&amp;quot; to property /gear/launchbar/state. When an aircraft on deck of the aircraft carrier locks into the catapult, this changes to &amp;quot;Engaged&amp;quot;, which is then written again in every frame, until the aircraft leaves the catapult. Because the locking in is a bit difficult -- one has to target the sensitive area quite exactly --, it was desirable to get some quick feedback: a screen message that's also spoken by the Festival speech synthesis. With the args 1 and 0, this is done initially (for the unlikely case that we are locked in from the beginning), and then only when the node changes from an arbitrary value to &amp;quot;Engaged&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;setlistener()&amp;lt;/tt&amp;gt; returns a unique listener id on success, and &amp;lt;tt&amp;gt;nil&amp;lt;/tt&amp;gt; on error. The id is nothing else than a counter that is 0 for the first Nasal listener, 1 for the second etc. You need this id number to remove the listener. Most listeners are never removed, so that one doesn't assign the return value, but simply drop it.&lt;br /&gt;
&lt;br /&gt;
'''Listener callback functions''' can access up to four values via regular function arguments.&lt;br /&gt;
&lt;br /&gt;
The first two of which are property nodes in the form of a &amp;lt;tt&amp;gt;props.Node()&amp;lt;/tt&amp;gt; object hash. &lt;br /&gt;
&lt;br /&gt;
The third is a indication of the operation: 0 for changing the value, -1 for removing a child node, and +1 for adding a child.&lt;br /&gt;
&lt;br /&gt;
The fourth indicates whether the event occurred on the node that was listened to and is always 0 if the previous argument is not 0.&lt;br /&gt;
&lt;br /&gt;
Here is the syntax supposing you have set a callback function named ''myCallbackFunc'' via &amp;lt;tt&amp;gt;setlistener&amp;lt;/tt&amp;gt; (''setlistener(myNode, myCallbackFunc)''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
myCallbackFunc([&amp;lt;changed_node&amp;gt; [, &amp;lt;listened_to_node&amp;gt; [, &amp;lt;operation&amp;gt; [, &amp;lt;is_child_event&amp;gt;]]]])&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You cannot refer to OOP methods directly -- to do so, enclose the function call in a func() { } block as such:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
signal.listener = setlistener(node, func() { me.phaseFunc(); }, 0, 0);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;removelistener()&amp;lt;/tt&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var num_listeners = removelistener(&amp;lt;listener id&amp;gt;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;removelistener()&amp;lt;/tt&amp;gt; takes one argument: the unique listener id that a &amp;lt;tt&amp;gt;setlistener()&amp;lt;/tt&amp;gt; call returned. It returns the number of remaining active Nasal listeners on success, &amp;lt;tt&amp;gt;nil&amp;lt;/tt&amp;gt; on error, or -1 if a listener function applies &amp;lt;tt&amp;gt;removelistener()&amp;lt;/tt&amp;gt; to itself. The fact that a listener can remove itself, can be used to implement a one-shot listener function:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var L = setlistener(&amp;quot;/some/property&amp;quot;, func {&lt;br /&gt;
    print(&amp;quot;I can only be triggered once.&amp;quot;);&lt;br /&gt;
    removelistener(L);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{FGCquote&lt;br /&gt;
|1= For those not following all the cvs logs: I've added a new function to Nasal a few days ago: removelistener(). It takes one argument -- the unique id number of a listener as returned by setlistener(): var foo = setlistener(&amp;quot;/sim/foo&amp;quot;, die); ... removelistener(foo); This can be used to remove all listeners in an &amp;lt;unload&amp;gt; part that were set by the &amp;lt;load&amp;gt; part of a scenery object: &amp;lt;load&amp;gt; listener = []; append(listener, setlistener(&amp;quot;/sim/foo&amp;quot;, die)); append(listener, setlistener(&amp;quot;/sim/bar&amp;quot;, func {}); ... &amp;lt;/load&amp;gt; &amp;lt;unload&amp;gt; foreach (l; listener) { removelistener(l) } &amp;lt;/unload&amp;gt; screen.nas stores all relevant listener ids in a hash, so that other parts can, for example, remove the mapping of pilot messages to screen and voice): removelistener(screen.listener[&amp;quot;pilot&amp;quot;]); The id is 0 for the first listener, 1 for the second etc. removelistener() returns the total number of remaining listeners, or nil on error (i.e. if there was no listener known with this id). This can be used for statistics: id = setlistener(&amp;quot;/sim/signals/quit&amp;quot;, func {}); # let's not count this one num = removelistener(id); print(&amp;quot;there were &amp;quot;, id, &amp;quot; Nasal listeners attached since fgfs was started&amp;quot;); print(&amp;quot;of which &amp;quot;, num, &amp;quot; are still active&amp;quot;); m.&lt;br /&gt;
|2= {{cite web&lt;br /&gt;
  | url    = http://sourceforge.net/p/flightgear/mailman/message/12102466/&lt;br /&gt;
  | title  = &amp;lt;nowiki&amp;gt;[Flightgear-devel] Nasal: new command &amp;quot;removelistener()&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  | author = &amp;lt;nowiki&amp;gt;Melchior FRANZ&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  | date   = Mar 2nd, 2006&lt;br /&gt;
  | added   = Mar 2nd, 2006&lt;br /&gt;
  | script_version = 0.23&lt;br /&gt;
  }}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Listener Examples ===&lt;br /&gt;
&lt;br /&gt;
The following example attaches an anonymous callback function to a &amp;quot;signal&amp;quot;. The function will be executed when FlightGear is closed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
setlistener(&amp;quot;/sim/signals/exit&amp;quot;, func { print(&amp;quot;bye!&amp;quot;) });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead of an anonymous function, a named function can be used as well:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var say_bye = func { print(&amp;quot;bye&amp;quot;) }&lt;br /&gt;
setlistener(&amp;quot;/sim/signals/exit&amp;quot;, say_bye);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Callback functions can, optionally, access up to four parameters which are handed over via regular function arguments. Many times none of these parameters is used at all, as in the above example.&lt;br /&gt;
&lt;br /&gt;
Most often, only the first parameter is used--which gives the node of the changed value.&lt;br /&gt;
&lt;br /&gt;
The following code attaches the monitor_course() function to a gps property, using the argument ''course'' to get the node with the changed value.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var monitor_course = func(course) {&lt;br /&gt;
    print(&amp;quot;Monitored course set to &amp;quot;, course.getValue());&lt;br /&gt;
}&lt;br /&gt;
var i = setlistener(&amp;quot;instrumentation/gps/wp/leg-course-deviation-deg&amp;quot;, monitor_course);&lt;br /&gt;
&lt;br /&gt;
# here the listener is active&lt;br /&gt;
&lt;br /&gt;
removelistener(i);                    # remove that listener again&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is code that accesses two arguments--the changed node and the listened-to node (these may be different when monitoring all children of a certain node)--and also shows how to monitor changes to a node including changes to children:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var monitor_course = func(course, flightinfo) {&lt;br /&gt;
    print(&amp;quot;One way to get the course setting: &amp;quot;, flightinfo.leg-course-deviation-deg.getValue());&lt;br /&gt;
    print(&amp;quot;Another way to get the same setting &amp;quot;, course.getValue());&lt;br /&gt;
}&lt;br /&gt;
var i = setlistener(&amp;quot;instrumentation/gps/wp&amp;quot;, monitor_course, 0, 2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The function object doesn't need to be a separate, external function -- it can also be an anonymous function made directly in the &amp;lt;tt&amp;gt;setlistener()&amp;lt;/tt&amp;gt; call:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
setlistener(&amp;quot;/sim/signals/exit&amp;quot;, func { print(&amp;quot;bye&amp;quot;) });    # say &amp;quot;bye&amp;quot; on exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beware, however, that the contents of a function defined within the &amp;lt;tt&amp;gt;setlistener&amp;lt;/tt&amp;gt; call are not evaluated until the call is actually made. If, for instance, local variables change before the setlistener call happens, the call will reflect the current value of those variables ''at the time the callback function is called'', not the value ''at the time the listener was set''. &lt;br /&gt;
&lt;br /&gt;
For example, with this loop, the function will always return the value 10--even if mynode[1], mynode[2], mynode[3] or any of the others is the one that changed. It is because the contents of the setlistener are evaluated after the loop has completed running and at that point, i=10:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var output = func(number) {&lt;br /&gt;
    print(&amp;quot;mynode&amp;quot;, number, &amp;quot; has changed!&amp;quot;); #This won't work!&lt;br /&gt;
}&lt;br /&gt;
for(i=1; i &amp;lt;= 10; i = i+1) {&lt;br /&gt;
   var i = setlistener(&amp;quot;mynode[&amp;quot;~i~&amp;quot;]&amp;quot;, func{ output (i); });&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also access the four available function properties (or just one, two, or three of them as you need) in your anonymous function. Here is an example that accesses the first value:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
for(i=1; i &amp;lt;= 10; i = i+1) {&lt;br /&gt;
    var i = setlistener(&amp;quot;mynode[&amp;quot;~i~&amp;quot;]&amp;quot;, func (changedNode) { print (changedNode.getPath() ~ &amp;quot; : &amp;quot; ~ changedNode.getValue()); });&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attaching a function to a node that is specified as &amp;lt;tt&amp;gt;props.Node()&amp;lt;/tt&amp;gt; hash:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var node = props.globals.getNode(&amp;quot;/sim/signals/click&amp;quot;, 1);&lt;br /&gt;
setlistener(node, func { gui.popupTip(&amp;quot;don't click here!&amp;quot;) });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sometimes it is desirable to call the listener function initially, so that it can pick up the node value. In the following example a listener watches the view number, and turns the HUD on in cockpit view, and off in all other views. It doesn't only do that on writing to &amp;quot;view-number&amp;quot;, but also once when the listener gets attached, thanks to the third argument &amp;quot;1&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
setlistener(&amp;quot;/sim/current-view/view-number&amp;quot;, func(n) {&lt;br /&gt;
    setprop(&amp;quot;/sim/hud/visibility[0]&amp;quot;, n.getValue() == 0);&lt;br /&gt;
}, 1);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There's no limit for listeners on a node. Several functions can get attached to one node, just as one function can get attached to several nodes. Listeners may write to the node they are listening to. This will not make the listener call itself causing an endless recursion.&lt;br /&gt;
&lt;br /&gt;
=== Signals ===&lt;br /&gt;
&lt;br /&gt;
In addition to &amp;quot;normal&amp;quot; nodes, there are &amp;quot;signal&amp;quot; nodes that were created solely for the purpose of having listeners attached:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;/sim/signals/exit&amp;lt;/tt&amp;gt; ... set to &amp;quot;true&amp;quot; on quitting FlightGear&lt;br /&gt;
* &amp;lt;tt&amp;gt;/sim/signals/reinit&amp;lt;/tt&amp;gt; ... set to &amp;quot;true&amp;quot; right before repositioning the aircraft, and to &amp;quot;false&amp;quot; when the teleport has been completed&lt;br /&gt;
* &amp;lt;tt&amp;gt;/sim/signals/click&amp;lt;/tt&amp;gt; ... set to &amp;quot;true&amp;quot; after a mouse click at the terrain. Hint that the geo coords for the click spot were updated and can be retrieved from /sim/input/click/{longitude-deg,latitude-deg,elevation-ft,elevation-m}&lt;br /&gt;
* &amp;lt;tt&amp;gt;/sim/signals/screenshot&amp;lt;/tt&amp;gt; ... set to &amp;quot;true&amp;quot; right before the screenshot is taken, and set to &amp;quot;false&amp;quot; after it. Can be used to hide and reveal dialogs etc.&lt;br /&gt;
* &amp;lt;tt&amp;gt;/sim/signals/nasal-dir-initialized&amp;lt;/tt&amp;gt; ... set to &amp;quot;true&amp;quot; after all Nasal &amp;quot;library&amp;quot; files in [[$FG_ROOT]]/Nasal/ were loaded and executed. It is only set once and can only be used to trigger listener functions that were defined in one of the Nasal files in that directory. After that signal was set Nasal starts loading and executing aircraft Nasal files, and only later are &amp;lt;tt&amp;gt;settimer()&amp;lt;/tt&amp;gt; functions called and the next signal is set:&lt;br /&gt;
* &amp;lt;tt&amp;gt;/sim/signals/fdm-initialized&amp;lt;/tt&amp;gt; ... set to &amp;quot;true&amp;quot; when then FDM has just finished its initialization&lt;br /&gt;
* &amp;lt;tt&amp;gt;/sim/signals/reinit-gui&amp;lt;/tt&amp;gt; ... set to &amp;quot;true&amp;quot; when the GUI has just been reset (e.g. via Help menu). This is used by the gui.Dialog class to reload Nasal-loaded XML dialogs.&lt;br /&gt;
* &amp;lt;tt&amp;gt;/sim/signals/frame&amp;lt;/tt&amp;gt; ... triggered at the beginning of each iteration of the main loop (a.k.a. &amp;quot;frame&amp;quot;). This is meant for debugging purposes. Normally, one would just use a settimer() with interval 0 for the same effect. The difference is that the signal is guaranteed to be raised at a defined moment, while the timer call may change when subsystems are re-ordered.&lt;br /&gt;
&lt;br /&gt;
=== Nasal code coupled to the autopilot system ===&lt;br /&gt;
{{Callback Disclaimer}}&lt;br /&gt;
&lt;br /&gt;
Some people have a need to run Nasal code at the same rate as the simulation/FDM. Currently, without modifying the source code for FlightGear, the only way to do this is to find a property updated at the right time in the simulation cycle and set a listener on it. From a code quality standpoint, this is less than ideal.&lt;br /&gt;
&lt;br /&gt;
Autopilot rules, FDM and important instruments run at fixed rate of 120Hz and are already _independant_ of frame rate (Note: this does not help those who try to implement APs manually using Nasal, since Nasal can only run at frame rate. But please do use the &amp;quot;autopilot property rule&amp;quot; system for the fast control part of the autopilot - and only do slow stuff in Nasal (such as switching between autopilot modes), which does not require a close coupling to the FDM/autopilot. The 777 is a good example showing this: dynamic part of AP is done by property rules; switching between AP modes, like &amp;quot;hold glideslope&amp;quot; =&amp;gt; &amp;quot;flare&amp;quot; is done in Nasal). &lt;br /&gt;
&lt;br /&gt;
The FDM runs 120 times per second (if so configured), but it runs all iterations for a frame one after the other, then waits until the next frame. The FDM runs at 120 hertz and with a fixed time step.&lt;br /&gt;
&lt;br /&gt;
However, we play one small trick to make that happen.  We take the time that has elapsed since the last frame, compute how many whole iterations of the&lt;br /&gt;
FDM will fit in that time slice (at 1/120th of a second per iteration.) Then we invoke the FDM that many times with a time step of 1/120th of a&lt;br /&gt;
second.  Finally we save out the remainder and add that into the next time slice.&lt;br /&gt;
&lt;br /&gt;
This can produce a small amount of temporal jitter between the graphics and the fdm if the graphics frame rates are not a diviser of 120.  In the best&lt;br /&gt;
case scenario, you've locked your graphics frame rate to 60 hz so the FDM runs exactly 2 iterations every time it is invoked and there is no temporal&lt;br /&gt;
jitter at all, ever.&lt;br /&gt;
&lt;br /&gt;
One thing to keep in mind is that handing a different size time slice to the FDM every frame (and sometimes that time slice could be 1 second or more?)&lt;br /&gt;
can lead to instabilities in the math.  So our approach is intended to avoid that potential problem.  As far as the FDM is concerned, it *is* running&lt;br /&gt;
asyncronously, at a fixed time step.  But, we are playing a little trick on the FDM (it doesn't care) in order to handle the unfortunate possibility of&lt;br /&gt;
non-fixed and highly variable frame rates on PC hardware running consumer grade operating systems.&lt;br /&gt;
&lt;br /&gt;
Some FDM stuff would like to be tied to the FDM update rate, and that's a desirable goal. What about a callback function then? The FDM subsystem would set /sim/signals/fdm-update, and you could attach a listener to that which does all the things that should interact with the FDM, such as AP, FCS, etc. The rest of Nasal would keep running with the frame rate.&lt;br /&gt;
&lt;br /&gt;
There's just one (minor) problem at the moment. There's no generic FDM update() function where one could put a sig.setDoubleValue(dt).This would have to be done in all FDMs.&lt;br /&gt;
&lt;br /&gt;
Another possibility is to extend the declarative expression logic, which is already supported by the autopilot components, to allow a Nasal expression. Then you mix the declarative components (which you're going to want for most autopilot laws) with some scripted ones.&lt;br /&gt;
Since the expression evaluation would be driven by the autopilot subsystem, it would run at whatever frame-rate that itself runs at - which is currently in lock-step with the FDM [http://forum.flightgear.org/viewtopic.php?f=46&amp;amp;t=17069&amp;amp;hilit=nasal+fdm+autopilot&amp;amp;start=15#p165596].&lt;br /&gt;
&lt;br /&gt;
There are several other options, such as 1) Run a second events system and add an additional parameter to Nasal's settimer allowing you to use this new events system. 2) Add in a signal that is fired each simulation step, probably right before the Autopilot system is run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
setlistener(&amp;quot;/sim/signals/fdm-update&amp;quot;, func(n) {&lt;br /&gt;
       var dt = n.getValue();&lt;br /&gt;
       # ... and whatever needs to be done at fdm rate&lt;br /&gt;
   });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some core developers are fairly opposed to the whole idea, i.e. want to avoid *any* Nasal in the fast simulation loop of the FDM, because Nasal execution is slow and non-deterministic because of its GC issue. Running it in the fast simulation loop is the last thing they want[http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg38172.html].&lt;br /&gt;
&lt;br /&gt;
In addition, the developer and maintainer of the AP system is planning on adding Nasal bindings to the AP code to allow runtime instantiation of ap/property rules and has a Nasal binding for that in mind[http://forum.flightgear.org/viewtopic.php?f=66&amp;amp;t=15189&amp;amp;p=149376&amp;amp;hilit=#p149376]. &lt;br /&gt;
&lt;br /&gt;
You can then use Nasal for the high level stuff, and enable/disable/switch the individual controller elements (e.g. in order to automatically switch the autopilot mode when capturing the ILS). There are some nice examples with fgdata/Git aircraft. You could look at the 777.&lt;br /&gt;
&lt;br /&gt;
The big advantage of the property rules is that they don't produce garbage that a garbage collector has to clean up. But as nothing in life comes for free (except FlightGear, of course) XML tends to be much more verbose.&lt;br /&gt;
&lt;br /&gt;
Guideline&lt;br /&gt;
* Computing properties from a well defined set of other properties once per frame: use a property rule.&lt;br /&gt;
* If there is no other way to get it done: use Nasal.&lt;br /&gt;
&lt;br /&gt;
This is also how such things are done in the real world: controllers aren't implemented in imperative programming languages these days - especially not in scripting languages. People use model-based design and connect controller elements - using graphical tools like MATLAB/Simulink. Obviously, FG is missing a graphical interface to specify the controller rules - but the idea of specifying through XML is the same and specification is straight forward.&lt;br /&gt;
&lt;br /&gt;
Creating an autopilot (or any GNC or system model, for that matter) can be done very effectively with discrete objects such as summers, gains, controllers, filters, switches, etc., much as JSBSim has done with the system components. This is a standard approach in industry, as exemplified by Mathwork's $imulink product. &lt;br /&gt;
&lt;br /&gt;
Scilab/Scicos is similar in concept. Control system topologies are often diagrammed in a way that can lead to a one-to-one correspondence between a&lt;br /&gt;
block and a control system object that can be referenced in an XML file, if the control system component library has been defined properly. This, again,&lt;br /&gt;
is the way that JSBSim has approached the solution.&lt;br /&gt;
&lt;br /&gt;
Some benefits to such an approach include better testability, more predictability, and easier interface (someday) with a GUI tool, should one&lt;br /&gt;
materialize. The downside is that XML can be verbose.&lt;br /&gt;
&lt;br /&gt;
All that being said, it is definitely possible to run Nasal in the FDM update loop, so to make up your own mind, you could try this:&lt;br /&gt;
Alternatively, as a short-term solution that does not rely on editing C++ code, you could just trigger off an internal autopilot property.&lt;br /&gt;
Which is a pretty clever workaround: trigger a boolean property for each iteration, so that the Nasal listener can pick it up, which will get invoked at FDM update rate that way.&lt;br /&gt;
&lt;br /&gt;
Perhaps we could set up a trigger that is fired by the Autopilot subsystem, immediately before the autopilot executes. However, someone more familiar with FG's code base than me can probably come up with a more elegant solution. I feel like adding a new events system and a parameter to settimer is cleaner than a signal -- and that if a signal is added, the Autopilot subsystem is probably not the place to add it.&lt;br /&gt;
&lt;br /&gt;
Also see:&lt;br /&gt;
* http://forum.flightgear.org/viewtopic.php?f=66&amp;amp;t=15189&amp;amp;p=149376&amp;amp;#p149376&lt;br /&gt;
* http://forum.flightgear.org/viewtopic.php?f=46&amp;amp;t=17069&lt;br /&gt;
* http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg38170.html&lt;br /&gt;
* http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg13022.html&lt;br /&gt;
* https://code.google.com/p/flightgear-bugs/issues/detail?id=421&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken&amp;diff=137328</id>
		<title>Saab 35 Draken</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken&amp;diff=137328"/>
		<updated>2023-02-18T15:38:10Z</updated>

		<summary type="html">&lt;p&gt;AndersM: /* Special indicators */ plané info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:{{PAGENAME}}/info}}&lt;br /&gt;
The '''Saab J35 Draken''' (Dragon) is a Swedish supersonic interceptor developed in the 1950s. The model F was delivered between 1965 and 1972 and is the model that the FG plane is based on.&lt;br /&gt;
&lt;br /&gt;
== Description of the features ==&lt;br /&gt;
Number in parenthesis refers to the cockpit images.&lt;br /&gt;
 &lt;br /&gt;
=== Special aircraft keys ===&lt;br /&gt;
{| class=&amp;quot;keytable&amp;quot;&lt;br /&gt;
! Key&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|S}}&lt;br /&gt;
| Automatic start sequence including all systems. (The aircraft needs to be stationary.)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|L}}&lt;br /&gt;
| Attach or remove drop tanks on ground. (Stationary and drop tank selector off)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|J}}&lt;br /&gt;
| Jettison drop tanks in air.&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|D}}&lt;br /&gt;
| Unlocks and opens/closes and locks canopy. Closed and locked canopy - first press unlocks second opens canopy. Closed and unlocked canopy at simulation start - first press locks. Open canopy - first press closes canopy second locks&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|Q}} &lt;br /&gt;
| Fuel cut off, not normally needed.&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|P}} &lt;br /&gt;
| Use drag chute handle&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|e}}&lt;br /&gt;
| Fire ADEN 30mm cannon (100 rounds available, 1700 rounds per minute)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|z}}&lt;br /&gt;
|Sight ring: Decreased distance&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|Z}}&lt;br /&gt;
| Sight ring: Increased distance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Special indicators ===&lt;br /&gt;
&lt;br /&gt;
*GLÖM EJ LAND-STÄLL: (&amp;quot;Do not forget landing gear&amp;quot;) flashes if altitude &amp;lt; 1450 m, airspeed &amp;lt; 450 km/h and throttle &amp;lt; 85%&lt;br /&gt;
&lt;br /&gt;
*HUVUDVARN.: Main caution light. Indicates important system warnings. See below.&lt;br /&gt;
&lt;br /&gt;
*HÖJDV: Flashes when autopilot HÖJD (altitude hold) is set and aircraft not at target altitude or vertical speed above 200 m/min. Lit when stable at target altitude. It is recommended to be at target altitude before setting autopilot to HÖJD.&lt;br /&gt;
*Landing gear down and locked: (LANDSTÄLL LÅST UTE) Green lights front lower left&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Gauges and instruments ===&lt;br /&gt;
&lt;br /&gt;
'''Fuel gauge'''&lt;br /&gt;
&lt;br /&gt;
Shows percent of drop-tanks left until they are empty if attached. Otherwise percent of internal fuel remaining. The two needles shows left/front and right/rear tank level. The engine is supplied by the two tanks alternating if not on afterburner, therefore the needles will chase each other down the scale.&lt;br /&gt;
&lt;br /&gt;
'''G-gauge'''&lt;br /&gt;
&lt;br /&gt;
Max G-force is displayed by a striped needle. Reset by clicking the small reset pin on the right side of the instrument.&lt;br /&gt;
&lt;br /&gt;
'''Altitude gauge'''&lt;br /&gt;
&lt;br /&gt;
Pressure setting is done by clicking left or right side of the setting knob (lower left of he instrument).&lt;br /&gt;
&lt;br /&gt;
'''Altitude selector'''&lt;br /&gt;
&lt;br /&gt;
Right side below secondary AI. Sets target altitude for autopilot. (7). Click for PLANÉ mode.&lt;br /&gt;
&lt;br /&gt;
'''Course selector'''&lt;br /&gt;
&lt;br /&gt;
Below Heading indicator. Sets course needle on the heading indicator (compass).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''AHK'''&lt;br /&gt;
&lt;br /&gt;
The real AHK (swe.Avstånd Höjd Kommando, eng. distance altitude command), on the right side of the radar, was an instrument connected to the Swedish air combat control centres (The system is part of &amp;quot;STRIL60&amp;quot;). It gave tactical information to the pilot by 20 different commands, displayed as words at the top of the instrument, and also by the distance scale and the arrow needle on the height scale. Some of the commands are reused  as instrument modes.(6)&lt;br /&gt;
&lt;br /&gt;
In all modes the &amp;quot;HÖJD&amp;quot; (altitude) scale shows pressure-altitude. Dot-needle from 0-2000 m and tape-needle from 0-20000 m.&lt;br /&gt;
&lt;br /&gt;
Modes:&lt;br /&gt;
&lt;br /&gt;
*0: (Off) Only altitude shown&lt;br /&gt;
*HÖJDÄNDRING: Arrow shows height reached in one minute at current vertical speed. Scale 0-20000 m. &amp;quot;AVST&amp;quot; tape shows distance over ground to change altitude 1000 m at current vertical speed. Speed over ground calculated from IAS using standard atmosphere.&lt;br /&gt;
*LANDA: Arrow shows height reached in one minute at current vertical speed. Scale 0-2000 m.&lt;br /&gt;
&amp;quot;AVST&amp;quot; tape shows distance over ground until tuchdown at sealevel and current vertical speed. Speed over ground calculated from IAS using standard atmosphere.&lt;br /&gt;
*AVST. 400: Arrow shows height reached in one minute at current vertical speed. AVST tape shows distance to beacon 0-400 km.&lt;br /&gt;
*AVSTÅND 40: Arrow shows height reached in one minute at current vertical speed. AVST tape shows distance to beacon 0-40 km.&lt;br /&gt;
*BARBRO: Arrow shows height reached in one minute at current vertical speed, scale 0-2000 m. AVST tape shows distance to beacon 0-40 km.&lt;br /&gt;
*NYTT MÅL: Arrow shows Route Manager cruise altitude 0- 20000 m. AVST shows distance 0-400 km to next Route Manager waypoint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Caution panel'''&lt;br /&gt;
&lt;br /&gt;
Lower right.(9) Shows system cautions and warnings.&lt;br /&gt;
Those with ! in front triggers main caution light:&lt;br /&gt;
&lt;br /&gt;
*!BRAND MOTOR: (fire engine) not implemented&lt;br /&gt;
*!BRAND EBK P: (fire afterburner pump) not implemented&lt;br /&gt;
*STYR AUT: (autopilot) autopilot off&lt;br /&gt;
*MOTOR IS: (engine ice) engine deicing on not implemented yet&lt;br /&gt;
*!TANK LUFT: (tank air) airpressure fault in fuel system. Not implemented&lt;br /&gt;
*!OLJE TRYCK: (oil pressure) low oil pressure.&lt;br /&gt;
*EBK: (afterburner) Indicates that the exhaust nozzle is working as AB is turned off or on&lt;br /&gt;
or open when idle on the ground to keep engine from overheating. (Not lit constantly when using AB.)&lt;br /&gt;
*!SYR GAS: (oxygen pressure) not implemented&lt;br /&gt;
*!EL FEL: (electric fault) fault in AC circuit or generator off.&lt;br /&gt;
*!HYDR I, HYDR II: (hydraulic I and II) Low pressure in hydraulic circuit&lt;br /&gt;
*!KABIN TRYCK: (cabin pressure) Cabin pressure too low. Not implemented.&lt;br /&gt;
*!HUV LÅS: (canopy lock) canopy not locked.&lt;br /&gt;
&lt;br /&gt;
TANK LUFT, OLJE TRYCK, EL FEL, HYDR I and HYDR II will be lit when generator off. But should go off during engine start up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Radar'''&lt;br /&gt;
&lt;br /&gt;
Only a limited simulation of the radar is implemented:&lt;br /&gt;
&lt;br /&gt;
* Showing a sweep and antenna azimut. (mode TYST and SÄND)&lt;br /&gt;
&lt;br /&gt;
* In multiplayer the radar shows aircrafts in radar range: dist &amp;lt; 40 km, +-60 deg in yaw, +-30 deg in pitch and &amp;gt; 100 m above ground. (mode SÄND)&lt;br /&gt;
&lt;br /&gt;
Radar Modes. Set by radar panel on the right side of cockpit(16):&lt;br /&gt;
&lt;br /&gt;
FRÅN: Power off&lt;br /&gt;
&lt;br /&gt;
BER: Readies radar for transmission. Takes 20 sec (In reality 3 min)&lt;br /&gt;
&lt;br /&gt;
TILL: Like BER but sights and weapon connections also ready. (Same as BER in the simulation.)&lt;br /&gt;
&lt;br /&gt;
TYST: Everything running but no emissions from antenna.&lt;br /&gt;
&lt;br /&gt;
SÄND: Everything running and antenna emitting.&lt;br /&gt;
&lt;br /&gt;
Yellow lines are navigation indicators used by the navigation system. See below.&lt;br /&gt;
&lt;br /&gt;
Knobs on radar panel set intensity of scope (LJUSSTYRKA FSKOP) and navigation lines (KORSVISARE). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Radio'''&lt;br /&gt;
&lt;br /&gt;
The radio equipment consists of two transceiver and one control unit of model Fr-21. They are on the left horizontal panel.(14) In the simulation both transceivers are used for communication. In the real aircraft one was the receiver for combat control data feeding the AHK and other avionics. The letters A-K stores pre set frequencies for transceiver A (closest to the control unit) and the numbers 1-5 stores pre set frequencies for transceiver B. A stores the COM1 frequency at FG start up. Number 1 stores the COM2 frequency at FG start up. The frequency for the other letters and numbers are in the text file Avionics/Fr21.txt and can be changed by the user. Pressing the buttons marked with dash (-) makes it possible to manually set the transceiver’s frequency using the knobs on the unit. The radio is off at simulation start. Transceiver B uses battery power and transceiver A uses main AC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Autopilot'''&lt;br /&gt;
&lt;br /&gt;
The autopilot is on the right side of the seat (11) and has the following functions and controls:&lt;br /&gt;
*HÖJD: Altitude hold. If plané on altitude selector the autopilot will folow a glide slope of approx 3 degrees.&lt;br /&gt;
*ATTITYD: Attitude hold- pitch and roll&lt;br /&gt;
*DÄMPN: Pitch and yaw-damper on. This is on in all normal flight conditions&lt;br /&gt;
*SVÄNG: Banks the aircraft in attitude mode&lt;br /&gt;
*NOS: Pitch setting in attitude mode&lt;br /&gt;
*FRÅN TILL: Main autopilot switch. Normally left on. Triggers caution light if off.&lt;br /&gt;
*ROLL: Roll trim elevon setting&lt;br /&gt;
*GIR: Rudder trim setting&lt;br /&gt;
*Middle mouse button zeros the slider/knob.&lt;br /&gt;
&lt;br /&gt;
''IMPORTANT:'' The autopilot has an automatic switch to only damping if airspeed is Mach 0.95-1.05 or G-force is above 4 G or below -0.5 G. No warning is given.&lt;br /&gt;
&lt;br /&gt;
At present the autopilot is not as stable as it should be, especially altitude hold.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Navigation radio and mode selector'''&lt;br /&gt;
&lt;br /&gt;
Right side panel below cautions.(10) Main mode selector for navigation, AHK and radar.&lt;br /&gt;
&lt;br /&gt;
Draken does not have ordinary navigation instruments. It has a special system that was integrated in the combat command and navigation system of the Swedish airforce. A letter code was used to select navigation beacons and airbase landing system. There was two parts of the system: Anita - general navigation and Barbro - landing guidance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To simulate this and still be compatible with FG there is a file beacons.txt in the aircraft's directory. In that file you write a line for each beacon you want to use. The format is a comma separated list: letter code,type,frequenzy,note&lt;br /&gt;
*letter code: Three letters A-P that identifies the beacon. Anita (VOR, NDB) does only use the first two (you can set the last to any character you want). Barbro (ILS) uses all three.&lt;br /&gt;
*type: VOR, NDB or ILS.&lt;br /&gt;
*frequency: The beacons frequency VOR/ILS in MHz, NDB in kHz.&lt;br /&gt;
*note: Descriptive note. Must have at least one character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The selected mode sets input to course needle (cn), radar and AHK:&lt;br /&gt;
*FRÅN: (Off)  No nav radio, AHK 0, cn manual, Radar lines parked.&lt;br /&gt;
*FÖRV: (Preselected) No nav radio, AHK HÖJDÄNDRING, cn manual, Radar lines parked.&lt;br /&gt;
*STRIL: (Combat control) Activates Route Manager, AHK NYTT MÅL, cn direction to next waypoint, Radar lines parked.&lt;br /&gt;
*STRID: (Combat) No nav info, AHK HÖJDÄNDRING, cn manual, Radar lines parked.&lt;br /&gt;
*NAVRIKTN: (Navigation direction) Uses NDB/VOR set by the two letters NAV. Radar shows direction line, AHK HÖJDÄNDRING, cn ADF.&lt;br /&gt;
*NAV 400: (Navigation 400 km) Uses VOR/NDB set by the two letters NAV. Radar shows direction line, AHK AVST. 400 (shows 0 if NDB), cn direction to VOR. In plané mode a glideslope will also be shown on radar.&lt;br /&gt;
*NAV 40: (Navigation 40 km) Uses VOR/NDB set by the two letters NAV. Radar shows direction line, AHK AVSTÅND 40 (shows 0 if NDB), cn direction to beacon. In plané mode a glideslope will also be shown on radar.&lt;br /&gt;
*LANDN 40: (Landing 40 km) Uses ILS set by the three letters. Radar shows direction line and glide path, AHK LANDA, cn direction to ILS beacon.&lt;br /&gt;
*BARBRO: (Barbro) Uses ILS set by the three letters. Radar shows direction line, AHK BARBRO, cn direction to ILS beacon. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Controls and switches'''&lt;br /&gt;
&lt;br /&gt;
* Drag chute handle: (BROMSFALLSKÄRM) Lower left.(15) First use deploys drag chute. Second drops it. It takes approx. 3 seconds to deploy and should be done under 320 km/h and above 200 km/h. The handle can not be used if throttle above 85%.&lt;br /&gt;
* Throttle: (GASKRAN) lower left.&lt;br /&gt;
* Landing gear: (LAND-STÄLL) lower left.&lt;br /&gt;
* Droptank fuel valve: Right front canopy rim.(8) Set to on (forward) when using drop tanks.&lt;br /&gt;
*Parking brake: Center console below instrument panel to the right.(5)&lt;br /&gt;
*Jettison droptanks: Left side with red protection ring.(4)&lt;br /&gt;
*Canopy handle: Left side(3)&lt;br /&gt;
*Landing light switches: (LAND TAXI) Left front canopy rim.(12) Left and right landing light. If switches are in on position the lights will be automatically turned on/off as landing gear are lowered/rised. &lt;br /&gt;
*Navigation lights: (LANTERNOR) Right aft panel.(13) Four settings off, bright, blinking and dim.&lt;br /&gt;
*Indicator lights: (IND. LAMPOR) Sets full or half intensity of indicator lights and caution panel,&lt;br /&gt;
*Instrument lighting: (INST-LYSE) Left side above throttle. (1) Sets the brightness of the red instrument lighting.&lt;br /&gt;
*Consol light: (KONS_LYSE) Left side above throttle.(1) Sets the brightness of the consol lights illuminating the left and right consols.&lt;br /&gt;
*Cabin light: (KABIN LYSE) Left side above throttle.(1) Turns cabin light on or off.&lt;br /&gt;
*Clock ring: Knob right of clock turns the ring. Set pointing to the minutehand before lift off to keep track of flying time.&lt;br /&gt;
*Start panel: Lower left instrument panel.(2) Se below.&lt;br /&gt;
&lt;br /&gt;
====== Weapons and sight ======&lt;br /&gt;
ADEN 30 mm cannon implemented. Choose AKAN with weapon chooser knob. Right side radar panel(16). If AKAN is selected a gyroscopic gun sight is projected. Use knob on the sights right side(17) to set target wing span and keyboard controls (z/Z) to adjust ring diameter. Nose wheel needs to be up for weapons to function.&lt;br /&gt;
&lt;br /&gt;
=== Flying ===&lt;br /&gt;
[[File:J35 Draken start panel.jpg|thumb|Start panel]]&lt;br /&gt;
'''Starting the aircraft'''&lt;br /&gt;
&lt;br /&gt;
Either press Shift-S and let the automatic start make the work or follow the check list below.&lt;br /&gt;
&lt;br /&gt;
* Battery switch on. The smaller covered switch on the start panel.(no. 1) Click cover to open and then switch.&lt;br /&gt;
* Lock canopy. Click handle. The HUV LÅS caution should now go out.&lt;br /&gt;
* Turn on main fuel pump. Under the large cover on he start panel.(no. 2)&lt;br /&gt;
* Turn on afterburner fuel pump. Leftmost switch on the start panel.(no. 3) The red light on the start panel is now off.&lt;br /&gt;
* Turn on drop tanks fuel valve. The yellow light on the start panel is now unlit.&lt;br /&gt;
* Press START button on the start panel and wait until the engine is ignited.(no. 4)&lt;br /&gt;
* Switch on the generator when engine at 30%. The switch next to the start button.(no. 5)&lt;br /&gt;
All caution lights should now be unlit in a few seconds.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''Normal operations'''&lt;br /&gt;
* Draken has elevons, combined ailerons and elevators. Large elevon deflections decreases the available aileron difference.&lt;br /&gt;
* The aircraft has non-linear control response in elevation to lessen effect of small stick movements.&lt;br /&gt;
* It is neutral in roll at low alpha. Keep an eye on the horizon.&lt;br /&gt;
* To avoid accidents on landing is it not possible to retract landing gears if throttle &amp;lt; 90 %&lt;br /&gt;
* Rotation 270 km/h&lt;br /&gt;
* Max airspeed(Vne) 1350 km/h. Max speed with gear extended 500 km/h.&lt;br /&gt;
* Touch down speed ca. 300 km/h. 12 degrees AoA&lt;br /&gt;
* Too long with negative G causes fuel starvation.&lt;br /&gt;
* Watch alpha and speed. Drag increases fast with increasing alpha and pitch can occur at alpha &amp;gt; 25 deg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lift off: Rotate at 270 km/h to 10-12 degrees pitch. Lift off at approx 300 km/h. Turn of afterburner at 500 km/h if not needed for climbing. Normal climb speed Mach 0.9.&lt;br /&gt;
&lt;br /&gt;
Landing: Lower speed to 500 km/h. Lower gears and turn on landing lights. Turn to final lowering the speed to 325 km/h. Keep a speed of 300 km/h and a plané of 3 degrees (100 m at 2 km distance), RPM 80-85%. After touchdown raise the nose up to increase drag until speed is 240 km/h. Apply brakes. Lower nose at 160 km/h.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External link ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Saab_35_Draken Saab 35 Draken] (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
{{Saab}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Delta-wing aircraft]]&lt;br /&gt;
[[Category:Fighter aircraft]]&lt;br /&gt;
[[Category:Single-engine jets]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken&amp;diff=137327</id>
		<title>Saab 35 Draken</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken&amp;diff=137327"/>
		<updated>2023-02-18T15:21:54Z</updated>

		<summary type="html">&lt;p&gt;AndersM: updated numbering&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:{{PAGENAME}}/info}}&lt;br /&gt;
The '''Saab J35 Draken''' (Dragon) is a Swedish supersonic interceptor developed in the 1950s. The model F was delivered between 1965 and 1972 and is the model that the FG plane is based on.&lt;br /&gt;
&lt;br /&gt;
== Description of the features ==&lt;br /&gt;
Number in parenthesis refers to the cockpit images.&lt;br /&gt;
 &lt;br /&gt;
=== Special aircraft keys ===&lt;br /&gt;
{| class=&amp;quot;keytable&amp;quot;&lt;br /&gt;
! Key&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|S}}&lt;br /&gt;
| Automatic start sequence including all systems. (The aircraft needs to be stationary.)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|L}}&lt;br /&gt;
| Attach or remove drop tanks on ground. (Stationary and drop tank selector off)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|J}}&lt;br /&gt;
| Jettison drop tanks in air.&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|D}}&lt;br /&gt;
| Unlocks and opens/closes and locks canopy. Closed and locked canopy - first press unlocks second opens canopy. Closed and unlocked canopy at simulation start - first press locks. Open canopy - first press closes canopy second locks&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|Q}} &lt;br /&gt;
| Fuel cut off, not normally needed.&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|P}} &lt;br /&gt;
| Use drag chute handle&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|e}}&lt;br /&gt;
| Fire ADEN 30mm cannon (100 rounds available, 1700 rounds per minute)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|z}}&lt;br /&gt;
|Sight ring: Decreased distance&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|Z}}&lt;br /&gt;
| Sight ring: Increased distance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Special indicators ===&lt;br /&gt;
&lt;br /&gt;
*GLÖM EJ LAND-STÄLL: (&amp;quot;Do not forget landing gear&amp;quot;) flashes if altitude &amp;lt; 1450 m, airspeed &amp;lt; 450 km/h and throttle &amp;lt; 85%&lt;br /&gt;
&lt;br /&gt;
*HUVUDVARN.: Main caution light. Indicates important system warnings. See below.&lt;br /&gt;
&lt;br /&gt;
*HÖJDV: Flashes when autopilot HÖJD (altitude hold) is set and aircraft not at target altitude or vertical speed above 200 m/min. Lit when stable at target altitude. It is recommended to be at target altitude before setting autopilot to HÖJD.&lt;br /&gt;
*Landing gear down and locked: (LANDSTÄLL LÅST UTE) Green lights front lower left&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Gauges and instruments ===&lt;br /&gt;
&lt;br /&gt;
'''Fuel gauge'''&lt;br /&gt;
&lt;br /&gt;
Shows percent of drop-tanks left until they are empty if attached. Otherwise percent of internal fuel remaining. The two needles shows left/front and right/rear tank level. The engine is supplied by the two tanks alternating if not on afterburner, therefore the needles will chase each other down the scale.&lt;br /&gt;
&lt;br /&gt;
'''G-gauge'''&lt;br /&gt;
&lt;br /&gt;
Max G-force is displayed by a striped needle. Reset by clicking the small reset pin on the right side of the instrument.&lt;br /&gt;
&lt;br /&gt;
'''Altitude gauge'''&lt;br /&gt;
&lt;br /&gt;
Pressure setting is done by clicking left or right side of the setting knob (lower left of he instrument).&lt;br /&gt;
&lt;br /&gt;
'''Altitude selector'''&lt;br /&gt;
&lt;br /&gt;
Right side below secondary AI. Sets target altitude for autopilot. (7)&lt;br /&gt;
&lt;br /&gt;
'''Course selector'''&lt;br /&gt;
&lt;br /&gt;
Below Heading indicator. Sets course needle on the heading indicator (compass).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''AHK'''&lt;br /&gt;
&lt;br /&gt;
The real AHK (swe.Avstånd Höjd Kommando, eng. distance altitude command), on the right side of the radar, was an instrument connected to the Swedish air combat control centres (The system is part of &amp;quot;STRIL60&amp;quot;). It gave tactical information to the pilot by 20 different commands, displayed as words at the top of the instrument, and also by the distance scale and the arrow needle on the height scale. Some of the commands are reused  as instrument modes.(6)&lt;br /&gt;
&lt;br /&gt;
In all modes the &amp;quot;HÖJD&amp;quot; (altitude) scale shows pressure-altitude. Dot-needle from 0-2000 m and tape-needle from 0-20000 m.&lt;br /&gt;
&lt;br /&gt;
Modes:&lt;br /&gt;
&lt;br /&gt;
*0: (Off) Only altitude shown&lt;br /&gt;
*HÖJDÄNDRING: Arrow shows height reached in one minute at current vertical speed. Scale 0-20000 m. &amp;quot;AVST&amp;quot; tape shows distance over ground to change altitude 1000 m at current vertical speed. Speed over ground calculated from IAS using standard atmosphere.&lt;br /&gt;
*LANDA: Arrow shows height reached in one minute at current vertical speed. Scale 0-2000 m.&lt;br /&gt;
&amp;quot;AVST&amp;quot; tape shows distance over ground until tuchdown at sealevel and current vertical speed. Speed over ground calculated from IAS using standard atmosphere.&lt;br /&gt;
*AVST. 400: Arrow shows height reached in one minute at current vertical speed. AVST tape shows distance to beacon 0-400 km.&lt;br /&gt;
*AVSTÅND 40: Arrow shows height reached in one minute at current vertical speed. AVST tape shows distance to beacon 0-40 km.&lt;br /&gt;
*BARBRO: Arrow shows height reached in one minute at current vertical speed, scale 0-2000 m. AVST tape shows distance to beacon 0-40 km.&lt;br /&gt;
*NYTT MÅL: Arrow shows Route Manager cruise altitude 0- 20000 m. AVST shows distance 0-400 km to next Route Manager waypoint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Caution panel'''&lt;br /&gt;
&lt;br /&gt;
Lower right.(9) Shows system cautions and warnings.&lt;br /&gt;
Those with ! in front triggers main caution light:&lt;br /&gt;
&lt;br /&gt;
*!BRAND MOTOR: (fire engine) not implemented&lt;br /&gt;
*!BRAND EBK P: (fire afterburner pump) not implemented&lt;br /&gt;
*STYR AUT: (autopilot) autopilot off&lt;br /&gt;
*MOTOR IS: (engine ice) engine deicing on not implemented yet&lt;br /&gt;
*!TANK LUFT: (tank air) airpressure fault in fuel system. Not implemented&lt;br /&gt;
*!OLJE TRYCK: (oil pressure) low oil pressure.&lt;br /&gt;
*EBK: (afterburner) Indicates that the exhaust nozzle is working as AB is turned off or on&lt;br /&gt;
or open when idle on the ground to keep engine from overheating. (Not lit constantly when using AB.)&lt;br /&gt;
*!SYR GAS: (oxygen pressure) not implemented&lt;br /&gt;
*!EL FEL: (electric fault) fault in AC circuit or generator off.&lt;br /&gt;
*!HYDR I, HYDR II: (hydraulic I and II) Low pressure in hydraulic circuit&lt;br /&gt;
*!KABIN TRYCK: (cabin pressure) Cabin pressure too low. Not implemented.&lt;br /&gt;
*!HUV LÅS: (canopy lock) canopy not locked.&lt;br /&gt;
&lt;br /&gt;
TANK LUFT, OLJE TRYCK, EL FEL, HYDR I and HYDR II will be lit when generator off. But should go off during engine start up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Radar'''&lt;br /&gt;
&lt;br /&gt;
Only a limited simulation of the radar is implemented:&lt;br /&gt;
&lt;br /&gt;
* Showing a sweep and antenna azimut. (mode TYST and SÄND)&lt;br /&gt;
&lt;br /&gt;
* In multiplayer the radar shows aircrafts in radar range: dist &amp;lt; 40 km, +-60 deg in yaw, +-30 deg in pitch and &amp;gt; 100 m above ground. (mode SÄND)&lt;br /&gt;
&lt;br /&gt;
Radar Modes. Set by radar panel on the right side of cockpit(16):&lt;br /&gt;
&lt;br /&gt;
FRÅN: Power off&lt;br /&gt;
&lt;br /&gt;
BER: Readies radar for transmission. Takes 20 sec (In reality 3 min)&lt;br /&gt;
&lt;br /&gt;
TILL: Like BER but sights and weapon connections also ready. (Same as BER in the simulation.)&lt;br /&gt;
&lt;br /&gt;
TYST: Everything running but no emissions from antenna.&lt;br /&gt;
&lt;br /&gt;
SÄND: Everything running and antenna emitting.&lt;br /&gt;
&lt;br /&gt;
Yellow lines are navigation indicators used by the navigation system. See below.&lt;br /&gt;
&lt;br /&gt;
Knobs on radar panel set intensity of scope (LJUSSTYRKA FSKOP) and navigation lines (KORSVISARE). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Radio'''&lt;br /&gt;
&lt;br /&gt;
The radio equipment consists of two transceiver and one control unit of model Fr-21. They are on the left horizontal panel.(14) In the simulation both transceivers are used for communication. In the real aircraft one was the receiver for combat control data feeding the AHK and other avionics. The letters A-K stores pre set frequencies for transceiver A (closest to the control unit) and the numbers 1-5 stores pre set frequencies for transceiver B. A stores the COM1 frequency at FG start up. Number 1 stores the COM2 frequency at FG start up. The frequency for the other letters and numbers are in the text file Avionics/Fr21.txt and can be changed by the user. Pressing the buttons marked with dash (-) makes it possible to manually set the transceiver’s frequency using the knobs on the unit. The radio is off at simulation start. Transceiver B uses battery power and transceiver A uses main AC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Autopilot'''&lt;br /&gt;
&lt;br /&gt;
The autopilot is on the right side of the seat (11) and has the following functions and controls:&lt;br /&gt;
*HÖJD: Altitude hold&lt;br /&gt;
*ATTITYD: Attitude hold- pitch and roll&lt;br /&gt;
*DÄMPN: Pitch and yaw-damper on. This is on in all normal flight conditions&lt;br /&gt;
*SVÄNG: Banks the aircraft in attitude mode&lt;br /&gt;
*NOS: Pitch setting in attitude mode&lt;br /&gt;
*FRÅN TILL: Main autopilot switch. Normally left on. Triggers caution light if off.&lt;br /&gt;
*ROLL: Roll trim elevon setting&lt;br /&gt;
*GIR: Rudder trim setting&lt;br /&gt;
*Middle mouse button zeros the slider/knob.&lt;br /&gt;
&lt;br /&gt;
''IMPORTANT:'' The autopilot has an automatic switch to only damping if airspeed is Mach 0.95-1.05 or G-force is above 4 G or below -0.5 G. No warning is given.&lt;br /&gt;
&lt;br /&gt;
At present the autopilot is not as stable as it should be, especially altitude hold.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Navigation radio and mode selector'''&lt;br /&gt;
&lt;br /&gt;
Right side panel below cautions.(10) Main mode selector for navigation, AHK and radar.&lt;br /&gt;
&lt;br /&gt;
Draken does not have ordinary navigation instruments. It has a special system that was integrated in the combat command and navigation system of the Swedish airforce. A letter code was used to select navigation beacons and airbase landing system. There was two parts of the system: Anita - general navigation and Barbro - landing guidance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To simulate this and still be compatible with FG there is a file beacons.txt in the aircraft's directory. In that file you write a line for each beacon you want to use. The format is a comma separated list: letter code,type,frequenzy,note&lt;br /&gt;
*letter code: Three letters A-P that identifies the beacon. Anita (VOR, NDB) does only use the first two (you can set the last to any character you want). Barbro (ILS) uses all three.&lt;br /&gt;
*type: VOR, NDB or ILS.&lt;br /&gt;
*frequency: The beacons frequency VOR/ILS in MHz, NDB in kHz.&lt;br /&gt;
*note: Descriptive note. Must have at least one character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The selected mode sets input to course needle (cn), radar and AHK:&lt;br /&gt;
*FRÅN: (Off)  No nav radio, AHK 0, cn manual, Radar lines parked.&lt;br /&gt;
*FÖRV: (Preselected) No nav radio, AHK HÖJDÄNDRING, cn manual, Radar lines parked.&lt;br /&gt;
*STRIL: (Combat control) Activates Route Manager, AHK NYTT MÅL, cn direction to next waypoint, Radar lines parked.&lt;br /&gt;
*STRID: (Combat) No nav info, AHK HÖJDÄNDRING, cn manual, Radar lines parked.&lt;br /&gt;
*NAVRIKTN: (Navigation direction) Uses NDB/VOR set by the two letters NAV. Radar shows direction line, AHK HÖJDÄNDRING, cn ADF.&lt;br /&gt;
*NAV 400: (Navigation 400 km) Uses VOR/NDB set by the two letters NAV. Radar shows direction line, AHK AVST. 400 (shows 0 if NDB), cn direction to VOR.&lt;br /&gt;
*NAV 40: (Navigation 40 km) Uses VOR/NDB set by the two letters NAV. Radar shows direction line, AHK AVSTÅND 40 (shows 0 if NDB), cn direction to beacon.&lt;br /&gt;
*LANDN 40: (Landing 40 km) Uses ILS set by the three letters. Radar shows direction line and glide path, AHK LANDA, cn direction to ILS beacon.&lt;br /&gt;
*BARBRO: (Barbro) Uses ILS set by the three letters. Radar shows direction line, AHK BARBRO, cn direction to ILS beacon. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Controls and switches'''&lt;br /&gt;
&lt;br /&gt;
* Drag chute handle: (BROMSFALLSKÄRM) Lower left.(15) First use deploys drag chute. Second drops it. It takes approx. 3 seconds to deploy and should be done under 320 km/h and above 200 km/h. The handle can not be used if throttle above 85%.&lt;br /&gt;
* Throttle: (GASKRAN) lower left.&lt;br /&gt;
* Landing gear: (LAND-STÄLL) lower left.&lt;br /&gt;
* Droptank fuel valve: Right front canopy rim.(8) Set to on (forward) when using drop tanks.&lt;br /&gt;
*Parking brake: Center console below instrument panel to the right.(5)&lt;br /&gt;
*Jettison droptanks: Left side with red protection ring.(4)&lt;br /&gt;
*Canopy handle: Left side(3)&lt;br /&gt;
*Landing light switches: (LAND TAXI) Left front canopy rim.(12) Left and right landing light. If switches are in on position the lights will be automatically turned on/off as landing gear are lowered/rised. &lt;br /&gt;
*Navigation lights: (LANTERNOR) Right aft panel.(13) Four settings off, bright, blinking and dim.&lt;br /&gt;
*Indicator lights: (IND. LAMPOR) Sets full or half intensity of indicator lights and caution panel,&lt;br /&gt;
*Instrument lighting: (INST-LYSE) Left side above throttle. (1) Sets the brightness of the red instrument lighting.&lt;br /&gt;
*Consol light: (KONS_LYSE) Left side above throttle.(1) Sets the brightness of the consol lights illuminating the left and right consols.&lt;br /&gt;
*Cabin light: (KABIN LYSE) Left side above throttle.(1) Turns cabin light on or off.&lt;br /&gt;
*Clock ring: Knob right of clock turns the ring. Set pointing to the minutehand before lift off to keep track of flying time.&lt;br /&gt;
*Start panel: Lower left instrument panel.(2) Se below.&lt;br /&gt;
&lt;br /&gt;
====== Weapons and sight ======&lt;br /&gt;
ADEN 30 mm cannon implemented. Choose AKAN with weapon chooser knob. Right side radar panel(16). If AKAN is selected a gyroscopic gun sight is projected. Use knob on the sights right side(17) to set target wing span and keyboard controls (z/Z) to adjust ring diameter. Nose wheel needs to be up for weapons to function.&lt;br /&gt;
&lt;br /&gt;
=== Flying ===&lt;br /&gt;
[[File:J35 Draken start panel.jpg|thumb|Start panel]]&lt;br /&gt;
'''Starting the aircraft'''&lt;br /&gt;
&lt;br /&gt;
Either press Shift-S and let the automatic start make the work or follow the check list below.&lt;br /&gt;
&lt;br /&gt;
* Battery switch on. The smaller covered switch on the start panel.(no. 1) Click cover to open and then switch.&lt;br /&gt;
* Lock canopy. Click handle. The HUV LÅS caution should now go out.&lt;br /&gt;
* Turn on main fuel pump. Under the large cover on he start panel.(no. 2)&lt;br /&gt;
* Turn on afterburner fuel pump. Leftmost switch on the start panel.(no. 3) The red light on the start panel is now off.&lt;br /&gt;
* Turn on drop tanks fuel valve. The yellow light on the start panel is now unlit.&lt;br /&gt;
* Press START button on the start panel and wait until the engine is ignited.(no. 4)&lt;br /&gt;
* Switch on the generator when engine at 30%. The switch next to the start button.(no. 5)&lt;br /&gt;
All caution lights should now be unlit in a few seconds.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''Normal operations'''&lt;br /&gt;
* Draken has elevons, combined ailerons and elevators. Large elevon deflections decreases the available aileron difference.&lt;br /&gt;
* The aircraft has non-linear control response in elevation to lessen effect of small stick movements.&lt;br /&gt;
* It is neutral in roll at low alpha. Keep an eye on the horizon.&lt;br /&gt;
* To avoid accidents on landing is it not possible to retract landing gears if throttle &amp;lt; 90 %&lt;br /&gt;
* Rotation 270 km/h&lt;br /&gt;
* Max airspeed(Vne) 1350 km/h. Max speed with gear extended 500 km/h.&lt;br /&gt;
* Touch down speed ca. 300 km/h. 12 degrees AoA&lt;br /&gt;
* Too long with negative G causes fuel starvation.&lt;br /&gt;
* Watch alpha and speed. Drag increases fast with increasing alpha and pitch can occur at alpha &amp;gt; 25 deg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lift off: Rotate at 270 km/h to 10-12 degrees pitch. Lift off at approx 300 km/h. Turn of afterburner at 500 km/h if not needed for climbing. Normal climb speed Mach 0.9.&lt;br /&gt;
&lt;br /&gt;
Landing: Lower speed to 500 km/h. Lower gears and turn on landing lights. Turn to final lowering the speed to 325 km/h. Keep a speed of 300 km/h and a plané of 3 degrees (100 m at 2 km distance), RPM 80-85%. After touchdown raise the nose up to increase drag until speed is 240 km/h. Apply brakes. Lower nose at 160 km/h.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External link ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Saab_35_Draken Saab 35 Draken] (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
{{Saab}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Delta-wing aircraft]]&lt;br /&gt;
[[Category:Fighter aircraft]]&lt;br /&gt;
[[Category:Single-engine jets]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Saab_J35_cockpit.jpg&amp;diff=137326</id>
		<title>File:Saab J35 cockpit.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Saab_J35_cockpit.jpg&amp;diff=137326"/>
		<updated>2023-02-18T15:11:31Z</updated>

		<summary type="html">&lt;p&gt;AndersM: AndersM uploaded a new version of File:Saab J35 cockpit.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=Cockpit of the [[Saab 35 Draken|Saab J35 Draken]].}}&lt;br /&gt;
|date=2013-03-04&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Gijs|Gijs]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Saab 35 Draken cockpit screenshots]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken&amp;diff=137325</id>
		<title>Saab 35 Draken</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken&amp;diff=137325"/>
		<updated>2023-02-18T14:45:01Z</updated>

		<summary type="html">&lt;p&gt;AndersM: /* Special indicators */ Updated 2023 version of model&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:{{PAGENAME}}/info}}&lt;br /&gt;
The '''Saab J35 Draken''' (Dragon) is a Swedish supersonic interceptor developed in the 1950s. The model F was delivered between 1965 and 1972 and is the model that the FG plane is based on.&lt;br /&gt;
&lt;br /&gt;
== Description of the features ==&lt;br /&gt;
Number in parenthesis refers to the cockpit images.&lt;br /&gt;
 &lt;br /&gt;
=== Special aircraft keys ===&lt;br /&gt;
{| class=&amp;quot;keytable&amp;quot;&lt;br /&gt;
! Key&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|S}}&lt;br /&gt;
| Automatic start sequence including all systems. (The aircraft needs to be stationary.)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|L}}&lt;br /&gt;
| Attach or remove drop tanks on ground. (Stationary and drop tank selector off)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|J}}&lt;br /&gt;
| Jettison drop tanks in air.&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|D}}&lt;br /&gt;
| Unlocks and opens/closes and locks canopy. Closed and locked canopy - first press unlocks second opens canopy. Closed and unlocked canopy at simulation start - first press locks. Open canopy - first press closes canopy second locks&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|Q}} &lt;br /&gt;
| Fuel cut off, not normally needed.&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|P}} &lt;br /&gt;
| Use drag chute handle&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|e}}&lt;br /&gt;
| Fire ADEN 30mm cannon (100 rounds available, 1700 rounds per minute)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|z}}&lt;br /&gt;
|Sight ring: Decreased distance&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|Z}}&lt;br /&gt;
| Sight ring: Increased distance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Special indicators ===&lt;br /&gt;
&lt;br /&gt;
*GLÖM EJ LAND-STÄLL: (&amp;quot;Do not forget landing gear&amp;quot;) flashes if altitude &amp;lt; 1450 m, airspeed &amp;lt; 450 km/h and throttle &amp;lt; 85%&lt;br /&gt;
&lt;br /&gt;
*HUVUDVARN.: Main caution light. Indicates important system warnings. See below.&lt;br /&gt;
&lt;br /&gt;
*HÖJDV: Flashes when autopilot HÖJD (altitude hold) is set and aircraft not at target altitude or vertical speed above 200 m/min. Lit when stable at target altitude. It is recommended to be at target altitude before setting autopilot to HÖJD.&lt;br /&gt;
*Landing gear down and locked: (LANDSTÄLL LÅST UTE) Green lights front lower left&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Gauges and instruments ===&lt;br /&gt;
&lt;br /&gt;
'''Fuel gauge'''&lt;br /&gt;
&lt;br /&gt;
Shows percent of drop-tanks left until they are empty if attached. Otherwise percent of internal fuel remaining. The two needles shows left/front and right/rear tank level. The engine is supplied by the two tanks alternating if not on afterburner, therefore the needles will chase each other down the scale.&lt;br /&gt;
&lt;br /&gt;
'''G-gauge'''&lt;br /&gt;
&lt;br /&gt;
Max G-force is displayed by a striped needle. Reset by clicking the small reset pin on the right side of the instrument.&lt;br /&gt;
&lt;br /&gt;
'''Altitude gauge'''&lt;br /&gt;
&lt;br /&gt;
Pressure setting is done by clicking left or right side of the setting knob (lower left of he instrument).&lt;br /&gt;
&lt;br /&gt;
'''Altitude selector'''&lt;br /&gt;
&lt;br /&gt;
Right side below secondary AI. Sets target altitude for autopilot. (7)&lt;br /&gt;
&lt;br /&gt;
'''Course selector'''&lt;br /&gt;
&lt;br /&gt;
Below Heading indicator. Sets course needle on the heading indicator (compass).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''AHK'''&lt;br /&gt;
&lt;br /&gt;
The real AHK (swe.Avstånd Höjd Kommando, eng. distance altitude command), on the right side of the radar, was an instrument connected to the Swedish air combat control centres (The system is part of &amp;quot;STRIL60&amp;quot;). It gave tactical information to the pilot by 20 different commands, displayed as words at the top of the instrument, and also by the distance scale and the arrow needle on the height scale. Some of the commands are reused  as instrument modes.(6)&lt;br /&gt;
&lt;br /&gt;
In all modes the &amp;quot;HÖJD&amp;quot; (altitude) scale shows pressure-altitude. Dot-needle from 0-2000 m and tape-needle from 0-20000 m.&lt;br /&gt;
&lt;br /&gt;
Modes:&lt;br /&gt;
&lt;br /&gt;
*0: (Off) Only altitude shown&lt;br /&gt;
*HÖJDÄNDRING: Arrow shows height reached in one minute at current vertical speed. Scale 0-20000 m. &amp;quot;AVST&amp;quot; tape shows distance over ground to change altitude 1000 m at current vertical speed. Speed over ground calculated from IAS using standard atmosphere.&lt;br /&gt;
*LANDA: Arrow shows height reached in one minute at current vertical speed. Scale 0-2000 m.&lt;br /&gt;
&amp;quot;AVST&amp;quot; tape shows distance over ground until tuchdown at sealevel and current vertical speed. Speed over ground calculated from IAS using standard atmosphere.&lt;br /&gt;
*AVST. 400: Arrow shows height reached in one minute at current vertical speed. AVST tape shows distance to beacon 0-400 km.&lt;br /&gt;
*AVSTÅND 40: Arrow shows height reached in one minute at current vertical speed. AVST tape shows distance to beacon 0-40 km.&lt;br /&gt;
*BARBRO: Arrow shows height reached in one minute at current vertical speed, scale 0-2000 m. AVST tape shows distance to beacon 0-40 km.&lt;br /&gt;
*NYTT MÅL: Arrow shows Route Manager cruise altitude 0- 20000 m. AVST shows distance 0-400 km to next Route Manager waypoint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Caution panel'''&lt;br /&gt;
&lt;br /&gt;
Lower right.(9) Shows system cautions and warnings.&lt;br /&gt;
Those with ! in front triggers main caution light:&lt;br /&gt;
&lt;br /&gt;
*!BRAND MOTOR: (fire engine) not implemented&lt;br /&gt;
*!BRAND EBK P: (fire afterburner pump) not implemented&lt;br /&gt;
*STYR AUT: (autopilot) autopilot off&lt;br /&gt;
*MOTOR IS: (engine ice) engine deicing on not implemented yet&lt;br /&gt;
*!TANK LUFT: (tank air) airpressure fault in fuel system. Not implemented&lt;br /&gt;
*!OLJE TRYCK: (oil pressure) low oil pressure.&lt;br /&gt;
*EBK: (afterburner) Indicates that the exhaust nozzle is working as AB is turned off or on&lt;br /&gt;
or open when idle on the ground to keep engine from overheating. (Not lit constantly when using AB.)&lt;br /&gt;
*!SYR GAS: (oxygen pressure) not implemented&lt;br /&gt;
*!EL FEL: (electric fault) fault in AC circuit or generator off.&lt;br /&gt;
*!HYDR I, HYDR II: (hydraulic I and II) Low pressure in hydraulic circuit&lt;br /&gt;
*!KABIN TRYCK: (cabin pressure) Cabin pressure too low. Not implemented.&lt;br /&gt;
*!HUV LÅS: (canopy lock) canopy not locked.&lt;br /&gt;
&lt;br /&gt;
TANK LUFT, OLJE TRYCK, EL FEL, HYDR I and HYDR II will be lit when generator off. But should go off during engine start up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Radar'''&lt;br /&gt;
&lt;br /&gt;
Only a limited simulation of the radar is implemented:&lt;br /&gt;
&lt;br /&gt;
* Showing a sweep and antenna azimut. (mode TYST and SÄND)&lt;br /&gt;
&lt;br /&gt;
* In multiplayer the radar shows aircrafts in radar range: dist &amp;lt; 40 km, +-60 deg in yaw, +-30 deg in pitch and &amp;gt; 100 m above ground. (mode SÄND)&lt;br /&gt;
&lt;br /&gt;
Radar Modes (Set by radar panel on the right side of cockpit):&lt;br /&gt;
&lt;br /&gt;
FRÅN: Power off&lt;br /&gt;
&lt;br /&gt;
BER: Readies radar for transmission. Takes 20 sec (In reality 3 min)&lt;br /&gt;
&lt;br /&gt;
TILL: Like BER but sights and weapon connections also ready. (Same as BER in the simulation.)&lt;br /&gt;
&lt;br /&gt;
TYST: Everything running but no emissions from antenna.&lt;br /&gt;
&lt;br /&gt;
SÄND: Everything running and antenna emitting.&lt;br /&gt;
&lt;br /&gt;
Yellow lines are navigation indicators used by the navigation system. See below.&lt;br /&gt;
&lt;br /&gt;
Knobs on radar panel set intensity of scope (LJUSSTYRKA FSKOP) and navigation lines (KORSVISARE). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Radio'''&lt;br /&gt;
&lt;br /&gt;
The radio equipment consists of two transceiver and one control unit of model Fr-21. They are on the left horizontal panel. In the simulation both transceivers are used for communication. In the real aircraft one was the receiver for combat control data feeding the AHK and other avionics. The letters A-K stores pre set frequencies for transceiver A (closest to the control unit) and the numbers 1-5 stores pre set frequencies for transceiver B. A stores the COM1 frequency at FG start up. Number 1 stores the COM2 frequency at FG start up. The frequency for the other letters and numbers are in the text file Avionics/Fr21.txt and can be changed by the user. Pressing the buttons marked with dash (-) makes it possible to manually set the transceiver’s frequency using the knobs on the unit. The radio is off at simulation start. Transceiver B uses battery power and transceiver A uses main AC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Autopilot'''&lt;br /&gt;
&lt;br /&gt;
The autopilot is on the right side of the seat (11) and has the following functions and controls:&lt;br /&gt;
*HÖJD: Altitude hold&lt;br /&gt;
*ATTITYD: Attitude hold- pitch and roll&lt;br /&gt;
*DÄMPN: Pitch and yaw-damper on. This is on in all normal flight conditions&lt;br /&gt;
*SVÄNG: Banks the aircraft in attitude mode&lt;br /&gt;
*NOS: Pitch setting in attitude mode&lt;br /&gt;
*FRÅN TILL: Main autopilot switch. Normally left on. Triggers caution light if off.&lt;br /&gt;
*ROLL: Roll trim elevon setting&lt;br /&gt;
*GIR: Rudder trim setting&lt;br /&gt;
*Middle mouse button zeros the slider/knob.&lt;br /&gt;
&lt;br /&gt;
''IMPORTANT:'' The autopilot has an automatic switch to only damping if airspeed is Mach 0.95-1.05 or G-force is above 4 G or below -0.5 G. No warning is given.&lt;br /&gt;
&lt;br /&gt;
At present the autopilot is not as stable as it should be, especially altitude hold.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Navigation radio and mode selector'''&lt;br /&gt;
&lt;br /&gt;
3D model right side panel below cautions.(10) Main mode selector for navigation, AHK and radar.&lt;br /&gt;
&lt;br /&gt;
Draken does not have ordinary navigation instruments. It has a special system that was integrated in the combat command and navigation system of the Swedish airforce. A letter code was used to select navigation beacons and airbase landing system. There was two parts of the system: Anita - general navigation and Barbro - landing guidance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To simulate this and still be compatible with FG there is a file beacons.txt in the aircraft's directory. In that file you write a line for each beacon you want to use. The format is a comma separated list: letter code,type,frequenzy,note&lt;br /&gt;
*letter code: Three letters A-P that identifies the beacon. Anita (VOR, NDB) does only use the first two (you can set the last to any character you want). Barbro (ILS) uses all three.&lt;br /&gt;
*type: VOR, NDB or ILS.&lt;br /&gt;
*frequency: The beacons frequency VOR/ILS in MHz, NDB in kHz.&lt;br /&gt;
*note: Descriptive note. Must have at least one character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The selected mode sets input to course needle (cn), radar and AHK:&lt;br /&gt;
*FRÅN: (Off)  No nav radio, AHK 0, cn manual, Radar lines parked.&lt;br /&gt;
*FÖRV: (Preselected) No nav radio, AHK HÖJDÄNDRING, cn manual, Radar lines parked.&lt;br /&gt;
*STRIL: (Combat control) Activates Route Manager, AHK NYTT MÅL, cn direction to next waypoint, Radar lines parked.&lt;br /&gt;
*STRID: (Combat) No nav info, AHK HÖJDÄNDRING, cn manual, Radar lines parked.&lt;br /&gt;
*NAVRIKTN: (Navigation direction) Uses NDB/VOR set by the two letters NAV. Radar shows direction line, AHK HÖJDÄNDRING, cn ADF.&lt;br /&gt;
*NAV 400: (Navigation 400 km) Uses VOR/NDB set by the two letters NAV. Radar shows direction line, AHK AVST. 400 (shows 0 if NDB), cn direction to VOR.&lt;br /&gt;
*NAV 40: (Navigation 40 km) Uses VOR/NDB set by the two letters NAV. Radar shows direction line, AHK AVSTÅND 40 (shows 0 if NDB), cn direction to beacon.&lt;br /&gt;
*LANDN 40: (Landing 40 km) Uses ILS set by the three letters. Radar shows direction line and glide path, AHK LANDA, cn direction to ILS beacon.&lt;br /&gt;
*BARBRO: (Barbro) Uses ILS set by the three letters. Radar shows direction line, AHK BARBRO, cn direction to ILS beacon. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Controls and switches'''&lt;br /&gt;
&lt;br /&gt;
* Drag chute handle: (BROMSFALLSKÄRM) Lower left. First use deploys drag chute. Second drops it. It takes approx. 3 seconds to deploy and should be done under 320 km/h and above 200 km/h. The handle can not be used if throttle above 85%.&lt;br /&gt;
* Throttle: (GASKRAN) lower left.&lt;br /&gt;
* Landing gear: (LAND-STÄLL) lower left.&lt;br /&gt;
* Droptank fuel valve: Right front canopy rim.(8) Set to on (forward) when using drop tanks.&lt;br /&gt;
*Parking brake: Center console below instrument panel to the right.(5)&lt;br /&gt;
*Jettison droptanks: Left side with red protection ring.(4)&lt;br /&gt;
*Canopy handle: Left side(3)&lt;br /&gt;
*Landing light switches: (LAND TAXI) Left front canopy rim.(12) Left and right landing light. If switches are in on position the lights will be automatically turned on/off as landing gear are lowered/rised. &lt;br /&gt;
*Navigation lights: (LANTERNOR) Right aft panel.(13) Four settings off, bright, blinking and dim.&lt;br /&gt;
*Indicator lights: (IND. LAMPOR) Sets full or half intensity of indicator lights and caution panel,&lt;br /&gt;
*Instrument lighting: (INST-LYSE) Left side above throttle. (2) Sets the brightness of the red instrument lighting.&lt;br /&gt;
*Consol light: (KONS_LYSE) Left side above throttle. Sets the brightness of the consol lights illuminating the left and right consols.&lt;br /&gt;
*Cabin light: (KABIN LYSE) Left side above throttle. Turns cabin light on or off.&lt;br /&gt;
*Clock ring: Knob right of clock turns the ring. Set pointing to the minutehand before lift off to keep track of flying time.&lt;br /&gt;
*Start panel: Lower left instrument panel. Se below.&lt;br /&gt;
&lt;br /&gt;
====== Weapons and sight ======&lt;br /&gt;
ADEN 30 mm cannon implemented. Choose AKAN with weapon chooser knob. (Right side radar panel). If AKAN is selected a gyroscopic gun sight is projected. Use knob on the sights right side to set target wing span and keyboard controls (z/Z) to adjust ring diameter. Nose wheel needs to be up for weapons to function.&lt;br /&gt;
&lt;br /&gt;
=== Flying ===&lt;br /&gt;
[[File:J35 Draken start panel.jpg|thumb|Start panel]]&lt;br /&gt;
'''Starting the aircraft'''&lt;br /&gt;
&lt;br /&gt;
Either press Shift-S and let the automatic start make the work or follow the check list below.&lt;br /&gt;
&lt;br /&gt;
* Battery switch on. The smaller covered switch on the start panel.(no. 1) Click cover to open and then switch.&lt;br /&gt;
* Lock canopy. Click handle. The HUV LÅS caution should now go out.&lt;br /&gt;
* Turn on main fuel pump. Under the large cover on he start panel.(no. 2)&lt;br /&gt;
* Turn on afterburner fuel pump. Leftmost switch on the start panel.(no. 3) The red light on the start panel is now off.&lt;br /&gt;
* Turn on drop tanks fuel valve. The yellow light on the start panel is now unlit.&lt;br /&gt;
* Press START button on the start panel and wait until the engine is ignited.(no. 4)&lt;br /&gt;
* Switch on the generator when engine at 30%. The switch next to the start button.(no. 5)&lt;br /&gt;
All caution lights should now be unlit in a few seconds.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''Normal operations'''&lt;br /&gt;
* Draken has elevons, combined ailerons and elevators. Large elevon deflections decreases the available aileron difference.&lt;br /&gt;
* The aircraft has non-linear control response in elevation to lessen effect of small stick movements.&lt;br /&gt;
* It is neutral in roll at low alpha. Keep an eye on the horizon.&lt;br /&gt;
* To avoid accidents on landing is it not possible to retract landing gears if throttle &amp;lt; 90 %&lt;br /&gt;
* Rotation 270 km/h&lt;br /&gt;
* Max airspeed(Vne) 1350 km/h. Max speed with gear extended 500 km/h.&lt;br /&gt;
* Touch down speed ca. 300 km/h. 12 degrees AoA&lt;br /&gt;
* Too long with negative G causes fuel starvation.&lt;br /&gt;
* Watch alpha and speed. Drag increases fast with increasing alpha and pitch can occur at alpha &amp;gt; 25 deg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lift off: Rotate at 270 km/h to 10-12 degrees pitch. Lift off at approx 300 km/h. Turn of afterburner at 500 km/h if not needed for climbing. Normal climb speed Mach 0.9.&lt;br /&gt;
&lt;br /&gt;
Landing: Lower speed to 500 km/h. Lower gears and turn on landing lights. Turn to final lowering the speed to 325 km/h. Keep a speed of 300 km/h and a plané of 3 degrees (100 m at 2 km distance), RPM 80-85%. After touchdown raise the nose up to increase drag until speed is 240 km/h. Apply brakes. Lower nose at 160 km/h.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External link ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Saab_35_Draken Saab 35 Draken] (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
{{Saab}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Delta-wing aircraft]]&lt;br /&gt;
[[Category:Fighter aircraft]]&lt;br /&gt;
[[Category:Single-engine jets]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken&amp;diff=137324</id>
		<title>Saab 35 Draken</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken&amp;diff=137324"/>
		<updated>2023-02-18T14:27:36Z</updated>

		<summary type="html">&lt;p&gt;AndersM: /* Special aircraft keys */ Updated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:{{PAGENAME}}/info}}&lt;br /&gt;
The '''Saab 35 Draken''' (Dragon) is a Swedish supersonic interceptor developed in the 1950s. The model F was delivered between 1965 and 1972 and is the model that the FG plane is based on.&lt;br /&gt;
&lt;br /&gt;
== Description of the features ==&lt;br /&gt;
Number in parenthesis refers to the cockpit image.&lt;br /&gt;
 &lt;br /&gt;
=== Special aircraft keys ===&lt;br /&gt;
{| class=&amp;quot;keytable&amp;quot;&lt;br /&gt;
! Key&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|S}}&lt;br /&gt;
| Automatic start sequence including all systems. (The aircraft needs to be stationary.)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|L}}&lt;br /&gt;
| Attach or remove drop tanks on ground. (Stationary and drop tank selector off)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|J}}&lt;br /&gt;
| Jettison drop tanks in air.&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|D}}&lt;br /&gt;
| Unlocks and opens/closes and locks canopy. Closed and locked canopy - first press unlocks second opens canopy. Closed and unlocked canopy at simulation start - first press locks. Open canopy - first press closes canopy second locks&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|Q}} &lt;br /&gt;
| Fuel cut off, not normally needed.&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|P}} &lt;br /&gt;
| Use drag chute handle&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|e}}&lt;br /&gt;
| Fire ADEN 30mm cannon (100 rounds available, 1700 rounds per minute)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|z}}&lt;br /&gt;
|Sight ring: Decreased distance&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|Z}}&lt;br /&gt;
| Sight ring: Increased distance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Special indicators ===&lt;br /&gt;
&lt;br /&gt;
*GLÖM EJ LAND-STÄLL: (&amp;quot;Do not forget landing gear&amp;quot;) flashes if altitude &amp;lt; 1450 m, airspeed &amp;lt; 450 km/h and throttle &amp;lt; 85%&lt;br /&gt;
&lt;br /&gt;
*HUVUDVARN.: Main caution light. Indicates important system warnings. See below.&lt;br /&gt;
&lt;br /&gt;
*HÖJDV: Flashes when autopilot HÖJD (altitude hold) is set and aircraft not at target altitude or vertical speed above 200 m/min. Lit when stable at target altitude. It is recommended to be at target altitude before setting autopilot to HÖJD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Gauges and instruments ===&lt;br /&gt;
&lt;br /&gt;
'''Fuel gauge'''&lt;br /&gt;
&lt;br /&gt;
Shows percent of drop-tanks left until they are empty if attached. Otherwise percent of internal fuel remaining. The two needles shows left/front and right/rear tank level. The engine is supplied by the two tanks alternating if not on afterburner, therefore the needles will chase each other down the scale.&lt;br /&gt;
&lt;br /&gt;
'''G-gauge'''&lt;br /&gt;
&lt;br /&gt;
Max G-force is displayed by a striped needle. Reset by clicking the small reset pin on the right side of the instrument.&lt;br /&gt;
&lt;br /&gt;
'''Altitude gauge'''&lt;br /&gt;
&lt;br /&gt;
Pressure setting is done by clicking left or right side of the setting knob (lower left of he instrument).&lt;br /&gt;
&lt;br /&gt;
'''Altitude selector'''&lt;br /&gt;
&lt;br /&gt;
Right side below secondary AI. Sets target altitude for autopilot. (7)&lt;br /&gt;
&lt;br /&gt;
'''Course selector'''&lt;br /&gt;
&lt;br /&gt;
Below Heading indicator. Sets course needle on the heading indicator (compass).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''AHK'''&lt;br /&gt;
&lt;br /&gt;
The real AHK (swe.Avstånd Höjd Kommando, eng. distance altitude command), on the right side of the radar, was an instrument connected to the Swedish air combat control centres (The system is part of &amp;quot;STRIL60&amp;quot;). It gave tactical information to the pilot by 20 different commands, displayed as words at the top of the instrument, and also by the distance scale and the arrow needle on the height scale. Some of the commands are reused  as instrument modes.(6)&lt;br /&gt;
&lt;br /&gt;
In all modes the &amp;quot;HÖJD&amp;quot; (altitude) scale shows pressure-altitude. Dot-needle from 0-2000 m and tape-needle from 0-20000 m.&lt;br /&gt;
&lt;br /&gt;
Modes:&lt;br /&gt;
&lt;br /&gt;
*0: (Off) Only altitude shown&lt;br /&gt;
*HÖJDÄNDRING: Arrow shows height reached in one minute at current vertical speed. Scale 0-20000 m. &amp;quot;AVST&amp;quot; tape shows distance over ground to change altitude 1000 m at current vertical speed. Speed over ground calculated from IAS using standard atmosphere.&lt;br /&gt;
*LANDA: Arrow shows height reached in one minute at current vertical speed. Scale 0-2000 m.&lt;br /&gt;
&amp;quot;AVST&amp;quot; tape shows distance over ground until tuchdown at sealevel and current vertical speed. Speed over ground calculated from IAS using standard atmosphere.&lt;br /&gt;
*AVST. 400: Arrow shows height reached in one minute at current vertical speed. AVST tape shows distance to beacon 0-400 km.&lt;br /&gt;
*AVSTÅND 40: Arrow shows height reached in one minute at current vertical speed. AVST tape shows distance to beacon 0-40 km.&lt;br /&gt;
*BARBRO: Arrow shows height reached in one minute at current vertical speed, scale 0-2000 m. AVST tape shows distance to beacon 0-40 km.&lt;br /&gt;
*NYTT MÅL: Arrow shows Route Manager cruise altitude 0- 20000 m. AVST shows distance 0-400 km to next Route Manager waypoint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Caution panel'''&lt;br /&gt;
&lt;br /&gt;
Lower right.(9) Shows system cautions and warnings.&lt;br /&gt;
Those with ! in front triggers main caution light:&lt;br /&gt;
&lt;br /&gt;
*!BRAND MOTOR: (fire engine) not implemented&lt;br /&gt;
*!BRAND EBK P: (fire afterburner pump) not implemented&lt;br /&gt;
*STYR AUT: (autopilot) autopilot off&lt;br /&gt;
*MOTOR IS: (engine ice) engine deicing on not implemented yet&lt;br /&gt;
*!TANK LUFT: (tank air) airpressure fault in fuel system. Not implemented&lt;br /&gt;
*!OLJE TRYCK: (oil pressure) low oil pressure.&lt;br /&gt;
*EBK: (afterburner) Indicates that the exhaust nozzle is working as AB is turned off or on&lt;br /&gt;
or open when idle on the ground to keep engine from overheating. (Not lit constantly when using AB.)&lt;br /&gt;
*!SYR GAS: (oxygen pressure) not implemented&lt;br /&gt;
*!EL FEL: (electric fault) fault in AC circuit or generator off.&lt;br /&gt;
*!HYDR I, HYDR II: (hydraulic I and II) Low pressure in hydraulic circuit&lt;br /&gt;
*!KABIN TRYCK: (cabin pressure) Cabin pressure too low. Not implemented.&lt;br /&gt;
*!HUV LÅS: (canopy lock) canopy not locked.&lt;br /&gt;
&lt;br /&gt;
TANK LUFT, OLJE TRYCK, EL FEL, HYDR I and HYDR II will be lit when generator off. But should go off during engine start up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Radar'''&lt;br /&gt;
&lt;br /&gt;
Showing a sweep and antenna azimuth as well as navigation indicators.&lt;br /&gt;
In multiplayer the radar shows aircraft in radar range: dist. &amp;lt; 40 km, +-60 deg in yaw, +-30 deg in pitch and &amp;gt; 100 m above ground.&lt;br /&gt;
Yellow lines are navigation indicators used by the navigation system. See below.&lt;br /&gt;
Radar modes are set on the navigation radio.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Radio'''&lt;br /&gt;
&lt;br /&gt;
The radio equipment consists of two transceiver and one control unit of model Fr-21. They are on the left horizontal panel (14). In the simulation both transceivers are used for communication. In the real aircraft one was the receiver for combat control data feeding the AHK and other avionics. The letters A-K stores pre set frequencies for transceiver A (closest to the control unit) and the numbers 1-5 stores pre set frequencies fro transceiver B. A stores the COM1 frequency at FG start up, B stores COM1 standby frequency. Number 1 stores the COM2 frequency at FG start up, 2 stores COM2 standby frequency. The frequency for the other letters and numbers are in the text file Avionics/Fr21.txt and can be changed by the user.&lt;br /&gt;
Pressing the buttons marked with dash (-) makes it possible to manually set the transceiver’s frequency using the knobs on the unit.&lt;br /&gt;
The radio is off at simulation start. Transceiver B uses battery power and transceiver A uses main AC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Autopilot'''&lt;br /&gt;
&lt;br /&gt;
The autopilot is on the right side of the seat (11) and has the following functions and controls:&lt;br /&gt;
*HÖJD: Altitude hold&lt;br /&gt;
*ATTITYD: Attitude hold- pitch and roll&lt;br /&gt;
*DÄMPN: Pitch and yaw-damper on. This is on in all normal flight conditions&lt;br /&gt;
*SVÄNG: Banks the aircraft in attitude mode&lt;br /&gt;
*NOS: Pitch setting in attitude mode&lt;br /&gt;
*FRÅN TILL: Main autopilot switch. Normally left on. Triggers caution light if off.&lt;br /&gt;
*ROLL: Roll trim elevon setting&lt;br /&gt;
*GIR: Rudder trim setting&lt;br /&gt;
*Middle mouse button zeros the slider/knob.&lt;br /&gt;
&lt;br /&gt;
''IMPORTANT:'' The autopilot has an automatic switch to only damping if airspeed is Mach 0.95-1.05 or G-force is above 4 G or below -0.5 G. No warning is given.&lt;br /&gt;
&lt;br /&gt;
At present the autopilot is not as stable as it should be, especially altitude hold.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Navigation radio and mode selector'''&lt;br /&gt;
&lt;br /&gt;
3D model right side panel below cautions.(10) Main mode selector for navigation, AHK and radar.&lt;br /&gt;
&lt;br /&gt;
Draken does not have ordinary navigation instruments. It has a special system that was integrated in the combat command and navigation system of the Swedish airforce. A letter code was used to select navigation beacons and airbase landing system. There was two parts of the system: Anita - general navigation and Barbro - landing guidance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To simulate this and still be compatible with FG there is a file beacons.txt in the aircraft's directory. In that file you write a line for each beacon you want to use. The format is a comma separated list: letter code,type,frequenzy,note&lt;br /&gt;
*letter code: Three letters A-P that identifies the beacon. Anita (VOR, NDB) does only use the first two (you can set the last to any character you want). Barbro (ILS) uses all three.&lt;br /&gt;
*type: VOR, NDB or ILS.&lt;br /&gt;
*frequency: The beacons frequency VOR/ILS in MHz, NDB in kHz.&lt;br /&gt;
*note: Descriptive note. Must have at least one character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The selected mode sets input to course needle (cn), radar and AHK:&lt;br /&gt;
*FRÅN: (Off)  No nav radio, Radar off, AHK 0, cn manual&lt;br /&gt;
*FÖRV: (Preselected) No nav radio, Radar off, AHK HÖJDÄNDRING, cn manual&lt;br /&gt;
*STRIL: (Combat command) Activates Route Manager, Radar scanning, AHK NYTT MÅL, cn direction to next waypoint.&lt;br /&gt;
*STRID: (Combat) No nav info, Radar scanning, AHK HÖJDÄNDRING, cn manual&lt;br /&gt;
*NAVRIKTN: (Navigation direction) Uses NDB/VOR set by the two letters NAV. Radar shows direction pointer, AHK HÖJDÄNDRING, cn ADF.&lt;br /&gt;
*NAV 400: (Navigation 400 km) Uses VOR/NDB set by the two letters NAV. Radar shows direction pointer, AHK AVST. 400 (shows 0 if NDB), cn direction to VOR.&lt;br /&gt;
*NAV 40: (Navigation 40 km) Uses VOR/NDB set by the two letters NAV. Radar shows direction pointer, AHK AVSTÅND 40 (shows 0 if NDB), cn direction to beacon.&lt;br /&gt;
*LANDN 40: (Landing 40 km) Uses NDB/VOR set by the two letters NAV. Radar shows direction pointer, AHK LANDA, cn direction to beacon.&lt;br /&gt;
*BARBRO: (Barbro) Uses ILS set by the three letters NAV+LANDN. Radar shows glide slope pointers, AHK BARBRO, cn direction to ILS beacon. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Special Controls and switches'''&lt;br /&gt;
*Droptank fuel valve: Right front canopy rim.(8) Set to on (forward) when using drop tanks.&lt;br /&gt;
*Parking brake: Center console below instrument panel to the right.(5)&lt;br /&gt;
*Jettison droptanks: Left side with red protection ring.(4)&lt;br /&gt;
*Canopy handle: Left side(3)&lt;br /&gt;
*Start panel: Lower left instrument panel.(2) Se below.&lt;br /&gt;
*Instrument and panel lighting: Left side knob above throttle.(1) Click to change intensity.&lt;br /&gt;
Landing/taxi light switches: Left front canopy rim (12). Left and right landing light. If switches are in on position the lights will be automatically turned on/off as landing gear are lowered/rised. &lt;br /&gt;
Navigation lights (sv. &amp;quot;Lanternor&amp;quot;): Right aft panel (13). Three settings are implemented; off, dim and bright.&lt;br /&gt;
&lt;br /&gt;
=== Flying ===&lt;br /&gt;
[[File:J35 Draken start panel.jpg|thumb|Start panel]]&lt;br /&gt;
'''Starting the aircraft'''&lt;br /&gt;
&lt;br /&gt;
Either press Shift-S and let the automatic start make the work or follow the check list below.&lt;br /&gt;
&lt;br /&gt;
* Battery switch on. The smaller covered switch on the start panel.(no. 1) Click cover to open and then switch.&lt;br /&gt;
* Lock canopy. Click handle. The HUV LÅS caution should now go out.&lt;br /&gt;
* Turn on main fuel pump. Under the large cover on he start panel.(no. 2)&lt;br /&gt;
* Turn on afterburner fuel pump. Leftmost switch on the start panel.(no. 3) The red light on the start panel is now off.&lt;br /&gt;
* Turn on drop tanks fuel valve. The yellow light on the start panel is now unlit.&lt;br /&gt;
* Press START button on the start panel and wait until the engine is ignited.(no. 4)&lt;br /&gt;
* Switch on the generator when engine at 30%. The switch next to the start button.(no. 5)&lt;br /&gt;
All caution lights should now be unlit in a few seconds.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''Normal operations'''&lt;br /&gt;
* Draken has elevons, combined ailerons and elevators. Large elevon deflections decreases the available aileron difference.&lt;br /&gt;
* The aircraft has non-linear control response in elevation to lessen effect of small stick movements.&lt;br /&gt;
* It is neutral in roll at low alpha. Keep an eye on the horizon.&lt;br /&gt;
* To avoid accidents on landing is it not possible to retract landing gears if throttle &amp;lt; 90 %&lt;br /&gt;
* Rotation 270 km/h&lt;br /&gt;
* Max airspeed(Vne) 1350 km/h. Max speed with gear extended 500 km/h.&lt;br /&gt;
* Touch down speed ca. 300 km/h. 12 degrees AoA&lt;br /&gt;
* Too long with negative G causes fuel starvation.&lt;br /&gt;
* Watch alpha and speed. Drag increases fast with increasing alpha and pitch can occur at alpha &amp;gt; 25 deg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lift off: Rotate at 270 km/h to 10-12 degrees pitch. Lift off at approx 300 km/h. Turn of afterburner at 500 km/h if not needed for climbing. Normal climb speed Mach 0.9.&lt;br /&gt;
&lt;br /&gt;
Landing: Lower speed to 500 km/h. Lower gears and turn on landing lights. Turn to final lowering the speed to 325 km/h. Keep a speed of 300 km/h and a plané of 3 degrees (100 m at 2 km distance), RPM 80-85%. After touchdown raise the nose up to increase drag until speed is 240 km/h. Apply brakes. Lower nose at 160 km/h.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External link ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Saab_35_Draken Saab 35 Draken] (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
{{Saab}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Delta-wing aircraft]]&lt;br /&gt;
[[Category:Fighter aircraft]]&lt;br /&gt;
[[Category:Single-engine jets]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Mumble&amp;diff=137302</id>
		<title>Mumble</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Mumble&amp;diff=137302"/>
		<updated>2023-02-11T13:37:06Z</updated>

		<summary type="html">&lt;p&gt;AndersM: Undo revision 137301 by AndersM (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Software&lt;br /&gt;
| title               = Mumble&lt;br /&gt;
| logo                = &lt;br /&gt;
| image               = &lt;br /&gt;
| alt                 = &lt;br /&gt;
| developedby         = Various&lt;br /&gt;
| initialrelease      = 2005&lt;br /&gt;
| latestrelease       = 1.4.230 (stable)&lt;br /&gt;
| writtenin           = C++&lt;br /&gt;
| os                  = Windows, OS X, Linux, Android, iOS&lt;br /&gt;
| platform            = PC, Mac, smartphones&lt;br /&gt;
| developmentstatus   = &lt;br /&gt;
| developmentprogress = &lt;br /&gt;
| type                = Voice chat software&lt;br /&gt;
| license             = [https://github.com/mumble-voip/mumble/blob/master/LICENSE Open source]&lt;br /&gt;
| website             = https://mumble.info&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''Mumble''' is a free, open source VoIP software used by some ATCs and pilots on the multiplayer network.&lt;br /&gt;
&lt;br /&gt;
== Installation and configuration ==&lt;br /&gt;
# Download Mumble from its [https://mumble.info official website] (choose the links from the ''Stable Release'' column). If you're on Linux, you can usually install it using your package manager.&lt;br /&gt;
# Start it and follow the instructions on your screen to configure the program.&lt;br /&gt;
{{tip|We suggest to choose the '''Push-To-Talk''' mode in the '''Voice Activity Detection''' step; if you choose another mode, make sure to calibrate the volume levels correctly (follow the on-screen instructions carefully). This way, your voice will be transmitted only when you mean to, and there will be less background noise on the channel.}}&lt;br /&gt;
&lt;br /&gt;
=== Binding '''Push-To-Talk''' to joystick button on linux ===&lt;br /&gt;
&lt;br /&gt;
On linux you can enable generic input support by editing &amp;lt;code&amp;gt;~/.config/Mumble/Mumble.conf&amp;lt;/code&amp;gt;. You need to add the following section:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
[shortcut]&lt;br /&gt;
linux\evdev\enable=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Note: This is correct: add the section as stated above; ignore the fact, that there is already a section [shortcuts].''&lt;br /&gt;
&lt;br /&gt;
Make sure you have permission to access the input devices (typically called &amp;lt;code&amp;gt;/dev/input/event*&amp;lt;/code&amp;gt;). You might need to add yourself to the appropriate group (for example &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt;) or configure your device manager to grant access. Consult your OS documentation for details. {{Tip|&amp;lt;code&amp;gt;input-events&amp;lt;/code&amp;gt; is a useful tool for troubleshooting.}}&lt;br /&gt;
&lt;br /&gt;
''Note: # usermod YOUR_LOGIN_HERE -aG input should do the trick, where YOUR_LOGIN_HERE should be obviously replaced with obvious. Debianers might want to use # /sbin/usermod.''&lt;br /&gt;
&lt;br /&gt;
''Note: input-events is part of the input-utils package.''&lt;br /&gt;
&lt;br /&gt;
Proceed to launch mumble. If you are using a terminal, watch the output messages. You should see your input device listed, such as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;GlobalShortcutX: /dev/input/event7: Saitek Cyborg Evo Force&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Open the settings dialog, go to the shortcuts tab and assign any button you like to the &amp;lt;code&amp;gt;Push-to-Talk&amp;lt;/code&amp;gt; function.&lt;br /&gt;
{{Note|It may show up as nonsense but that is just a cosmetic issue. For example, one of my joystick buttons appears as {{button|semicolon}}. Nevertheless, it's still the joystick button and typing semicolon on the keyboard has no effect.}}&lt;br /&gt;
&lt;br /&gt;
== Connecting ==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on {{Menu item|Server|Connect}}.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If this is the first time you connect to the FlightGear Mumble server, click on {{button|Add New...}} at the bottom of the window and input the following parameters, then click {{button|OK}}:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Label'''&lt;br /&gt;
| &amp;lt;tt&amp;gt;FlightGear ATC&amp;lt;/tt&amp;gt; (or another descriptive name of your choice)&lt;br /&gt;
|-&lt;br /&gt;
| '''Address'''&lt;br /&gt;
| &amp;lt;tt&amp;gt;radio-mumble.flightgear.fr&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| '''Port'''&lt;br /&gt;
| &amp;lt;tt&amp;gt;64738&amp;lt;/tt&amp;gt; (the default value)&lt;br /&gt;
|-&lt;br /&gt;
| '''Username'''&lt;br /&gt;
| A username (callsign) of your choice&lt;br /&gt;
|}&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select '''FlightGear ATC''' from the server list and click {{button|Connect}}.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using Mumble ==&lt;br /&gt;
When you are connected, Mumble will show a hierarchical list of channels on the right side of the main window.&lt;br /&gt;
* To enter an existing channel, right click on it and choose {{Menu item|Join Channel}}.&lt;br /&gt;
* To create a new channel (e.g. if you're acting as a controller), right click on the ''FlightGear'' channel and choose {{Menu item|Add}}. Input a name and (optionally) a description, then click {{button|OK}}.&lt;br /&gt;
{{note|The new channel is temporary and will be deleted when the last person in it exits the channel.}}&lt;br /&gt;
* To mute yourself, click the {{button|Mute}} button in the main toolbar.&lt;br /&gt;
&lt;br /&gt;
=== Extensions ===&lt;br /&gt;
* [[FGCom-mumble]]: In addition to using plain mumble, you can also try the FGCom-mumble plugin, which provides realistic radio operation. This works for Mumble &amp;gt;= 1.4.0.&lt;br /&gt;
&lt;br /&gt;
== OpenRadar flickering when using Mumble ==&lt;br /&gt;
If you're using Mumble and OpenRadar at the same time, you might notice that the OpenRadar screen flickers. A solution is disabling the Mumble overlay (in Mumble, click on {{Menu item|Configure|Settings}}, open the '''Overlay''' section, deselect '''Enable Overlay''' and click {{button|OK}}).&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Discord]]&lt;br /&gt;
* [[FGCom]]&lt;br /&gt;
* [[FGCom-mumble]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Air Traffic Control]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Mumble&amp;diff=137301</id>
		<title>Mumble</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Mumble&amp;diff=137301"/>
		<updated>2023-02-11T13:34:42Z</updated>

		<summary type="html">&lt;p&gt;AndersM: /* Connecting */ Uppdated server adress&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Software&lt;br /&gt;
| title               = Mumble&lt;br /&gt;
| logo                = &lt;br /&gt;
| image               = &lt;br /&gt;
| alt                 = &lt;br /&gt;
| developedby         = Various&lt;br /&gt;
| initialrelease      = 2005&lt;br /&gt;
| latestrelease       = 1.4.230 (stable)&lt;br /&gt;
| writtenin           = C++&lt;br /&gt;
| os                  = Windows, OS X, Linux, Android, iOS&lt;br /&gt;
| platform            = PC, Mac, smartphones&lt;br /&gt;
| developmentstatus   = &lt;br /&gt;
| developmentprogress = &lt;br /&gt;
| type                = Voice chat software&lt;br /&gt;
| license             = [https://github.com/mumble-voip/mumble/blob/master/LICENSE Open source]&lt;br /&gt;
| website             = https://mumble.info&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''Mumble''' is a free, open source VoIP software used by some ATCs and pilots on the multiplayer network.&lt;br /&gt;
&lt;br /&gt;
== Installation and configuration ==&lt;br /&gt;
# Download Mumble from its [https://mumble.info official website] (choose the links from the ''Stable Release'' column). If you're on Linux, you can usually install it using your package manager.&lt;br /&gt;
# Start it and follow the instructions on your screen to configure the program.&lt;br /&gt;
{{tip|We suggest to choose the '''Push-To-Talk''' mode in the '''Voice Activity Detection''' step; if you choose another mode, make sure to calibrate the volume levels correctly (follow the on-screen instructions carefully). This way, your voice will be transmitted only when you mean to, and there will be less background noise on the channel.}}&lt;br /&gt;
&lt;br /&gt;
=== Binding '''Push-To-Talk''' to joystick button on linux ===&lt;br /&gt;
&lt;br /&gt;
On linux you can enable generic input support by editing &amp;lt;code&amp;gt;~/.config/Mumble/Mumble.conf&amp;lt;/code&amp;gt;. You need to add the following section:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
[shortcut]&lt;br /&gt;
linux\evdev\enable=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Note: This is correct: add the section as stated above; ignore the fact, that there is already a section [shortcuts].''&lt;br /&gt;
&lt;br /&gt;
Make sure you have permission to access the input devices (typically called &amp;lt;code&amp;gt;/dev/input/event*&amp;lt;/code&amp;gt;). You might need to add yourself to the appropriate group (for example &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt;) or configure your device manager to grant access. Consult your OS documentation for details. {{Tip|&amp;lt;code&amp;gt;input-events&amp;lt;/code&amp;gt; is a useful tool for troubleshooting.}}&lt;br /&gt;
&lt;br /&gt;
''Note: # usermod YOUR_LOGIN_HERE -aG input should do the trick, where YOUR_LOGIN_HERE should be obviously replaced with obvious. Debianers might want to use # /sbin/usermod.''&lt;br /&gt;
&lt;br /&gt;
''Note: input-events is part of the input-utils package.''&lt;br /&gt;
&lt;br /&gt;
Proceed to launch mumble. If you are using a terminal, watch the output messages. You should see your input device listed, such as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;GlobalShortcutX: /dev/input/event7: Saitek Cyborg Evo Force&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Open the settings dialog, go to the shortcuts tab and assign any button you like to the &amp;lt;code&amp;gt;Push-to-Talk&amp;lt;/code&amp;gt; function.&lt;br /&gt;
{{Note|It may show up as nonsense but that is just a cosmetic issue. For example, one of my joystick buttons appears as {{button|semicolon}}. Nevertheless, it's still the joystick button and typing semicolon on the keyboard has no effect.}}&lt;br /&gt;
&lt;br /&gt;
== Connecting ==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on {{Menu item|Server|Connect}}.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If this is the first time you connect to the FlightGear Mumble server, click on {{button|Add New...}} at the bottom of the window and input the following parameters, then click {{button|OK}}:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Label'''&lt;br /&gt;
| &amp;lt;tt&amp;gt;FlightGear ATC&amp;lt;/tt&amp;gt; (or another descriptive name of your choice)&lt;br /&gt;
|-&lt;br /&gt;
| '''Address'''&lt;br /&gt;
| mumble.flightgear.fr&lt;br /&gt;
|-&lt;br /&gt;
| '''Port'''&lt;br /&gt;
| &amp;lt;tt&amp;gt;64738&amp;lt;/tt&amp;gt; (the default value)&lt;br /&gt;
|-&lt;br /&gt;
| '''Username'''&lt;br /&gt;
| A username (callsign) of your choice&lt;br /&gt;
|}&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select '''FlightGear ATC''' from the server list and click {{button|Connect}}.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using Mumble ==&lt;br /&gt;
When you are connected, Mumble will show a hierarchical list of channels on the right side of the main window.&lt;br /&gt;
* To enter an existing channel, right click on it and choose {{Menu item|Join Channel}}.&lt;br /&gt;
* To create a new channel (e.g. if you're acting as a controller), right click on the ''FlightGear'' channel and choose {{Menu item|Add}}. Input a name and (optionally) a description, then click {{button|OK}}.&lt;br /&gt;
{{note|The new channel is temporary and will be deleted when the last person in it exits the channel.}}&lt;br /&gt;
* To mute yourself, click the {{button|Mute}} button in the main toolbar.&lt;br /&gt;
&lt;br /&gt;
=== Extensions ===&lt;br /&gt;
* [[FGCom-mumble]]: In addition to using plain mumble, you can also try the FGCom-mumble plugin, which provides realistic radio operation. This works for Mumble &amp;gt;= 1.4.0.&lt;br /&gt;
&lt;br /&gt;
== OpenRadar flickering when using Mumble ==&lt;br /&gt;
If you're using Mumble and OpenRadar at the same time, you might notice that the OpenRadar screen flickers. A solution is disabling the Mumble overlay (in Mumble, click on {{Menu item|Configure|Settings}}, open the '''Overlay''' section, deselect '''Enable Overlay''' and click {{button|OK}}).&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Discord]]&lt;br /&gt;
* [[FGCom]]&lt;br /&gt;
* [[FGCom-mumble]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Air Traffic Control]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Expressions&amp;diff=137282</id>
		<title>Expressions</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Expressions&amp;diff=137282"/>
		<updated>2023-02-02T17:46:42Z</updated>

		<summary type="html">&lt;p&gt;AndersM: /* Supported elements */ Added child nodes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
{{-}}&lt;br /&gt;
'''Expressions''' (or '''SGExpressions''') are a feature of the SimGear library and provide a nice way of implementing complex math formulas using XML syntax.&lt;br /&gt;
They are supported in many systems within the FlightGear code.&lt;br /&gt;
&lt;br /&gt;
{{caution|Expressions do not check if your math creates floating point exceptions (like division by zero conditions, taking the square root of a negative number, etc.). This can cause undefined behavior and may result in NaNs or even Cascading NaNs.}}&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Expressions are supported in&lt;br /&gt;
* [[Autopilot Configuration Reference#Expressions|Autopilot configuration files]]&lt;br /&gt;
* Particle system configuration files&lt;br /&gt;
* Animations (translate, rotate, scale, range, blend)&lt;br /&gt;
* The shader technique&lt;br /&gt;
&lt;br /&gt;
== Sample Expressions ==&lt;br /&gt;
This is a sample expression for &amp;lt;code&amp;gt;c = sqrt(a*a + b^2)&amp;lt;/code&amp;gt;. Children/arguments are parsed in the order they appear in in the file (or the order in which they are set via property methods).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;expression&amp;gt;&lt;br /&gt;
  &amp;lt;sqrt&amp;gt;&lt;br /&gt;
    &amp;lt;sum&amp;gt;&lt;br /&gt;
      &amp;lt;product&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;/value/a&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;/value/a&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;/product&amp;gt;&lt;br /&gt;
      &amp;lt;pow&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;/value/b&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;value&amp;gt;2&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/pow&amp;gt;&lt;br /&gt;
    &amp;lt;/sum&amp;gt;&lt;br /&gt;
  &amp;lt;/sqrt&amp;gt;&lt;br /&gt;
&amp;lt;/expression&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Supported elements ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;abs&amp;gt; &amp;lt;!-- also: fabs --&amp;gt;&lt;br /&gt;
&amp;lt;acos&amp;gt;&lt;br /&gt;
&amp;lt;asin&amp;gt;&lt;br /&gt;
&amp;lt;atan&amp;gt;&lt;br /&gt;
&amp;lt;atan2&amp;gt;&lt;br /&gt;
&amp;lt;ceil&amp;gt;&lt;br /&gt;
&amp;lt;clip&amp;gt; &amp;lt;!-- &amp;lt;clipMin&amp;gt; &amp;lt;clipMax&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;cos&amp;gt;&lt;br /&gt;
&amp;lt;cosh&amp;gt;&lt;br /&gt;
&amp;lt;difference&amp;gt; &amp;lt;!-- also: dif --&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&amp;lt;exp&amp;gt;&lt;br /&gt;
&amp;lt;floor&amp;gt;&lt;br /&gt;
&amp;lt;log&amp;gt;&lt;br /&gt;
&amp;lt;log10&amp;gt;&lt;br /&gt;
&amp;lt;max&amp;gt;&lt;br /&gt;
&amp;lt;min&amp;gt;&lt;br /&gt;
&amp;lt;mod&amp;gt;&lt;br /&gt;
&amp;lt;pow&amp;gt;&lt;br /&gt;
&amp;lt;product&amp;gt; &amp;lt;!-- also: prod --&amp;gt;&lt;br /&gt;
&amp;lt;property&amp;gt; &amp;lt;!-- Unlike elsewhere, 'prop' does not work in expressions. --&amp;gt;&lt;br /&gt;
&amp;lt;rad2deg&amp;gt;&lt;br /&gt;
&amp;lt;deg2rad&amp;gt;&lt;br /&gt;
&amp;lt;sin&amp;gt;&lt;br /&gt;
&amp;lt;sinh&amp;gt;&lt;br /&gt;
&amp;lt;sqr&amp;gt;&lt;br /&gt;
&amp;lt;sqrt&amp;gt;&lt;br /&gt;
&amp;lt;sum&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt; &amp;lt;!-- &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt; value &amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt; value &amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;tan&amp;gt;&lt;br /&gt;
&amp;lt;tanh&amp;gt;&lt;br /&gt;
&amp;lt;value&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Table ===&lt;br /&gt;
The table expression uses the following syntax, similarly to the &amp;lt;interpolation&amp;gt; element:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
	&amp;lt;!-- put an input element here, this can be &amp;lt;property&amp;gt; or any other operation&lt;br /&gt;
	&amp;lt;entry&amp;gt;&lt;br /&gt;
		&amp;lt;ind&amp;gt;0.0&amp;lt;/ind&amp;gt; &amp;lt;!-- the value of the input (independent value) --&amp;gt;&lt;br /&gt;
		&amp;lt;dep&amp;gt;0.0&amp;lt;/dep&amp;gt; &amp;lt;!-- the value of the output (dependent value) --&amp;gt;&lt;br /&gt;
	&amp;lt;/entry&amp;gt;&lt;br /&gt;
        ... &amp;lt;!-- you can put as many entries as you want --&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
The table:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|0.0&lt;br /&gt;
|5.0&lt;br /&gt;
|-&lt;br /&gt;
|0.5&lt;br /&gt;
|7.5&lt;br /&gt;
|-&lt;br /&gt;
|0.9&lt;br /&gt;
| -5.0&lt;br /&gt;
|-&lt;br /&gt;
|1.0&lt;br /&gt;
|25.0&lt;br /&gt;
|}&lt;br /&gt;
translates to the following code:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
	&amp;lt;!-- put an input element here, this can be &amp;lt;property&amp;gt; or any other operation&lt;br /&gt;
	&amp;lt;entry&amp;gt;&lt;br /&gt;
		&amp;lt;ind&amp;gt;0.0&amp;lt;/ind&amp;gt;&lt;br /&gt;
		&amp;lt;dep&amp;gt;5.0&amp;lt;/dep&amp;gt;&lt;br /&gt;
	&amp;lt;/entry&amp;gt;&lt;br /&gt;
	&amp;lt;entry&amp;gt;&lt;br /&gt;
		&amp;lt;ind&amp;gt;0.5&amp;lt;/ind&amp;gt;&lt;br /&gt;
		&amp;lt;dep&amp;gt;7.5&amp;lt;/dep&amp;gt;&lt;br /&gt;
	&amp;lt;/entry&amp;gt;&lt;br /&gt;
	&amp;lt;entry&amp;gt;&lt;br /&gt;
		&amp;lt;ind&amp;gt;0.9&amp;lt;/ind&amp;gt;&lt;br /&gt;
		&amp;lt;dep&amp;gt;-5.0&amp;lt;/dep&amp;gt;&lt;br /&gt;
	&amp;lt;/entry&amp;gt;&lt;br /&gt;
	&amp;lt;entry&amp;gt;&lt;br /&gt;
		&amp;lt;ind&amp;gt;1.0&amp;lt;/ind&amp;gt;&lt;br /&gt;
		&amp;lt;dep&amp;gt;25.0&amp;lt;/dep&amp;gt;&lt;br /&gt;
	&amp;lt;/entry&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Clip===&lt;br /&gt;
An expression to limit e.g. rotation:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;expression&amp;gt;&lt;br /&gt;
    &amp;lt;clip&amp;gt;&lt;br /&gt;
      &amp;lt;clipMin&amp;gt;-45&amp;lt;/clipMin&amp;gt;&lt;br /&gt;
      &amp;lt;clipMax&amp;gt;45&amp;lt;/clipMax&amp;gt;&lt;br /&gt;
      &amp;lt;property&amp;gt;orientation/pitch-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;/clip&amp;gt;&lt;br /&gt;
  &amp;lt;/expression&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hints and tips ==&lt;br /&gt;
=== Rounding ===&lt;br /&gt;
While there is no element for rounding, this workaround can be used for that:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;expression&amp;gt;&lt;br /&gt;
  &amp;lt;floor&amp;gt;&lt;br /&gt;
    &amp;lt;sum&amp;gt;&lt;br /&gt;
      &amp;lt;property&amp;gt;your/property/here&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;value&amp;gt;0.5&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;/sum&amp;gt;&lt;br /&gt;
  &amp;lt;/floor&amp;gt;&lt;br /&gt;
&amp;lt;/expression&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
=== Wiki articles ===&lt;br /&gt;
* [[Conditions]]&lt;br /&gt;
* [[PropertyList XML files]]&lt;br /&gt;
&lt;br /&gt;
=== Source code ===&lt;br /&gt;
* {{simgear file|simgear/structure/SGExpression.hxx}}&lt;br /&gt;
* {{simgear file|simgear/structure/SGExpression.cxx}}&lt;br /&gt;
&lt;br /&gt;
[[Category:XML]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Expressions&amp;diff=137281</id>
		<title>Expressions</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Expressions&amp;diff=137281"/>
		<updated>2023-02-02T17:38:37Z</updated>

		<summary type="html">&lt;p&gt;AndersM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
{{-}}&lt;br /&gt;
'''Expressions''' (or '''SGExpressions''') are a feature of the SimGear library and provide a nice way of implementing complex math formulas using XML syntax.&lt;br /&gt;
They are supported in many systems within the FlightGear code.&lt;br /&gt;
&lt;br /&gt;
{{caution|Expressions do not check if your math creates floating point exceptions (like division by zero conditions, taking the square root of a negative number, etc.). This can cause undefined behavior and may result in NaNs or even Cascading NaNs.}}&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Expressions are supported in&lt;br /&gt;
* [[Autopilot Configuration Reference#Expressions|Autopilot configuration files]]&lt;br /&gt;
* Particle system configuration files&lt;br /&gt;
* Animations (translate, rotate, scale, range, blend)&lt;br /&gt;
* The shader technique&lt;br /&gt;
&lt;br /&gt;
== Sample Expressions ==&lt;br /&gt;
This is a sample expression for &amp;lt;code&amp;gt;c = sqrt(a*a + b^2)&amp;lt;/code&amp;gt;. Children/arguments are parsed in the order they appear in in the file (or the order in which they are set via property methods).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;expression&amp;gt;&lt;br /&gt;
  &amp;lt;sqrt&amp;gt;&lt;br /&gt;
    &amp;lt;sum&amp;gt;&lt;br /&gt;
      &amp;lt;product&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;/value/a&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;/value/a&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;/product&amp;gt;&lt;br /&gt;
      &amp;lt;pow&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;/value/b&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;value&amp;gt;2&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/pow&amp;gt;&lt;br /&gt;
    &amp;lt;/sum&amp;gt;&lt;br /&gt;
  &amp;lt;/sqrt&amp;gt;&lt;br /&gt;
&amp;lt;/expression&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Supported elements ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;abs&amp;gt; &amp;lt;!-- also: fabs --&amp;gt;&lt;br /&gt;
&amp;lt;acos&amp;gt;&lt;br /&gt;
&amp;lt;asin&amp;gt;&lt;br /&gt;
&amp;lt;atan&amp;gt;&lt;br /&gt;
&amp;lt;atan2&amp;gt;&lt;br /&gt;
&amp;lt;ceil&amp;gt;&lt;br /&gt;
&amp;lt;clip&amp;gt;&lt;br /&gt;
&amp;lt;cos&amp;gt;&lt;br /&gt;
&amp;lt;cosh&amp;gt;&lt;br /&gt;
&amp;lt;difference&amp;gt; &amp;lt;!-- also: dif --&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&amp;lt;exp&amp;gt;&lt;br /&gt;
&amp;lt;floor&amp;gt;&lt;br /&gt;
&amp;lt;log&amp;gt;&lt;br /&gt;
&amp;lt;log10&amp;gt;&lt;br /&gt;
&amp;lt;max&amp;gt;&lt;br /&gt;
&amp;lt;min&amp;gt;&lt;br /&gt;
&amp;lt;mod&amp;gt;&lt;br /&gt;
&amp;lt;pow&amp;gt;&lt;br /&gt;
&amp;lt;product&amp;gt; &amp;lt;!-- also: prod --&amp;gt;&lt;br /&gt;
&amp;lt;property&amp;gt; &amp;lt;!-- Unlike elsewhere, 'prop' does not work in expressions. --&amp;gt;&lt;br /&gt;
&amp;lt;rad2deg&amp;gt;&lt;br /&gt;
&amp;lt;deg2rad&amp;gt;&lt;br /&gt;
&amp;lt;sin&amp;gt;&lt;br /&gt;
&amp;lt;sinh&amp;gt;&lt;br /&gt;
&amp;lt;sqr&amp;gt;&lt;br /&gt;
&amp;lt;sqrt&amp;gt;&lt;br /&gt;
&amp;lt;sum&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tan&amp;gt;&lt;br /&gt;
&amp;lt;tanh&amp;gt;&lt;br /&gt;
&amp;lt;value&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Table ===&lt;br /&gt;
The table expression uses the following syntax, similarly to the &amp;lt;interpolation&amp;gt; element:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
	&amp;lt;!-- put an input element here, this can be &amp;lt;property&amp;gt; or any other operation&lt;br /&gt;
	&amp;lt;entry&amp;gt;&lt;br /&gt;
		&amp;lt;ind&amp;gt;0.0&amp;lt;/ind&amp;gt; &amp;lt;!-- the value of the input (independent value) --&amp;gt;&lt;br /&gt;
		&amp;lt;dep&amp;gt;0.0&amp;lt;/dep&amp;gt; &amp;lt;!-- the value of the output (dependent value) --&amp;gt;&lt;br /&gt;
	&amp;lt;/entry&amp;gt;&lt;br /&gt;
        ... &amp;lt;!-- you can put as many entries as you want --&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
The table:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|0.0&lt;br /&gt;
|5.0&lt;br /&gt;
|-&lt;br /&gt;
|0.5&lt;br /&gt;
|7.5&lt;br /&gt;
|-&lt;br /&gt;
|0.9&lt;br /&gt;
| -5.0&lt;br /&gt;
|-&lt;br /&gt;
|1.0&lt;br /&gt;
|25.0&lt;br /&gt;
|}&lt;br /&gt;
translates to the following code:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
	&amp;lt;!-- put an input element here, this can be &amp;lt;property&amp;gt; or any other operation&lt;br /&gt;
	&amp;lt;entry&amp;gt;&lt;br /&gt;
		&amp;lt;ind&amp;gt;0.0&amp;lt;/ind&amp;gt;&lt;br /&gt;
		&amp;lt;dep&amp;gt;5.0&amp;lt;/dep&amp;gt;&lt;br /&gt;
	&amp;lt;/entry&amp;gt;&lt;br /&gt;
	&amp;lt;entry&amp;gt;&lt;br /&gt;
		&amp;lt;ind&amp;gt;0.5&amp;lt;/ind&amp;gt;&lt;br /&gt;
		&amp;lt;dep&amp;gt;7.5&amp;lt;/dep&amp;gt;&lt;br /&gt;
	&amp;lt;/entry&amp;gt;&lt;br /&gt;
	&amp;lt;entry&amp;gt;&lt;br /&gt;
		&amp;lt;ind&amp;gt;0.9&amp;lt;/ind&amp;gt;&lt;br /&gt;
		&amp;lt;dep&amp;gt;-5.0&amp;lt;/dep&amp;gt;&lt;br /&gt;
	&amp;lt;/entry&amp;gt;&lt;br /&gt;
	&amp;lt;entry&amp;gt;&lt;br /&gt;
		&amp;lt;ind&amp;gt;1.0&amp;lt;/ind&amp;gt;&lt;br /&gt;
		&amp;lt;dep&amp;gt;25.0&amp;lt;/dep&amp;gt;&lt;br /&gt;
	&amp;lt;/entry&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Clip===&lt;br /&gt;
An expression to limit e.g. rotation:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;expression&amp;gt;&lt;br /&gt;
    &amp;lt;clip&amp;gt;&lt;br /&gt;
      &amp;lt;clipMin&amp;gt;-45&amp;lt;/clipMin&amp;gt;&lt;br /&gt;
      &amp;lt;clipMax&amp;gt;45&amp;lt;/clipMax&amp;gt;&lt;br /&gt;
      &amp;lt;property&amp;gt;orientation/pitch-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;/clip&amp;gt;&lt;br /&gt;
  &amp;lt;/expression&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hints and tips ==&lt;br /&gt;
=== Rounding ===&lt;br /&gt;
While there is no element for rounding, this workaround can be used for that:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;expression&amp;gt;&lt;br /&gt;
  &amp;lt;floor&amp;gt;&lt;br /&gt;
    &amp;lt;sum&amp;gt;&lt;br /&gt;
      &amp;lt;property&amp;gt;your/property/here&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;value&amp;gt;0.5&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;/sum&amp;gt;&lt;br /&gt;
  &amp;lt;/floor&amp;gt;&lt;br /&gt;
&amp;lt;/expression&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
=== Wiki articles ===&lt;br /&gt;
* [[Conditions]]&lt;br /&gt;
* [[PropertyList XML files]]&lt;br /&gt;
&lt;br /&gt;
=== Source code ===&lt;br /&gt;
* {{simgear file|simgear/structure/SGExpression.hxx}}&lt;br /&gt;
* {{simgear file|simgear/structure/SGExpression.cxx}}&lt;br /&gt;
&lt;br /&gt;
[[Category:XML]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Expressions&amp;diff=137280</id>
		<title>Expressions</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Expressions&amp;diff=137280"/>
		<updated>2023-02-02T17:33:53Z</updated>

		<summary type="html">&lt;p&gt;AndersM: Added clip example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
{{-}}&lt;br /&gt;
'''Expressions''' (or '''SGExpressions''') are a feature of the SimGear library and provide a nice way of implementing complex math formulas using XML syntax.&lt;br /&gt;
They are supported in many systems within the FlightGear code.&lt;br /&gt;
&lt;br /&gt;
{{caution|Expressions do not check if your math creates floating point exceptions (like division by zero conditions, taking the square root of a negative number, etc.). This can cause undefined behavior and may result in NaNs or even Cascading NaNs.}}&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Expressions are supported in&lt;br /&gt;
* [[Autopilot Configuration Reference#Expressions|Autopilot configuration files]]&lt;br /&gt;
* Particle system configuration files&lt;br /&gt;
* Animations (translate, rotate, scale, range, blend)&lt;br /&gt;
* The shader technique&lt;br /&gt;
&lt;br /&gt;
== Sample Expressions ==&lt;br /&gt;
This is a sample expression for &amp;lt;code&amp;gt;c = sqrt(a*a + b^2)&amp;lt;/code&amp;gt;. Children/arguments are parsed in the order they appear in in the file (or the order in which they are set via property methods).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;expression&amp;gt;&lt;br /&gt;
  &amp;lt;sqrt&amp;gt;&lt;br /&gt;
    &amp;lt;sum&amp;gt;&lt;br /&gt;
      &amp;lt;product&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;/value/a&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;/value/a&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;/product&amp;gt;&lt;br /&gt;
      &amp;lt;pow&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;/value/b&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;value&amp;gt;2&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/pow&amp;gt;&lt;br /&gt;
    &amp;lt;/sum&amp;gt;&lt;br /&gt;
  &amp;lt;/sqrt&amp;gt;&lt;br /&gt;
&amp;lt;/expression&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An expression to limit e.g. rotation:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;expression&amp;gt;&lt;br /&gt;
    &amp;lt;clip&amp;gt;&lt;br /&gt;
      &amp;lt;clipMin&amp;gt;-45&amp;lt;/clipMin&amp;gt;&lt;br /&gt;
      &amp;lt;clipMax&amp;gt;45&amp;lt;/clipMax&amp;gt;&lt;br /&gt;
      &amp;lt;property&amp;gt;orientation/pitch-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;/clip&amp;gt;&lt;br /&gt;
  &amp;lt;/expression&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Supported elements ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;abs&amp;gt; &amp;lt;!-- also: fabs --&amp;gt;&lt;br /&gt;
&amp;lt;acos&amp;gt;&lt;br /&gt;
&amp;lt;asin&amp;gt;&lt;br /&gt;
&amp;lt;atan&amp;gt;&lt;br /&gt;
&amp;lt;atan2&amp;gt;&lt;br /&gt;
&amp;lt;ceil&amp;gt;&lt;br /&gt;
&amp;lt;clip&amp;gt;&lt;br /&gt;
&amp;lt;cos&amp;gt;&lt;br /&gt;
&amp;lt;cosh&amp;gt;&lt;br /&gt;
&amp;lt;difference&amp;gt; &amp;lt;!-- also: dif --&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&amp;lt;exp&amp;gt;&lt;br /&gt;
&amp;lt;floor&amp;gt;&lt;br /&gt;
&amp;lt;log&amp;gt;&lt;br /&gt;
&amp;lt;log10&amp;gt;&lt;br /&gt;
&amp;lt;max&amp;gt;&lt;br /&gt;
&amp;lt;min&amp;gt;&lt;br /&gt;
&amp;lt;mod&amp;gt;&lt;br /&gt;
&amp;lt;pow&amp;gt;&lt;br /&gt;
&amp;lt;product&amp;gt; &amp;lt;!-- also: prod --&amp;gt;&lt;br /&gt;
&amp;lt;property&amp;gt; &amp;lt;!-- Unlike elsewhere, 'prop' does not work in expressions. --&amp;gt;&lt;br /&gt;
&amp;lt;rad2deg&amp;gt;&lt;br /&gt;
&amp;lt;deg2rad&amp;gt;&lt;br /&gt;
&amp;lt;sin&amp;gt;&lt;br /&gt;
&amp;lt;sinh&amp;gt;&lt;br /&gt;
&amp;lt;sqr&amp;gt;&lt;br /&gt;
&amp;lt;sqrt&amp;gt;&lt;br /&gt;
&amp;lt;sum&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tan&amp;gt;&lt;br /&gt;
&amp;lt;tanh&amp;gt;&lt;br /&gt;
&amp;lt;value&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Table ===&lt;br /&gt;
The table expression uses the following syntax, similarly to the &amp;lt;interpolation&amp;gt; element:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
	&amp;lt;!-- put an input element here, this can be &amp;lt;property&amp;gt; or any other operation&lt;br /&gt;
	&amp;lt;entry&amp;gt;&lt;br /&gt;
		&amp;lt;ind&amp;gt;0.0&amp;lt;/ind&amp;gt; &amp;lt;!-- the value of the input (independent value) --&amp;gt;&lt;br /&gt;
		&amp;lt;dep&amp;gt;0.0&amp;lt;/dep&amp;gt; &amp;lt;!-- the value of the output (dependent value) --&amp;gt;&lt;br /&gt;
	&amp;lt;/entry&amp;gt;&lt;br /&gt;
        ... &amp;lt;!-- you can put as many entries as you want --&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
The table:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|0.0&lt;br /&gt;
|5.0&lt;br /&gt;
|-&lt;br /&gt;
|0.5&lt;br /&gt;
|7.5&lt;br /&gt;
|-&lt;br /&gt;
|0.9&lt;br /&gt;
| -5.0&lt;br /&gt;
|-&lt;br /&gt;
|1.0&lt;br /&gt;
|25.0&lt;br /&gt;
|}&lt;br /&gt;
translates to the following code:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
	&amp;lt;!-- put an input element here, this can be &amp;lt;property&amp;gt; or any other operation&lt;br /&gt;
	&amp;lt;entry&amp;gt;&lt;br /&gt;
		&amp;lt;ind&amp;gt;0.0&amp;lt;/ind&amp;gt;&lt;br /&gt;
		&amp;lt;dep&amp;gt;5.0&amp;lt;/dep&amp;gt;&lt;br /&gt;
	&amp;lt;/entry&amp;gt;&lt;br /&gt;
	&amp;lt;entry&amp;gt;&lt;br /&gt;
		&amp;lt;ind&amp;gt;0.5&amp;lt;/ind&amp;gt;&lt;br /&gt;
		&amp;lt;dep&amp;gt;7.5&amp;lt;/dep&amp;gt;&lt;br /&gt;
	&amp;lt;/entry&amp;gt;&lt;br /&gt;
	&amp;lt;entry&amp;gt;&lt;br /&gt;
		&amp;lt;ind&amp;gt;0.9&amp;lt;/ind&amp;gt;&lt;br /&gt;
		&amp;lt;dep&amp;gt;-5.0&amp;lt;/dep&amp;gt;&lt;br /&gt;
	&amp;lt;/entry&amp;gt;&lt;br /&gt;
	&amp;lt;entry&amp;gt;&lt;br /&gt;
		&amp;lt;ind&amp;gt;1.0&amp;lt;/ind&amp;gt;&lt;br /&gt;
		&amp;lt;dep&amp;gt;25.0&amp;lt;/dep&amp;gt;&lt;br /&gt;
	&amp;lt;/entry&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hints and tips ==&lt;br /&gt;
=== Rounding ===&lt;br /&gt;
While there is no element for rounding, this workaround can be used for that:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;expression&amp;gt;&lt;br /&gt;
  &amp;lt;floor&amp;gt;&lt;br /&gt;
    &amp;lt;sum&amp;gt;&lt;br /&gt;
      &amp;lt;property&amp;gt;your/property/here&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;value&amp;gt;0.5&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;/sum&amp;gt;&lt;br /&gt;
  &amp;lt;/floor&amp;gt;&lt;br /&gt;
&amp;lt;/expression&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
=== Wiki articles ===&lt;br /&gt;
* [[Conditions]]&lt;br /&gt;
* [[PropertyList XML files]]&lt;br /&gt;
&lt;br /&gt;
=== Source code ===&lt;br /&gt;
* {{simgear file|simgear/structure/SGExpression.hxx}}&lt;br /&gt;
* {{simgear file|simgear/structure/SGExpression.cxx}}&lt;br /&gt;
&lt;br /&gt;
[[Category:XML]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Talk:FlightGear_Qt_launcher&amp;diff=113459</id>
		<title>Talk:FlightGear Qt launcher</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Talk:FlightGear_Qt_launcher&amp;diff=113459"/>
		<updated>2017-12-29T16:45:29Z</updated>

		<summary type="html">&lt;p&gt;AndersM: /* Old and confusing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Old and confusing ==&lt;br /&gt;
Helping a new FG user I had a reason to check whats in the wiki on Launcher and fgrun etc. This article are not updated and therefore confusing for new users. Would be good if someone with knowledge of the current launcher situation under different OS could update this article.&lt;br /&gt;
--[[User:AndersM|AndersM]] ([[User talk:AndersM|talk]]) 11:41, 29 December 2017 (EST)&lt;br /&gt;
&lt;br /&gt;
== To be incorporated ==&lt;br /&gt;
&lt;br /&gt;
You /can/ set the download dir via the launcher, and the default TerraSync dir is $download_dir/TerraSync, so this is intended to make setting the TerraSync dir manually unnecessary.&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  | url    = http://sourceforge.net/p/flightgear/mailman/message/34992973/&lt;br /&gt;
  | title  = &amp;lt;nowiki&amp;gt;Re: [Flightgear-devel] Use of QSettings by the Qt launcher for&lt;br /&gt;
 --terrasync-dir&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  | author = &amp;lt;nowiki&amp;gt;James Turner&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  | date   = Apr 5th, 2016&lt;br /&gt;
  | added   = Apr 5th, 2016&lt;br /&gt;
  | script_version = 0.25&lt;br /&gt;
  }}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the launcher itself never sets —terrasync-dir, only —download-dir. And if both are set, —terrasync-dir is used of course. So if you set —terrasync-dir manaully in additional settings, its value will be used.&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  | url    = http://sourceforge.net/p/flightgear/mailman/message/34992973/&lt;br /&gt;
  | title  = &amp;lt;nowiki&amp;gt;Re: [Flightgear-devel] Use of QSettings by the Qt launcher for&lt;br /&gt;
 --terrasync-dir&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  | author = &amp;lt;nowiki&amp;gt;James Turner&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  | date   = Apr 5th, 2016&lt;br /&gt;
  | added   = Apr 5th, 2016&lt;br /&gt;
  | script_version = 0.25&lt;br /&gt;
  }}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FGCquote&lt;br /&gt;
|1= Based on recent discussion and confusion, I just pushed some changes to the launcher. I would appreciate testing and feedback on the exact wording, I am trying to avoid confusing users and encouraging novice users to change things they should not, while still giving advanced users the flexibility they need. - the ‘add-ons’ dialog is now a fourth page (tab), which solves some odd interaction problems and hopefully makes the ‘where is this setting’ more coherent &lt;br /&gt;
* the ‘restore settings’ button on the settings page now explains what it does more clearly, and warns that it will disturb the download and data settings. I *could* tweak the code to preserve the values of those settings but wipe all others, but that seems very baroque, so I prefer to simply warn users what will happen. &lt;br /&gt;
* adjusting the data path (which is now described as ’fg-data’) does not affect any other setting - there is more descriptive text in the add-ons page about what the data and download directories are for, and the consequences of changing them. &lt;br /&gt;
* Launcher settings are stored in .ini format in $FG_HOME/flightgear.org/FlightGear.ini The one missing piece is if you change the download dir, and hence lose the default / official aircraft hanger, there is is no UI to explain what you only have the C172 and UFO. I intend to add this to the aircraft list as a custom item (which can be dismissed), stating something like: [No aircraft hangars or folders are defined, so only the default aircraft are available. Use the add-ons page to add hangars or select aircraft folders, or &amp;lt;click here&amp;gt; to hide this message] Again, feedback on *all* of this wording is welcome, since what makes sense to me may not make sense to everyone. Please note I will probably reject /any/ wording or language which contains the following ‘path’ (generally I’m using ‘location’) ‘environment variable’ (avoiding mentioning these at all!) ‘executable’ (use ‘application’ or ‘program’ or ‘FlightGear’) ‘directory’ (use ‘folder’) All feedback and testing is much appreciated. &lt;br /&gt;
|2= {{cite web&lt;br /&gt;
  | url    = http://sourceforge.net/p/flightgear/mailman/message/35001457/&lt;br /&gt;
  | title  = &amp;lt;nowiki&amp;gt;[Flightgear-devel] Launcher add-on handling changes&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  | author = &amp;lt;nowiki&amp;gt;James Turner&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  | date   = Apr 8th, 2016&lt;br /&gt;
  | added   = Apr 8th, 2016&lt;br /&gt;
  | script_version = 0.25&lt;br /&gt;
  }}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: I've added a remark about the fact that it is now unnecessary to set the TerraSync download directory explicitly and the path change for the launcher settings; I'm not sure, however, how to phrase the &amp;lt;tt&amp;gt;--download-dir&amp;lt;/tt&amp;gt; vs. &amp;lt;tt&amp;gt;--terrasync-dir&amp;lt;/tt&amp;gt; difference, and I wonder if it's worth including the remarks James made about the '''Restore settings''' button and the FGData path adjustment, as they are meant to be self-explanatory (I fear it only adds complexity to the page). What do you think? -- [[User:Elgaton|ElGaton]] ([[User talk:Elgaton|&amp;lt;tt&amp;gt;talk&amp;lt;/tt&amp;gt; to me]]) 05:49, 1 May 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
== replacing plib UI with Qt5  ==&lt;br /&gt;
&lt;br /&gt;
@Red Leader: The reference used there is referring to the draft published originally (discussed on the devel list), since then, a number of senior contributors have explicitly stated that Qt is intended to always remain optional and that an integrated UI has to be provided for the non Qt use-case (and James confirmed that).&lt;br /&gt;
&lt;br /&gt;
Looking at the current integration, none of the QT code is integrated in a way to be invoked at runtime:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GUI/CMakeLists.txt:72:if (HAVE_QT)&lt;br /&gt;
GUI/MessageBox.cxx:34:#ifdef HAVE_QT&lt;br /&gt;
GUI/MessageBox.cxx:129:#elif defined(HAVE_QT)&lt;br /&gt;
GUI/MessageBox.cxx:148:#elif defined(HAVE_QT)&lt;br /&gt;
GUI/FileDialog.cxx:44:#if defined(HAVE_QT)&lt;br /&gt;
GUI/FileDialog.cxx:154:#elif defined(HAVE_QT)&lt;br /&gt;
Main/fg_commands.cxx:61:#if defined(HAVE_QT)&lt;br /&gt;
Main/fg_commands.cxx:994:#if defined(HAVE_QT)&lt;br /&gt;
Main/options.cxx:58:#if defined(HAVE_QT)&lt;br /&gt;
Main/options.cxx:2517:#if defined(HAVE_QT)&lt;br /&gt;
Main/options.cxx:2535:#if defined(HAVE_QT)&lt;br /&gt;
Main/main.cxx:84:#if defined(HAVE_QT)&lt;br /&gt;
Main/main.cxx:445:#if defined(HAVE_QT)&lt;br /&gt;
Viewer/WindowBuilder.cxx:28:#if defined(HAVE_QT) &amp;amp;&amp;amp; defined(SG_MAC)&lt;br /&gt;
Viewer/WindowBuilder.cxx:256:#if defined(HAVE_QT) &amp;amp;&amp;amp; defined(SG_MAC)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
So unless there's been a recent update/consensus here, I don't think the current wording is sufficiently accurate, certainly not in the light of the architecture/threading related observations made by a number of contributors. &lt;br /&gt;
&lt;br /&gt;
The launcher itself is totally separate from the FlightGear main loop, and such does not have any immediate effect on the runtime UI (at least for the time being).&lt;br /&gt;
I think, we'd be hard pressed to find specific statements supporting this - so if you want to keep this in the article, it would be a good idea to ask for clarification on the devel list, or at least add supporting statements from other core developers.&lt;br /&gt;
&lt;br /&gt;
In fact, the most recent comments regarding PLIB/PUI reiterate the idea to absorb the relevant PLIB components into SimGear&amp;lt;ref&amp;gt;http://sourceforge.net/p/flightgear/mailman/message/34921429/&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;http://sourceforge.net/p/flightgear/mailman/message/34921495/&amp;lt;/ref&amp;gt;, and even James himself continues to make commits that would conflict with a Qt5 runtime UI&amp;lt;ref&amp;gt;http://forum.flightgear.org/viewtopic.php?p=272148#p272148&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Honestly, with these recent comments, and PUI related commits, in mind, I think it is only fair to suggest that the workload of actually porting the existing UI to Qt5 in its entirety has been hugely underestimated, especially in the light of all this work having to remain entirely optional (see Durk's and Rebecca's comments). &lt;br /&gt;
&lt;br /&gt;
If you are aware of any other developments, I suggest to add the corresponding pointers - I have been maintaining a list of relevant statements at [http://wiki.flightgear.org/Howto:Processing_legacy_PUI_dialogs_using_Canvas#What_about_PUI_.3F]&lt;br /&gt;
&lt;br /&gt;
--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 07:39, 30 April 2016 (EDT)&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Talk:FlightGear_Qt_launcher&amp;diff=113458</id>
		<title>Talk:FlightGear Qt launcher</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Talk:FlightGear_Qt_launcher&amp;diff=113458"/>
		<updated>2017-12-29T16:41:55Z</updated>

		<summary type="html">&lt;p&gt;AndersM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Old and confusing ==&lt;br /&gt;
Helping a new FG user I had a reason to check whats in the wiki on Launcher and fgrun etc. This and the fgrun article are not updated and therefore confusing for new users. Would be good if someone with knowledge of the current launcher situation under different OS could update these articles.&lt;br /&gt;
--[[User:AndersM|AndersM]] ([[User talk:AndersM|talk]]) 11:41, 29 December 2017 (EST)&lt;br /&gt;
&lt;br /&gt;
== To be incorporated ==&lt;br /&gt;
&lt;br /&gt;
You /can/ set the download dir via the launcher, and the default TerraSync dir is $download_dir/TerraSync, so this is intended to make setting the TerraSync dir manually unnecessary.&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  | url    = http://sourceforge.net/p/flightgear/mailman/message/34992973/&lt;br /&gt;
  | title  = &amp;lt;nowiki&amp;gt;Re: [Flightgear-devel] Use of QSettings by the Qt launcher for&lt;br /&gt;
 --terrasync-dir&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  | author = &amp;lt;nowiki&amp;gt;James Turner&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  | date   = Apr 5th, 2016&lt;br /&gt;
  | added   = Apr 5th, 2016&lt;br /&gt;
  | script_version = 0.25&lt;br /&gt;
  }}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the launcher itself never sets —terrasync-dir, only —download-dir. And if both are set, —terrasync-dir is used of course. So if you set —terrasync-dir manaully in additional settings, its value will be used.&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  | url    = http://sourceforge.net/p/flightgear/mailman/message/34992973/&lt;br /&gt;
  | title  = &amp;lt;nowiki&amp;gt;Re: [Flightgear-devel] Use of QSettings by the Qt launcher for&lt;br /&gt;
 --terrasync-dir&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  | author = &amp;lt;nowiki&amp;gt;James Turner&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  | date   = Apr 5th, 2016&lt;br /&gt;
  | added   = Apr 5th, 2016&lt;br /&gt;
  | script_version = 0.25&lt;br /&gt;
  }}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FGCquote&lt;br /&gt;
|1= Based on recent discussion and confusion, I just pushed some changes to the launcher. I would appreciate testing and feedback on the exact wording, I am trying to avoid confusing users and encouraging novice users to change things they should not, while still giving advanced users the flexibility they need. - the ‘add-ons’ dialog is now a fourth page (tab), which solves some odd interaction problems and hopefully makes the ‘where is this setting’ more coherent &lt;br /&gt;
* the ‘restore settings’ button on the settings page now explains what it does more clearly, and warns that it will disturb the download and data settings. I *could* tweak the code to preserve the values of those settings but wipe all others, but that seems very baroque, so I prefer to simply warn users what will happen. &lt;br /&gt;
* adjusting the data path (which is now described as ’fg-data’) does not affect any other setting - there is more descriptive text in the add-ons page about what the data and download directories are for, and the consequences of changing them. &lt;br /&gt;
* Launcher settings are stored in .ini format in $FG_HOME/flightgear.org/FlightGear.ini The one missing piece is if you change the download dir, and hence lose the default / official aircraft hanger, there is is no UI to explain what you only have the C172 and UFO. I intend to add this to the aircraft list as a custom item (which can be dismissed), stating something like: [No aircraft hangars or folders are defined, so only the default aircraft are available. Use the add-ons page to add hangars or select aircraft folders, or &amp;lt;click here&amp;gt; to hide this message] Again, feedback on *all* of this wording is welcome, since what makes sense to me may not make sense to everyone. Please note I will probably reject /any/ wording or language which contains the following ‘path’ (generally I’m using ‘location’) ‘environment variable’ (avoiding mentioning these at all!) ‘executable’ (use ‘application’ or ‘program’ or ‘FlightGear’) ‘directory’ (use ‘folder’) All feedback and testing is much appreciated. &lt;br /&gt;
|2= {{cite web&lt;br /&gt;
  | url    = http://sourceforge.net/p/flightgear/mailman/message/35001457/&lt;br /&gt;
  | title  = &amp;lt;nowiki&amp;gt;[Flightgear-devel] Launcher add-on handling changes&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  | author = &amp;lt;nowiki&amp;gt;James Turner&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  | date   = Apr 8th, 2016&lt;br /&gt;
  | added   = Apr 8th, 2016&lt;br /&gt;
  | script_version = 0.25&lt;br /&gt;
  }}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: I've added a remark about the fact that it is now unnecessary to set the TerraSync download directory explicitly and the path change for the launcher settings; I'm not sure, however, how to phrase the &amp;lt;tt&amp;gt;--download-dir&amp;lt;/tt&amp;gt; vs. &amp;lt;tt&amp;gt;--terrasync-dir&amp;lt;/tt&amp;gt; difference, and I wonder if it's worth including the remarks James made about the '''Restore settings''' button and the FGData path adjustment, as they are meant to be self-explanatory (I fear it only adds complexity to the page). What do you think? -- [[User:Elgaton|ElGaton]] ([[User talk:Elgaton|&amp;lt;tt&amp;gt;talk&amp;lt;/tt&amp;gt; to me]]) 05:49, 1 May 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
== replacing plib UI with Qt5  ==&lt;br /&gt;
&lt;br /&gt;
@Red Leader: The reference used there is referring to the draft published originally (discussed on the devel list), since then, a number of senior contributors have explicitly stated that Qt is intended to always remain optional and that an integrated UI has to be provided for the non Qt use-case (and James confirmed that).&lt;br /&gt;
&lt;br /&gt;
Looking at the current integration, none of the QT code is integrated in a way to be invoked at runtime:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GUI/CMakeLists.txt:72:if (HAVE_QT)&lt;br /&gt;
GUI/MessageBox.cxx:34:#ifdef HAVE_QT&lt;br /&gt;
GUI/MessageBox.cxx:129:#elif defined(HAVE_QT)&lt;br /&gt;
GUI/MessageBox.cxx:148:#elif defined(HAVE_QT)&lt;br /&gt;
GUI/FileDialog.cxx:44:#if defined(HAVE_QT)&lt;br /&gt;
GUI/FileDialog.cxx:154:#elif defined(HAVE_QT)&lt;br /&gt;
Main/fg_commands.cxx:61:#if defined(HAVE_QT)&lt;br /&gt;
Main/fg_commands.cxx:994:#if defined(HAVE_QT)&lt;br /&gt;
Main/options.cxx:58:#if defined(HAVE_QT)&lt;br /&gt;
Main/options.cxx:2517:#if defined(HAVE_QT)&lt;br /&gt;
Main/options.cxx:2535:#if defined(HAVE_QT)&lt;br /&gt;
Main/main.cxx:84:#if defined(HAVE_QT)&lt;br /&gt;
Main/main.cxx:445:#if defined(HAVE_QT)&lt;br /&gt;
Viewer/WindowBuilder.cxx:28:#if defined(HAVE_QT) &amp;amp;&amp;amp; defined(SG_MAC)&lt;br /&gt;
Viewer/WindowBuilder.cxx:256:#if defined(HAVE_QT) &amp;amp;&amp;amp; defined(SG_MAC)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
So unless there's been a recent update/consensus here, I don't think the current wording is sufficiently accurate, certainly not in the light of the architecture/threading related observations made by a number of contributors. &lt;br /&gt;
&lt;br /&gt;
The launcher itself is totally separate from the FlightGear main loop, and such does not have any immediate effect on the runtime UI (at least for the time being).&lt;br /&gt;
I think, we'd be hard pressed to find specific statements supporting this - so if you want to keep this in the article, it would be a good idea to ask for clarification on the devel list, or at least add supporting statements from other core developers.&lt;br /&gt;
&lt;br /&gt;
In fact, the most recent comments regarding PLIB/PUI reiterate the idea to absorb the relevant PLIB components into SimGear&amp;lt;ref&amp;gt;http://sourceforge.net/p/flightgear/mailman/message/34921429/&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;http://sourceforge.net/p/flightgear/mailman/message/34921495/&amp;lt;/ref&amp;gt;, and even James himself continues to make commits that would conflict with a Qt5 runtime UI&amp;lt;ref&amp;gt;http://forum.flightgear.org/viewtopic.php?p=272148#p272148&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Honestly, with these recent comments, and PUI related commits, in mind, I think it is only fair to suggest that the workload of actually porting the existing UI to Qt5 in its entirety has been hugely underestimated, especially in the light of all this work having to remain entirely optional (see Durk's and Rebecca's comments). &lt;br /&gt;
&lt;br /&gt;
If you are aware of any other developments, I suggest to add the corresponding pointers - I have been maintaining a list of relevant statements at [http://wiki.flightgear.org/Howto:Processing_legacy_PUI_dialogs_using_Canvas#What_about_PUI_.3F]&lt;br /&gt;
&lt;br /&gt;
--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 07:39, 30 April 2016 (EDT)&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=New_to_FlightGear&amp;diff=113457</id>
		<title>New to FlightGear</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=New_to_FlightGear&amp;diff=113457"/>
		<updated>2017-12-29T16:22:26Z</updated>

		<summary type="html">&lt;p&gt;AndersM: /* Starting FlightGear */  Edited to be more newbie friendly&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to [[FlightGear]]!''' Here we'll try to get you up in the virtual air in the shortest time possible. We'll also introduce you to some of the features of this flight simulator and also a few information on its community.&lt;br /&gt;
&lt;br /&gt;
== Installation and setup ==&lt;br /&gt;
=== Hardware requirements ===&lt;br /&gt;
For FlightGear to run smoothly, it requires a video card with OpenGL drivers 2.0 or higher. This is usually not a problem, but take a look at [[Hardware Recommendations]] to have a better idea.&lt;br /&gt;
&lt;br /&gt;
Many laptops are known to have issues with FlightGear, as the graphics card(s) on them are usually lower-end. See [[notebooks known to run FlightGear]] for reviews of several laptop systems.&lt;br /&gt;
&lt;br /&gt;
=== Getting FlightGear ===&lt;br /&gt;
You may download the latest files from [http://www.flightgear.org/download/ FlightGear Downloads] page. Choose the source or binary files appropriate for your particular system. Most Linux users will find that most distributions have a packaged version of FlightGear (the package name could be &amp;lt;tt&amp;gt;fgfs&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;flightgear&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Depending on your technical expertise you may choose the [[Git]] development version of FlightGear, which typically has more features and can be required by some of the latest developmental aircraft, but can be unstable and is more complicated to get for non-Windows users. In general, the development version is not advised to the average user, but if you're willing to do some testing there's a nightly build for Windows or Mac available for download at the [[FlightGear Build Server]],and a daily-updated Ubuntu PPA.  If you are using a Git version controlled copy of FlightGear, you may choose to synchronise your aircraft using the version controlled [[FGAddon|FGAddon aircraft development repository]].&lt;br /&gt;
&lt;br /&gt;
You may also order FlightGear on a set of DVDs, available on the [http://www.flightgear.org/dvd/ FlightGear main site].&lt;br /&gt;
&lt;br /&gt;
=== Installing on Windows ===&lt;br /&gt;
After you downloaded the installer, Run it and follow its instructions to install FlightGear.&lt;br /&gt;
&lt;br /&gt;
Take care to temporarily disable your antivirus during installation. FlightGear is thought by some antiviruses to have a virus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With the Windows installer, you may choose where to install FlightGear. The FGROOT directory would be [your chosen directory]/data .&lt;br /&gt;
&lt;br /&gt;
=== Installing on Mac OS X ===&lt;br /&gt;
Installing [[FlightGear Mac OS X|FlightGear on Mac OS X]] is very simple. Just drag and drop the FlightGear icon to the &amp;lt;tt&amp;gt;/Applications&amp;lt;/tt&amp;gt; folder. That's it. &lt;br /&gt;
&lt;br /&gt;
The first time you launch FlightGear, its icon on the Dock bounces for several seconds while loading aircraft and airport info. When the GUI launcher appears, select an aircraft and and airport by clicking the &amp;quot;Gear&amp;quot; buttons at the right of the names. Pressing &amp;quot;Start flight&amp;quot; will launch the simulator. You can configure more options using the GUI launcher. see the [http://macflightgear.sourceforge.net/home/documents/users-guide/ Users Guide] for more details.&lt;br /&gt;
&lt;br /&gt;
If you'd like to launch FlightGear using command-line, launch &amp;lt;tt&amp;gt;/Applications/Utilities/Terminal.app&amp;lt;/tt&amp;gt; and type the following.&lt;br /&gt;
&lt;br /&gt;
 cd /Applications/FlightGear.app/Contents/Resources&lt;br /&gt;
 ./fgfs --options..... &lt;br /&gt;
&lt;br /&gt;
The [[$FG ROOT]] and [[$FG SCENERY]] are not set on Mac OS X. If you want to specify these variables yourself for command-line use, run the followings on Terminal.app:&lt;br /&gt;
&lt;br /&gt;
 FG_ROOT=/Applications/FlightGear.app/Contents/Resources/data&lt;br /&gt;
 FG_SCENERY=[[$FG_ROOT]]/Scenery&lt;br /&gt;
&lt;br /&gt;
After launching the GUI launcher, you will have the alias to [[$FG ROOT]] at &amp;lt;tt&amp;gt;$HOME/Documents/Flightgear/&amp;lt;version&amp;gt;&amp;lt;/tt&amp;gt; so you can browse the data folder using Finder.&lt;br /&gt;
&lt;br /&gt;
Note: Once you have installed FlightGear, mac users can locate their [[$FG_ROOT]] folder by opening their applications folder in Finder, right clicking on FlightGear, and clicking &amp;quot;Show Package Contents&amp;quot;. This will take you inside the FlightGear folder. You are now able to access all files including Data/Aircraft for [[Howto: Install aircraft#Macintosh OS X|installing new aircraft]].&lt;br /&gt;
&lt;br /&gt;
=== Configuring OpenGL ===&lt;br /&gt;
FlightGear runs best with current [[OpenGL]] video drivers. If you are having trouble running FlightGear, see [[Graphics drivers configuration]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== Getting scenery ===&lt;br /&gt;
A limited set of [[scenery]] comes installed with FlightGear, which consists of the area surrounding [[San Francisco International Airport]] (KSFO).&lt;br /&gt;
&lt;br /&gt;
In FlightGear, scenery is generally stored in you [[$FG_ROOT]] directory, and is divided into three kinds of data:&lt;br /&gt;
* '''Airports''' holds airport data, like runway usage and parking spots.&lt;br /&gt;
* '''Objects''' and '''Models''' are the buildings, bridges and radio towers, etc. that represent three-dimensional structures.&lt;br /&gt;
* '''Terrain''' represents the contours, elevations and type of ground you fly/taxi over.&lt;br /&gt;
&lt;br /&gt;
The current way of &amp;quot;installing&amp;quot; new scenery is enabling [[TerraSync]], which will automatically download and update any place you visit - even on the fly! However, some might have problems with that, so you can also manually download and install new scenery parts, either official, the [[World Scenery]], or custom.&lt;br /&gt;
&lt;br /&gt;
The official, although outdated, scenery is available at [http://www.flightgear.org/download/scenery/ the scenery download section] of the FlightGear website, and can be installed following [[Howto: Install scenery]]. You may obtain additional and more up to date scenery objects as they become available through the [http://scenemodels.flightgear.org/ FlightGear Scenery Database]. '''This is recommended for users with weak internet connections or weak computers!'''&lt;br /&gt;
&lt;br /&gt;
Custom Scenery is available in many places. For example, in our forums ([http://forum.flightgear.org forum.flightgear.org]) or on repositories. An internet search should be able to find them.&lt;br /&gt;
&lt;br /&gt;
=== Getting aircraft ===&lt;br /&gt;
Additional [[aircraft]] can be downloaded and installed through the launcher. Alternatively, you can go to the FlightGear website and navigate to the [http://www.flightgear.org/download/ download page], then choose the aircraft download link that fits your FlightGear version. For the installation, see [[Howto: Install aircraft]].&lt;br /&gt;
&lt;br /&gt;
== Running FlightGear ==&lt;br /&gt;
=== Starting FlightGear ===&lt;br /&gt;
The easiest way to start FlightGear is to use the desktop icon; this starts the graphical interface [[FlightGear Qt launcher]] where you can choose aircraft, start position etc.&lt;br /&gt;
&lt;br /&gt;
Many users choose however to start FlightGear directly from the command line. The executable name is &amp;lt;tt&amp;gt;fgfs&amp;lt;/tt&amp;gt; and can be run without options. If it's &amp;quot;not found&amp;quot;, it is likely not in your [https://en.wikipedia.org/wiki/PATH_(variable) path]. The location depends on your particular system and choices you made during compile and installation. There is a list of [[Command Line Parameters]] which must be used to change many options, like the aircraft you want. The most important:&lt;br /&gt;
 &lt;br /&gt;
 fgfs --launcher             # opens the FlightGear Qt launcher&lt;br /&gt;
 fgfs --show-aircraft        # displays a list of installed aircraft&lt;br /&gt;
 fgfs --aircraft=c172p       # start FG with the aircraft &amp;quot;c172p&amp;quot; (from the list)&lt;br /&gt;
&lt;br /&gt;
=== Using the keyboard and/or mouse ===&lt;br /&gt;
Users with limited access to a [[joystick]] or other controllers sometimes use the keyboard or mouse to control their aircraft. Using the keyboard to fly can be difficult and the mouse is recommended over the keyboard for flying, yet even a cheap joystick would improve the experience so much.&lt;br /&gt;
&lt;br /&gt;
To get help with keyboard commands, with FlightGear running, go to the ''Help'' menu, look under ''Basic Keys'' (for simulator related commands) and ''Common Aircraft Keys'' (for commands universal to all aircraft) and ''Aircraft Help'' (for key commands specific to your aircraft).&lt;br /&gt;
&lt;br /&gt;
Coming from an other simulator? Check [[key commands compared to other simulators]] for an overview of the difference between the key commands of that sim and FlightGear and the [[Flightgear dialogs and menubar]].&lt;br /&gt;
&lt;br /&gt;
To use the mouse to fly the aircraft, press tab (the cursor should change to a cross) and move the mouse to direct the aircraft. Tab again to look around (cursor should show a two sided arrow), and tab again to return to normal mode, used to click stuff in the cockpit. In some aircraft, such as the [[A320neo]] and [[A330-200]]/[[A330-300|300]] this unfortunately will not work, so you will have to use right click to look around and mouse mode is disabled. Fortunately, those planes are airliners, which are really stable and easy to fly with the keyboard.&lt;br /&gt;
&lt;br /&gt;
=== First time in the cockpit ===&lt;br /&gt;
Finding your way around the cockpit can be daunting the first time.&lt;br /&gt;
&lt;br /&gt;
Where is the &amp;quot;virtual cockpit?&amp;quot; Not all FlightGear aircraft come with an interior actually, some research projects may not even come with an exterior model. A 2D panel may display over the 3D cockpit if one exists. You may turn this off using the ''View'' menu or {{key press|Shift|V}}. Otherwise, you should be sitting in the virtual cockpit when FlightGear starts, as long as the Cockpit View is selected ({{key press|Ctrl|V}}).&lt;br /&gt;
&lt;br /&gt;
You may find it difficult to read some of the displays, dials and gauges on the instrument panel. You can use the ''view'' mode of the mouse (right click until you get a cursor shaped like a double arrow) to pan and the mousewheel to zoom, or pan with the joystick hat and zoom with {{key press|X}} and {{key press|Shift|X}}.&lt;br /&gt;
&lt;br /&gt;
One of the first steps that many take on entering an unfamiliar cockpit is to press {{key press|Ctrl|C}} to highlight all the &amp;quot;hotspots&amp;quot;, that is instrument's controls, buttons, knobs, etc. Many aircraft also offer a specific help menu.&lt;br /&gt;
&lt;br /&gt;
Some functions, such as starter or magneto, may be difficult to use or simply lack clickable &amp;quot;hotspots&amp;quot;, especially in aircraft models which are in development. In most cases you can go for the equivalent controls on a 2D panel or resort to the keyboard. The keyboard always work according to the assignments listed on the ''Help'' menu, but sometimes these are reassigned by an aircraft or configuration. Again, remember to check all the help dialogs.&lt;br /&gt;
&lt;br /&gt;
=== Starting the engine ===&lt;br /&gt;
You're eager to fly, but the engine's off. Well, turning on the engines is not always easy. Some aircraft have an ''autostart'' entry in their custom menu, but here's a general procedure that should work in many cases.&lt;br /&gt;
&lt;br /&gt;
In general to start the engine on a piston-engine type aircraft, you need:&lt;br /&gt;
# Fuel: some aircraft start the simulation with no fuel. You can add it in ''Equipment &amp;gt; Fuel and Payload''.&lt;br /&gt;
# Correct mixture: this is generally ''rich'', so push the red knob all the way in, or use the key {{key press|m}} to enrich ({{key press|Shift|m}} leans.)&lt;br /&gt;
# Magnetos set on ''both'': turn the key or press {{key press|&amp;amp;#125;}} ''three times'' to move through ''R'', ''L'', ''both''.&lt;br /&gt;
# Throttle: some engines start better with a little gas.&lt;br /&gt;
# Run the starter: click the &amp;quot;start&amp;quot; position of the key on the panel, or press {{key press|s}}. Hold the starter for sufficient time, even 10 seconds.&lt;br /&gt;
&lt;br /&gt;
Starting all engines in a multi-engine aircraft is similar to the single engine--except you must follow the same start sequence for each and every engine.  Flightgear provides a convenient way to do this for all engines at once: press {{key press|~}} and all the procedure above will work for all the engines. Note though that the default 2-D panel is connected to ''only one engine'' and the {{key press|~}} trick might not work. Also, give some gas to be sure that all the engines are on.&lt;br /&gt;
&lt;br /&gt;
These instructions may not work for jet aircraft, helicopters, or other types of aircraft with complex start procedures.  Check the instructions in the aircraft help menu (Press {{key press|?}}) and/or at [[Aircraft|the aircraft's wiki]]. In general to start the engine on a jet engine type aircraft, you need to:&lt;br /&gt;
# Set cutoff ON &lt;br /&gt;
# Engage the starter&lt;br /&gt;
# Once the engines spools up to approximately 5% N1, set cutoff OFF&lt;br /&gt;
# Disengage the starter once the engine has reached operational speed&lt;br /&gt;
&lt;br /&gt;
=== Online multiplayer flying ===&lt;br /&gt;
FlightGear has some multiplayer servers that will let you fly in more lively skies, see [[Howto: Multiplayer]]. There are also [[OpenRadar]] and [[ATC-pie]], standalone programs that will let you be an [[Air traffic control|air traffic controller]].&lt;br /&gt;
&lt;br /&gt;
There's also a [[MPMap|multiplayer map]] that lets you see who's online right now,and even what navaids are nearby.&lt;br /&gt;
&lt;br /&gt;
== Making your first flight ==&lt;br /&gt;
=== Realism ===&lt;br /&gt;
One of the most frequent questions novice pilots ask about any flight sim, but more so to FlightGear, is &amp;quot;why is my aircraft turning left all the time?&amp;quot; Although it could be due to wind gusts crossing the runway, it is more likely due to the [[Understanding Propeller Torque and P-Factor|propeller torque and p-factor]].&lt;br /&gt;
&lt;br /&gt;
In certain other flight simulators, despite marketing slogans to the contrary, some settings are turned down to make the aircraft easier to fly. This reduces effects such as the above. The realism is always turned up in FlightGear.&lt;br /&gt;
&lt;br /&gt;
Here are some of the FlightGear realism points, which may be confusing to first time pilots:&lt;br /&gt;
* &amp;quot;Left turning syndrome&amp;quot; for the previously mentioned reasons.&lt;br /&gt;
* Compass turning error: A compass, when subjected to the forces of flight, tends to turn in the opposite direction for a brief period before settling on the correct heading. This is not a malfunction ([https://en.wikipedia.org/wiki/Aircraft_compass_turns more on this].)&lt;br /&gt;
* The Vertical Speed Indicator (VSI) is also subject to error.&lt;br /&gt;
* The Horizontal Situation Indicator (HSI) is driven by a gyroscope (that is why it's sometimes called a Directional Gyroscope), which is subject to ''gyro drift'': the indicator will drift from its current heading and must be periodically (every ~15 minutes) calibrated to agree with the magnetic compass heading.&lt;br /&gt;
*You cannot just cancel a turn or climb by centring the yoke or stick. You must turn or push the stick the other way to get to level and level flight. But even then, the plane will not mantain its altitude or heading by itself- a common mistake is trying to find a hands off yoke position. While with trims one could leave the plane for a couple of seconds, one must use autopilot or constantly adjust the yokes.&lt;br /&gt;
&lt;br /&gt;
Many forces act on an aircraft in flight as well as on the [[avionics and instruments]] used for control and navigation, and may be counter-intuitive. Pilots must learn to recognize these phenomena and compensate for their effects. ''FlightGear models instrument errors that exist in the real world''.&lt;br /&gt;
&lt;br /&gt;
=== Airports and navigation aids ===&lt;br /&gt;
When you first start FlightGear, whether from the command line or the graphical interface, you may wonder how to determine what airports are available. The launcher displays a list of airports, but you will not see details such as tower or [[ILS]] frequencies. You will not find a map showing [[VOR]]s and their frequencies. What can you do? See [[Getting aeronautical charts]].&lt;br /&gt;
&lt;br /&gt;
In-sim, there is a map you can use in ''Equipment &amp;gt; Map'', which will allow you to see navigation data and the position of airports and aids. For more help with navigation see [[Understanding Navigation]].&lt;br /&gt;
&lt;br /&gt;
=== Flying using the autopilot ===&lt;br /&gt;
Some aircraft require you to use the [[autopilot]] available from the ''Autopilot'' menu, which is the original FlightGear autopilot. This is a ''generic'' autopilot and as such, many aircraft come with their own ''specific'' autopilot, frequently a model of the real life one.&lt;br /&gt;
&lt;br /&gt;
For aircraft that provide their own autopilot, you should use the autopilot controls available in the virtual cockpit. This means clicking on the instrument panel in the virtual cockpit. The Autopilot menu will be grayed out and unavailable when the aircraft supplies its own autopilot in some aircraft, including the Airbuses and the [[Cessna 172P|C172P]].&lt;br /&gt;
&lt;br /&gt;
The Cessna 172 comes with a [[Bendix/King KAP140 Autopilot]] in its virtual cockpit. You cannot use the ''Autopilot'' dialog from the menu with this aircraft. You must use the autopilot device in the panel.&lt;br /&gt;
&lt;br /&gt;
== The FlightGear community ==&lt;br /&gt;
=== Getting help ===&lt;br /&gt;
This page is designed to give the user the essential things they need to know about using FlightGear for the first time. Besides the [[Portal:User|User portal]] of this wiki, there are other pages you may want to read:&lt;br /&gt;
* [[Troubleshooting problems]] to help you with the most common issues;&lt;br /&gt;
* [[Frequently asked questions]];&lt;br /&gt;
...and communication channels that can be used to obtain information or request help:&lt;br /&gt;
* The [[FlightGear Manual]], a ''must read'' for beginners;&lt;br /&gt;
* [https://forum.flightgear.org FlightGear Forum] and its subforums;&lt;br /&gt;
* [[FlightGear IRC channel]], the quickest way to get help;&lt;br /&gt;
* [[Mailing list|FlightGear users mailing list]], biggest chance to get in contact with core developers;&lt;br /&gt;
* Documents bundled with the release package.&lt;br /&gt;
&lt;br /&gt;
=== Customizing FlightGear without compiling it ===&lt;br /&gt;
[http://www.flightgear.org/download/ Our website] offers precompiled binaries for download and install on Windows and Mac OSX, while most Linux distros provide a packaged version in their repositories.&lt;br /&gt;
&lt;br /&gt;
Although the install is binary, most of FlightGear's systems are open to configuration through [[XML]] files and [[NASAL scripting]]. You are free ''and encouraged'' to make changes to aircraft flight models, scenery, textures, OpenGL [[shader]]s and any other feature you wish to change for your personal satisfaction or to share with other FlightGear users. If this is what you intend to do, take a look at the [[Portal:Developer|Developer portal]].&lt;br /&gt;
&lt;br /&gt;
=== How you can help ===&lt;br /&gt;
{{Main article|Volunteer}}&lt;br /&gt;
FlightGear is an opensource, volunteer based project. That means that whatever you find here comes from passion, spare time and nothing else. This includes the simulator, the scenery, the aircraft, the wiki, the forum and everything else. Volunteers, i.e. ''people that do things'', are fundamental to this project: without them, it wouldn't make a single step forward. So it is essential that contributors have fun in what they do.&lt;br /&gt;
&lt;br /&gt;
If you really plan to contribute to this project, you should take a look at some articles that will give you some hints:&lt;br /&gt;
* [[Howto:Understand the FlightGear development process]]&lt;br /&gt;
* [[Implementing new features for FlightGear]]&lt;br /&gt;
* [[How the FlightGear project works]]&lt;br /&gt;
&lt;br /&gt;
There are never enough people contributing, and the fields where their help would be appreciated are many:&lt;br /&gt;
;Testing :&lt;br /&gt;
* [[Building Flightgear|Build]] the latest Git code or download snapshots from the [[FlightGear Build Server]]&lt;br /&gt;
* [https://sourceforge.net/p/flightgear/codetickets/ File bug reports]&lt;br /&gt;
* Running FlightGear via valgrind to track down memory leaks&lt;br /&gt;
&lt;br /&gt;
;Support :&lt;br /&gt;
* Help new users with downloading, compiling, installing and running FlightGear (https://forum.flightgear.org or on IRC)&lt;br /&gt;
* Provide ideas &amp;amp; suggestions, see: [[Feature Requests / Proposals / Ideas]]&lt;br /&gt;
* Help clean up this wiki&lt;br /&gt;
* Help provide new contents for missing wiki pages&lt;br /&gt;
&lt;br /&gt;
;Development :&lt;br /&gt;
* C/C++ Coding:&lt;br /&gt;
** provide source code cleanups (i.e. help in the process of migrating over to a primarily smart pointer-based memory management approach using SGSharedPtr)&lt;br /&gt;
** provide bug fixes [[Bugs]] or new features &lt;br /&gt;
** get involved in any of the other FlightGear-affiliated projects &lt;br /&gt;
* Aircraft development (3D modelling, textures, FDMs, scripting)&lt;br /&gt;
* Scenery development (terrain, model, weather)&lt;br /&gt;
&lt;br /&gt;
[[Category:FlightGear]]&lt;br /&gt;
[[ca:Nou a FlightGear]]&lt;br /&gt;
[[de:Neu bei FlightGear]]&lt;br /&gt;
[[es:Nuevo para FlightGear]]&lt;br /&gt;
[[fr:Nouveau sur flightgear]]&lt;br /&gt;
[[it:Nuovo per FlightGear]]&lt;br /&gt;
[[ja:FlightGear入門]]&lt;br /&gt;
[[nl:Nieuw bij FlightGear]]&lt;br /&gt;
[[pt:Novo no FlightGear]]&lt;br /&gt;
[[zh:FlightGear新手]]&lt;br /&gt;
[[th:New to FlightGear]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=FGAddon&amp;diff=113340</id>
		<title>FGAddon</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=FGAddon&amp;diff=113340"/>
		<updated>2017-12-26T18:44:30Z</updated>

		<summary type="html">&lt;p&gt;AndersM: /* Daily usage */  Added update command&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:FGAddon logo.png|270px|right]]&lt;br /&gt;
&lt;br /&gt;
The official '''FGAddon''' aircraft hangar is a version control repository, hosted on [[FlightGear|FlightGear's]] [https://sourceforge.net/projects/flightgear/ SourceForge infrastructure], and used for the day-to-day development of FlightGear aircraft.  FGAddon is an {{wikipedia|Apache Subversion|noicon=1}} version control repository.  These are aircraft that are not part of the base package (the aircraft that are included in the base package — the [[Cessna 172P]] and the [[UFO]] — are kept in the [http://sourceforge.net/p/flightgear/fgdata FGData] repository), but are tagged with each stable release for the [http://www.flightgear.org/download/ FlightGear download pages].&lt;br /&gt;
&lt;br /&gt;
The FGAddon aircraft development repository should be considered unstable.  When using a stable FlightGear release, it is best to obtain aircraft with a matching version number from the [http://www.flightgear.org/download/ FlightGear download pages].  However, as stable releases from FlightGear version 3.4 onwards are tagged and present within the FGAddon repository, the Subversion tools can be a convenient way to obtain individual aircraft or the entire official hangar of approximately 500 aircraft.  Also, if using the [[FlightGear build server|lastest nightly releases]] or a [[Building FlightGear|self-compiled version of FlightGear]] from FlightGear's [http://sourceforge.net/p/flightgear/_list/git Git version control repositories], using FGAddon allows the aircraft to be updated to the latest development versions.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
[[File:Image103.gif|thumb|Original Win95 icon]]&lt;br /&gt;
The FlightGear project was conceived on April 8, 1996 by David Murr who proposed a new flight simulator to be developed by volunteers&amp;lt;ref&amp;gt;David Murr (Apr 9, 1996).  FlightGear proposal 1.0: [https://groups.google.com/forum/#!msg/rec.aviation.simulators/ny8HFBE5_T8/OdtIiGNGJc8J &amp;quot;A PROPOSAL FOR A NEW FLIGHT SIMULATOR - home built!@&amp;quot;].  Published on the rec.aviation.simulators newsgroup.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;David Murr (1996).  FlightGear proposal 2.0: [http://www.flightgear.org/proposal-2.0 FLIGHT GEAR &amp;quot;This truly is as real as it gets!&amp;quot; - a proposal for a new flight simulator - REVISION 2.0].&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;David Murr (Oct 29, 1996).  FlightGear proposal 3.0: [http://www.flightgear.org/proposal-3.0 FLIGHT GEAR FLIGHT SIMULATOR, revision 3.0 - Wednesday, 10.30.96, &amp;quot;The future of flight simulation is here&amp;quot;].  Published on the [http://ftp.igh.cnrs.fr/pub/flightgear/www/old-stuff/flight-gear.9610 flight-gear@infoplane.com mailing list].&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;David Murr (Sep 11, 1998).  FlightGear proposal 3.0.1: [http://www.flightgear.org/proposal-3.0.1 FLIGHT GEAR FLIGHT SIMULATOR, revision 3.0.1 - Friday, Sep.11.98, &amp;quot;The future of flight simulation is here&amp;quot;].&amp;lt;/ref&amp;gt;.  Part of the initial goals were to develop 2D and 3D graphics routines for the simulator.  However this was a huge task that came to an unfinished halt at the start of 1997 as the main developer,  Eric Korpela, was finishing his thesis.  Therefore starting on May 16, 1997, Curtis Olson relaunched development with a new project based on the OpenGL libraries, allowing a functional flight simulator to be put together in a short period of time&amp;lt;ref&amp;gt;Curtis Olson (Sep 28, 2015).  [http://forum.flightgear.org/viewtopic.php?f=42&amp;amp;t=27558&amp;amp;p=259048#p259021 Re: A PROPOSAL FOR A NEW FLIGHT SIMULATOR - home built!@].  Published on the FlightGear forum.&amp;lt;/ref&amp;gt;.  The first commits were to the original [[FlightGear CVS|flightgear and simgear CVS version control repositories]].&lt;br /&gt;
&lt;br /&gt;
As the project grew, so did the size, quantity, and quality of the FlightGear assets.  These assets were not organised and were scattered across different parts of the internet.  Therefore it was decided that much of this FlightGear content would be assembled and stored together in a new centralised CVS repository called fgdata, which was created on October 22, 2000.  To allow for the legal redistribution of these assets as part of the FlightGear distribution, a GPLv2 only policy was adopted.&lt;br /&gt;
&lt;br /&gt;
In May 2010, development was interrupted by the infamous ''&amp;quot;coffee incident&amp;quot;'' which resulted in the loss of Curtis' home server hosting all of the FlightGear repositories&amp;lt;ref&amp;gt;James Turner (May 20, 2010). [http://thread.gmane.org/gmane.games.flightgear.devel/60340/focus=60341 &amp;lt;nowiki&amp;gt;[Flightgear-devel]&amp;lt;/nowiki&amp;gt; Re: Flightgear git repositories (was Re: GIT or CVS - Confusion)] Published on the flightgear-devel mailing list.&amp;lt;/ref&amp;gt;.  These events resulted in a [[FlightGear CVS|mass migration of all the CVS repositories to Git repositories]].  Due to bandwidth issues, it was decided that the new repositories would be hosted on the Gitorious open source infrastructure.&lt;br /&gt;
&lt;br /&gt;
With time as the project grew, the size and scope of the fgdata repository mushroomed, mainly due to the growing number of aircraft stored in [[$FG_ROOT]]/Aircraft, so that a split was inevitable.  A first splitting attempt was organised by Gijs de Rooy and announced on October 18, 2011&amp;lt;ref&amp;gt;Cedric Sodhi (Oct 18, 2011) [http://thread.gmane.org/gmane.games.flightgear.devel/66846 &amp;lt;nowiki&amp;gt;[Flightgear-devel]&amp;lt;/nowiki&amp;gt; FGData Split Completed - a.k.a Life after the Split] Published on the flightgear-devel mailing list.&amp;lt;/ref&amp;gt;.  Each aircraft was placed in its own Git repository and all aircraft linked back to fgdata using a Git submodule approach.  However this attempt failed and was abandoned.  From this date until the end of 2014, the design of the fgdata split was discussed on the development mailing list and summarised in the [[FlightGear Git: splitting fgdata]] wiki article.  In the planning stages, the repositories were known as fgdata-old splitting into [[FGData]] (a.k.a. fgdata-new) and FGAddon (a.k.a. flightgear-aircraft and fgaircraft).  After half a decade of planning, it was decided that the best solution for FlightGear aircraft development would be a single centralized Subversion repository.  This would facilitate community management and maintenance of the aircraft while at the same time providing modularity and smaller downloads and smaller local repository sizes.&lt;br /&gt;
&lt;br /&gt;
In late 2014, Gitorious, the provider of the open source infrastructure for the FlightGear source code and data repositories announced that it would shut its services down by May 2015 due to its acquisition by GitLab.  This catalysed the split of fgdata-old and a switch to the SourceForge open source infrastructure for the hosting of the VC repositories.  Other parts of the FlightGear infrastructure were already hosted by SourceForge, making the move a natural one.  Sealing the deal, SourceForge agreed in writing to host the huge FlightGear aircraft collection, the size of which is unrivaled in open source circles.  Today, the FGAddon SVN repository, together with most of the FlightGear project infrastructure, is hosted on SourceForge.&lt;br /&gt;
&lt;br /&gt;
In August 2015, a new FlightGear policy document was written to codify the unwritten standards of the project&amp;lt;ref&amp;gt;[http://www.flightgear.org/flightgear-policy-document/ FlightGear Policy Document and Roadmap], draft document.&amp;lt;/ref&amp;gt;.  With this document, the licensing policy for the FlightGear aircraft has been updated from being GPLv2-only to now being a GPLv2+ or GPL-compatible&amp;lt;ref&amp;gt;[http://www.gnu.org/licenses/license-list.en.html GNU license compatibility list].&amp;lt;/ref&amp;gt; stance.  However, to combat licence proliferation complications for the integrity and good of the FlightGear project, it is strongly recommended that original content be GPLv2+ licensed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{FGCquote&lt;br /&gt;
|1= The short summary is that we already were maintaining a well established presence on sourceforge. So after quite a bit of discussion, we decided to consolidate there. In addition, we had a perpetual complaint that the fgdata git repository was far too big for most people to initially download (1Gb+). Thus we split off most of the aircraft (expecting unbounded future growth potential) into an svn repository called fgaddon. Sourceforge supports both git and svn repositories. This puts a dependency on a central svn server for our fgaddon aircraft repository, but lightens the weight for anyone wanting to checkout a copy of everything (you don't need a copy of the entire development history, and a copy of every version ever created of every aircraft if you just want to have the latest versions.) Plus svn allows checking out subtrees (without needing the whole repository) so this can also serve as a potential JIT single aircraft service provider. Of course there are always multiple ways to solve every problem and of course every engineering decision has trade offs. Github is a nice provider, no doubt. I have been using them for a number of my own personal repositories. Git of course has ways to address many of the issues we have addressed, but of course everything has strengths and weaknesses.&lt;br /&gt;
|2= {{cite web&lt;br /&gt;
  | url    = http://sourceforge.net/p/flightgear/mailman/message/35054405/&lt;br /&gt;
  | title  = &amp;lt;nowiki&amp;gt;Re: [Flightgear-devel] FlightGear and GitHub&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  | author = &amp;lt;nowiki&amp;gt;Curtis Olson&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  | date   = Apr 30th, 2016&lt;br /&gt;
  | added   = Apr 30th, 2016&lt;br /&gt;
  | script_version = 0.25&lt;br /&gt;
  }}&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Obtaining aircraft ==&lt;br /&gt;
&lt;br /&gt;
{{tip|If you are interested in obtaining aircraft for stable FlightGear releases and you are unaware of what version control is, you should visit the [[FlightGear_hangars|FlightGear hangars]] for downloading aircraft.}}&lt;br /&gt;
{{caution|If the FlightGear and FGAddon aircraft versions do not match, strange bugs should be expected and the version-mismatch combination will not be supported by the FlightGear community.}}&lt;br /&gt;
&lt;br /&gt;
With access to the Subversion (SVN) tools, the FGAddon version control repository can be a convenient way for obtaining aircraft for using within a specific FlightGear version directly from the official source.  When using the [[FlightGear Build Server|nightly builds]] or a [[Building FlightGear|version controlled copy of FlightGear]], the most up to date in-development versions of the aircraft should be used so the versions match.  The following describes how to use the official repository to obtain aircraft from the perspective of a FlightGear user.&lt;br /&gt;
&lt;br /&gt;
=== Preparation ===&lt;br /&gt;
To use the FGAddon repository, the Subversion tools need to be installed:&lt;br /&gt;
* '''MS Windows''': Install one of the [https://subversion.apache.org/packages.html#windows many Subversion clients].  For example [https://sliksvn.com/download/ SlikSVN] is one of the best command line versions and the best for aircraft development, and [http://tortoisesvn.net/ TortoiseSVN] provides a user friendly graphical user interface (GUI) by integrating into Windows Explorer.&lt;br /&gt;
* '''Mac OS X''': Install the [https://subversion.apache.org/packages.html#osx official Subversion client].&lt;br /&gt;
* '''GNU/Linux''': Install the Subversion client via the package manager.  This will usually be in a package called &amp;lt;code&amp;gt;subversion-*.{rpm,deb}&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== FGAddon directory layout ===&lt;br /&gt;
To know how to use the FGAddon repository, an understanding of the repository directory layout is essential.&lt;br /&gt;
* &amp;lt;code&amp;gt;/trunk&amp;lt;/code&amp;gt;:  This base directory is where the in-development versions of the aircraft are located.&lt;br /&gt;
* &amp;lt;code&amp;gt;/branches/release-x.y.z/&amp;lt;/code&amp;gt;:  These directories correspond to the specific stable FlightGear releases.&lt;br /&gt;
&lt;br /&gt;
The [https://sourceforge.net/p/flightgear/fgaddon/HEAD/tree/ web interface for the FGAddon repository] allows all of the aircraft to be browsed.&lt;br /&gt;
&lt;br /&gt;
=== Download ===&lt;br /&gt;
[[File:V22Osprey.jpg|thumb|200px|Aircraft to be downloaded]]&lt;br /&gt;
Firstly, choose an aircraft to download.  The [[Bell Boeing V-22 Osprey]] will be used in this example.&lt;br /&gt;
&lt;br /&gt;
==== Command line ====&lt;br /&gt;
&lt;br /&gt;
To download the aircraft for FlightGear 3.4, simply type:&lt;br /&gt;
{{#tag:syntaxhighlight|&lt;br /&gt;
{{fgaddon co|branch=branches/release-3.4.0|path=Aircraft/V22-Osprey|post=}}&lt;br /&gt;
| lang = &amp;quot;sh&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
To obtain the in-development version, type:&lt;br /&gt;
{{#tag:syntaxhighlight|&lt;br /&gt;
{{fgaddon co|path=Aircraft/V22-Osprey|post=}}&lt;br /&gt;
| lang = &amp;quot;sh&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
If all of the ~500 aircraft from the repository are desired - beware that this will be a huge download of over 6 GB - use the following command:&lt;br /&gt;
{{#tag:syntaxhighlight|&lt;br /&gt;
{{fgaddon co|post=flightgear-fgaddon}}&lt;br /&gt;
| lang = &amp;quot;sh&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
When using a stable FlightGear release, for example FlightGear 2016.1, to obtain all of the FGAddon aircraft to match the installed FlightGear version, use:&lt;br /&gt;
{{#tag:syntaxhighlight|&lt;br /&gt;
{{fgaddon co|branch=branches/release-2016.1|post=flightgear-fgaddon}}&lt;br /&gt;
| lang = &amp;quot;sh&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== GUI clients and TortoiseSVN ====&lt;br /&gt;
&lt;br /&gt;
When using one of the Subversion GUIs (graphical user interfaces), simply copy one of the above &amp;lt;code&amp;gt;https://&amp;lt;/code&amp;gt; URLs and use that in the GUI (each GUI is different, so see the relevant documentation for help).  For the unique TortoiseSVN tool, simply:&lt;br /&gt;
&lt;br /&gt;
* In Windows Explorer, create a new empty folder for the aircraft (or aircraft collection).&lt;br /&gt;
* In the new folder, right click and select &amp;lt;code&amp;gt;SVN Checkout...&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Copy and paste the URL, for example {{fgaddon source|path=Aircraft/V22-Osprey|type=svn|full=1}}, leave all other settings as they are, and import by clicking on &amp;lt;code&amp;gt;OK&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For more details, see the [http://tortoisesvn.net/support.html TortoiseSVN documentation].  Note that there is an option to install the command line tools when installing TortoiseSVN.&lt;br /&gt;
&lt;br /&gt;
=== Flying ===&lt;br /&gt;
&lt;br /&gt;
To use the newly downloaded aircraft, please see the [[Howto:Install aircraft]] article, skipping the instructions for downloading and unzipping the aircraft.&lt;br /&gt;
&lt;br /&gt;
=== Updates ===&lt;br /&gt;
With a checked out copy of the &amp;lt;code&amp;gt;/trunk&amp;lt;/code&amp;gt; in-development version, the aircraft can be updated to the latest version using the command:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn up&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aircraft development ==&lt;br /&gt;
&lt;br /&gt;
{{tip|The FlightGear community encourages aircraft development directly within FGAddon.}}&lt;br /&gt;
&lt;br /&gt;
=== Contact the original aircraft authors ===&lt;br /&gt;
&lt;br /&gt;
The first step for developing and advancing the aircraft of the official FlightGear hangar, or from one of the [[Flightgear_hangars#Aircraft_hangars|private hangars]] for that matter, is to make contact with the original aircraft author(s).  Their names can be found within the &amp;lt;code&amp;gt;*-set.xml&amp;lt;/code&amp;gt; file, within the &amp;lt;code&amp;gt;&amp;lt;authors&amp;gt;&amp;lt;/code&amp;gt; XML tag.  Often the contact email address will be listed in a README file or some other text file in the base aircraft directory.  If not, contact can sometimes be established via the [https://lists.sourceforge.net/lists/listinfo/flightgear-devel FlightGear development mailing list].  Contacting the original authors is important to see if the aircraft is currently being actively developed, and if you can join in as part of the development team.&lt;br /&gt;
&lt;br /&gt;
=== SourceForge account ===&lt;br /&gt;
&lt;br /&gt;
To work on the official aircraft collection, a [https://sourceforge.net/user/registration/ SourceForge account] should first be set up.  This will allow to either directly commit to the FGAddon repository, if commit access has been been granted, or to work in as part of a SourceForge development team.  The registration process is lightning quick and the SourceForge developer infrastructure and developer services will be accessible in under a minute.&lt;br /&gt;
&lt;br /&gt;
=== Commit access ===&lt;br /&gt;
&lt;br /&gt;
Before obtaining commit access, an all-out effort to contact the original author(s) should be made to determine if the aircraft is actively being developed.  If this is unsuccessful, sign up for the [https://lists.sourceforge.net/lists/listinfo/flightgear-devel FlightGear development mailing list] and ask for help there.  If the aircraft has a current maintainer, you will be directed as to how to proceed with development.  Otherwise ask if someone could volunteer to mentor you in the process of becoming an aircraft developer with full commit access.&lt;br /&gt;
&lt;br /&gt;
To obtain commit access, you will first need:&lt;br /&gt;
# To demonstrate your capabilities and development skills.&lt;br /&gt;
# To show that you understand the [http://article.gmane.org/gmane.games.flightgear.devel/78713 FlightGear policy document].  &amp;lt;!-- Temporary link until the document is published --&amp;gt;&lt;br /&gt;
# To show an understanding of the GPL licensing issues, and that you can be trusted not to use copyrighted, non-GPL material.&lt;br /&gt;
# To earn the trust of the FlightGear community.&lt;br /&gt;
&lt;br /&gt;
These easy to jump over hurdles are simply designed to protect against repository corruption or pollution of the repository with illegal content.&lt;br /&gt;
&lt;br /&gt;
To have your changes committed into the FGAddon repository, you should discuss and coordinate with the original aircraft author, or your mentor, for the best way to proceed.  Depending on the [[#Development_scenarios|development scenario]], this maybe by merge request, file transfer, the primitive patch system, or any other convenient way.  Once you believe you have proven your capabilities and you are knowledgeable about GPL licensing issues, you should write a mail to the development mailing list asking if you can be granted commit access, providing your SourceForge username.&lt;br /&gt;
&lt;br /&gt;
=== FGAddon commitlog mailing list ===&lt;br /&gt;
&lt;br /&gt;
To follow all changes which occur in the FGAddon repository, subscribe to the dedicated [https://lists.sourceforge.net/lists/listinfo/flightgear-fgaddon-commitlogs Flightgear FGAddon commitlogs mailing list].  One email is sent per commit, as the commit is made.&lt;br /&gt;
&lt;br /&gt;
== Version control tools ==&lt;br /&gt;
&lt;br /&gt;
To access FGAddon and use it for aircraft development, the Subversion or SVN version control tools are needed.  Alternatively git-svn provides an interface for those who prefer the git version control tools.&lt;br /&gt;
&lt;br /&gt;
=== Subversion ===&lt;br /&gt;
&lt;br /&gt;
==== Set up ====&lt;br /&gt;
The FGAddon aircraft hangar is stored in a remote Subversion repository located on the SourceForge infrastructure, and therefore it is simplest to use the SVN tools for aircraft development and will cause the least problems.  See the [[#Preparation|Subversion installation section]] for setting up the tool chain.&lt;br /&gt;
&lt;br /&gt;
==== Repository checkout ====&lt;br /&gt;
The first step is to 'checkout' a copy of either the repository trunk or one of the aircraft in the trunk:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn co &amp;lt;url&amp;gt; &amp;lt;dir&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the relevant URL to use, you must chose one of the [[#Development_scenarios|development scenarios]] and find the URL in that section.  This command will create a local subversion repository copy in the given &amp;lt;code&amp;gt;&amp;lt;dir&amp;gt;&amp;lt;/code&amp;gt; directory.  Note that this will only contain the part of the FGAddon repository specified in the URL.  This means that Subversion allows you to checkout either a single file all the way to the entire remote repository.&lt;br /&gt;
&lt;br /&gt;
==== Information and history ====&lt;br /&gt;
At any point to see information about the local repository, type:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn info&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the history of the checked out copy of the repository, type one of:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn log&lt;br /&gt;
svn log | less&lt;br /&gt;
svn log -v | less&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Daily usage ====&lt;br /&gt;
The main Subversion command you will be using is:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn add &amp;lt;path&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will register the file or directory &amp;lt;code&amp;gt;&amp;lt;path&amp;gt;&amp;lt;/code&amp;gt; within the local repository to allow it to later be 'committed' and sent to the remote repository.  To move or rename a file or directory, use:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn mv &amp;lt;path1&amp;gt; &amp;lt;path2&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This should be used rather than normal file moving/renaming so that the change is tracked in the local repository.  To remove a file from the local repository, type:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn rm &amp;lt;path&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the current status of the local repository, type:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn st&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To update the local repository with changes in the remote repository, type:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn up&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Committing changes ====&lt;br /&gt;
All of the above operations only occur on the local repository copy - the remote FGAddon repository at SourceForge will know nothing of these changes.  To send all your changes to FGAddon, you need to commit the changes:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn ci&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will open up an editor to allow you to write an informative commit log message.  When committing, it is best to make small modular commits so that each commit corresponds to a single purpose.  Note that you can only commit to FGAddon if you have [[#Commit access|commit access]].&lt;br /&gt;
&lt;br /&gt;
==== Branching ====&lt;br /&gt;
The concept of Subversion branching is currently only used in the FlightGear project for tagging the stable releases.  However if you are curious about branching, see the [http://svnbook.red-bean.com/en/1.7/svn.branchmerge.html Branching and Merging chapter of the Subversion manual], and the [https://www.orcaware.com/svn/wiki/Svnmerge.py svnmerge.py script] which can greatly simplify the process.&lt;br /&gt;
&lt;br /&gt;
=== Git-svn ===&lt;br /&gt;
&lt;br /&gt;
The git-svn tool is useful for those who are already familiar with using git repositories, or those who wish to have their own private aircraft development playground.  Git-svn provides a bridge between the remote FGAddon Subversion repository and a local git repository.  For those unfamiliar with git, the git-svn bridge together with the git repository is far more complicated to use than the native [[#Subversion|Subversion tools]].  For more information on using git, see [[Howto:Start using git]]. The following will assume that only a single aircraft will be stored in the local git repository.&lt;br /&gt;
&lt;br /&gt;
==== Set up ====&lt;br /&gt;
The git distributed version control system needs to first be [https://git-scm.com/downloads installed].&lt;br /&gt;
&lt;br /&gt;
==== Cloning a single aircraft ====&lt;br /&gt;
The first step is to 'clone' a copy of one of the aircraft in the remote Subversion trunk:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git svn clone &amp;lt;aircraft_url&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the relevant aircraft URL to use, you must chose one of the [[#Development_scenarios|development scenarios]] and find the URL in that section.  The URL depends on your [[#Commit access|FGAddon commit access status]].  The clone command will create a local git repository containing solely the aircraft of interest, and initialise the git-svn bridge.&lt;br /&gt;
&lt;br /&gt;
==== Information and history ====&lt;br /&gt;
At any point to see information about the local repository, type:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git svn info&lt;br /&gt;
git branch -vva&lt;br /&gt;
git remote -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the history of the checked out copy of the repository, type:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Daily usage ====&lt;br /&gt;
The main git command you will be using is:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git add &amp;lt;path&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will register the file or directory &amp;lt;code&amp;gt;&amp;lt;path&amp;gt;&amp;lt;/code&amp;gt; within the local repository to allow it to later be 'committed' to the local git repository.  To move or rename a file or directory, use:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git mv &amp;lt;path1&amp;gt; &amp;lt;path2&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However note that git history is not as robust as svn history.  See the [[#Moving_or_renaming_files|git-svn file moving/renaming deficiency section]] for how to better perform this operation.  To remove a file from the local repository, type:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git rm &amp;lt;path&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the current status of the local repository, type:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Committing changes ====&lt;br /&gt;
As git is a distributed version control system, changes are committed to the local git repository.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git commit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will open up an editor to allow you to write an informative commit log message.  The commit is local and will not be sent to FGAddon.&lt;br /&gt;
&lt;br /&gt;
==== Dedicated FGAddon branch ====&lt;br /&gt;
In the examples above, only a single branch was assumed in the repository.  If interaction with a remote git repository or branching within the local git repository is desired, then a different strategy is required.  The reason being that the branch that synchronises with FGAddon must [https://git-scm.com/book/en/v1/Git-and-Other-Systems-Git-and-Subversion#git-svn preserve a linear history].  This means only cherry-picking of the desired changes into that branch is allowed.&lt;br /&gt;
&lt;br /&gt;
In this example, two branches will be set up in the local git repository:&lt;br /&gt;
* &amp;lt;code&amp;gt;fgaddon&amp;lt;/code&amp;gt;:  This branch will be dedicated for FGAddon synchronisation and will preserve a linear history.&lt;br /&gt;
* &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;:  A master branch for aircraft development, allowing for mergers and other non-linear history operations.&lt;br /&gt;
&lt;br /&gt;
Assuming a [[#Cloning_a_single_aircraft|newly cloned repository]], create the &amp;lt;code&amp;gt;fgaddon&amp;lt;/code&amp;gt; branch with:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git branch fgaddon&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And switch to that branch:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout fgaddon&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The FGAddon synchronisation can then be performed on this branch.  To pull in the developments from the master branch, use cherry-picking to apply a sequentially ordered list of commit hashes:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git cherry-pick &amp;lt;commit hash 1&amp;gt;&lt;br /&gt;
git cherry-pick &amp;lt;commit hash 2&amp;gt;&lt;br /&gt;
git cherry-pick &amp;lt;commit hash 3&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the list of commits to be sent to FGAddon prior to dcommitting, type:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git log git-svn..HEAD&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And to see the changes as a single diff:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git diff git-svn..HEAD&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Synchronising ====&lt;br /&gt;
To send the changes to the remote FGAddon repository, firstly change to the dedicated &amp;lt;code&amp;gt;fgaddon&amp;lt;/code&amp;gt; branch:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout fgaddon&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure the local git-svn repository is up to date with all changes that have occurred in FGAddon:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git svn rebase&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then push or dcommit the changes to FGAddon with:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git svn dcommit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Deficiencies of git-svn ===&lt;br /&gt;
&lt;br /&gt;
{{warning|Performing a &amp;lt;code&amp;gt;git-svn clone&amp;lt;/code&amp;gt; of the &amp;lt;code&amp;gt;/trunk/&amp;lt;/code&amp;gt; or entire repository is not recommended, as the entire repository history will be downloaded, resulting in a huge local repository, as well as putting a large strain on the FlightGear open source infrastructure.}}&lt;br /&gt;
&lt;br /&gt;
It is important to understand that there are a number of operations in which git-svn is deficient.  In many cases, the svn tools should be used instead.&lt;br /&gt;
&lt;br /&gt;
==== Copying files between aircraft ====&lt;br /&gt;
&lt;br /&gt;
{{caution|Git-svn does not maintain the file copying history normally present in a Subversion repository.}}&lt;br /&gt;
&lt;br /&gt;
The most important of these is the copying of content from other FGAddon aircraft.  In this case you will need FGAddon commit access and a local svn copy of the repository.  Firstly synchronise the repositories by dcommitting all changes back to FGAddon:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git svn dcommit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then in the local svn repository, copy the file:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn cp Aircraft/&amp;lt;aircraft1&amp;gt;/&amp;lt;file_path1&amp;gt; Aircraft/&amp;lt;aircraft2&amp;gt;/&amp;lt;file_path2&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And commit the change:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn ci&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Back in the local git-svn repository, pull in the new files:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git svn rebase&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using the subversion tools avoids the FGAddon repository backend from significantly increasing in size, as [http://svnbook.red-bean.com/en/1.7/svn.branchmerge.using.html#svn.branchmerge.using.create svn copies are cheap].&lt;br /&gt;
&lt;br /&gt;
==== Moving or renaming files ====&lt;br /&gt;
&lt;br /&gt;
{{caution|Git-svn does not always maintain the file moving or renaming history normally present in a Subversion repository.}}&lt;br /&gt;
&lt;br /&gt;
This problem stems from the fact that svn history is more robust than that of git.  The &amp;lt;code&amp;gt;svn mv&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;git mv&amp;lt;/code&amp;gt; commands are not equivalent.  The subversion command stores the move history directly in the repository whereas git does not (git instead uses heuristic methods to try to detect history, after the commit).  The result of using git-svn is that often the move will not be detected and the FGAddon history will show one file or directory being deleted and another added.  This also causes the repository backend to increase in size, whereas &amp;lt;code&amp;gt;svn mv&amp;lt;/code&amp;gt; will not cause any significant size increase.  If you wish to have a better historical record in the FGAddon repository and be considerate to the repository backend, it is recommended that you temporarily switch to the subversion tools.  Firstly, synchronise the repositories:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git svn dcommit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then in the local svn repository, move or rename the file:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn mv Aircraft/&amp;lt;aircraft&amp;gt;/&amp;lt;file_path1&amp;gt; Aircraft/&amp;lt;aircraft&amp;gt;/&amp;lt;file_path2&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And commit the change:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn ci&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Back in the local git-svn repository, pull in the changes with:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git svn rebase&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Copying files within one aircraft ====&lt;br /&gt;
&lt;br /&gt;
Just as the &amp;lt;code&amp;gt;svn mv&amp;lt;/code&amp;gt; command stores the move information directly within the repository, so does &amp;lt;code&amp;gt;svn cp&amp;lt;/code&amp;gt; store the copy information.  Therefore if you would like to duplicate a text file and modify it, using the native Subversion tools instead of git-svn for this operation allows for the file history to be permanently preserved in the FGAddon repository.&lt;br /&gt;
&lt;br /&gt;
==== Subversion properties ====&lt;br /&gt;
&lt;br /&gt;
{{caution|Git-svn currently only supports the &amp;lt;code&amp;gt;svn:executable&amp;lt;/code&amp;gt; property, all other properties are ignored and cannot be added, changed, or removed in a git-svn clone of the aircraft.}}&lt;br /&gt;
&lt;br /&gt;
Internally, Subversion identifies binary files using the &amp;lt;code&amp;gt;svn:mime-type&amp;lt;/code&amp;gt; repository property.  However as git-svn cannot set this property when using the &amp;lt;code&amp;gt;git add&amp;lt;/code&amp;gt; command, the result is that binary files will be treated as text.  Binary diffs will be seen when using &amp;lt;code&amp;gt;svn diff&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt;, and a binary diff will be shown in the [[#FGAddon commitlog mailing list|FGAddon commitlog mailing list]] messages.  As this issue is not unique to git-svn, to work around this issue please see the [[#Binary diffs|binary diffs]] section.&lt;br /&gt;
&lt;br /&gt;
==== Protocols other than svn+ssh ====&lt;br /&gt;
&lt;br /&gt;
The command &amp;lt;code&amp;gt;git svn init&amp;lt;/code&amp;gt; replicates the entire history of an aircraft into a local repository.  As part of this process, it generates a git commit ID or hash for every Subversion revision. The problem is that the git commit ID depends on the protocol used to read from the Subversion repository (likely a git bug).   Hence:&lt;br /&gt;
&lt;br /&gt;
{{#tag:syntaxhighlight|&lt;br /&gt;
{{fgaddon source|cmd=git svn init|protocol=svn+ssh|login=&amp;lt;username&amp;gt;|type=svn|path=Aircraft/&amp;lt;aircraft&amp;gt;|full=1}}&lt;br /&gt;
| lang = &amp;quot;sh&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
{{#tag:syntaxhighlight|&lt;br /&gt;
{{fgaddon source|cmd=git svn init|protocol=https|type=svn|path=Aircraft/&amp;lt;aircraft&amp;gt;|full=1}}&lt;br /&gt;
| lang = &amp;quot;sh&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
will result in two different and incompatible git repositories, even though they contain the same data. The incompatibility is not immediately apparent but it will bite later. Suppose someone with read-only access to FGAddon uses the https method, then asks a FGAddon gatekeeper to commit their changes. The gatekeeper, naturally, uses svn+ssh, as this is the only protocol granting write permissions. When the gatekeeper tries to merge the contributor's https clone into their own svn+ssh clone, git will complain that the two repositories have no history in common, and flag every change as a conflict.&lt;br /&gt;
&lt;br /&gt;
Therefore, if you are planning to make any changes to an aircraft, be sure to use svn+ssh even if you do not yet have commit permissions on FGAddon. svn+ssh does not require write permissions, it only requires a SourceForge user ID.&lt;br /&gt;
&lt;br /&gt;
== FGAddon development concepts ==&lt;br /&gt;
&lt;br /&gt;
=== New aircraft ===&lt;br /&gt;
&lt;br /&gt;
To add a new aircraft to the FGAddon repository, the SVN tools are required.  If you encounter &amp;lt;code&amp;gt;svn:mime-type&amp;lt;/code&amp;gt; property problems when adding a new aircraft, see the [[#Mime-type problems|mime-type problems section]] for how to resolve the issue.  Or if you have a &amp;lt;code&amp;gt;svn:executable&amp;lt;/code&amp;gt; property problem, see the [[#Executable flag|executable flag problem section]].&lt;br /&gt;
&lt;br /&gt;
==== svn import ====&lt;br /&gt;
&lt;br /&gt;
{{warning|The &amp;lt;code&amp;gt;svn import&amp;lt;/code&amp;gt; command described herein will send all contents of the specified directory directly into FGAddon without warning and without a way to cancel the operation.  Therefore special care must be taken when specifying the directory to upload into FGAddon, as well as the target FGAddon directory.  See the [[#svn add|svn add]] section below for a safer way to add a new aircraft.}}&lt;br /&gt;
&lt;br /&gt;
The [http://svnbook.red-bean.com/en/1.7/svn.tour.importing.html#svn.tour.importing.import svn import] command is the easiest method to use and does not require a local copy of the repository to be checked out.  To start:&lt;br /&gt;
&lt;br /&gt;
# Create an empty local aircraft directory.&lt;br /&gt;
# Copy the aircraft files into this directory.&lt;br /&gt;
# Carefully check all files to make sure there are no hidden or temporary files that should not be uploaded to FGAddon.&lt;br /&gt;
&lt;br /&gt;
Assuming the Dead Simple Human Powered Airplane (DaSH PA or &amp;quot;DaSH&amp;quot;) aircraft as an example, located in the &amp;lt;code&amp;gt;DaSH/&amp;lt;/code&amp;gt; directory, on the command line run:&lt;br /&gt;
{{#tag:syntaxhighlight|&lt;br /&gt;
{{fgaddon source&lt;br /&gt;
| cmd      = svn import DaSH/&lt;br /&gt;
| protocol = svn+ssh&lt;br /&gt;
| login    = &amp;lt;username&amp;gt;&lt;br /&gt;
| type     = svn&lt;br /&gt;
| path     = Aircraft/DaSH/&lt;br /&gt;
| post     = -m \&lt;br /&gt;
| full     = 1&lt;br /&gt;
}}&lt;br /&gt;
    &amp;quot;Initial import of the DaSH human powered aircraft.\n\nFor details see the forum thread at http://forum.flightgear.org/viewtopic.php?f=4&amp;amp;t=24495 .&amp;quot;&lt;br /&gt;
| lang = &amp;quot;sh&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;code&amp;gt;&amp;lt;username&amp;gt;&amp;lt;/code&amp;gt; is the SourceForge user name.  This will add all the files into FGAddon with commit log message with the summary line &amp;lt;code&amp;gt;Initial import of the DaSH human powered aircraft.&amp;lt;/code&amp;gt;, followed by a blank line, and then a detailed description pointing to the original location or discussion of the aircraft.  To see if the aircraft has been successfully added to the repository:&lt;br /&gt;
{{#tag:syntaxhighlight|&lt;br /&gt;
{{fgaddon source&lt;br /&gt;
| cmd      = svn list&lt;br /&gt;
| protocol = svn+ssh&lt;br /&gt;
| login    = &amp;lt;username&amp;gt;&lt;br /&gt;
| type     = svn&lt;br /&gt;
| path     = Aircraft/DaSH/&lt;br /&gt;
| full     = 1&lt;br /&gt;
}}&lt;br /&gt;
| lang = &amp;quot;sh&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Or visit the {{fgaddon source|path=Aircraft|text=FGAddon web interface}}.  The aircraft can then be checked out as described in the [[#Development scenarios|Development scenarios section]].&lt;br /&gt;
&lt;br /&gt;
==== svn add ====&lt;br /&gt;
&lt;br /&gt;
If a local copy of the FGAddon trunk is present, then the &amp;lt;code&amp;gt;svn add&amp;lt;/code&amp;gt; command can be used instead.  This is far safer than the &amp;lt;code&amp;gt;svn import&amp;lt;/code&amp;gt; command, as the change can be double checked before committing.  In the &amp;lt;code&amp;gt;Aircraft/&amp;lt;/code&amp;gt; directory of the local repository, create the &amp;lt;code&amp;gt;DaSH/&amp;lt;/code&amp;gt; directory.  This can either be empty or contain all files of the initial aircraft.  Then on the command line, add the aircraft to the local repository:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn add DaSH/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then double check the changes prior to committing:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn st&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And send the changes to FGAddon with:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn ci&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An editor, often vi&amp;lt;ref&amp;gt;[http://www.vim.org/docs.php Vim documentation]&amp;lt;/ref&amp;gt;, will open and the commit message can be composed.  Alternatively the commit log message can be specified on the command line with:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn ci -m &amp;quot;&amp;lt;subject_line&amp;gt;\n\n&amp;lt;detailed_description&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Commit blocking by pre-commit hooks ===&lt;br /&gt;
&lt;br /&gt;
Sometimes when committing to FGAddon, the commit will be blocked the following will be printed out:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn: E165001: Commit failed (details follow):&lt;br /&gt;
svn: E165001: Commit blocked by pre-commit hook (exit code 1) with output:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is due to the presence of two repository pre-commit hook scripts which check the quality of the commit, blocking it if a text file is set to a binary file mime-type or if the executable flag is set.  These scripts are simply to protect the repository and to keep it clean.&lt;br /&gt;
&lt;br /&gt;
==== Mime-type problems ====&lt;br /&gt;
&lt;br /&gt;
Sometimes when attempting to commit files to FGAddon using the SVN tools, the commit will be blocked with the following message:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Sending        dash-set.xml&lt;br /&gt;
svn: E165001: Commit failed (details follow):&lt;br /&gt;
svn: E165001: Commit blocked by pre-commit hook (exit code 1) with output:&lt;br /&gt;
&lt;br /&gt;
Aborting the commit, the svn:mime-type property is labelling the following text&lt;br /&gt;
files as binary:&lt;br /&gt;
&lt;br /&gt;
  dash-set.xml:  svn:mime-type=application/xml&lt;br /&gt;
&lt;br /&gt;
Before committing, please remove this property by typing 'svn propdel svn:mime-&lt;br /&gt;
type file_name' for all affected files.  This will allow the text files to be&lt;br /&gt;
treated as text within the FGAddon repository.&lt;br /&gt;
&lt;br /&gt;
To avoid the svn:mime-type property being incorrectly set by your subversion&lt;br /&gt;
client, the subversion configuration file at $HOME/.subversion/config or&lt;br /&gt;
%appdata%\roaming\subversion\config should be edited and a new entry added to&lt;br /&gt;
[auto-props] for each affected file type.  In most cases, the problem is with&lt;br /&gt;
XML files being labelled as &amp;quot;application/xml&amp;quot; by a library called libmagic.  To&lt;br /&gt;
override this, add the following to the svn config file:&lt;br /&gt;
&lt;br /&gt;
*.xml = svn:mime-type=text/xml&lt;br /&gt;
&lt;br /&gt;
svn: E165001: Your commit message was left in a temporary file:&lt;br /&gt;
svn: E165001:    '/flightgear/repo_testing/svn-commit.tmp'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despite messages about adding or sending files, no change will have occurred in the FGAddon repository.  This message is created by a repository pre-commit hook script which checks if the Subversion &amp;lt;code&amp;gt;svn:mime-type&amp;lt;/code&amp;gt; property is set on a list of known text files and, if the mime-type is set to a binary format, the commit is blocked.  The reason for this block is to protect the repository.  Newer SVN clients rely on a 3rd party library known as libmagic which will detect the aircraft XML files as the binary mime-type of &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt;.  The result is that the XML files are treated as binary files in the repository.  This behaviour is completely undesirable, as changes cannot be followed on the [[#FGAddon commitlog mailing list|flightgear-fgaddon-commitlogs mailing list]] or in the repository history, and the size of the commits become orders of magnitude larger.  Therefore this buggy behaviour has been blocked for the protection of the FlightGear project.  To remove the problem, follow the instructions in the message and, using the command line tools, type:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn propdel svn:mime-type &amp;lt;file_name&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Repeat this for each text file listed in the error message.  Then commit again, using the commit message saved in the &amp;lt;code&amp;gt;svn-commit.tmp&amp;lt;/code&amp;gt; file.  The message file name will be reported in the commit failure message, but check its contents first:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat svn-commit.tmp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And reperform the commit:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn ci -F svn-commit.tmp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Subversion config file =====&lt;br /&gt;
&lt;br /&gt;
The automatic property setting of &amp;lt;code&amp;gt;svn:mime-type&amp;lt;/code&amp;gt; can be controlled by modifying the Subversion &amp;lt;code&amp;gt;config&amp;lt;/code&amp;gt; file.  Firstly in the &amp;lt;code&amp;gt;[miscellany]&amp;lt;/code&amp;gt; section, make sure that the auto-properties are turned on:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
enable-auto-props = yes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then in the &amp;lt;code&amp;gt;[auto-props]&amp;lt;/code&amp;gt; section, add:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
*.ac = svn:mime-type=text/plain&lt;br /&gt;
*.eff = svn:mime-type=text/xml&lt;br /&gt;
*.frag = svn:mime-type=text/plain&lt;br /&gt;
*.nas = svn:mime-type=text/plain&lt;br /&gt;
*.osgx = svn:mime-type=text/xml&lt;br /&gt;
*.svg = svn:mime-type=text/svg+xml&lt;br /&gt;
*.txt = svn:mime-type=text/plain&lt;br /&gt;
*.vert = svn:mime-type=text/plain&lt;br /&gt;
*.xhtml = svn:mime-type=text/xml&lt;br /&gt;
*.xml = svn:mime-type=text/xml&lt;br /&gt;
*.xsl = svn:mime-type=text/xml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are all the text files that the hook script will check that the mime-type is set to a text format, though new text files will likely be added in the future.  These additions can either be to the user configuration file located at &amp;lt;code&amp;gt;~/.subversion/config&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;%USERPROFILE%\AppData\Roaming\Subversion\config&amp;lt;/code&amp;gt; in Windows) or, if a user configuration file is not set, to the global configuration file at &amp;lt;code&amp;gt;/etc/subversion/config&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;%APPDATA%\Subversion\config&amp;lt;/code&amp;gt; in Windows).&lt;br /&gt;
&lt;br /&gt;
==== Executable flag ====&lt;br /&gt;
&lt;br /&gt;
Another blocking message when attempting to commit files to FGAddon using the SVN tools is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Adding         dash-set.xml&lt;br /&gt;
Transmitting file data .svn: E165001: Commit failed (details follow):&lt;br /&gt;
svn: E165001: Commit blocked by pre-commit hook (exit code 1) with output:&lt;br /&gt;
&lt;br /&gt;
The svn:executable property is set on the files ['dash-set.xml'], aborting the&lt;br /&gt;
commit.&lt;br /&gt;
&lt;br /&gt;
The current policy is that no executable files are allowed in FGAddon.  Before&lt;br /&gt;
committing, please remove this property by typing 'svn propdel svn:executable&lt;br /&gt;
file_name' for all affected files.  Or to remove it recursively from all files&lt;br /&gt;
to be committed, in your aircraft directory type 'svn propdel svn:executable&lt;br /&gt;
-R'.&lt;br /&gt;
&lt;br /&gt;
To avoid the svn:executable property being set by your subversion client, on&lt;br /&gt;
GNU/Linux and Mac OS X systems simply make sure that the file's execute bit is&lt;br /&gt;
not set before adding the file to be committed.&lt;br /&gt;
&lt;br /&gt;
svn: E165001: Your commit message was left in a temporary file:&lt;br /&gt;
svn: E165001:    '/flightgear/repo_testing/svn-commit.tmp'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will probably only be seen on Mac OS X and GNU/Linux systems.  This message is printed by a pre-commit repository hook script that checks if the Subversion &amp;lt;code&amp;gt;svn:executable&amp;lt;/code&amp;gt; property is set and, if so, the commit is blocked.  This is a security measure, as no aircraft files should be executable.  To remove the problem, follow the instructions in the message and, using the command line tools, type:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn propdel svn:executable -R&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then commit again, using the commit message saved in the &amp;lt;code&amp;gt;svn-commit.tmp&amp;lt;/code&amp;gt; file.  The message file name will be reported in the commit failure message, but check its contents first:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat svn-commit.tmp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the reperform the commit:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn ci -F svn-commit.tmp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Binary diffs ===&lt;br /&gt;
&lt;br /&gt;
{{warning|The incorrect setting or absence of the mime-type property on a binary file will result in a binary diff.}}&lt;br /&gt;
&lt;br /&gt;
When looking at the output of &amp;lt;code&amp;gt;svn diff&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; if you are using git-svn) as well as when reading messages from the [[#FGAddon commitlog mailing list|FGAddon commitlog mailing list]], you may see a large number of unrecognisable characters.  This is the result of what is known as a binary diff, showing the binary file differences as if it were text.  Although this is not a issue for the operation of the repository, the situation is an aesthetic problem which makes it more difficult to perform a review of the changes.&lt;br /&gt;
&lt;br /&gt;
To fix the problem, firstly the binary files with the &amp;lt;code&amp;gt;svn:mime-type&amp;lt;/code&amp;gt; property missing need to be identified.  The following subversion command can be used:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn propget svn:mime-type &amp;lt;file_name&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As it can be tedious checking each file individually, the following Python script simplifies and automates the process to identify all binary files with a mime-type issue:&lt;br /&gt;
&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type   = Python 2/3 script&lt;br /&gt;
| title  = Find binary files with no &amp;lt;code&amp;gt;svn:mime-type&amp;lt;/code&amp;gt; property set.&lt;br /&gt;
| intro  = The following script is based on blacklisting text files.  Hence false positives are to be expected, and the blacklists can be expanded as needed.&lt;br /&gt;
| lang   = python&lt;br /&gt;
| script =&lt;br /&gt;
#! /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
from os import getcwd, walk&lt;br /&gt;
from os.path import join, splitext&lt;br /&gt;
from re import search&lt;br /&gt;
from subprocess import PIPE, Popen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
skip_txt_file_seg = [&lt;br /&gt;
    'authors',&lt;br /&gt;
    'copying',&lt;br /&gt;
    'licen',&lt;br /&gt;
    'readme'&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
skip_txt_ext = [&lt;br /&gt;
    'ac',&lt;br /&gt;
    'css',&lt;br /&gt;
    'dat',&lt;br /&gt;
    'eff',&lt;br /&gt;
    'frag',&lt;br /&gt;
    'html',&lt;br /&gt;
    'json',&lt;br /&gt;
    'log',&lt;br /&gt;
    'nas',&lt;br /&gt;
    'osgx',&lt;br /&gt;
    'svg',&lt;br /&gt;
    'tex',&lt;br /&gt;
    'txt',&lt;br /&gt;
    'vert',&lt;br /&gt;
    'xhtml',&lt;br /&gt;
    'xml',&lt;br /&gt;
    'xsl'&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
skip_bin_prop = [&lt;br /&gt;
    'application/octet-stream',&lt;br /&gt;
    'application/pdf',&lt;br /&gt;
    'application/postscript',&lt;br /&gt;
    'application/x-dosexec',&lt;br /&gt;
    'application/x-gzip',&lt;br /&gt;
    'application/zip',&lt;br /&gt;
    'audio/x-wav',&lt;br /&gt;
    'image/gif',&lt;br /&gt;
    'image/jpeg',&lt;br /&gt;
    'image/png',&lt;br /&gt;
    'image/vnd.adobe.photoshop',&lt;br /&gt;
    'image/tiff',&lt;br /&gt;
    'image/x-ms-bmp',&lt;br /&gt;
    'image/x-xcf',&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
# Walk through the directories.&lt;br /&gt;
for root, dirs, files in walk(getcwd()):&lt;br /&gt;
    # Loop over the files in the current directory.&lt;br /&gt;
    for file in files:&lt;br /&gt;
        # Skip known text files.&lt;br /&gt;
        skip = False&lt;br /&gt;
        for i in range(len(skip_txt_file_seg)):&lt;br /&gt;
            if search(skip_txt_file_seg[i], file.lower()):&lt;br /&gt;
                skip = True&lt;br /&gt;
        if skip:&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
        # The file extension.&lt;br /&gt;
        file_path, ext = splitext(file)&lt;br /&gt;
        ext = ext[1:].lower()&lt;br /&gt;
&lt;br /&gt;
        # Skip known text file extensions.&lt;br /&gt;
        if ext in skip_txt_ext:&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
        # The full file path.&lt;br /&gt;
        path = join(root, file)&lt;br /&gt;
&lt;br /&gt;
        # Query the file for svn:mime-type.&lt;br /&gt;
        cmd = 'svn propget svn:mime-type \&amp;quot;%s\&amp;quot;' % path&lt;br /&gt;
        pipe = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=False)&lt;br /&gt;
        props = []&lt;br /&gt;
        for line in pipe.stdout.readlines():&lt;br /&gt;
            props.append(line.strip())&lt;br /&gt;
&lt;br /&gt;
        # Byte array conversion (Python3).&lt;br /&gt;
        for i in range(len(props)):&lt;br /&gt;
            if hasattr(props[i], 'decode'):&lt;br /&gt;
                props[i] = props[i].decode()&lt;br /&gt;
&lt;br /&gt;
        # Skip binary svn:mime-type values.&lt;br /&gt;
        if len(props) and props[0] in skip_bin_prop:&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
        # Printout.&lt;br /&gt;
        if not len(props):&lt;br /&gt;
            print(&amp;quot;%s&amp;quot; % path)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;%s    svn:mime-type=%s&amp;quot; % (path, props[0]))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Fixing the problem ====&lt;br /&gt;
&lt;br /&gt;
As [[#Subversion_properties|git-svn cannot set or change]] the &amp;lt;code&amp;gt;svn:mime-type&amp;lt;/code&amp;gt; property, a [[#Repository_checkout|svn checkout copy]] of the aircraft is required.  The property can then be set to the default Subversion binary mime-type with:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn propset svn:mime-type &amp;quot;application/octet-stream&amp;quot; &amp;lt;file_name&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, the following set of shell commands can be used to automate the process:&lt;br /&gt;
{{collapsible script&lt;br /&gt;
| type   = Shell commands&lt;br /&gt;
| title  = Set specific &amp;lt;code&amp;gt;svn:mime-type&amp;lt;/code&amp;gt; values on a set of known binary files.&lt;br /&gt;
| intro = These shell commands will work on GNU/Linux or Mac OS X systems (or on Windows if using cygwin, or if a find command line tool is installed).  The list of file types here are those most commonly found in FGAddon.  To set the property on a list of binary files, type (or copy and paste):&lt;br /&gt;
| lang   = bash&lt;br /&gt;
| script =&lt;br /&gt;
find -iname &amp;quot;*.wav&amp;quot; -exec svn propset svn:mime-type &amp;quot;audio/x-wav&amp;quot; {} \;&lt;br /&gt;
find -iname &amp;quot;*.bmp*&amp;quot; -exec svn propset svn:mime-type &amp;quot;image/x-ms-bmp&amp;quot; {} \;&lt;br /&gt;
find -iname &amp;quot;*.gif&amp;quot; -exec svn propset svn:mime-type &amp;quot;image/gif&amp;quot; {} \;&lt;br /&gt;
find -iname &amp;quot;*.jpg&amp;quot; -exec svn propset svn:mime-type &amp;quot;image/jpeg&amp;quot; {} \;&lt;br /&gt;
find -iname &amp;quot;*.png*&amp;quot; -exec svn propset svn:mime-type &amp;quot;image/png&amp;quot; {} \;&lt;br /&gt;
find -iname &amp;quot;*.psd&amp;quot; -exec svn propset svn:mime-type &amp;quot;image/vnd.adobe.photoshop&amp;quot; {} \;&lt;br /&gt;
find -iname &amp;quot;*.tif&amp;quot; -exec svn propset svn:mime-type &amp;quot;image/tiff&amp;quot; {} \;&lt;br /&gt;
find -iname &amp;quot;*.xcf&amp;quot; -exec svn propset svn:mime-type &amp;quot;image/x-xcf&amp;quot; {} \;&lt;br /&gt;
find -iname &amp;quot;*.rgb*&amp;quot; -exec svn propset svn:mime-type &amp;quot;application/octet-stream&amp;quot; {} \;&lt;br /&gt;
find -iname &amp;quot;*.au&amp;quot; -exec svn propset svn:mime-type &amp;quot;application/octet-stream&amp;quot; {} \;&lt;br /&gt;
find -iname &amp;quot;*.*af&amp;quot; -exec svn propset svn:mime-type &amp;quot;application/octet-stream&amp;quot; {} \;&lt;br /&gt;
find -iname &amp;quot;*.3ds&amp;quot; -exec svn propset svn:mime-type &amp;quot;application/octet-stream&amp;quot; {} \;&lt;br /&gt;
find -iname &amp;quot;*.blend*&amp;quot; -exec svn propset svn:mime-type &amp;quot;application/octet-stream&amp;quot; {} \;&lt;br /&gt;
find -iname &amp;quot;*.dds&amp;quot; -exec svn propset svn:mime-type &amp;quot;application/octet-stream&amp;quot; {} \;&lt;br /&gt;
find -iname &amp;quot;*.od[gst]&amp;quot; -exec svn propset svn:mime-type &amp;quot;application/octet-stream&amp;quot; {} \;&lt;br /&gt;
find -iname &amp;quot;*.onetoc2&amp;quot; -exec svn propset svn:mime-type &amp;quot;application/octet-stream&amp;quot; {} \;&lt;br /&gt;
find -iname &amp;quot;*.xlsx&amp;quot; -exec svn propset svn:mime-type &amp;quot;application/octet-stream&amp;quot; {} \;&lt;br /&gt;
find -iname &amp;quot;*.pdf&amp;quot; -exec svn propset svn:mime-type &amp;quot;application/pdf&amp;quot; {} \;&lt;br /&gt;
find -iname &amp;quot;*.ps&amp;quot; -exec svn propset svn:mime-type &amp;quot;application/postscript&amp;quot; {} \;&lt;br /&gt;
find -iname &amp;quot;*.gz&amp;quot; -exec svn propset svn:mime-type &amp;quot;application/x-gzip&amp;quot; {} \;&lt;br /&gt;
find -iname &amp;quot;*.mdl&amp;quot; -exec svn propset svn:mime-type &amp;quot;application/x-dosexec&amp;quot; {} \;&lt;br /&gt;
find -iname &amp;quot;*.zip&amp;quot; -exec svn propset svn:mime-type &amp;quot;application/zip&amp;quot; {} \;&lt;br /&gt;
| conc = Other binary files can safely be set to &amp;lt;code&amp;gt;&amp;quot;application/octet-stream&amp;quot;&amp;lt;/code&amp;gt;, the Subversion default for binary files.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== SourceForge developer services ==&lt;br /&gt;
&lt;br /&gt;
The FlightGear project is hosted on the SourceForge open source infrastructure.  This developer services section will highlight some of the useful tools you can take advantage of.  SourceForge consists of two categories of services:&lt;br /&gt;
; Project infrastructure : The FlightGear project uses the project services of SourceForge.  These services are for standalone software projects.&lt;br /&gt;
; Developer infrastructure : These are services available to anyone with a SourceForge account, and are available via your SourceForge homepage and accessible to all.  This includes being able to create multiple version control repositories (svn, git, hg), wikis, forums, development teams, blogs, and ticket trackers (for bugs, support requests, tasks, etc.).&lt;br /&gt;
&lt;br /&gt;
Rather than creating a new project, any development for the FlightGear project should be based on the developer infrastructure.&lt;br /&gt;
&lt;br /&gt;
=== Developer git repository ===&lt;br /&gt;
&lt;br /&gt;
To set up your own remote git repository, here for developing the FGAddon fkdr1 aircraft:&lt;br /&gt;
* On your profile page at &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://sourceforge.net/u/&amp;lt;username&amp;gt;/profile/&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;/span&amp;gt;, go to &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Add New&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Git&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Set label to &amp;lt;code&amp;gt;fkdr1 FGAddon git-svn repository&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Set the code path to &amp;lt;code&amp;gt;code-fkdr1&amp;lt;/code&amp;gt;.  The &amp;lt;code&amp;gt;code-*&amp;lt;/code&amp;gt; prefix is to differentiate this from the &amp;lt;code&amp;gt;forum-*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wiki-*&amp;lt;/code&amp;gt;, and other directories.&lt;br /&gt;
&lt;br /&gt;
The repository will be located at &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://sourceforge.net/u/&amp;lt;username&amp;gt;/code-fkdr1/ci/master/tree/&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Development teams ===&lt;br /&gt;
&lt;br /&gt;
If you and a group of friends would like to privately develop one of the FGAddon aircraft as a team, assuming that the you have contacted the original aircraft authors and the aircraft is not actively being developed, then you should create a SourceForge development team.  A team leader should be appointed to set this up under their SourceForge account.  Assuming you wish to develop the &amp;quot;ornithopter&amp;quot; aircraft, the steps are:&lt;br /&gt;
&lt;br /&gt;
* Go to &amp;lt;code&amp;gt;Personal tools&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Click on &amp;lt;code&amp;gt;User Permissions&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Click on &amp;lt;code&amp;gt;Add a new group&amp;lt;/code&amp;gt; at the bottom.&lt;br /&gt;
* Set the name to &amp;lt;code&amp;gt;ornithopter&amp;lt;/code&amp;gt;, and save.&lt;br /&gt;
* Click on &amp;lt;code&amp;gt;Add&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;ornithopter&amp;lt;/code&amp;gt; group and add the SourceForge names of all your team members.&lt;br /&gt;
&lt;br /&gt;
After setting up a private repository in the team leader's account, as described below, then the development team should be set up for the repository.&lt;br /&gt;
&lt;br /&gt;
* Go to the repository under your SourceForge account.&lt;br /&gt;
* Click on &amp;lt;code&amp;gt;Admin - &amp;lt;repository name&amp;gt;&amp;lt;/code&amp;gt;, then select &amp;lt;code&amp;gt;Permissions&amp;lt;/code&amp;gt;.&lt;br /&gt;
* In the &amp;lt;code&amp;gt;Write&amp;lt;/code&amp;gt; section, remove &amp;lt;code&amp;gt;Developer&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;ornithopter&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Click on &amp;lt;code&amp;gt;Save&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The development team will then have commit access to the private repository.&lt;br /&gt;
&lt;br /&gt;
=== Team communications ===&lt;br /&gt;
&lt;br /&gt;
To help with team development, the SourceForge infrastructure allows for multiple [https://sourceforge.net/p/forge/documentation/Discussion/ dedicated discussion forums] to be created.  This can either be within a SourceForge project or under a SourceForge users homepage.  This allows the team leader to create a forum dedicated solely to the development of the aircraft of interest.  Continuing with the &amp;lt;code&amp;gt;ornithopter&amp;lt;/code&amp;gt; example, the steps for the team leader are simple:&lt;br /&gt;
&lt;br /&gt;
* On your profile page at &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;https://sourceforge.net/u/&amp;lt;username&amp;gt;/profile/&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;/span&amp;gt;, go to &amp;lt;code&amp;gt;Personal tools&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Admin&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Click on the &amp;lt;code&amp;gt;Tools&amp;lt;/code&amp;gt; option in the left hand menu.&lt;br /&gt;
* Click on &amp;lt;code&amp;gt;Discussion&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;Click to install&amp;lt;/code&amp;gt; section.&lt;br /&gt;
* Change the label to &amp;lt;code&amp;gt;Ornithopter forum&amp;lt;/code&amp;gt;, and the path to &amp;lt;code&amp;gt;forum-ornithopter&amp;lt;/code&amp;gt;, for example.  The &amp;lt;code&amp;gt;forum-*&amp;lt;/code&amp;gt; prefix is to differentiate this from the &amp;lt;code&amp;gt;code-*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wiki-*&amp;lt;/code&amp;gt;, and other directories.&lt;br /&gt;
* Click on &amp;lt;code&amp;gt;Save&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
More details are given on the [https://sourceforge.net/p/forge/documentation/Discussion/ SourceForge Discussion documentation].&lt;br /&gt;
&lt;br /&gt;
== Development scenarios ==&lt;br /&gt;
&lt;br /&gt;
=== Individual developer ===&lt;br /&gt;
&lt;br /&gt;
{{Note|Development scenario:  You are an individual developer and will use the native Subversion tools.}}&lt;br /&gt;
&lt;br /&gt;
This is by far the simplest development scenario and should be used in most cases.  If you are using the command line Subversion client, you can checkout an individual aircraft with:&lt;br /&gt;
{{#tag:syntaxhighlight|&lt;br /&gt;
{{fgaddon co&lt;br /&gt;
| login    = &amp;lt;username&amp;gt;&lt;br /&gt;
| path     = Aircraft/wrightFlyer1903&lt;br /&gt;
| post     = &lt;br /&gt;
}}&lt;br /&gt;
| lang = &amp;quot;sh&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;code&amp;gt;&amp;lt;username&amp;gt;&amp;lt;/code&amp;gt; is your SourceForge user name.  Alternatively you can checkout all aircraft with:&lt;br /&gt;
{{#tag:syntaxhighlight|&lt;br /&gt;
{{fgaddon co&lt;br /&gt;
| login    = &amp;lt;username&amp;gt;&lt;br /&gt;
| post     = flightgear-fgaddon&lt;br /&gt;
}}&lt;br /&gt;
| lang = &amp;quot;sh&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
If you do not have commit access, type one of:&lt;br /&gt;
{{#tag:syntaxhighlight|&lt;br /&gt;
{{fgaddon co&lt;br /&gt;
| path     = Aircraft/wrightFlyer1903&lt;br /&gt;
| post     = &lt;br /&gt;
}}&lt;br /&gt;
{{fgaddon co&lt;br /&gt;
| post     = flightgear-fgaddon&lt;br /&gt;
}}&lt;br /&gt;
| lang = &amp;quot;sh&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
To use the new local svn repository, see the [[#Subversion|subversion instructions]].&lt;br /&gt;
&lt;br /&gt;
=== Individual developer (git-svn) ===&lt;br /&gt;
&lt;br /&gt;
{{Note|Development scenario:  You are an individual developer and will use the git-svn tools.}}&lt;br /&gt;
&lt;br /&gt;
This is more complicated than using the native SVN tools, but can be useful without having FGAddon commit access, as multiple local commits can be made to be sent to the original aircraft authors or to the development mailing list/forum.  To clone the aircraft of choice into a new git repository, type:&lt;br /&gt;
{{#tag:syntaxhighlight|&lt;br /&gt;
{{fgaddon source|cmd=git svn clone|protocol=svn+ssh|login=&amp;lt;username&amp;gt;|type=svn|path=Aircraft/&amp;lt;aircraft&amp;gt;|full=1}}&lt;br /&gt;
| lang = &amp;quot;sh&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;code&amp;gt;&amp;lt;username&amp;gt;&amp;lt;/code&amp;gt; is your infrastructure user name and &amp;lt;code&amp;gt;&amp;lt;aircraft&amp;gt;&amp;lt;/code&amp;gt; is the directory name in the FGAddon repository. This is valid whether or not you have commit permissions.&lt;br /&gt;
&lt;br /&gt;
To use the new local git repository, see the [[#Git-svn|git-svn instructions]] and [[#Deficiencies_of_git-svn|its deficiencies]].&lt;br /&gt;
&lt;br /&gt;
==== Upload to Sourceforge ====&lt;br /&gt;
&lt;br /&gt;
To share the local developments, the changes can be uploaded to a remote git repository on the SourceForge infrastructure.  For this, a [[#Developer_git_repository|developer git repository]] should first be set up under your SourceForge profile.  Then add this as a remote:&lt;br /&gt;
{{#tag:syntaxhighlight|&lt;br /&gt;
{{sourceforge url|cmd=git remote add|opt=origin|protocol=ssh|login=&amp;lt;username&amp;gt;|user=&amp;lt;username&amp;gt;|type=git|repo=code-&amp;lt;aircraft&amp;gt;}}&lt;br /&gt;
| lang = &amp;quot;sh&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
And send the master branch where developments are located with:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git push --set-upstream origin master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The changes in the new repository will be visible via the web interface at {{#tag:span|{{#tag:tt|{{#tag:nowiki|{{sourceforge url|user=&amp;lt;username&amp;gt;|repo=code-&amp;lt;aircraft&amp;gt;|branch=master}}}}}}| style=&amp;quot;color: blue&amp;quot;}}.&lt;br /&gt;
&lt;br /&gt;
=== Sending external git repository changes into FGAddon ===&lt;br /&gt;
&lt;br /&gt;
{{Note|Development scenario:  You are an individual developer with FGAddon commit access and wish to transfer the commits in a remote git repository into FGAddon using a temporary local git repository.}}&lt;br /&gt;
&lt;br /&gt;
Firstly clone the FGAddon aircraft into a local git-svn repository with:&lt;br /&gt;
{{#tag:syntaxhighlight|&lt;br /&gt;
{{fgaddon source|cmd=git svn clone|protocol=svn+ssh|login=&amp;lt;username&amp;gt;|type=svn|path=Aircraft/&amp;lt;aircraft&amp;gt;|full=1}}&lt;br /&gt;
| lang = &amp;quot;sh&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
This will create a new local git repository linked to FGAddon via git-svn.  If the aircraft is new and not present in FGAddon, see the [[#New_aircraft|instructions for adding a new aircraft to FGAddon]].  Next, set up the remote git repository as a remote, and fetch it:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote add &amp;lt;name&amp;gt; &amp;lt;url&amp;gt;&lt;br /&gt;
git fetch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;code&amp;gt;&amp;lt;url&amp;gt;&amp;lt;/code&amp;gt; is the URL of the remote git repository.  Finally make an ordered list of all hashes of the commits to be sent into FGAddon, from earliest to latest, and cherry-pick them into the git-svn master branch:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git cherry-pick &amp;lt;commit hash 1&amp;gt;&lt;br /&gt;
git cherry-pick &amp;lt;commit hash 2&amp;gt;&lt;br /&gt;
git cherry-pick &amp;lt;commit hash 3&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the git-svn local repository should only have a single &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; branch and only consist of cherry-picking.  To see the changes queued for sending to FGAddon:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git log git-svn..HEAD&lt;br /&gt;
git diff git-svn..HEAD&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then to send the changes to FGAddon, firstly pull in any remote changes, and send the commits:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git svn rebase&lt;br /&gt;
git svn dcommit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The temporary local repository can then be deleted.&lt;br /&gt;
&lt;br /&gt;
=== Connecting an existing git repository to FGAddon ===&lt;br /&gt;
&lt;br /&gt;
{{Note|Development scenario:  You are an individual developer or team leader with FGAddon commit access and wish to connect a pre-existing remote git repository with FGAddon to send all changes back to FGAddon.}}&lt;br /&gt;
&lt;br /&gt;
If a remote git repository containing a developed aircraft already exists, it is possible to connect it to the remote FGAddon repository using the git-svn tools.  The following uses the [[#Dedicated_FGAddon_branch|dedicated FGAddon branch technique]].  Firstly, set up the bridge to FGAddon using git-svn in the per-aircraft repository:&lt;br /&gt;
{{#tag:syntaxhighlight|&lt;br /&gt;
{{fgaddon source|cmd=git svn init|protocol=svn+ssh|login=&amp;lt;username&amp;gt;|type=svn|path=Aircraft/&amp;lt;aircraft&amp;gt;|full=1}}&lt;br /&gt;
| lang = &amp;quot;sh&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;code&amp;gt;&amp;lt;aircraft&amp;gt;&amp;lt;/code&amp;gt; is the aircraft directory name in FGAddon.  Note that this step can be performed without commit access to FGAddon by using a read-only SVN URL instead, but then changes cannot be pushed back to FGAddon ([[#Synchronising|dcommitting]], as it is known in the git-svn terminology).  However, this allows upstream FGAddon changes to be integrated into the remote git repository, thus making it easy to prepare changes for submission for FGAddon inclusion using patches sent to the mailing list or sent via other channels.&lt;br /&gt;
&lt;br /&gt;
Now fetch the current state from the remote FGAddon repository:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git svn fetch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The downloaded SVN history is in the remote branch &amp;lt;code&amp;gt;remotes/git-svn&amp;lt;/code&amp;gt;.  To commit changes to SVN you need a local branch that tracks this remote branch.  Create a local &amp;lt;code&amp;gt;fgaddon&amp;lt;/code&amp;gt; branch that you will use to commit updates:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git branch fgaddon remotes/git-svn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After committing new stuff to the &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; branch, to push to FGAddon checkout the &amp;lt;code&amp;gt;fgaddon&amp;lt;/code&amp;gt; branch and update it from SVN in case someone else has touched the aircraft in the remote FGAddon repository:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout fgaddon&lt;br /&gt;
git svn rebase&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cherry-pick the new commits from &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;fgaddon&amp;lt;/code&amp;gt; to preserve a linear history:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git cherry-pick &amp;lt;commit hash 1&amp;gt;&lt;br /&gt;
git cherry-pick &amp;lt;commit hash 2&amp;gt;&lt;br /&gt;
git cherry-pick &amp;lt;commit hash 3&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the changes queued for sending to FGAddon as either commits or a diff, type:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git log git-svn..HEAD&lt;br /&gt;
git diff git-svn..HEAD&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If everything looks ok, dcommit the local commits on the &amp;lt;code&amp;gt;fgaddon&amp;lt;/code&amp;gt; branch to send them to the remote FGAddon SVN repository:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git svn dcommit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Switch back to the master branch for local development:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get changes from upstream you can either just download them with&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git svn fetch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or download them and rebase your &amp;lt;code&amp;gt;fgaddon&amp;lt;/code&amp;gt; branch onto them:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout fgaddon&lt;br /&gt;
git svn rebase&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team development ===&lt;br /&gt;
&lt;br /&gt;
{{Note|Development scenario:  All members of the team are acting as gatekeepers, and all commits are made directly to FGAddon, either using svn or git-svn.}}&lt;br /&gt;
&lt;br /&gt;
The simplest way to work as a team is for each developer to either have a [[#Individual developer|svn copy of FGAddon]] or a [[#Individual developer (git-svn)|git-svn copy of FGAddon]], and everyone commits directly to FGAddon.  Communication and coordination between the team members can be performed using a [[#Team_communications|team leader organised SourceForge forum]] or using the [http://forum.flightgear.org/ FlightGear forum].  In this scenario, the team needs to take the initiative and everyone apply for FGAddon commit access.&lt;br /&gt;
&lt;br /&gt;
=== Private team development (git-svn) ===&lt;br /&gt;
&lt;br /&gt;
{{Note|Development scenario:  One team leader is acting as the gatekeeper on a private git repository hosted on the in-house SourceForge infrastructure, using git-svn to push a fgaddon branch to FGAddon, with team members committing directly to the private git repository or making merge requests from their fork of the private repository.}}&lt;br /&gt;
&lt;br /&gt;
To keep everything in-house, the entire operation will be based on the official infrastructure and remote repositories under each user's SourceForge (SF) profile.  Note to the team leader - you must [https://git-scm.com/book/en/v1/Git-and-Other-Systems-Git-and-Subversion#git-svn keep your git-svn history linear] (meaning that a [[#Dedicated_FGAddon_branch|dedicated FGAddon branch]] should be created and changes manually cherry-picked into this branch).  In the following, the &amp;lt;code&amp;gt;ornithopter&amp;lt;/code&amp;gt; aircraft will be used as an example.&lt;br /&gt;
&lt;br /&gt;
==== The team ====&lt;br /&gt;
&lt;br /&gt;
Firstly, the entire team should sign up for [[#SourceForge account|SourceForge accounts]].&lt;br /&gt;
&lt;br /&gt;
==== Team leader ====&lt;br /&gt;
&lt;br /&gt;
===== Private repository set up =====&lt;br /&gt;
&lt;br /&gt;
These steps are to be taken by the team leader.  In your SourceForge user profile, set up a [[#Developer_git_repository| git repository]] with the label &amp;lt;code&amp;gt;Ornithopter FGAddon git-svn repository&amp;lt;/code&amp;gt; and code path &amp;lt;code&amp;gt;code-ornithopter&amp;lt;/code&amp;gt;.  Then create a empty local git repository:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ mkdir ornithopter&lt;br /&gt;
$ cd ornithopter&lt;br /&gt;
$ git init&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Link the empty repository to the &amp;lt;code&amp;gt;ornithopter&amp;lt;/code&amp;gt; aircraft directory in the remote FGAddon repository and pull it in with:&lt;br /&gt;
{{#tag:syntaxhighlight|&lt;br /&gt;
$ {{fgaddon source|cmd=git svn init|protocol=svn+ssh|login=&amp;lt;username&amp;gt;|type=svn|path=Aircraft/ornithopter|full=1}}&lt;br /&gt;
$ git svn fetch&lt;br /&gt;
| lang = &amp;quot;sh&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Replace &amp;lt;code&amp;gt;&amp;lt;username&amp;gt;&amp;lt;/code&amp;gt; with your SF user name.  Set up a special git-svn branch for FGAddon gatekeeping and dcommitting changes back to the repository:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ git branch fgaddon remotes/git-svn&lt;br /&gt;
$ git checkout fgaddon&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And pull in the &amp;lt;code&amp;gt;ornithopter&amp;lt;/code&amp;gt; from FGAddon:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ git svn rebase&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the current local git-svn repository setup, type:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ git branch -vva&lt;br /&gt;
$ git remote -v&lt;br /&gt;
$ git svn info &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then return to the master branch:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ git checkout master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, set up the remote git repository as a remote:&lt;br /&gt;
{{#tag:syntaxhighlight|&lt;br /&gt;
$ {{sourceforge url|cmd=git remote add|opt=origin|protocol=ssh|login=&amp;lt;username&amp;gt;|user=&amp;lt;username&amp;gt;|type=git|repo=code-ornithopter}}&lt;br /&gt;
| lang = &amp;quot;sh&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
And send the master branch to the remote git repository:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ git push -u origin master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the new set up:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ git branch -vva&lt;br /&gt;
$ git remote -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The repository will be located at {{#tag:span|{{#tag:tt|{{#tag:nowiki|{{sourceforge url|user=&amp;lt;username&amp;gt;|repo=code-ornithopter|branch=master}}}}}}| style=&amp;quot;color: blue&amp;quot;}}.  Note that the git-svn information stored in the &amp;lt;code&amp;gt;.git/svn&amp;lt;/code&amp;gt; directory will not be pushed to remote SoureForge repository, and therefore the link back to FGAddon will only be present in the local copy of the team leader.  The git-svn link can be re-established at a later point if necessary.&lt;br /&gt;
&lt;br /&gt;
===== Team setup =====&lt;br /&gt;
&lt;br /&gt;
Set up a [[#Development teams|dedicated development team and grant them access to the git-svn repository]].&lt;br /&gt;
&lt;br /&gt;
===== Pushing to FGAddon =====&lt;br /&gt;
&lt;br /&gt;
Committing to FGAddon is for the local git repository of the team leader.  History must be linear in the fgaddon branch, so cherry-picking is the way to go.  This is from the [[#Individual developer (git-svn)|Individual developer (git-svn)]] section.  In the local git repository, switch to the &amp;lt;code&amp;gt;fgaddon&amp;lt;/code&amp;gt; branch:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout fgaddon&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pull in any changes which have occurred in FGAddon:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git svn rebase&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the commits in the &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; branch which are not in the &amp;lt;code&amp;gt;fgaddon&amp;lt;/code&amp;gt; branch, type one of:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git log HEAD..master&lt;br /&gt;
git log HEAD..master --pretty=oneline&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manually select the commits to be sent to FGAddon and cherry-pick them:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git cherry-pick &amp;lt;commit hash 1&amp;gt;&lt;br /&gt;
git cherry-pick &amp;lt;commit hash 2&amp;gt;&lt;br /&gt;
git cherry-pick &amp;lt;commit hash 3&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or to cherry-pick a range of commits:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git cherry-pick &amp;lt;commit hash 1&amp;gt;^..&amp;lt;commit hash 8&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then check what is to be sent:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git log git-svn..HEAD&lt;br /&gt;
git diff git-svn..HEAD&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Send the changes to FGAddon, send the git &amp;lt;code&amp;gt;fgaddon&amp;lt;/code&amp;gt; branch changes to the remote git repository, and switch back to the master branch:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git svn dcommit&lt;br /&gt;
git push&lt;br /&gt;
git checkout master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally merge in the git svn commits with their new hashes from the &amp;lt;code&amp;gt;fgaddon&amp;lt;/code&amp;gt; branch, and send it to the remote git repository:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git merge fgaddon&lt;br /&gt;
git push&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Team members ====&lt;br /&gt;
&lt;br /&gt;
===== Working with the repository =====&lt;br /&gt;
&lt;br /&gt;
Each team member should make a clone of the private git repository:&lt;br /&gt;
{{#tag:syntaxhighlight|&lt;br /&gt;
$ {{sourceforge source|cmd=git clone|protocol=ssh|login=&amp;lt;username&amp;gt;|user=&amp;lt;username_leader&amp;gt;|type=git|repo=code-ornithopter|post=ornithopter|full=1}}&lt;br /&gt;
| lang = &amp;quot;sh&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Replace &amp;lt;code&amp;gt;&amp;lt;username&amp;gt;&amp;lt;/code&amp;gt; with your SourceForge user name, and &amp;lt;code&amp;gt;&amp;lt;username_leader&amp;gt;&amp;lt;/code&amp;gt; is the SourceForge user name of the team leader.&lt;br /&gt;
&lt;br /&gt;
===== Forking and merge requests =====&lt;br /&gt;
&lt;br /&gt;
Alternatively, each team member can fork the git repository under your SourceForge account:&lt;br /&gt;
* Go to {{#tag:span|{{#tag:tt|{{#tag:nowiki|{{sourceforge source|user=&amp;lt;username&amp;gt;|repo=code-ornithopter|branch=master|full=1}}}}}}| style=&amp;quot;color: blue&amp;quot;}}, where &amp;lt;code&amp;gt;&amp;lt;username&amp;gt;&amp;lt;/code&amp;gt; is the SourceForge user name of the team leader.&lt;br /&gt;
* Click on &amp;lt;code&amp;gt;Fork&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Set the mount point to &amp;lt;code&amp;gt;code-ornithopter&amp;lt;/code&amp;gt; and change the label as you wish.&lt;br /&gt;
&lt;br /&gt;
Develop and push to your fork, then make merge requests by clicking on the &amp;lt;code&amp;gt;Request Merge&amp;lt;/code&amp;gt; button.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:FlightGear]]&lt;br /&gt;
&lt;br /&gt;
[[de:FGAddon]]&lt;br /&gt;
[[fr:FGAddon]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Suggested_airports&amp;diff=107978</id>
		<title>Suggested airports</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Suggested_airports&amp;diff=107978"/>
		<updated>2017-05-31T17:45:35Z</updated>

		<summary type="html">&lt;p&gt;AndersM: Correct ICAO&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here you will find Airports that are well developed and/or have an outstanding scenery. Thus they are &amp;quot;suggested&amp;quot; especially to be visited and/or used for Multi-player events like FlyIns, TGA, ATC, etc..&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
If you are searching for the '''development-status of Airports''' see the wiki [[Developed Airports]].&lt;br /&gt;
&amp;lt;br /&amp;gt;For further suggestions see [[Suggested Scenery]] and [[Suggested Flights]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The overall Airport-Rating (column &amp;quot;R&amp;quot;) is based on the TerraSync-Status of the following characteristics:&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:center&amp;quot;| * !!style=&amp;quot;text-align:left&amp;quot;| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; superior surrounding landscape - although the airport itself is not (yet) developed accordingly&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:center&amp;quot;| ** !!style=&amp;quot;text-align:left&amp;quot;| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; complex modeling of buildings&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:center&amp;quot;| *** !!style=&amp;quot;text-align:left&amp;quot;| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; complex modeling of buildings, taxiways, and aprons&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:center&amp;quot;| **** !!style=&amp;quot;text-align:left&amp;quot;| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  extensive modeling of airport and landscape and/or city&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Further columns to watch for are:&lt;br /&gt;
* '''S = Size:''' L= all aircraft, M= midium size aircraft, S= for small aircraft&lt;br /&gt;
* '''FGCOM:''' If available one FGCOM frequency is given, followed by the amount of the total available FGCOM frequencies&lt;br /&gt;
* '''Parking:''' amount of pre-defined Parking-Lots (otherwise see: [[Initial Starting Positions]])&lt;br /&gt;
* '''R/I:''' amount of runways and ILS (e.g. KROC has 3 runway: 04/22 has each 1 ILS, 10/28 has only one ILS on 28, 07/25 has no ILS)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
! width=&amp;quot;40&amp;quot;  | ICAO &lt;br /&gt;
! width=&amp;quot;130&amp;quot; | Name&lt;br /&gt;
! width=&amp;quot;80&amp;quot;  | Country&lt;br /&gt;
! width=&amp;quot;80&amp;quot;  | Continent&lt;br /&gt;
! width=&amp;quot;30&amp;quot;  | R&lt;br /&gt;
! width=&amp;quot;30&amp;quot;  | S&lt;br /&gt;
! width=&amp;quot;100&amp;quot; | FGCOM&lt;br /&gt;
! width=&amp;quot;50&amp;quot;  | Parking&lt;br /&gt;
! width=&amp;quot;40&amp;quot;  | R/I&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;background:#efefef&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| LKKB || Praha-Kbely || Czech republic || Europe ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 120.87 ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/1 || request for develop it - Military Airport&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| BKPR || Pristina || Kosovo || Europe ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/1 || very nice scenery&lt;br /&gt;
|- &lt;br /&gt;
| CYVR || [[Vancouver International Airport|Vancouver]] || Canada || America ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 125.650 (6) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 5/5 || nice area&lt;br /&gt;
|-&lt;br /&gt;
| EDDC || [[Dresden Airport|Dresden Airport]] || Germany || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| - ||align=&amp;quot;center&amp;quot;| 2/4 || Terminal, Tower, GA Hangars and many more&lt;br /&gt;
|- &lt;br /&gt;
| EDDF || [[Frankfurt am Main Airport|Frankfurt am Main]] || Germany || Europe || align=&amp;quot;center&amp;quot; | **** || align=&amp;quot;center&amp;quot; | L || align=&amp;quot;center&amp;quot; | 127.320 (6) || align=&amp;quot;center&amp;quot; | many ||align=&amp;quot;center&amp;quot;| 4/6 || Fully modeled with [[Signs]] and [[Interactive Traffic]] and unique scycrapers downtown&lt;br /&gt;
|-&lt;br /&gt;
| EDDH || [[Hamburg Airport|Hamburg]] || Germany || Europe ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 126.850 (7) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/4 || Fully modeled, plus unique buildings downtown|-&lt;br /&gt;
|-&lt;br /&gt;
| EDDI || [[EDDI|Berlin Tempelhof]] || Germany || Europe ||align=&amp;quot;center&amp;quot;| **** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 118.100 (10) ||align=&amp;quot;center&amp;quot;| 1 ||align=&amp;quot;center&amp;quot;| 2/0 || Fully modeled, especially also the City&lt;br /&gt;
|-&lt;br /&gt;
| EDDK || [[EDDK|Köln/Bonn]] || Germany || Europe ||align=&amp;quot;center&amp;quot;| **** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 124.97 (5) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 3/3 || Fully modeled airport and surroundings&lt;br /&gt;
|-&lt;br /&gt;
| EDDL || [[Düsseldorf International Airport|Düsseldorf]] || Germany || Europe ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 118.300 (4) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/4 || Tower and terminal modeled&lt;br /&gt;
|-&lt;br /&gt;
| EDDP || [[Leipzig/Halle Airport|Leipzig/Halle]] || Germany || Europe ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 121.100 (5) ||align=&amp;quot;center&amp;quot;| 2 ||align=&amp;quot;center&amp;quot;| 2/4 || Tower, terminals B and C, large DHL-area modeled, inclusive [[Signs]]&lt;br /&gt;
|-&lt;br /&gt;
| EDDS || Stuttgart || Germany || Europe ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 118.800 (8) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/2 || Tower, terminal and  [[Signs]] are fully modeled&lt;br /&gt;
|-&lt;br /&gt;
| EDDT || [[Berlin Tegel Airport|Berlin Tegel]] || Germany || Europe ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 118.700 (11) ||align=&amp;quot;center&amp;quot;| 4 ||align=&amp;quot;center&amp;quot;| 2/4 || Tower and terminal modeled, inclusive [[Signs]]&lt;br /&gt;
|-&lt;br /&gt;
| EDDV || [[EDDV|Hannover]] || Germany || Europe ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 120.170 (3)) ||align=&amp;quot;center&amp;quot;| 4 ||align=&amp;quot;center&amp;quot;| 2/4 || Tower and terminal modeled&lt;br /&gt;
|-&lt;br /&gt;
| EDDW || Bremen || Germany || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 118.500 (7) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/2 || very nicely modeled&lt;br /&gt;
|-&lt;br /&gt;
| EDFH || Frankfurt Hahn || Germany || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 119.65 (7) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/2 || very nicely model (use Terrasync)&lt;br /&gt;
|-&lt;br /&gt;
| EDLN || Mönchengladbach || Germany || Europe ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| - ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| - || very nicely modeled&lt;br /&gt;
|-&lt;br /&gt;
| EDVE || [[Braunschweig Airport|Braunschweig]] || Germany || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| 119.350 (2) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/1 || &lt;br /&gt;
|-&lt;br /&gt;
| EDXW || Westerland Sylt || Germany || Europe ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 119.75 (2) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/1 || very nicely model famous sea-resort (use Terrasync)&lt;br /&gt;
|-&lt;br /&gt;
| EEKE || Kuressaare || Estonia || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| 119.700 (4) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/0 || &lt;br /&gt;
|-&lt;br /&gt;
| EFHF || Helsinki-Malmi || Finland || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| 119.700 (4) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/0 || &lt;br /&gt;
|-&lt;br /&gt;
| EFHK || Helsinki || Finland || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 119.700 (5) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 3/5 || Nice terminal and city landmarks&lt;br /&gt;
|-&lt;br /&gt;
| EEPU || Parnu || Estonia || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/0 || Nice triangle EETN-EETU-EEPU&lt;br /&gt;
|-&lt;br /&gt;
| EETN || Tallinn || Estonia || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/2 || Nice triangle EETN-EETU-EEPU&lt;br /&gt;
|-&lt;br /&gt;
| EETU || Tartu || Estonia || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/0 || Nice triangle EETN-EETU-EEPU&lt;br /&gt;
|-&lt;br /&gt;
| EGFF || Cardiff || UK || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 125.00 (3) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/2 ||&lt;br /&gt;
|-&lt;br /&gt;
| EGGP || Liverpool || UK || Europe ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 126.350 (4) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/2 ||&lt;br /&gt;
|-&lt;br /&gt;
| EGGW || Luton || UK || Europe ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 126.720 (6) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/2 ||&lt;br /&gt;
|-&lt;br /&gt;
| EGKA || Shoreham || UK || Europe ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| 125.400 (3) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 3/0 ||&lt;br /&gt;
|-&lt;br /&gt;
| EGKK || [[London Gatwick Airport|London-Gatwick]] || UK || Europe ||align=&amp;quot;center&amp;quot;| **** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 124.220 (8) ||align=&amp;quot;center&amp;quot;| 6 ||align=&amp;quot;center&amp;quot;| 1/2 ||&lt;br /&gt;
|-&lt;br /&gt;
| EGLL || London-Heathrow || UK || Europe ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 118.500 (14) ||align=&amp;quot;center&amp;quot;| 3 ||align=&amp;quot;center&amp;quot;| 2/4 ||&lt;br /&gt;
|-&lt;br /&gt;
| EGPH || Edinburgh || UK || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 118.700 (4) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/2 ||&lt;br /&gt;
|-&lt;br /&gt;
| EGSH || Norwich || UK || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 124.250 (3) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/1 ||&lt;br /&gt;
|-&lt;br /&gt;
| EGUN || RAF Mildenhall || UK || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 122.550 (5) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/1 || USAF base for tankers and cargo planes near other military air bases like EGUL, EGYM, EGXH,... will have buildings soon. ATC is also provided.&lt;br /&gt;
|-&lt;br /&gt;
| EHAM || [[Amsterdam Airport Schiphol|Amsterdam]] || Netherlands || Europe ||align=&amp;quot;center&amp;quot;| **** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 119.220 (1) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 6/6 ||One of the best modeled airports in the FlightGear world; most dense AI traffic.&lt;br /&gt;
|-&lt;br /&gt;
| EHEH || Eindhoven || Netherlands || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 131.000 (6) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/2 ||&lt;br /&gt;
|-&lt;br /&gt;
| EHLE || [[Lelystad Airport|Lelystad]] || Netherlands || Europe ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1 ||align=&amp;quot;center&amp;quot;| 2/1 || Basic scenery models, home of [[FSweekend]].&lt;br /&gt;
|-&lt;br /&gt;
| EHVK || [[Volkel Air Base|Volkel]] || Netherlands || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 123.170 (1) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 2/2 ||&lt;br /&gt;
|-&lt;br /&gt;
| EIDW || [[Dublin Airport|Dublin]] || Ireland || Europe ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 118.600 (7) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 3/3 ||&lt;br /&gt;
|-&lt;br /&gt;
| ELLX || Luxembourg || Luxembourg || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 118.100 (2) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/2 || very nicely model (use Terrasync)&lt;br /&gt;
|-&lt;br /&gt;
| ENAL || Alesund || Norway || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 118.100 (4) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/1 ||&lt;br /&gt;
|-&lt;br /&gt;
| ENSD || Alesund || Norway || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/0 ||&lt;br /&gt;
|-&lt;br /&gt;
| ENVA || Trondheim || Norway || Europe ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 122.100 (6) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/2 ||&lt;br /&gt;
|-&lt;br /&gt;
| ESGP || Göteborg || Sweden || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 129.100 (3) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/1 ||&lt;br /&gt;
|-&lt;br /&gt;
| FACT || Cape Town || South Africa || Africa ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 118.100 (4) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 2/2 ||nice area&lt;br /&gt;
|-&lt;br /&gt;
| FAJS || Johannisburg || South Africa || Africa ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 121.900 (3) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 2/3 ||high (5000), in mountains&lt;br /&gt;
|-&lt;br /&gt;
| FHAW || RAF Ascension Island AUX AF || Ascension Island || Africa ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 126.200 (2) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/0 ||RAF and USAF auxiliary base. Developed layout, in the middle of the Atlantic Ocean, great place for military flights.&lt;br /&gt;
|-&lt;br /&gt;
| GCFV || Fuerteventura || Gran Canaria || Africa ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 119.200 (4) ||align=&amp;quot;center&amp;quot;| 9 ||align=&amp;quot;center&amp;quot;| 1/1 ||nice island area&lt;br /&gt;
|-&lt;br /&gt;
| KABQ || Albuquerque || USA NM || America ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 120.300 (10) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 4/2 ||&lt;br /&gt;
|-&lt;br /&gt;
| HECA || Cairo || Egypt || Africa ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 120.300 (10) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 4/2 || near pyramids&lt;br /&gt;
|-&lt;br /&gt;
| KATL || Atlanta || USA GA || America ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 119.550 (4) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 3/4 ||&lt;br /&gt;
|-&lt;br /&gt;
| KAUS || Austin || USA TX || America ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 121.00 (10) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/4 ||&lt;br /&gt;
|-&lt;br /&gt;
| KBWI || Baltimore || USA MD || America ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 119.400 (10) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 4/6 ||&lt;br /&gt;
|-&lt;br /&gt;
| KCGS || College Park || USA MD || America ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| 119.850 (3) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/0 ||&lt;br /&gt;
|-&lt;br /&gt;
| KDCA || Reagan National || USA VA || America ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 120.750 (7) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 3/2 ||&lt;br /&gt;
|-&lt;br /&gt;
| KDEN || [[Denver International Airport|Denver]] || USA CO || America ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 133.300 (16) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 6/12 ||&lt;br /&gt;
|-&lt;br /&gt;
| KDTW || Detroit || USA MI || America ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 118.400 (15) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 6/8 ||&lt;br /&gt;
|-&lt;br /&gt;
| KFHR || Friday Harbor || USA WA || America ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/0 ||&lt;br /&gt;
|-&lt;br /&gt;
| KHAF || Half Moon Bay || USA CA || America ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 122.800 (2) ||align=&amp;quot;center&amp;quot;| 4 ||align=&amp;quot;center&amp;quot;| 1/0 ||nice area - near KSFO&lt;br /&gt;
|-&lt;br /&gt;
| KHWD || Hayward || USA CA || America ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| 122.500 (10) ||align=&amp;quot;center&amp;quot;| 9 ||align=&amp;quot;center&amp;quot;| 2/1 ||nice area - near KSFO&lt;br /&gt;
|-&lt;br /&gt;
| KIAD || Washington-Dulles || USA VA || America ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 120.100 (14) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 4/3 ||&lt;br /&gt;
|-&lt;br /&gt;
| KIND || Indianapolis || USA IN || America ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 127.820 (7) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 3/6 ||&lt;br /&gt;
|-&lt;br /&gt;
| KJAN || Jackson-Evers || USA MS || America ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/2 ||&lt;br /&gt;
|-&lt;br /&gt;
| KJFK || [[John F. Kennedy International Airport|John F. Kennedy]] || USA NY || America ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 119.100 (18) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 4/5 ||&lt;br /&gt;
|-&lt;br /&gt;
| KLAS || Las Vegas || USA NV || America ||align=&amp;quot;center&amp;quot;| **** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 119.900 (9) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 4/3 || terminal and some casinos modeled&lt;br /&gt;
|-&lt;br /&gt;
| KLAX || [[Los Angeles International Airport|Los Angeles]] || USA CA || America ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 133.900 (7) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 4/8 ||&lt;br /&gt;
|-&lt;br /&gt;
| KLSV || [[Nellis Air Force Base|Nellis Air Force]] || USA NV || America ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 132.550 (6) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/1 ||&lt;br /&gt;
|-&lt;br /&gt;
| KLWD || Lewistown || USA MT || America ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 3/0 ||&lt;br /&gt;
|-&lt;br /&gt;
| KMTN || Martin State || USA MD || America ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 121.300 (4) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/2 || airport and terrain modeled&lt;br /&gt;
|-&lt;br /&gt;
| KNID || China Lake Naval || USA CA || America ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 120.150 (2) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 3/0 ||&lt;br /&gt;
|-&lt;br /&gt;
| KNUQ || Moffett Federal AFLD || USA CA || America ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 119.550 (6) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/2 ||&lt;br /&gt;
|-&lt;br /&gt;
| KOAK || Oakland || USA CA || America ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 127.200 (7) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 4/3 ||&lt;br /&gt;
|-&lt;br /&gt;
| KORD ||[[O'Hare International Airport|Chicago O'Hare]] || USA IL || America ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 7/14 ||&lt;br /&gt;
|-&lt;br /&gt;
| KOSH || Wittman Rgl. || USA WI || America ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 118.500 (4) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 4/1 ||&lt;br /&gt;
|-&lt;br /&gt;
| KOXB || Ocean City Muni. || USA MD || America ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/0 ||&lt;br /&gt;
|-&lt;br /&gt;
| KPDX || Portland || USA OR || America ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 3/5 ||&lt;br /&gt;
|-&lt;br /&gt;
| KPHX || Phoenix || USA AZ || America ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 120.900 (6) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 3/5 || most skyscrapers modeled&lt;br /&gt;
|-&lt;br /&gt;
| KRDU || Raleigh || USA NC || America ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 119.300 (12) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 3/4 ||nice for flying east-coast&lt;br /&gt;
|-&lt;br /&gt;
| KRNO || Reno/Tahoe || USA NZ || America ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 118.700 (7) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 3/2 ||High in Clouds&lt;br /&gt;
|-&lt;br /&gt;
| KSAN || San Diego || USA AZ || America ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 118.300 (7) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 1/2 ||Interesting area at boarder to mexico&lt;br /&gt;
|-&lt;br /&gt;
| KSEA || [[Seattle-Tacoma International Airport|Seattle Tacoma]] || USA WA || America ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 119.900 (9) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 3/5 || basic terminal model, some skyscrapers modeled&lt;br /&gt;
|-&lt;br /&gt;
| KSFO || [[San Francisco International Airport|San Francisco]] || USA CA || America ||align=&amp;quot;center&amp;quot;| **** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 120.500 (7) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 4/3 ||FGFS Default -- overcrowded&lt;br /&gt;
|-&lt;br /&gt;
| KSLC || Salt Lake City || USA UT || America ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 118.300 (13) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 4/6 ||very high in clouds (4227 ft, 1290 m)&lt;br /&gt;
|-&lt;br /&gt;
| KSJC || [[San Jose International Airport|San Jose]] || USA CA || America ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 124.00 (7) ||align=&amp;quot;center&amp;quot;| 14 ||align=&amp;quot;center&amp;quot;| 3/2 ||Bay-area near KSFO&lt;br /&gt;
|-&lt;br /&gt;
| LDSP || Split || Croatia || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| unknown ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/1 ||Small civil airport with awesome scenery neighboring.&lt;br /&gt;
|-&lt;br /&gt;
| LDZU || Udbina || Croatia || Europe ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/0 ||interesting airport high in Mountains - no ILS&lt;br /&gt;
|-&lt;br /&gt;
| LFFE || Enghien Moisselles || France || Europa ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| --- ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/0 ||nice little Green-Field just north of Paris&lt;br /&gt;
|-&lt;br /&gt;
| LFML || Marseille || France || Europa ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 118.370 (4) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 2/2 ||Mediterranean coast&lt;br /&gt;
|-&lt;br /&gt;
| LFPG || Paris Charles de Gaulle || France || Europa ||align=&amp;quot;center&amp;quot;| **** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 123.600 (23) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 4/8 ||very detailed city of Paris near by&lt;br /&gt;
|-&lt;br /&gt;
| LFPH || Chelles Le Pin || France || Europa ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/0 ||nice little Green-Field just south of Paris&lt;br /&gt;
|-&lt;br /&gt;
| LFPL || Lognes Emerainville || France || Europa ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 3/0 ||nice little airport just south of Paris&lt;br /&gt;
|-&lt;br /&gt;
| LFPO || Paris Orly || France || Europa ||align=&amp;quot;center&amp;quot;| **** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 120.500 (13) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 3/5 ||the older airport at Paris&lt;br /&gt;
|-&lt;br /&gt;
| LFPZ || St-Cyr l'Ecole || France || Europa ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/0 ||nice little airport just west of Paris, near Versailles Castle&lt;br /&gt;
|-&lt;br /&gt;
| LFRJ || Landivisiau || France || Europa ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 119.700 (2) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/1 ||Naval Base&lt;br /&gt;
|-&lt;br /&gt;
| LFSB || [[EuroAirport_Basel-Mulhouse-Freiburg|Basel-Mulhouse]] || Swiss || Europa ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 118.300 (7) ||align=&amp;quot;center&amp;quot;| 5 ||align=&amp;quot;center&amp;quot;| 2/1 || Nice modelling of Terminal.&lt;br /&gt;
|-&lt;br /&gt;
| LHBP || Budapest || Hungaria || Europa ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 118.100 (4) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 2/4 ||in-midst the typical Puszta-area&lt;br /&gt;
|-&lt;br /&gt;
| LILN || Venegono || Italy || Europa ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| 128.550 (1) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/0 ||&lt;br /&gt;
|-&lt;br /&gt;
| LILV || Valbrembo || Italy || Europa ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/0 ||recreation area: Mountains, tennis, pool, etc.&lt;br /&gt;
|-&lt;br /&gt;
| LIMC || Milano Malpensa || Italy || Europa ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 119.000 (11) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/3 ||&lt;br /&gt;
|-&lt;br /&gt;
| LIME || Bergamo-Orio al Serio || Italy || Europa ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 120.500 (5) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/1 ||nice mountain area&lt;br /&gt;
|-&lt;br /&gt;
| LIML || Milano Limate || Italy || Europa ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 119.250 (5) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/1 ||&lt;br /&gt;
|-&lt;br /&gt;
| LIMW || Aosta || Italy || Europa ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 119.950 (1) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/0 ||in a valley in high mountain area&lt;br /&gt;
|-&lt;br /&gt;
| LIPA || [[Aviano Air Base]] || Italy || Europe ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 122.100 ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/1 ||Military airport with various scenery neighboring: Carnic Alps, Po Valley and the Adriatic Sea.&lt;br /&gt;
|-&lt;br /&gt;
| LJCE || Cerklje || Slovenia || Europe ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| - ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/1 || Military airport with civilian part near Croatia&lt;br /&gt;
|-&lt;br /&gt;
| LJLJ || Ljubljana Brnik || Slovenia || Europe ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| - ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/1 || capital of Slovenia&lt;br /&gt;
|-&lt;br /&gt;
| LJPZ || Portorož || Slovenia || Europe ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| - ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/1 || at the adriatic sea&lt;br /&gt;
|-&lt;br /&gt;
| LPLA || [[Lajes Field]] || Azores, Portugal || Europe ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 122.100 ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/1 ||Military-Civil airport with various small islands neighboring.&lt;br /&gt;
|-&lt;br /&gt;
| LQSA || Sarajewo || Bosnia || Europe ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| 118.250 (3) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/1 ||very nice mountain region: LQSA, LYTV, LYPG&lt;br /&gt;
|-&lt;br /&gt;
| LOWI || [[Innsbruck Airport|Innsbruck]] || Austria || Europe ||align=&amp;quot;center&amp;quot;| **** ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| 120.100 (3) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/1 || very nice and difficult approach, wonderful scenery&lt;br /&gt;
|-&lt;br /&gt;
| LROP || Bucharest || Romania || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 121.850 (3) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/4 ||&lt;br /&gt;
|-&lt;br /&gt;
| LSGS || Sion || Swiss || Europe ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| 118.217 (5) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/1 ||Wonderful surrounded by high mountains&lt;br /&gt;
|-&lt;br /&gt;
| LSZH || Zürich-Kloten || Swiss || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 121.800 ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 3/4 ||very nice mountain/lake area&lt;br /&gt;
|-&lt;br /&gt;
| LSZB|| Bern-Belp || Swiss || Europe ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 121.020 (3) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/1 ||&lt;br /&gt;
|-&lt;br /&gt;
| LSZS|| Samedan || Swiss || Europe ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 135,320 (3) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/0 || Very nice high mountain region, AP at 5600 ft (1700 m)&lt;br /&gt;
|-&lt;br /&gt;
| PANC|| Anchorage || USA Alaska || America ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 118.300 (9) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 3/3 ||interesting area&lt;br /&gt;
|-&lt;br /&gt;
| LYBE || Belgrad || Serbia || Europe ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 118.100 (2) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/2 ||&lt;br /&gt;
|-&lt;br /&gt;
| LYPG || Podgorica || Montenegro || Europe ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 118.200 (2) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/1 || very nice mountain region: LQSA, LYTV, LYPG&lt;br /&gt;
|-&lt;br /&gt;
| LYTV || Tivat || Montenegro || Europe ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 118.000 (1) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/1 || very nice mountain region: LQSA, LYTV, LYPG&lt;br /&gt;
|-&lt;br /&gt;
| MUHA || Havana || Cuba || America ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 118.100 (4) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 1/1 ||nice for island-hopping&lt;br /&gt;
|-&lt;br /&gt;
| NZAA || Auckland || New Zealand || Oceania ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 118.700 ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 2/2 ||nice for island-hopping&lt;br /&gt;
|-&lt;br /&gt;
| OMAA || Abu Dahbi || United AE || Asia ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 119.200 ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 1/2 ||interesting area&lt;br /&gt;
|-&lt;br /&gt;
| OOMS || Seeb || United AE || Asia ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 118.400 (5) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 2/2 ||nice sea/mountain area&lt;br /&gt;
|-&lt;br /&gt;
| PHNL || Honolulu || USA Hawaii || America ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 123.900 (5) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 4/2 ||wonderful island scenery&lt;br /&gt;
|-&lt;br /&gt;
| PHOG || Kahului || USA Hawaii || America ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;|  ||align=&amp;quot;center&amp;quot;|  ||align=&amp;quot;center&amp;quot;| 2/1 ||wonderful island scenery&lt;br /&gt;
|-&lt;br /&gt;
| RJTT || [[Tokyo Haneda International Airport|Tokyo]] || Japan || Asia ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 126.200 (6) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 3/3 ||interesting area&lt;br /&gt;
|-&lt;br /&gt;
| RKSI || Seoul || South Korea || Asia ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 118.800 (6) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/4 ||&lt;br /&gt;
|-&lt;br /&gt;
| RPLL || Manila || Philipines || Asia ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 118.100 (5) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/2 ||&lt;br /&gt;
|-&lt;br /&gt;
| TDPD || Melville Hall || Dominica || America ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 118.100 (5) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/2 ||nice area&lt;br /&gt;
|-&lt;br /&gt;
| TFFF || Le Lamentin || Martinique || America ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 118.500 (5) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/1 ||nice area&lt;br /&gt;
|-&lt;br /&gt;
| TFFG || Grand Case || Anguilla || America ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| 128.940 (3) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/0 ||nice area&lt;br /&gt;
|-&lt;br /&gt;
| TIST || Cyril E King || Virgin Islands || America ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/1 ||nice area&lt;br /&gt;
|-&lt;br /&gt;
| TJSJ || San Juan || Puerto Rico || America ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 132.050 (6) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 2/2 ||nice area&lt;br /&gt;
|-&lt;br /&gt;
| TKPK || Saint Kitts || Guadeloupe || America ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 118.300 (3) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/0 ||nice area&lt;br /&gt;
|-&lt;br /&gt;
| TNCM || [[Princess Juliana International Airport|Princess Juliana]] || ST Maarten || America ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 118.700 (2) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/0 ||very nice area&lt;br /&gt;
|-&lt;br /&gt;
| TQPF || Wallblake || Anquilla || America ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| S ||align=&amp;quot;center&amp;quot;| 18.500 (3) ||align=&amp;quot;center&amp;quot;| -- ||align=&amp;quot;center&amp;quot;| 1/0 ||nice area&lt;br /&gt;
|-&lt;br /&gt;
| VIDP || New Dehli || India || Asia ||align=&amp;quot;center&amp;quot;| ** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 119.300 (5) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 2/3 ||nice area&lt;br /&gt;
|-&lt;br /&gt;
| VHHH || Hong Kong || China || Asia ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 118.400 (16) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 2/4 ||very nice mountain/sea area&lt;br /&gt;
|-&lt;br /&gt;
| WSSS || [[Singapore Changi International Airport|Singapore Changi]] || Singapore || Asia ||align=&amp;quot;center&amp;quot;| **** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 118.600 (8) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 2/3 ||Very nice modelled from TheOmegaHangar one. Best in FlightGear&lt;br /&gt;
|-&lt;br /&gt;
| YBAS || Alice Springs || Australia NT || Oceania ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 118.300 (2) ||align=&amp;quot;center&amp;quot;| 26 ||align=&amp;quot;center&amp;quot;| 3/1 ||Australian Back-Country&lt;br /&gt;
|-&lt;br /&gt;
| YBBN || Brisbane || Australia NSW || Oceania ||align=&amp;quot;center&amp;quot;| *** ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 120.500 (11) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 3/6 ||&lt;br /&gt;
|-&lt;br /&gt;
| YPDN || Darwin || Australia NT || Oceania ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 133.100 (8) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 2/1 ||&lt;br /&gt;
|-&lt;br /&gt;
| YSCB || Canberra || Australia NSW || Oceania ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| M ||align=&amp;quot;center&amp;quot;| 118.700 (5) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 2/1 ||High Mountain region (1800 ft, 550 m)&lt;br /&gt;
|-&lt;br /&gt;
| YSSY || [[Sydney International Airport|Sydney]] || Australia NSW || Oceania ||align=&amp;quot;center&amp;quot;| * ||align=&amp;quot;center&amp;quot;| L ||align=&amp;quot;center&amp;quot;| 120.500 (11) ||align=&amp;quot;center&amp;quot;| many ||align=&amp;quot;center&amp;quot;| 3/6 ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{suggested}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Airports]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken&amp;diff=107940</id>
		<title>Saab 35 Draken</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken&amp;diff=107940"/>
		<updated>2017-05-25T18:52:42Z</updated>

		<summary type="html">&lt;p&gt;AndersM: /* Gauges and instruments */  Added image references&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:{{PAGENAME}}/info}}&lt;br /&gt;
The '''Saab 35 Draken''' (Dragon) is a Swedish supersonic interceptor developed in the 1950s. The model F was delivered between 1965 and 1972 and is the model that the FG plane is based on.&lt;br /&gt;
&lt;br /&gt;
== Description of the features ==&lt;br /&gt;
Number in parenthesis refers to the cockpit image.&lt;br /&gt;
 &lt;br /&gt;
=== Special aircraft keys ===&lt;br /&gt;
{| class=&amp;quot;keytable&amp;quot;&lt;br /&gt;
! Key&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|S}}&lt;br /&gt;
| Automatic start sequence including all systems. (The aircraft needs to be stationary.)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|L}}&lt;br /&gt;
| Attach or remove drop tanks on ground. (Stationary and drop tank selector off)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|J}}&lt;br /&gt;
| Jettison drop tanks in air.&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|D}}&lt;br /&gt;
| Unlocks and opens/closes and locks canopy. Closed and locked canopy - first press unlocks second opens canopy. Closed and unlocked canopy at simulation start - first press locks. Open canopy - first press closes canopy second locks&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Special indicators ===&lt;br /&gt;
&lt;br /&gt;
*GLÖM EJ LAND-STÄLL: (&amp;quot;Do not forget landing gear&amp;quot;) flashes if altitude &amp;lt; 1450 m, airspeed &amp;lt; 450 km/h and throttle &amp;lt; 85%&lt;br /&gt;
&lt;br /&gt;
*HUVUDVARN.: Main caution light. Indicates important system warnings. See below.&lt;br /&gt;
&lt;br /&gt;
*HÖJDV: Flashes when autopilot HÖJD (altitude hold) is set and aircraft not at target altitude or vertical speed above 200 m/min. Lit when stable at target altitude. It is recommended to be at target altitude before setting autopilot to HÖJD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Gauges and instruments ===&lt;br /&gt;
&lt;br /&gt;
'''Fuel gauge'''&lt;br /&gt;
&lt;br /&gt;
Shows percent of drop-tanks left until they are empty if attached. Otherwise percent of internal fuel remaining. The two needles shows left/front and right/rear tank level. The engine is supplied by the two tanks alternating if not on afterburner, therefore the needles will chase each other down the scale.&lt;br /&gt;
&lt;br /&gt;
'''G-gauge'''&lt;br /&gt;
&lt;br /&gt;
Max G-force is displayed by a striped needle. Reset by clicking the small reset pin on the right side of the instrument.&lt;br /&gt;
&lt;br /&gt;
'''Altitude gauge'''&lt;br /&gt;
&lt;br /&gt;
Pressure setting is done by clicking left or right side of the setting knob (lower left of he instrument).&lt;br /&gt;
&lt;br /&gt;
'''Altitude selector'''&lt;br /&gt;
&lt;br /&gt;
Right side below secondary AI. Sets target altitude for autopilot. (7)&lt;br /&gt;
&lt;br /&gt;
'''Course selector'''&lt;br /&gt;
&lt;br /&gt;
Below Heading indicator. Sets course needle on the heading indicator (compass).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''AHK'''&lt;br /&gt;
&lt;br /&gt;
The real AHK (swe.Avstånd Höjd Kommando, eng. distance altitude command), on the right side of the radar, was an instrument connected to the Swedish air combat control centres (The system is part of &amp;quot;STRIL60&amp;quot;). It gave tactical information to the pilot by 20 different commands, displayed as words at the top of the instrument, and also by the distance scale and the arrow needle on the height scale. Some of the commands are reused  as instrument modes.(6)&lt;br /&gt;
&lt;br /&gt;
In all modes the &amp;quot;HÖJD&amp;quot; (altitude) scale shows pressure-altitude. Dot-needle from 0-2000 m and tape-needle from 0-20000 m.&lt;br /&gt;
&lt;br /&gt;
Modes:&lt;br /&gt;
&lt;br /&gt;
*0: (Off) Only altitude shown&lt;br /&gt;
*HÖJDÄNDRING: Arrow shows height reached in one minute at current vertical speed. Scale 0-20000 m. &amp;quot;AVST&amp;quot; tape shows distance over ground to change altitude 1000 m at current vertical speed. Speed over ground calculated from IAS using standard atmosphere.&lt;br /&gt;
*LANDA: Arrow shows height reached in one minute at current vertical speed. Scale 0-2000 m.&lt;br /&gt;
&amp;quot;AVST&amp;quot; tape shows distance over ground until tuchdown at sealevel and current vertical speed. Speed over ground calculated from IAS using standard atmosphere.&lt;br /&gt;
*AVST. 400: Arrow shows height reached in one minute at current vertical speed. AVST tape shows distance to beacon 0-400 km.&lt;br /&gt;
*AVSTÅND 40: Arrow shows height reached in one minute at current vertical speed. AVST tape shows distance to beacon 0-40 km.&lt;br /&gt;
*BARBRO: Arrow shows height reached in one minute at current vertical speed, scale 0-2000 m. AVST tape shows distance to beacon 0-40 km.&lt;br /&gt;
*NYTT MÅL: Arrow shows Route Manager cruise altitude 0- 20000 m. AVST shows distance 0-400 km to next Route Manager waypoint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Caution panel'''&lt;br /&gt;
&lt;br /&gt;
Lower right.(9) Shows system cautions and warnings.&lt;br /&gt;
Those with ! in front triggers main caution light:&lt;br /&gt;
&lt;br /&gt;
*!BRAND MOTOR: (fire engine) not implemented&lt;br /&gt;
*!BRAND EBK P: (fire afterburner pump) not implemented&lt;br /&gt;
*STYR AUT: (autopilot) autopilot off&lt;br /&gt;
*MOTOR IS: (engine ice) engine deicing on not implemented yet&lt;br /&gt;
*!TANK LUFT: (tank air) airpressure fault in fuel system. Not implemented&lt;br /&gt;
*!OLJE TRYCK: (oil pressure) low oil pressure.&lt;br /&gt;
*EBK: (afterburner) Indicates that the exhaust nozzle is working as AB is turned off or on&lt;br /&gt;
or open when idle on the ground to keep engine from overheating. (Not lit constantly when using AB.)&lt;br /&gt;
*!SYR GAS: (oxygen pressure) not implemented&lt;br /&gt;
*!EL FEL: (electric fault) fault in AC circuit or generator off.&lt;br /&gt;
*!HYDR I, HYDR II: (hydraulic I and II) Low pressure in hydraulic circuit&lt;br /&gt;
*!KABIN TRYCK: (cabin pressure) Cabin pressure too low. Not implemented.&lt;br /&gt;
*!HUV LÅS: (canopy lock) canopy not locked.&lt;br /&gt;
&lt;br /&gt;
TANK LUFT, OLJE TRYCK, EL FEL, HYDR I and HYDR II will be lit when generator off. But should go off during engine start up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Radar'''&lt;br /&gt;
&lt;br /&gt;
Showing a sweep and antenna azimuth as well as navigation indicators.&lt;br /&gt;
In multiplayer the radar shows aircraft in radar range: dist. &amp;lt; 40 km, +-60 deg in yaw, +-30 deg in pitch and &amp;gt; 100 m above ground.&lt;br /&gt;
Yellow lines are navigation indicators used by the navigation system. See below.&lt;br /&gt;
Radar modes are set on the navigation radio.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Radio'''&lt;br /&gt;
&lt;br /&gt;
The radio equipment consists of two transceiver and one control unit of model Fr-21. They are on the left horizontal panel (14). In the simulation both transceivers are used for communication. In the real aircraft one was the receiver for combat control data feeding the AHK and other avionics. The letters A-K stores pre set frequencies for transceiver A (closest to the control unit) and the numbers 1-5 stores pre set frequencies fro transceiver B. A stores the COM1 frequency at FG start up, B stores COM1 standby frequency. Number 1 stores the COM2 frequency at FG start up, 2 stores COM2 standby frequency. The frequency for the other letters and numbers are in the text file Avionics/Fr21.txt and can be changed by the user.&lt;br /&gt;
Pressing the buttons marked with dash (-) makes it possible to manually set the transceiver’s frequency using the knobs on the unit.&lt;br /&gt;
The radio is off at simulation start. Transceiver B uses battery power and transceiver A uses main AC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Autopilot'''&lt;br /&gt;
&lt;br /&gt;
The autopilot is on the right side of the seat (11) and has the following functions and controls:&lt;br /&gt;
*HÖJD: Altitude hold&lt;br /&gt;
*ATTITYD: Attitude hold- pitch and roll&lt;br /&gt;
*DÄMPN: Pitch and yaw-damper on. This is on in all normal flight conditions&lt;br /&gt;
*SVÄNG: Banks the aircraft in attitude mode&lt;br /&gt;
*NOS: Pitch setting in attitude mode&lt;br /&gt;
*FRÅN TILL: Main autopilot switch. Normally left on. Triggers caution light if off.&lt;br /&gt;
*ROLL: Roll trim elevon setting&lt;br /&gt;
*GIR: Rudder trim setting&lt;br /&gt;
*Middle mouse button zeros the slider/knob.&lt;br /&gt;
&lt;br /&gt;
''IMPORTANT:'' The autopilot has an automatic switch to only damping if airspeed is Mach 0.95-1.05 or G-force is above 4 G or below -0.5 G. No warning is given.&lt;br /&gt;
&lt;br /&gt;
At present the autopilot is not as stable as it should be, especially altitude hold.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Navigation radio and mode selector'''&lt;br /&gt;
&lt;br /&gt;
3D model right side panel below cautions.(10) Main mode selector for navigation, AHK and radar.&lt;br /&gt;
&lt;br /&gt;
Draken does not have ordinary navigation instruments. It has a special system that was integrated in the combat command and navigation system of the Swedish airforce. A letter code was used to select navigation beacons and airbase landing system. There was two parts of the system: Anita - general navigation and Barbro - landing guidance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To simulate this and still be compatible with FG there is a file beacons.txt in the aircraft's directory. In that file you write a line for each beacon you want to use. The format is a comma separated list: letter code,type,frequenzy,note&lt;br /&gt;
*letter code: Three letters A-P that identifies the beacon. Anita (VOR, NDB) does only use the first two (you can set the last to any character you want). Barbro (ILS) uses all three.&lt;br /&gt;
*type: VOR, NDB or ILS.&lt;br /&gt;
*frequency: The beacons frequency VOR/ILS in MHz, NDB in kHz.&lt;br /&gt;
*note: Descriptive note. Must have at least one character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The selected mode sets input to course needle (cn), radar and AHK:&lt;br /&gt;
*FRÅN: (Off)  No nav radio, Radar off, AHK 0, cn manual&lt;br /&gt;
*FÖRV: (Preselected) No nav radio, Radar off, AHK HÖJDÄNDRING, cn manual&lt;br /&gt;
*STRIL: (Combat command) Activates Route Manager, Radar scanning, AHK NYTT MÅL, cn direction to next waypoint.&lt;br /&gt;
*STRID: (Combat) No nav info, Radar scanning, AHK HÖJDÄNDRING, cn manual&lt;br /&gt;
*NAVRIKTN: (Navigation direction) Uses NDB/VOR set by the two letters NAV. Radar shows direction pointer, AHK HÖJDÄNDRING, cn ADF.&lt;br /&gt;
*NAV 400: (Navigation 400 km) Uses VOR/NDB set by the two letters NAV. Radar shows direction pointer, AHK AVST. 400 (shows 0 if NDB), cn direction to VOR.&lt;br /&gt;
*NAV 40: (Navigation 40 km) Uses VOR/NDB set by the two letters NAV. Radar shows direction pointer, AHK AVSTÅND 40 (shows 0 if NDB), cn direction to beacon.&lt;br /&gt;
*LANDN 40: (Landing 40 km) Uses NDB/VOR set by the two letters NAV. Radar shows direction pointer, AHK LANDA, cn direction to beacon.&lt;br /&gt;
*BARBRO: (Barbro) Uses ILS set by the three letters NAV+LANDN. Radar shows glide slope pointers, AHK BARBRO, cn direction to ILS beacon. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Special Controls and switches'''&lt;br /&gt;
*Droptank fuel valve: Right front canopy rim.(8) Set to on (forward) when using drop tanks.&lt;br /&gt;
*Parking brake: Center console below instrument panel to the right.(5)&lt;br /&gt;
*Jettison droptanks: Left side with red protection ring.(4)&lt;br /&gt;
*Canopy handle: Left side(3)&lt;br /&gt;
*Start panel: Lower left instrument panel.(2) Se below.&lt;br /&gt;
*Instrument and panel lighting: Left side knob above throttle.(1) Click to change intensity.&lt;br /&gt;
Landing/taxi light switches: Left front canopy rim (12). Left and right landing light. If switches are in on position the lights will be automatically turned on/off as landing gear are lowered/rised. &lt;br /&gt;
Navigation lights (sv. &amp;quot;Lanternor&amp;quot;): Right aft panel (13). Three settings are implemented; off, dim and bright.&lt;br /&gt;
&lt;br /&gt;
=== Flying ===&lt;br /&gt;
[[File:J35 Draken start panel.jpg|thumb|Start panel]]&lt;br /&gt;
'''Starting the aircraft'''&lt;br /&gt;
&lt;br /&gt;
Either press Shift-S and let the automatic start make the work or follow the check list below.&lt;br /&gt;
&lt;br /&gt;
* Battery switch on. The smaller covered switch on the start panel.(no. 1) Click cover to open and then switch.&lt;br /&gt;
* Lock canopy. Click handle. The HUV LÅS caution should now go out.&lt;br /&gt;
* Turn on main fuel pump. Under the large cover on he start panel.(no. 2)&lt;br /&gt;
* Turn on afterburner fuel pump. Leftmost switch on the start panel.(no. 3) The red light on the start panel is now off.&lt;br /&gt;
* Turn on drop tanks fuel valve. The yellow light on the start panel is now unlit.&lt;br /&gt;
* Press START button on the start panel and wait until the engine is ignited.(no. 4)&lt;br /&gt;
* Switch on the generator when engine at 30%. The switch next to the start button.(no. 5)&lt;br /&gt;
All caution lights should now be unlit in a few seconds.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''Normal operations'''&lt;br /&gt;
* Draken has elevons, combined ailerons and elevators. Large elevon deflections decreases the available aileron difference.&lt;br /&gt;
* The aircraft has non-linear control response in elevation to lessen effect of small stick movements.&lt;br /&gt;
* It is neutral in roll at low alpha. Keep an eye on the horizon.&lt;br /&gt;
* To avoid accidents on landing is it not possible to retract landing gears if throttle &amp;lt; 90 %&lt;br /&gt;
* Rotation 270 km/h&lt;br /&gt;
* Max airspeed(Vne) 1350 km/h. Max speed with gear extended 500 km/h.&lt;br /&gt;
* Touch down speed ca. 300 km/h. 12 degrees AoA&lt;br /&gt;
* Too long with negative G causes fuel starvation.&lt;br /&gt;
* Watch alpha and speed. Drag increases fast with increasing alpha and pitch can occur at alpha &amp;gt; 25 deg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lift off: Rotate at 270 km/h to 10-12 degrees pitch. Lift off at approx 300 km/h. Turn of afterburner at 500 km/h if not needed for climbing. Normal climb speed Mach 0.9.&lt;br /&gt;
&lt;br /&gt;
Landing: Lower speed to 500 km/h. Lower gears and turn on landing lights. Turn to final lowering the speed to 325 km/h. Keep a speed of 300 km/h and a plané of 3 degrees (100 m at 2 km distance), RPM 80-85%. After touchdown raise the nose up to increase drag until speed is 240 km/h. Apply brakes. Lower nose at 160 km/h.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External link ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Saab_35_Draken Saab 35 Draken] (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
{{Saab}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Delta-wing aircraft]]&lt;br /&gt;
[[Category:Fighter aircraft]]&lt;br /&gt;
[[Category:Single-engine jets]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Saab_J35_cockpit.jpg&amp;diff=107939</id>
		<title>File:Saab J35 cockpit.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Saab_J35_cockpit.jpg&amp;diff=107939"/>
		<updated>2017-05-25T18:47:49Z</updated>

		<summary type="html">&lt;p&gt;AndersM: AndersM uploaded a new version of File:Saab J35 cockpit.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=Cockpit of the Saab J35 Draken.}}&lt;br /&gt;
|date=2013-03-04&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Gijs|Gijs]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Screenshots of cockpits]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Saab_J35.jpg&amp;diff=107938</id>
		<title>File:Saab J35.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Saab_J35.jpg&amp;diff=107938"/>
		<updated>2017-05-25T18:08:43Z</updated>

		<summary type="html">&lt;p&gt;AndersM: AndersM uploaded a new version of File:Saab J35.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken&amp;diff=107937</id>
		<title>Saab 35 Draken</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken&amp;diff=107937"/>
		<updated>2017-05-25T18:02:56Z</updated>

		<summary type="html">&lt;p&gt;AndersM: Updated with Radio info etc.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:{{PAGENAME}}/info}}&lt;br /&gt;
The '''Saab 35 Draken''' (Dragon) is a Swedish supersonic interceptor developed in the 1950s. The model F was delivered between 1965 and 1972 and is the model that the FG plane is based on.&lt;br /&gt;
&lt;br /&gt;
== Description of the features ==&lt;br /&gt;
Number in parenthesis refers to the cockpit image.&lt;br /&gt;
 &lt;br /&gt;
=== Special aircraft keys ===&lt;br /&gt;
{| class=&amp;quot;keytable&amp;quot;&lt;br /&gt;
! Key&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|S}}&lt;br /&gt;
| Automatic start sequence including all systems. (The aircraft needs to be stationary.)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|L}}&lt;br /&gt;
| Attach or remove drop tanks on ground. (Stationary and drop tank selector off)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|J}}&lt;br /&gt;
| Jettison drop tanks in air.&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|D}}&lt;br /&gt;
| Unlocks and opens/closes and locks canopy. Closed and locked canopy - first press unlocks second opens canopy. Closed and unlocked canopy at simulation start - first press locks. Open canopy - first press closes canopy second locks&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Special indicators ===&lt;br /&gt;
&lt;br /&gt;
*GLÖM EJ LAND-STÄLL: (&amp;quot;Do not forget landing gear&amp;quot;) flashes if altitude &amp;lt; 1450 m, airspeed &amp;lt; 450 km/h and throttle &amp;lt; 85%&lt;br /&gt;
&lt;br /&gt;
*HUVUDVARN.: Main caution light. Indicates important system warnings. See below.&lt;br /&gt;
&lt;br /&gt;
*HÖJDV: Flashes when autopilot HÖJD (altitude hold) is set and aircraft not at target altitude or vertical speed above 200 m/min. Lit when stable at target altitude. It is recommended to be at target altitude before setting autopilot to HÖJD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Gauges and instruments ===&lt;br /&gt;
&lt;br /&gt;
'''Fuel gauge'''&lt;br /&gt;
&lt;br /&gt;
Shows percent of drop-tanks left until they are empty if attached. Otherwise percent of internal fuel remaining. The two needles shows left/front and right/rear tank level. The engine is supplied by the two tanks alternating if not on afterburner, therefore the needles will chase each other down the scale.&lt;br /&gt;
&lt;br /&gt;
'''G-gauge'''&lt;br /&gt;
&lt;br /&gt;
Max G-force is displayed by a striped needle. Reset by clicking the small reset pin on the right side of the instrument.&lt;br /&gt;
&lt;br /&gt;
'''Altitude gauge'''&lt;br /&gt;
&lt;br /&gt;
Pressure setting is done by clicking left or right side of the setting knob (lower left of he instrument).&lt;br /&gt;
&lt;br /&gt;
'''Altitude selector'''&lt;br /&gt;
&lt;br /&gt;
Right side below secondary AI. Sets target altitude for autopilot. (7)&lt;br /&gt;
&lt;br /&gt;
'''Course selector'''&lt;br /&gt;
&lt;br /&gt;
Below Heading indicator. Sets course needle on the heading indicator (compass).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''AHK'''&lt;br /&gt;
&lt;br /&gt;
The real AHK (swe.Avstånd Höjd Kommando, eng. distance altitude command), on the right side of the radar, was an instrument connected to the Swedish air combat control centres (The system is part of &amp;quot;STRIL60&amp;quot;). It gave tactical information to the pilot by 20 different commands, displayed as words at the top of the instrument, and also by the distance scale and the arrow needle on the height scale. Some of the commands are reused  as instrument modes.(6)&lt;br /&gt;
&lt;br /&gt;
In all modes the &amp;quot;HÖJD&amp;quot; (altitude) scale shows pressure-altitude. Dot-needle from 0-2000 m and tape-needle from 0-20000 m.&lt;br /&gt;
&lt;br /&gt;
Modes:&lt;br /&gt;
&lt;br /&gt;
*0: (Off) Only altitude shown&lt;br /&gt;
*HÖJDÄNDRING: Arrow shows height reached in one minute at current vertical speed. Scale 0-20000 m. &amp;quot;AVST&amp;quot; tape shows distance over ground to change altitude 1000 m at current vertical speed. Speed over ground calculated from IAS using standard atmosphere.&lt;br /&gt;
*LANDA: Arrow shows height reached in one minute at current vertical speed. Scale 0-2000 m.&lt;br /&gt;
&amp;quot;AVST&amp;quot; tape shows distance over ground until tuchdown at sealevel and current vertical speed. Speed over ground calculated from IAS using standard atmosphere.&lt;br /&gt;
*AVST. 400: Arrow shows height reached in one minute at current vertical speed. AVST tape shows distance to beacon 0-400 km.&lt;br /&gt;
*AVSTÅND 40: Arrow shows height reached in one minute at current vertical speed. AVST tape shows distance to beacon 0-40 km.&lt;br /&gt;
*BARBRO: Arrow shows height reached in one minute at current vertical speed, scale 0-2000 m. AVST tape shows distance to beacon 0-40 km.&lt;br /&gt;
*NYTT MÅL: Arrow shows Route Manager cruise altitude 0- 20000 m. AVST shows distance 0-400 km to next Route Manager waypoint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Caution panel'''&lt;br /&gt;
&lt;br /&gt;
Lower right.(9) Shows system cautions and warnings.&lt;br /&gt;
Those with ! in front triggers main caution light:&lt;br /&gt;
&lt;br /&gt;
*!BRAND MOTOR: (fire engine) not implemented&lt;br /&gt;
*!BRAND EBK P: (fire afterburner pump) not implemented&lt;br /&gt;
*STYR AUT: (autopilot) autopilot off&lt;br /&gt;
*MOTOR IS: (engine ice) engine deicing on not implemented yet&lt;br /&gt;
*!TANK LUFT: (tank air) airpressure fault in fuel system. Not implemented&lt;br /&gt;
*!OLJE TRYCK: (oil pressure) low oil pressure.&lt;br /&gt;
*EBK: (afterburner) Indicates that the exhaust nozzle is working as AB is turned off or on&lt;br /&gt;
or open when idle on the ground to keep engine from overheating. (Not lit constantly when using AB.)&lt;br /&gt;
*!SYR GAS: (oxygen pressure) not implemented&lt;br /&gt;
*!EL FEL: (electric fault) fault in AC circuit or generator off.&lt;br /&gt;
*!HYDR I, HYDR II: (hydraulic I and II) Low pressure in hydraulic circuit&lt;br /&gt;
*!KABIN TRYCK: (cabin pressure) Cabin pressure too low. Not implemented.&lt;br /&gt;
*!HUV LÅS: (canopy lock) canopy not locked.&lt;br /&gt;
&lt;br /&gt;
TANK LUFT, OLJE TRYCK, EL FEL, HYDR I and HYDR II will be lit when generator off. But should go off during engine start up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Radar'''&lt;br /&gt;
&lt;br /&gt;
Showing a sweep and antenna azimuth as well as navigation indicators.&lt;br /&gt;
In multiplayer the radar shows aircraft in radar range: dist. &amp;lt; 40 km, +-60 deg in yaw, +-30 deg in pitch and &amp;gt; 100 m above ground.&lt;br /&gt;
Yellow lines are navigation indicators used by the navigation system. See below.&lt;br /&gt;
Radar modes are set on the navigation radio.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Radio'''&lt;br /&gt;
&lt;br /&gt;
The radio equipment consists of two transceiver and one control unit of model Fr-21. They are on the left horizontal panel. In the simulation both transceivers are used for communication. In the real aircraft one was the receiver for combat control data feeding the AHK and other avionics. The letters A-K stores pre set frequencies for transceiver A (closest to the control unit) and the numbers 1-5 stores pre set frequencies fro transceiver B. A stores the COM1 frequency at FG start up, B stores COM1 standby frequency. Number 1 stores the COM2 frequency at FG start up, 2 stores COM2 standby frequency. The frequency for the other letters and numbers are in the text file Avionics/Fr21.txt and can be changed by the user.&lt;br /&gt;
Pressing the buttons marked with dash (-) makes it possible to manually set the transceiver’s frequency using the knobs on the unit.&lt;br /&gt;
The radio is off at simulation start. Transceiver B uses battery power and transceiver A uses main AC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Autopilot'''&lt;br /&gt;
&lt;br /&gt;
The autopilot is on the right side of the seat (11) and has the following functions and controls:&lt;br /&gt;
*HÖJD: Altitude hold&lt;br /&gt;
*ATTITYD: Attitude hold- pitch and roll&lt;br /&gt;
*DÄMPN: Pitch and yaw-damper on. This is on in all normal flight conditions&lt;br /&gt;
*SVÄNG: Banks the aircraft in attitude mode&lt;br /&gt;
*NOS: Pitch setting in attitude mode&lt;br /&gt;
*FRÅN TILL: Main autopilot switch. Normally left on. Triggers caution light if off.&lt;br /&gt;
*ROLL: Roll trim elevon setting&lt;br /&gt;
*GIR: Rudder trim setting&lt;br /&gt;
*Middle mouse button zeros the slider/knob.&lt;br /&gt;
&lt;br /&gt;
''IMPORTANT:'' The autopilot has an automatic switch to only damping if airspeed is Mach 0.95-1.05 or G-force is above 4 G or below -0.5 G. No warning is given.&lt;br /&gt;
&lt;br /&gt;
At present the autopilot is not as stable as it should be, especially altitude hold.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Navigation radio and mode selector'''&lt;br /&gt;
&lt;br /&gt;
3D model right side panel below cautions.(10) Main mode selector for navigation, AHK and radar.&lt;br /&gt;
&lt;br /&gt;
Draken does not have ordinary navigation instruments. It has a special system that was integrated in the combat command and navigation system of the Swedish airforce. A letter code was used to select navigation beacons and airbase landing system. There was two parts of the system: Anita - general navigation and Barbro - landing guidance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To simulate this and still be compatible with FG there is a file beacons.txt in the aircraft's directory. In that file you write a line for each beacon you want to use. The format is a comma separated list: letter code,type,frequenzy,note&lt;br /&gt;
*letter code: Three letters A-P that identifies the beacon. Anita (VOR, NDB) does only use the first two (you can set the last to any character you want). Barbro (ILS) uses all three.&lt;br /&gt;
*type: VOR, NDB or ILS.&lt;br /&gt;
*frequency: The beacons frequency VOR/ILS in MHz, NDB in kHz.&lt;br /&gt;
*note: Descriptive note. Must have at least one character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The selected mode sets input to course needle (cn), radar and AHK:&lt;br /&gt;
*FRÅN: (Off)  No nav radio, Radar off, AHK 0, cn manual&lt;br /&gt;
*FÖRV: (Preselected) No nav radio, Radar off, AHK HÖJDÄNDRING, cn manual&lt;br /&gt;
*STRIL: (Combat command) Activates Route Manager, Radar scanning, AHK NYTT MÅL, cn direction to next waypoint.&lt;br /&gt;
*STRID: (Combat) No nav info, Radar scanning, AHK HÖJDÄNDRING, cn manual&lt;br /&gt;
*NAVRIKTN: (Navigation direction) Uses NDB/VOR set by the two letters NAV. Radar shows direction pointer, AHK HÖJDÄNDRING, cn ADF.&lt;br /&gt;
*NAV 400: (Navigation 400 km) Uses VOR/NDB set by the two letters NAV. Radar shows direction pointer, AHK AVST. 400 (shows 0 if NDB), cn direction to VOR.&lt;br /&gt;
*NAV 40: (Navigation 40 km) Uses VOR/NDB set by the two letters NAV. Radar shows direction pointer, AHK AVSTÅND 40 (shows 0 if NDB), cn direction to beacon.&lt;br /&gt;
*LANDN 40: (Landing 40 km) Uses NDB/VOR set by the two letters NAV. Radar shows direction pointer, AHK LANDA, cn direction to beacon.&lt;br /&gt;
*BARBRO: (Barbro) Uses ILS set by the three letters NAV+LANDN. Radar shows glide slope pointers, AHK BARBRO, cn direction to ILS beacon. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Special Controls and switches'''&lt;br /&gt;
*Droptank fuel valve: Right front canopy rim.(8) Set to on (forward) when using drop tanks.&lt;br /&gt;
*Parking brake: Center console below instrument panel to the right.(5)&lt;br /&gt;
*Jettison droptanks: Left side with red protection ring.(4)&lt;br /&gt;
*Canopy handle: Left side(3)&lt;br /&gt;
*Start panel: Lower left instrument panel.(2) Se below.&lt;br /&gt;
*Instrument and panel lighting: Left side knob above throttle.(1) Click to change intensity.&lt;br /&gt;
Landing/taxi light switches: Left front canopy rim. Left and right landing light. If switches are in on position the lights will be automatically turned on/off as landing gear are lowered/rised. &lt;br /&gt;
Navigation lights (sv. &amp;quot;Lanternor&amp;quot;): Right aft panel. Three settings are implemented; off, dim and bright.&lt;br /&gt;
&lt;br /&gt;
=== Flying ===&lt;br /&gt;
[[File:J35 Draken start panel.jpg|thumb|Start panel]]&lt;br /&gt;
'''Starting the aircraft'''&lt;br /&gt;
&lt;br /&gt;
Either press Shift-S and let the automatic start make the work or follow the check list below.&lt;br /&gt;
&lt;br /&gt;
* Battery switch on. The smaller covered switch on the start panel.(no. 1) Click cover to open and then switch.&lt;br /&gt;
* Lock canopy. Click handle. The HUV LÅS caution should now go out.&lt;br /&gt;
* Turn on main fuel pump. Under the large cover on he start panel.(no. 2)&lt;br /&gt;
* Turn on afterburner fuel pump. Leftmost switch on the start panel.(no. 3) The red light on the start panel is now off.&lt;br /&gt;
* Turn on drop tanks fuel valve. The yellow light on the start panel is now unlit.&lt;br /&gt;
* Press START button on the start panel and wait until the engine is ignited.(no. 4)&lt;br /&gt;
* Switch on the generator when engine at 30%. The switch next to the start button.(no. 5)&lt;br /&gt;
All caution lights should now be unlit in a few seconds.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''Normal operations'''&lt;br /&gt;
* Draken has elevons, combined ailerons and elevators. Large elevon deflections decreases the available aileron difference.&lt;br /&gt;
* The aircraft has non-linear control response in elevation to lessen effect of small stick movements.&lt;br /&gt;
* It is neutral in roll at low alpha. Keep an eye on the horizon.&lt;br /&gt;
* To avoid accidents on landing is it not possible to retract landing gears if throttle &amp;lt; 90 %&lt;br /&gt;
* Rotation 270 km/h&lt;br /&gt;
* Max airspeed(Vne) 1350 km/h. Max speed with gear extended 500 km/h.&lt;br /&gt;
* Touch down speed ca. 300 km/h. 12 degrees AoA&lt;br /&gt;
* Too long with negative G causes fuel starvation.&lt;br /&gt;
* Watch alpha and speed. Drag increases fast with increasing alpha and pitch can occur at alpha &amp;gt; 25 deg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lift off: Rotate at 270 km/h to 10-12 degrees pitch. Lift off at approx 300 km/h. Turn of afterburner at 500 km/h if not needed for climbing. Normal climb speed Mach 0.9.&lt;br /&gt;
&lt;br /&gt;
Landing: Lower speed to 500 km/h. Lower gears and turn on landing lights. Turn to final lowering the speed to 325 km/h. Keep a speed of 300 km/h and a plané of 3 degrees (100 m at 2 km distance), RPM 80-85%. After touchdown raise the nose up to increase drag until speed is 240 km/h. Apply brakes. Lower nose at 160 km/h.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External link ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Saab_35_Draken Saab 35 Draken] (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
{{Saab}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Delta-wing aircraft]]&lt;br /&gt;
[[Category:Fighter aircraft]]&lt;br /&gt;
[[Category:Single-engine jets]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=System_dependent_instruments&amp;diff=107712</id>
		<title>System dependent instruments</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=System_dependent_instruments&amp;diff=107712"/>
		<updated>2017-04-29T19:12:53Z</updated>

		<summary type="html">&lt;p&gt;AndersM: /* Static */  Reference to info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The tables below shows the properties that the different {{flightgear source|path=src/Instrumentation|text=standard instrument implementations}} are dependent on.&lt;br /&gt;
&lt;br /&gt;
== Electrical ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Source file !! Instrument !! Property!! Comment &lt;br /&gt;
|-&lt;br /&gt;
|heading_indicator_dg || Directional Gyro (DG) || /systems/electrical/outputs/DG || drives gyro, &amp;gt; 0.02 to work&lt;br /&gt;
|-&lt;br /&gt;
| dme || Distance measuring equipment (DME) || /systems/electrical/outputs/dme || any non zero works&lt;br /&gt;
|-&lt;br /&gt;
| kr_87 || King KR 87 Digital ADF || /systems/electrical/outputs/adf || &amp;gt; 1 to work&lt;br /&gt;
|-&lt;br /&gt;
| turn_indicator || Turn Indicator || /systems/electrical/outputs/turn-coordinator[n]&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/flightgear/ci/2b9de5ceaa2e59b0a042ac1eea77e97ef2b6b5d3/&amp;lt;/ref&amp;gt; || drives gyro, &amp;gt; 0.24 to work&lt;br /&gt;
|-&lt;br /&gt;
| mrg || master reference gyro || /systems/electrical/outputs/MRG || drives gyro, &amp;gt; 0.5 to work&lt;br /&gt;
|-&lt;br /&gt;
| gps || GPS || /systems/electrical/outputs/gps || any non zero works&lt;br /&gt;
|-&lt;br /&gt;
| kt_70 || Transponder || /systems/electrical/outputs/transponder || &amp;gt;1 to work&lt;br /&gt;
|-&lt;br /&gt;
| adf || ADF ||/systems/electrical/outputs/adf || needs to be &amp;gt;8 to work&lt;br /&gt;
|-&lt;br /&gt;
| mk_viii || Honeywell MK VIII EGPWS || /systems/electrical/outputs/mk[n] || &amp;gt;=15 to work&lt;br /&gt;
|- &lt;br /&gt;
| heading_indicator_fg || Flux-gate compass || /systems/electrical/outputs/DG || drives gyro, &amp;gt; 0.02 to work&lt;br /&gt;
|-&lt;br /&gt;
| transponder || Transponder  || /systems/electrical/outputs/transponder || needs to be &amp;gt;8 to work&lt;br /&gt;
|-&lt;br /&gt;
| tacan || TACAN || systems/electrical/outputs/tacan || any non zero&lt;br /&gt;
|-&lt;br /&gt;
| navradio || Navigation radios (eg. kx165) || /systems/electrical/outputs/nav[n] || &amp;gt; 1 to work&lt;br /&gt;
|-&lt;br /&gt;
| marker_beacon || Marker beacon indicator ||/systems/electrical/outputs/nav[0] || &amp;gt; 1 to work&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Appendix}}&lt;br /&gt;
&lt;br /&gt;
== Vacuum ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Source file !! Instrument !! Property !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| heading_indicator || Heading indicator || /systems/vacuum/suction-inhg || drives gyro &amp;gt; 0.1 to work&lt;br /&gt;
|-&lt;br /&gt;
| attitude_indicator || Attitude indicator || /systems/vacuum/suction-inhg&amp;quot; || drives gyro &amp;gt; 0.1 to work&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static ==&lt;br /&gt;
See futher [[FGproperties/Systems/static]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Source file !! Instrument !! Property !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| altimeter || Altimeter || /systems/static/pressure-inhg || tau default 0.1&lt;br /&gt;
|-&lt;br /&gt;
| vertical_speed_indicator || VSI || /systems/static/pressure-inhg ||&lt;br /&gt;
|-&lt;br /&gt;
| airspeed_indicator || Airspeed indicator || /systems/static/pressure-inhg ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pitot ==&lt;br /&gt;
See futher [[FGproperties/Systems/Pitot]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Source file !! Instrument !! Property !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| airspeed_indicator || Airspeed indicator || /systems/pitot/total-pressure-inhg ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Core development]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=System_dependent_instruments&amp;diff=107711</id>
		<title>System dependent instruments</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=System_dependent_instruments&amp;diff=107711"/>
		<updated>2017-04-29T19:11:34Z</updated>

		<summary type="html">&lt;p&gt;AndersM: /* Pitot */  reference to info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The tables below shows the properties that the different {{flightgear source|path=src/Instrumentation|text=standard instrument implementations}} are dependent on.&lt;br /&gt;
&lt;br /&gt;
== Electrical ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Source file !! Instrument !! Property!! Comment &lt;br /&gt;
|-&lt;br /&gt;
|heading_indicator_dg || Directional Gyro (DG) || /systems/electrical/outputs/DG || drives gyro, &amp;gt; 0.02 to work&lt;br /&gt;
|-&lt;br /&gt;
| dme || Distance measuring equipment (DME) || /systems/electrical/outputs/dme || any non zero works&lt;br /&gt;
|-&lt;br /&gt;
| kr_87 || King KR 87 Digital ADF || /systems/electrical/outputs/adf || &amp;gt; 1 to work&lt;br /&gt;
|-&lt;br /&gt;
| turn_indicator || Turn Indicator || /systems/electrical/outputs/turn-coordinator[n]&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/flightgear/ci/2b9de5ceaa2e59b0a042ac1eea77e97ef2b6b5d3/&amp;lt;/ref&amp;gt; || drives gyro, &amp;gt; 0.24 to work&lt;br /&gt;
|-&lt;br /&gt;
| mrg || master reference gyro || /systems/electrical/outputs/MRG || drives gyro, &amp;gt; 0.5 to work&lt;br /&gt;
|-&lt;br /&gt;
| gps || GPS || /systems/electrical/outputs/gps || any non zero works&lt;br /&gt;
|-&lt;br /&gt;
| kt_70 || Transponder || /systems/electrical/outputs/transponder || &amp;gt;1 to work&lt;br /&gt;
|-&lt;br /&gt;
| adf || ADF ||/systems/electrical/outputs/adf || needs to be &amp;gt;8 to work&lt;br /&gt;
|-&lt;br /&gt;
| mk_viii || Honeywell MK VIII EGPWS || /systems/electrical/outputs/mk[n] || &amp;gt;=15 to work&lt;br /&gt;
|- &lt;br /&gt;
| heading_indicator_fg || Flux-gate compass || /systems/electrical/outputs/DG || drives gyro, &amp;gt; 0.02 to work&lt;br /&gt;
|-&lt;br /&gt;
| transponder || Transponder  || /systems/electrical/outputs/transponder || needs to be &amp;gt;8 to work&lt;br /&gt;
|-&lt;br /&gt;
| tacan || TACAN || systems/electrical/outputs/tacan || any non zero&lt;br /&gt;
|-&lt;br /&gt;
| navradio || Navigation radios (eg. kx165) || /systems/electrical/outputs/nav[n] || &amp;gt; 1 to work&lt;br /&gt;
|-&lt;br /&gt;
| marker_beacon || Marker beacon indicator ||/systems/electrical/outputs/nav[0] || &amp;gt; 1 to work&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Appendix}}&lt;br /&gt;
&lt;br /&gt;
== Vacuum ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Source file !! Instrument !! Property !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| heading_indicator || Heading indicator || /systems/vacuum/suction-inhg || drives gyro &amp;gt; 0.1 to work&lt;br /&gt;
|-&lt;br /&gt;
| attitude_indicator || Attitude indicator || /systems/vacuum/suction-inhg&amp;quot; || drives gyro &amp;gt; 0.1 to work&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Source file !! Instrument !! Property !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| altimeter || Altimeter || /systems/static/pressure-inhg || tau default 0.1&lt;br /&gt;
|-&lt;br /&gt;
| vertical_speed_indicator || VSI || /systems/static/pressure-inhg ||&lt;br /&gt;
|-&lt;br /&gt;
| airspeed_indicator || Airspeed indicator || /systems/static/pressure-inhg ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pitot ==&lt;br /&gt;
See futher [[FGproperties/Systems/Pitot]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Source file !! Instrument !! Property !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| airspeed_indicator || Airspeed indicator || /systems/pitot/total-pressure-inhg ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Core development]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Standard_instrument_selection&amp;diff=107707</id>
		<title>Standard instrument selection</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Standard_instrument_selection&amp;diff=107707"/>
		<updated>2017-04-29T12:24:35Z</updated>

		<summary type="html">&lt;p&gt;AndersM: added a note about separate fil&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By default an aircraft gets access to a number of standard instruments via instrument properties. These instruments are [https://sourceforge.net/p/flightgear/flightgear/ci/next/tree/src/Instrumentation/instrument_mgr.cxx C++ coded]. Some of them depends on [[System dependent instruments|different aircraft systems]].&lt;br /&gt;
&lt;br /&gt;
It is possible to override the default selection by adding your own instrument property file listing the standard instruments that you want to use in the aircraft. Eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;airspeed-indicator&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;airspeed-indicator&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;number&amp;gt;0&amp;lt;/number&amp;gt;&lt;br /&gt;
     &amp;lt;total-pressure&amp;gt;/systems/pitot/total-pressure-inhg&amp;lt;/total-pressure&amp;gt;&lt;br /&gt;
     &amp;lt;static-pressure&amp;gt;/systems/static/pressure-inhg&amp;lt;/static-pressure&amp;gt;&lt;br /&gt;
   &amp;lt;/airspeed-indicator&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;altimeter&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;altimeter&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;number&amp;gt;0&amp;lt;/number&amp;gt;&lt;br /&gt;
     &amp;lt;static-pressure&amp;gt;/systems/static/pressure-inhg&amp;lt;/static-pressure&amp;gt;&lt;br /&gt;
     &amp;lt;quantum&amp;gt;0&amp;lt;/quantum&amp;gt;&lt;br /&gt;
     &amp;lt;tau&amp;gt;0&amp;lt;/tau&amp;gt;&lt;br /&gt;
   &amp;lt;/altimeter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;magnetic-compass&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;magnetic-compass&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;number&amp;gt;0&amp;lt;/number&amp;gt;&lt;br /&gt;
  &amp;lt;/magnetic-compass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then edit the -set.xml file and add a path to your own instrument file in the sim property-tree:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;sim&amp;gt;&lt;br /&gt;
   (...)&lt;br /&gt;
   &amp;lt;instrumentation&amp;gt;&lt;br /&gt;
    &amp;lt;path&amp;gt;Aircraft/MyAircraft/Instrumentation/my-instruments.xml&amp;lt;/path&amp;gt;&lt;br /&gt;
   &amp;lt;/instrumentation&amp;gt;&lt;br /&gt;
&amp;lt;/sim&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Due to how the instrumentation handling is coded you must create a separate file for your instrument list and use the sim/instrumentation/path node.&lt;br /&gt;
&lt;br /&gt;
You can also change the properties that some of the instruments depend on to function. Eg. Changing the attitude indicator to use battery voltage property instead of vacuum suction to drive the gyro:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;attitude-indicator&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;attitude-indicator&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;number&amp;gt;0&amp;lt;/number&amp;gt;&lt;br /&gt;
    &amp;lt;suction&amp;gt;systems/electrical/outputs/battery_voltage&amp;lt;/suction&amp;gt;&lt;br /&gt;
  &amp;lt;/attitude-indicator&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Standard_instrument_selection&amp;diff=107706</id>
		<title>Standard instrument selection</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Standard_instrument_selection&amp;diff=107706"/>
		<updated>2017-04-29T12:19:45Z</updated>

		<summary type="html">&lt;p&gt;AndersM: Short info on how to edit the selection of standard instruments for an aircraft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By default an aircraft gets access to a number of standard instruments via instrument properties. These instruments are [https://sourceforge.net/p/flightgear/flightgear/ci/next/tree/src/Instrumentation/instrument_mgr.cxx C++ coded]. Some of them depends on [[System dependent instruments|different aircraft systems]].&lt;br /&gt;
&lt;br /&gt;
It is possible to override the default selection by adding your own instrument property file listing the standard instruments that you want to use in the aircraft. Eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;airspeed-indicator&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;airspeed-indicator&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;number&amp;gt;0&amp;lt;/number&amp;gt;&lt;br /&gt;
     &amp;lt;total-pressure&amp;gt;/systems/pitot/total-pressure-inhg&amp;lt;/total-pressure&amp;gt;&lt;br /&gt;
     &amp;lt;static-pressure&amp;gt;/systems/static/pressure-inhg&amp;lt;/static-pressure&amp;gt;&lt;br /&gt;
   &amp;lt;/airspeed-indicator&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;altimeter&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;altimeter&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;number&amp;gt;0&amp;lt;/number&amp;gt;&lt;br /&gt;
     &amp;lt;static-pressure&amp;gt;/systems/static/pressure-inhg&amp;lt;/static-pressure&amp;gt;&lt;br /&gt;
     &amp;lt;quantum&amp;gt;0&amp;lt;/quantum&amp;gt;&lt;br /&gt;
     &amp;lt;tau&amp;gt;0&amp;lt;/tau&amp;gt;&lt;br /&gt;
   &amp;lt;/altimeter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;magnetic-compass&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;magnetic-compass&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;number&amp;gt;0&amp;lt;/number&amp;gt;&lt;br /&gt;
  &amp;lt;/magnetic-compass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then edit the -set.xml file and add a path to your own instrument file in the sim property-tree:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;sim&amp;gt;&lt;br /&gt;
   (...)&lt;br /&gt;
   &amp;lt;instrumentation&amp;gt;&lt;br /&gt;
    &amp;lt;path&amp;gt;Aircraft/MyAircraft/Instrumentation/my-instruments.xml&amp;lt;/path&amp;gt;&lt;br /&gt;
   &amp;lt;/instrumentation&amp;gt;&lt;br /&gt;
&amp;lt;/sim&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also change the properties that some of the instruments depend on to function. Eg. Changing the attitude indicator to use battery voltage property instead of vacuum suction to drive the gyro:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;attitude-indicator&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;attitude-indicator&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;number&amp;gt;0&amp;lt;/number&amp;gt;&lt;br /&gt;
    &amp;lt;suction&amp;gt;systems/electrical/outputs/battery_voltage&amp;lt;/suction&amp;gt;&lt;br /&gt;
  &amp;lt;/attitude-indicator&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=ALS_technical_notes&amp;diff=107665</id>
		<title>ALS technical notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=ALS_technical_notes&amp;diff=107665"/>
		<updated>2017-04-16T21:38:43Z</updated>

		<summary type="html">&lt;p&gt;AndersM: /* Configuring the light */  Showing &amp;lt;use&amp;gt; as property tag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Quality level mapping ==&lt;br /&gt;
The rendering quality of ALS effects is controlled by two main sliders, the landmass effects and transition effects. The transition effects slider regulates the quality of overlaid textured, while the landmass effects slider regulates all other aspects of procedural texturing, such as pixel color post-processing (dust, snow or wet terrain effects) and apparent terrain roughness (bump and parallax mapping).&lt;br /&gt;
&lt;br /&gt;
In addition, specific effects for certain terrain types (water, urban, forest, agriculture, etc.) and models in the scene can be switched on separately. In some cases, this may be needed for a consistent visual impression. For example, if a dust effect is used on the terrain, the water needs to be rendered using a separate water shader, otherwise it will appear dusty as well. Likewise, if the Rayleigh haze is used in the highest quality terrain effect, then the highest quality water effect needs to be used to see the same Rayleigh scattering effect on the water.&lt;br /&gt;
&lt;br /&gt;
For technical reasons (landmass and transition control the same shader code) the settings are sometimes mutually dependent, e.g., if the transition quality is set to level 6, it won't have any effect until the landmass quality is also set to level 6.&lt;br /&gt;
&lt;br /&gt;
=== Transition ===&lt;br /&gt;
The mapping of quality to visuals of the transition slider is as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Level !! Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 1&lt;br /&gt;
| Base texture scheme&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 2&lt;br /&gt;
| Alternative hires airport keep effect&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3&lt;br /&gt;
|&lt;br /&gt;
* Base and overlay texture, runway effect (if landmass is above level 4)&lt;br /&gt;
* Secondary lights on runway and airport keep&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 4&lt;br /&gt;
| Base, overlay and hires texture&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 5&lt;br /&gt;
| Base, overlay, hires, detail, grain, dot and rock texture (if landmass is level 6)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Landmass ===&lt;br /&gt;
{{Note|Quality levels 1 and 2 are reserved to represent fixed pipeline rendering and the &amp;quot;default renderer&amp;quot; in an eventually merged rendering GUI. However, ALS is currently switched on per checkbox and not by quality level, and so they do not have a function.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Level !! Comments&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 1&lt;br /&gt;
| ''See note above''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 2&lt;br /&gt;
| ''See note above''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3&lt;br /&gt;
| ALS-rendered position-differential haze and light, moonlight&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 4&lt;br /&gt;
| &lt;br /&gt;
* Procedural snow cover on terrain&lt;br /&gt;
* Procedural dust and vegetation effects&lt;br /&gt;
* Wet terrain effect with approximate reflection half vector&lt;br /&gt;
* Patchy fog distribution&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 5&lt;br /&gt;
| Noise bump-mapping and parallax mapping of terrain&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 6&lt;br /&gt;
| (''Requires transition effect level 6'')&lt;br /&gt;
* Wet terrain effect with correct reflection half vector&lt;br /&gt;
* Hires bump mapping and snow patchiness&lt;br /&gt;
* Variable upper haze layer surface&lt;br /&gt;
* Rayleigh haze&lt;br /&gt;
* Secondary lights on all terrain types&lt;br /&gt;
* Slope line and strata effects&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ALS secondary lights ==&lt;br /&gt;
The ALS framework supports a generic implementation of landing lights and a searchlight which are based on a framerate-friendly computation in screen coordinates, i.e., the lights project correctly ''only if the light is close to the viewer'' (typically, that would be from cockpit view). In other words, this is not a full (and rather expensive) computation of light volumes as in Rembrandt, but a much faster test of illuminated screen areas.&lt;br /&gt;
&lt;br /&gt;
[[File:Landing light03.jpg|400px|Cessna 172P using generic ALS landing lights]]&lt;br /&gt;
&lt;br /&gt;
Two landing lights and a searchlight are supported. The landing lights have a fixed position with respect to the aircraft axis (technically, with respect to the default view axis as defined in the respective view), whereas the searchlight follows any offset of the view axis in view mode, i.e., when using the mouse to look around, the searchlight will follow the motion, the landing lights will not. The lights require ALS to run above basic quality level and work on runway and airport keep above transition setting 3 and everywhere else only at highest quality setting. All lights are controlled via properties in &amp;lt;code&amp;gt;/sim/rendering/als-secondary-lights/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The names of the properties should be self-explanatory, if for instance if &amp;lt;code&amp;gt;/sim/rendering/als-secondary-lights/use-searchlight&amp;lt;/code&amp;gt; is set to true, then the searchlight (which always follows the current view axis) is used. &lt;br /&gt;
&lt;br /&gt;
The properties &amp;lt;code&amp;gt;/sim/rendering/als-secondary-lights/landing-light1-offset-deg&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/sim/rendering/als-secondary-lights/landing-light2-offset-deg&amp;lt;/code&amp;gt; allow to specify angular offsets for the landing light which are then not centered on the view axis. This can be used to simulate one or two landing lights set in the wings.&lt;br /&gt;
&lt;br /&gt;
[[File:Offsetv2.jpg|400px|Secondary lights vertical offset demo]]&lt;br /&gt;
&lt;br /&gt;
A third offset &amp;lt;code&amp;gt;/sim/rendering/als-secondary-lights/landing-light3-offset-deg&amp;lt;/code&amp;gt; is available which allows for a vertical offset. This is especially useful for tail dagger aircraft.&lt;br /&gt;
&lt;br /&gt;
[[File:Offsetv.jpg|400px|Secondary lights vertical offset settings]]&lt;br /&gt;
&lt;br /&gt;
The lights can be switched on and off from the [[Property Browser]] for any aircraft without any modifications to the aircraft definition. Implementing them correctly aircraft side thus just involves linking the landing light switches to the ALS control properties and setting the correct angular offsets. Additionally, it is recommended to switch the lights off unless in a cockpit view, as they don't project correctly for any external view.&lt;br /&gt;
&lt;br /&gt;
Range, color, light cone opening angle or intensity of the lights can currently not be configured, and there are no plans to support such a feature in the near future.&lt;br /&gt;
&lt;br /&gt;
All three lights will illuminate fog (if dense enough) and precipitation.&lt;br /&gt;
&lt;br /&gt;
[[File:Als secondary light fog.jpg|400px|ALS generic lights illuminating dense fog]]&lt;br /&gt;
&lt;br /&gt;
== ALS specific features of the model effect ==&lt;br /&gt;
&lt;br /&gt;
In addition to the features supported by the model-combined-deferred effect in all three renderers (normal, light, specular, environment reflection and dirt map), ALS also supports a couple of unique effects (which, if configured, will not have any effect in other renderers.&lt;br /&gt;
&lt;br /&gt;
=== The grain texture  ===&lt;br /&gt;
&lt;br /&gt;
ALS supports a grain texture for models. This is a semi-transparent overlay texture that works just as [[Procedural Texturing#The grain texture|its equivalent for terrain texturing]] and provides the option of generating centimeter-scale details such as rust or discoloration on a surface without having to use huge textures. An example of a surface rendered with grain texture is the image of the USS Vinson flightdeck below:&lt;br /&gt;
&lt;br /&gt;
[[File:Grain rain01.jpg|700px|Grain and rain effects on Vinson's flightdeck]]&lt;br /&gt;
&lt;br /&gt;
This is done using the following effect declaration inheriting from '''model-combined-deferred.eff''' as&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;name&amp;gt;flightdeck&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;inherits-from&amp;gt;Effects/model-combined-deferred&amp;lt;/inherits-from&amp;gt;&lt;br /&gt;
&amp;lt;parameters&amp;gt;&lt;br /&gt;
  &amp;lt;grain-texture-enabled type=&amp;quot;int&amp;quot;&amp;gt;2&amp;lt;/grain-texture-enabled&amp;gt;&lt;br /&gt;
  &amp;lt;grain-magnification type=&amp;quot;float&amp;quot;&amp;gt;0.1&amp;lt;/grain-magnification&amp;gt;&lt;br /&gt;
  &amp;lt;rain-enabled type=&amp;quot;int&amp;quot;&amp;gt;2&amp;lt;/rain-enabled&amp;gt;&lt;br /&gt;
  &amp;lt;texture n=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;image&amp;gt;Models/Geometry/Nimitz/rust_texture.png&amp;lt;/image&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;2d&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;filter&amp;gt;linear-mipmap-linear&amp;lt;/filter&amp;gt; &lt;br /&gt;
    &amp;lt;wrap-s&amp;gt;repeat&amp;lt;/wrap-s&amp;gt;&lt;br /&gt;
    &amp;lt;wrap-t&amp;gt;repeat&amp;lt;/wrap-t&amp;gt;&lt;br /&gt;
    &amp;lt;internal-format&amp;gt;normalized&amp;lt;/internal-format&amp;gt;&lt;br /&gt;
  &amp;lt;/texture&amp;gt;&lt;br /&gt;
&amp;lt;/parameters&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The grain texture has the number 7 and needs to be enabled by&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;grain-texture-enabled type=&amp;quot;int&amp;quot;&amp;gt;2&amp;lt;/grain-texture-enabled&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the value is set to 1, the grain texture uses the uv-mapping of the underlying surface. If that is very irregular (as in the case of the Vinson flightdeck), alternatively the grain can be mapped in xy-model coordinates if the parameter is set to 2, the uv-mapping of the base texture layer is then discarded.&lt;br /&gt;
&lt;br /&gt;
The resolution of the grain texture with respect to the base coordinate layer is specified by&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;grain-magnification type=&amp;quot;float&amp;quot;&amp;gt;0.1&amp;lt;/grain-magnification&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the number is less than 0, the grain resolution is lower than the base layer. If the parameter is greater than 0, it is higher (note that in the above case, the grain is mapped to (xy) rather than (uv), hence the base size is 1 m, so the grain texture is mapped on a 10x10 m patch on the flightdeck, for which a 1024x1024 pixel texture provides ~1 cm sized details).&lt;br /&gt;
&lt;br /&gt;
=== The rain effect ===&lt;br /&gt;
&lt;br /&gt;
Any number greater than 0 passed to&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;rain-enabled type=&amp;quot;int&amp;quot;&amp;gt;2&amp;lt;/rain-enabled&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
enables the splash effect of raindrops on the surface if it points upward. The surface does not have to be flat for this to work, the effect checks for the surface normal automatically, see the rain enabled for the Citation Bravo.&lt;br /&gt;
&lt;br /&gt;
Thorsten noted about rain splashes: &amp;quot;Works fine here - runway needs to get really wet though before you see them (put the environment slider to max to achieve this quickly, it will take some waiting with just rain on).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[File:Grain rain02.jpg|700px|Rain effect on the Citation Bravo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Glossy surfaces ===&lt;br /&gt;
&lt;br /&gt;
To better treat the environment reflections on a glossy surface, ALS contains two options not present in the other renderers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;reflection-type type=&amp;quot;int&amp;quot;&amp;gt;1&amp;lt;/reflection-type&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This parameter can currently be set to 1 or 2 and regulates how the color of the environment reflection is merged with the color of the glossy surface. If set to 1, the shader uses a color mixing as in the other two renderers, if set to 2 it uses a technique called 'grain merge' which gives different weight to the color channels. The reason for introducing type 2 was a grey tint which changed the reflected color in a unrealistic way. With FlightGear 2017.2.0 this will be fixed and  type set to 2 should be obsolete then.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;reflection-fresnel-factor type=&amp;quot;float&amp;quot;&amp;gt;0.0&amp;lt;/reflection-fresnel-factor&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This parameter regulates how strong the Fresnel term of a glossy surface is. Many smooth surfaces reflect much more under shallow angles such that an environment reflection is not very prominent when looking under 90 degrees but dominates the visuals when looking under a grazing angle. The parameter sets the relative strength of a Fresnel reflection with respect to the basic reflection definition which is assumed to hold for vertical viewing (i.e. setting the parameter to 0.8 gives you extra glossiness under shallow angles).&lt;br /&gt;
&lt;br /&gt;
The following comparison shows the default color mixing (upper left) for a reflecting white livery and for grain merge (upper right). In addition, note the enhanced Fresnel reflectivity at the tail and the cowling on the pictures. The lower row shows (left) full reflection with default color mixing and (right) for grain merge. Default color mixing is more physically correct, while grain merge is less correct but preserves white color much better.&lt;br /&gt;
&lt;br /&gt;
[[File:Reflect Model default2.jpg|400px|Effect of color mixing in a reflection]]&lt;br /&gt;
[[File:Reflect Grain merge2.jpg|400px|Effect of grain merge in reflection]]&lt;br /&gt;
&lt;br /&gt;
[[File:Reflect Model Default Full.jpg|400px|Full reflection with default ]]&lt;br /&gt;
[[File:Reflect Grain Merge Full.jpg|400px|Full reflection with grain merge]]&lt;br /&gt;
&lt;br /&gt;
== The exhaust flame effect ==&lt;br /&gt;
&lt;br /&gt;
Rendering proper flames of e.g. afterburners or rocket thrusters with diffuse edges is notoriously difficult - all solutions based on textured models tend to have unnaturally sharp edges. Usually the particle system is used in such cases, however at high velocities this has other issues - particles become easily separated, making flames look disrupted and detached from the exhaust.&lt;br /&gt;
&lt;br /&gt;
ALS includes a dedicated procedural effect in which the flame is rendered by numerically integrating a 3-dim distribution of glowing emitters inside a bounding box (i.e. re-creates the process by which a real flame would be seen). The function which determines the emitter distribution is partially user-controlled so that a wide range of shapes can be generated.&lt;br /&gt;
&lt;br /&gt;
To use the effect, first the bounding box has to be defined. Note that the shape and alignment of the bounding box needs to be standardized for the effect to work, i.e. you need to use either the default bounding box under Aircraft/Generic/Effects/Thruster/ or make a custom one which fits inside the default box at the same location in model coordinates.&lt;br /&gt;
&lt;br /&gt;
To change position, size and orientation of the bounding box to match with the airplane model, translate, scale and rotate animations or model offsets can later be used.&lt;br /&gt;
&lt;br /&gt;
=== Model definition for effect ===&lt;br /&gt;
This is a standard XML model definition that needs to specify the geometry, all animations and the effect to use. For the geometry you can use the standard ''Aircraft/Generic/Effects/Thruster/thrust_flame.ac'' or make your own. The F-15 uses a slightly different 3D model to allow for the nozzles. The 3D model needs to be big enough to contain the flame, bearing in mind that the flame is drawn as a cylinder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;path&amp;gt;Aircraft/Generic/Effects/Thruster/thrust_flame.ac&amp;lt;/path&amp;gt;&lt;br /&gt;
    &amp;lt;nopreview/&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;scale&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;property alias=&amp;quot;/params/augmentation-alight&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;x-min&amp;gt;0.2&amp;lt;/x-min&amp;gt;&lt;br /&gt;
        &amp;lt;y-min&amp;gt;0.3&amp;lt;/y-min&amp;gt;&lt;br /&gt;
        &amp;lt;z-min&amp;gt;0.3&amp;lt;/z-min&amp;gt;&lt;br /&gt;
        &amp;lt;y-max&amp;gt;1&amp;lt;/y-max&amp;gt;&lt;br /&gt;
        &amp;lt;z-max&amp;gt;1&amp;lt;/z-max&amp;gt;&lt;br /&gt;
        &amp;lt;x-factor&amp;gt;0.472&amp;lt;/x-factor&amp;gt;&lt;br /&gt;
        &amp;lt;y-factor&amp;gt;0.6&amp;lt;/y-factor&amp;gt;&lt;br /&gt;
        &amp;lt;z-factor&amp;gt;0.6&amp;lt;/z-factor&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
    &amp;lt;!-- on the F-15 we have a property available that controls the ignition of the afterburner. If you do not wish to implement this&lt;br /&gt;
         remove the following animation tag --&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;select&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;Bounding_box&amp;lt;/object-name&amp;gt;&lt;br /&gt;
        &amp;lt;condition&amp;gt;&lt;br /&gt;
            &amp;lt;greater-than&amp;gt;&lt;br /&gt;
                &amp;lt;property alias=&amp;quot;/params/augmentation-ignition&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;0.8&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/greater-than&amp;gt;&lt;br /&gt;
        &amp;lt;/condition&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;effect&amp;gt;&lt;br /&gt;
        &amp;lt;inherits-from&amp;gt;Aircraft/MyAircraft/Models/Effects/my-flame&amp;lt;/inherits-from&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;Bounding_box&amp;lt;/object-name&amp;gt;&lt;br /&gt;
    &amp;lt;/effect&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Effect definition for model ===&lt;br /&gt;
To define the effect to apply to the model (as referenced in the ''effect'' section in the model XML) you need to create ''my-flame.eff'' as below. The ''.eff'' file defines the parameters that are passed into the shader and it is these that control how the flame looks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;AB-flame&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;inherits-from&amp;gt;Effects/thrust-flame&amp;lt;/inherits-from&amp;gt;&lt;br /&gt;
    &amp;lt;parameters&amp;gt;&lt;br /&gt;
        &amp;lt;base_flame_b type=&amp;quot;float&amp;quot;&amp;gt;0.8&amp;lt;/base_flame_b&amp;gt;&lt;br /&gt;
        &amp;lt;base_flame_density type=&amp;quot;float&amp;quot;&amp;gt;0.6&amp;lt;/base_flame_density&amp;gt;&lt;br /&gt;
        &amp;lt;base_flame_g type=&amp;quot;float&amp;quot;&amp;gt;0.9&amp;lt;/base_flame_g&amp;gt;&lt;br /&gt;
        &amp;lt;base_flame_r type=&amp;quot;float&amp;quot;&amp;gt;0.9&amp;lt;/base_flame_r&amp;gt;&lt;br /&gt;
        &amp;lt;deflection_coeff type=&amp;quot;float&amp;quot;&amp;gt;0&amp;lt;/deflection_coeff&amp;gt;&lt;br /&gt;
        &amp;lt;flame_color_high_b type=&amp;quot;float&amp;quot;&amp;gt;0.8&amp;lt;/flame_color_high_b&amp;gt;&lt;br /&gt;
        &amp;lt;flame_color_high_g type=&amp;quot;float&amp;quot;&amp;gt;0.85&amp;lt;/flame_color_high_g&amp;gt;&lt;br /&gt;
        &amp;lt;flame_color_high_r type=&amp;quot;float&amp;quot;&amp;gt;0.9&amp;lt;/flame_color_high_r&amp;gt;&lt;br /&gt;
        &amp;lt;flame_color_low_b type=&amp;quot;float&amp;quot;&amp;gt;0.07&amp;lt;/flame_color_low_b&amp;gt;&lt;br /&gt;
        &amp;lt;flame_color_low_g type=&amp;quot;float&amp;quot;&amp;gt;0.15&amp;lt;/flame_color_low_g&amp;gt;&lt;br /&gt;
        &amp;lt;flame_color_low_r type=&amp;quot;float&amp;quot;&amp;gt;0.35&amp;lt;/flame_color_low_r&amp;gt;&lt;br /&gt;
        &amp;lt;flame_radius_fraction type=&amp;quot;float&amp;quot;&amp;gt;0.8&amp;lt;/flame_radius_fraction&amp;gt;&lt;br /&gt;
        &amp;lt;noise_scale type=&amp;quot;float&amp;quot;&amp;gt;0.3&amp;lt;/noise_scale&amp;gt;&lt;br /&gt;
        &amp;lt;noise_strength type=&amp;quot;float&amp;quot;&amp;gt;0.2&amp;lt;/noise_strength&amp;gt;&lt;br /&gt;
        &amp;lt;thrust_collimation type=&amp;quot;float&amp;quot;&amp;gt;0.1&amp;lt;/thrust_collimation&amp;gt;&lt;br /&gt;
        &amp;lt;thrust_density type=&amp;quot;float&amp;quot;&amp;gt;0.7&amp;lt;/thrust_density&amp;gt;&lt;br /&gt;
        &amp;lt;use_noise type=&amp;quot;int&amp;quot;&amp;gt;1&amp;lt;/use_noise&amp;gt;&lt;br /&gt;
        &amp;lt;use_shocks type=&amp;quot;int&amp;quot;&amp;gt;1&amp;lt;/use_shocks&amp;gt;&lt;br /&gt;
    &amp;lt;/parameters&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is also a detailed version (utilizing 3d noise and a higher sampling resolution) available. This has to be explicitly requested in a derived effect by overriding the default shader choice with the detailed version, i.e. bu inserting&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;technique n=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;pass&amp;gt;&lt;br /&gt;
     &amp;lt;program&amp;gt;&lt;br /&gt;
         &amp;lt;fragment-shader n=&amp;quot;0&amp;quot;&amp;gt;Shaders/thrustflame-ALS-detailed.frag&amp;lt;/fragment-shader&amp;gt;&lt;br /&gt;
     &amp;lt;/program&amp;gt;&lt;br /&gt;
  &amp;lt;/pass&amp;gt;&lt;br /&gt;
  &amp;lt;/technique&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
below the parameter section.&lt;br /&gt;
&lt;br /&gt;
{{Note|The detailed shader uses four times as much performance at least - only use it if you really need it!}}&lt;br /&gt;
&lt;br /&gt;
=== F-15 Afterburner example image === &lt;br /&gt;
The F-15 afterburner flame shown below (at different ambient lighting based on time) uses the parameters above. The main parameters of importance, and therefore to tune, for an aircraft jet engine are the colors, the two densities, the flame radius fraction. The base density is at the start of the flame and this. The F-15 overlays a billboarded image to achieve the diamonds that are interleaved with the ALS drawn flame. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:F-15 afterburner using ALS Thrust Effect.jpg|700px|This shows the F-15 afterburner at different ambient light.]]&lt;br /&gt;
&lt;br /&gt;
The meaning of the parameters are as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;use_shocks type=&amp;quot;int&amp;quot;&amp;gt;1&amp;lt;/use_shocks&amp;gt;&lt;br /&gt;
    &amp;lt;use_noise type=&amp;quot;int&amp;quot;&amp;gt;1&amp;lt;/use_noise&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;use_shocks&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; and &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;use_noise&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; are the parameters that control the random noise and the shock diamonds. Both are modestly computationally expensive, i.e. if these effects are not required it is better to switch them off by setting these values to zero.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;flame_color_low_r type=&amp;quot;float&amp;quot;&amp;gt;0.95&amp;lt;/flame_color_low_r&amp;gt;&lt;br /&gt;
    &amp;lt;flame_color_high_r type=&amp;quot;float&amp;quot;&amp;gt;1.0&amp;lt;/flame_color_high_r&amp;gt;&lt;br /&gt;
    &amp;lt;base_flame_r type=&amp;quot;float&amp;quot;&amp;gt;0.8&amp;lt;/base_flame_r&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(same for the (g,b) channels) set the color. base_flame refers to the part of the flame which is directly attached to the thruster and usually brightest. flame_color_high refers to the high density part of the flame, flame_color_low refers to the low density parts of the flame. (rgb) values always need to be [0:1]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;thrust_density type=&amp;quot;float&amp;quot;&amp;gt;1.0&amp;lt;/thrust_density&amp;gt;&lt;br /&gt;
   &amp;lt;base_flame_density type=&amp;quot;float&amp;quot;&amp;gt;0.1&amp;lt;/base_flame_density&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
determine the overall emitter density in the flame and in the base directly at the thruster respectively. There's no formal upper limit for the parameters, but a flame with density 1 already appears fairly opaque.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;flame_radius_fraction type=&amp;quot;float&amp;quot;&amp;gt;0.8&amp;lt;/flame_radius_fraction&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
governs how much of the bounding box the flame radius at the exhaust nozzle fills. If the flame needs to expand (as for the plume of a thruster operating in vacuum) or needs to bend (as for a flame deflected by the airstream) this parameter needs to be small, if the flame is essentially cylindrical the paramater can be chosen close to 1 to minimize clipping errors. Note that this determines the size of the flame relative to the bounding box - the overall size of the flame should be adjusted by using a scale animation on the bounding box&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;noise_strength type=&amp;quot;float&amp;quot;&amp;gt;0.2&amp;lt;/noise_strength&amp;gt;&lt;br /&gt;
    &amp;lt;noise_scale type=&amp;quot;float&amp;quot;&amp;gt;0.3&amp;lt;/noise_scale&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
determined how turbulent the flame looks. noise_strength [0:1] determines how prominently the noise influences the flame and noise_scale (in meters relative to the original bounding box) determines how large the visible patches of turbulence are (given that the original bounding box is not larger than 5 m in the longest direction, the parameter should probably kept between 0.1 and 5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;shock_frequency&amp;gt;1.0&amp;lt;/shock_frequency&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
influences at what distance shock diamonds appear in the flame. Useful values are perhaps between 0.2 and 5.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;thrust_collimation type=&amp;quot;float&amp;quot;&amp;gt;0.1&amp;lt;/thrust_collimation&amp;gt;   &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
should take a value of between 0 and 1 and determines how collimated the flame is. For values &amp;gt; 0, the flame is widened - note that this requires a sufficiently small flame radius fraction to avoid clipping errors. For widened flames, the density is automatically lowered and shock diamonds are removed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;deflection_coeff type=&amp;quot;float&amp;quot;&amp;gt;0.&amp;lt;/deflection_coeff&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
should be somewhere between 0 and 0.06 and gives a lateral deflection (such as by an airstream) to the flame. Note that this re-positions the origin of the flame in the bounding box to better utilize the bounding box volume, i.e. if you need a dynamical deflection, you also need a translate animation for the bounding box.&lt;br /&gt;
&lt;br /&gt;
Any of those parameters can be adjusted runtime  by replacing the value with &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; inline&amp;gt;&amp;lt;use&amp;gt;/my-property&amp;lt;/use&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;. Dependent on how &amp;lt;code&amp;gt;/my-property&amp;lt;/code&amp;gt; is created it might be tied though (in particular JSBSim-computed properties are) in which case it is not picked up by the effect framework - you need to copy it via property rule to an untied property then. This allows to render dynamical changes of the flame.&lt;br /&gt;
&lt;br /&gt;
For instance the [[SpaceShuttle - Project Overview|Space Shuttle]] main engines use&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;ssme-flame&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;inherits-from&amp;gt;Effects/thrust-flame&amp;lt;/inherits-from&amp;gt;&lt;br /&gt;
  &amp;lt;parameters&amp;gt;&lt;br /&gt;
    &amp;lt;flame_color_low_r&amp;gt;0.9&amp;lt;/flame_color_low_r&amp;gt;&lt;br /&gt;
    &amp;lt;flame_color_low_g&amp;gt;0.7&amp;lt;/flame_color_low_g&amp;gt;&lt;br /&gt;
    &amp;lt;flame_color_low_b&amp;gt;0.5&amp;lt;/flame_color_low_b&amp;gt;&lt;br /&gt;
    &amp;lt;flame_color_high_r&amp;gt;0.7&amp;lt;/flame_color_high_r&amp;gt;&lt;br /&gt;
    &amp;lt;flame_color_high_g&amp;gt;0.7&amp;lt;/flame_color_high_g&amp;gt;&lt;br /&gt;
    &amp;lt;flame_color_high_b&amp;gt;1.0&amp;lt;/flame_color_high_b&amp;gt;&lt;br /&gt;
    &amp;lt;base_flame_r type=&amp;quot;float&amp;quot;&amp;gt;0.8&amp;lt;/base_flame_r&amp;gt;&lt;br /&gt;
    &amp;lt;base_flame_g type=&amp;quot;float&amp;quot;&amp;gt;1.0&amp;lt;/base_flame_g&amp;gt;&lt;br /&gt;
    &amp;lt;base_flame_b type=&amp;quot;float&amp;quot;&amp;gt;1.0&amp;lt;/base_flame_b&amp;gt;&lt;br /&gt;
    &amp;lt;use_shocks type=&amp;quot;int&amp;quot;&amp;gt;1&amp;lt;/use_shocks&amp;gt;&lt;br /&gt;
    &amp;lt;use_noise type=&amp;quot;int&amp;quot;&amp;gt;1&amp;lt;/use_noise&amp;gt;&lt;br /&gt;
    &amp;lt;thrust_collimation&amp;gt;&amp;lt;use&amp;gt;/sim/systems/various/ssme-flame-collimation&amp;lt;/use&amp;gt;&amp;lt;/thrust_collimation&amp;gt;   &lt;br /&gt;
    &amp;lt;thrust_density&amp;gt;&amp;lt;use&amp;gt;/sim/systems/various/ssme-flame-density&amp;lt;/use&amp;gt;&amp;lt;/thrust_density&amp;gt;&lt;br /&gt;
    &amp;lt;base_flame_density type=&amp;quot;float&amp;quot;&amp;gt;1.0&amp;lt;/base_flame_density&amp;gt;&lt;br /&gt;
    &amp;lt;shock_frequency&amp;gt;1.0&amp;lt;/shock_frequency&amp;gt;&lt;br /&gt;
    &amp;lt;noise_strength&amp;gt;0.3&amp;lt;/noise_strength&amp;gt;&lt;br /&gt;
    &amp;lt;noise_scale&amp;gt;0.1&amp;lt;/noise_scale&amp;gt;&lt;br /&gt;
  &amp;lt;/parameters&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to simulate the change of flame geometry in the thin upper atmosphere during ascent:&lt;br /&gt;
&lt;br /&gt;
[[File:Shuttle flame05.jpg|400px|Space Shuttle main engine flames during early ascent]]&lt;br /&gt;
[[File:Shuttle flame06.jpg|400px|Space Shuttle main engine flames during late ascent]]&lt;br /&gt;
&lt;br /&gt;
Using the deflection parameter, the curved SRB separation motor flames are rendered using&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;SRBsep-flame&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;inherits-from&amp;gt;Effects/thrust-flame&amp;lt;/inherits-from&amp;gt;&lt;br /&gt;
  &amp;lt;parameters&amp;gt;&lt;br /&gt;
    &amp;lt;flame_color_low_r type=&amp;quot;float&amp;quot;&amp;gt;0.95&amp;lt;/flame_color_low_r&amp;gt;&lt;br /&gt;
    &amp;lt;flame_color_low_g type=&amp;quot;float&amp;quot;&amp;gt;0.55&amp;lt;/flame_color_low_g&amp;gt;&lt;br /&gt;
    &amp;lt;flame_color_low_b type=&amp;quot;float&amp;quot;&amp;gt;0.1&amp;lt;/flame_color_low_b&amp;gt;&lt;br /&gt;
    &amp;lt;flame_color_high_r type=&amp;quot;float&amp;quot;&amp;gt;1.0&amp;lt;/flame_color_high_r&amp;gt;&lt;br /&gt;
    &amp;lt;flame_color_high_g type=&amp;quot;float&amp;quot;&amp;gt;1.0&amp;lt;/flame_color_high_g&amp;gt;&lt;br /&gt;
    &amp;lt;flame_color_high_b type=&amp;quot;float&amp;quot;&amp;gt;1.0&amp;lt;/flame_color_high_b&amp;gt;&lt;br /&gt;
    &amp;lt;use_shocks type=&amp;quot;int&amp;quot;&amp;gt;0&amp;lt;/use_shocks&amp;gt;&lt;br /&gt;
    &amp;lt;use_noise type=&amp;quot;int&amp;quot;&amp;gt;1&amp;lt;/use_noise&amp;gt;&lt;br /&gt;
    &amp;lt;thrust_collimation type=&amp;quot;float&amp;quot;&amp;gt;0.4&amp;lt;/thrust_collimation&amp;gt;   &lt;br /&gt;
    &amp;lt;thrust_density type=&amp;quot;float&amp;quot;&amp;gt;1.0&amp;lt;/thrust_density&amp;gt;&lt;br /&gt;
    &amp;lt;base_flame_density type=&amp;quot;float&amp;quot;&amp;gt;0.0&amp;lt;/base_flame_density&amp;gt;&lt;br /&gt;
    &amp;lt;noise_strength type=&amp;quot;float&amp;quot;&amp;gt;0.7&amp;lt;/noise_strength&amp;gt;&lt;br /&gt;
    &amp;lt;noise_scale type=&amp;quot;float&amp;quot;&amp;gt;0.4&amp;lt;/noise_scale&amp;gt;&lt;br /&gt;
    &amp;lt;deflection_coeff type=&amp;quot;float&amp;quot;&amp;gt;-0.06&amp;lt;/deflection_coeff&amp;gt;&lt;br /&gt;
    &amp;lt;flame_radius_fraction type=&amp;quot;float&amp;quot;&amp;gt;0.1&amp;lt;/flame_radius_fraction&amp;gt;&lt;br /&gt;
  &amp;lt;/parameters&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Flame_sep.jpg|700px|Space Shuttle SRB separation motor flames]]&lt;br /&gt;
&lt;br /&gt;
Application of the effect is not limited to flames, it can also do heat blur (think a very transparent, high-noise dark emitter distribution) or vapour trails and other smoke.&lt;br /&gt;
&lt;br /&gt;
By itself, the effect does however not compute ambient and diffuse light channels, i.e. for non-emissive distributions lighting is the responsibility of the user. One quick way of obtaining a correct fading of color with light in the scene is to create an untied property based on&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/rendering/scene/diffuse/red&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and used this to scale all color values.&lt;br /&gt;
&lt;br /&gt;
{{note|Do not use the full (rgb) information in the property tree for ALS, it will produce pronounced color mismatches with the rest of the scene as ALS determines light inside the shader and never uses the properties.}}&lt;br /&gt;
&lt;br /&gt;
== Chute animation effect ==&lt;br /&gt;
&lt;br /&gt;
The chute animation effect is designed to provide a natural appearance of the deformation and the fluttering motion of a piece of cloth under changing stress.&lt;br /&gt;
&lt;br /&gt;
[[File:Chute seq01.jpg|400px|Drag chute separation sequence 1]] [[File:Chute seq03.jpg|400px|Drag chute separation sequence 2]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Coordinate system ===&lt;br /&gt;
&lt;br /&gt;
The shader assumes that the 3d mesh of the chute is oriented in a particular coordinate system. The z-axis (upward) should extend from the zero point where the various ropes come together to the canopy above through the center of the model. The canopy of the chute should therefore roughly be in the xy plane.&lt;br /&gt;
&lt;br /&gt;
To position the chute correctly with the aircraft, you then need to use appropriate offsets and rotations when loading.&lt;br /&gt;
&lt;br /&gt;
=== Effect definition for model ===&lt;br /&gt;
&lt;br /&gt;
To define the effect to apply to the model (as referenced in the ''effect'' section in the model XML) you need to create ''mychute.eff'' as below. The ''.eff'' file defines the parameters that are passed into the shader and it is these that control the behavior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;mychute&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;inherits-from&amp;gt;Effects/chute&amp;lt;/inherits-from&amp;gt;&lt;br /&gt;
    &amp;lt;parameters&amp;gt;&lt;br /&gt;
        &amp;lt;chute_force&amp;gt;&amp;lt;use&amp;gt;Aircraft/MyAircraft/myforce&amp;lt;/use&amp;gt;&amp;lt;/chute_force&amp;gt;&lt;br /&gt;
	&amp;lt;chute_projection_z&amp;gt;0.0&amp;lt;/chute_projection_z&amp;gt;&lt;br /&gt;
	&amp;lt;chute_fold&amp;gt;0.0&amp;lt;/chute_fold&amp;gt;&lt;br /&gt;
	&amp;lt;chute_bend&amp;gt;0.0&amp;lt;/chute_bend&amp;gt;&lt;br /&gt;
    &amp;lt;/parameters&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The meaning of these parameters is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;chute_projection_z&amp;gt;0.0&amp;lt;/chute_projection_z&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is the distance of the branching point of the various lines leading to the canopy (at model coordinate zero) to the edge of the canopy. All transformations affecting the shape of the canopy (in particular the collapse of the canopy if the force is gone) will be applied with respect to this reference plane.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;chute_force&amp;gt;&amp;lt;use&amp;gt;Aircraft/MyAircraft/myforce&amp;lt;/use&amp;gt;&amp;lt;/chute_force&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a normalized force applied to the canopy. The chute should be modeled with a deformation corresponding to a force parameter of 1 - any higher value will narrow the chute's radius, deepen the chute's deformation along the z-axis and increase the motion, any lower value will widen chute radius (compare screenshots above) and lessen its depth and slow down motion. The normal parameter range should be from [0:2], any higher or lower may look odd.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;chute_fold&amp;gt;0.0&amp;lt;/chute_fold&amp;gt;&lt;br /&gt;
	 &amp;lt;chute_bend&amp;gt;0.0&amp;lt;/chute_bend&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are deformation modes used to animate a chute after jettison when it is no longer pulled into shape and can flutter through the air. The first one [0:1] is a general collapse into the projection plane with random deformations around, the second one [-1:1] is a gross bending mode of the projection plane itself. Before jettison, these parameters should default to 0.&lt;br /&gt;
&lt;br /&gt;
=== Jettison animation ===&lt;br /&gt;
&lt;br /&gt;
A complete animated jettison sequence is quite complex and would usually require a Nasal sequence taking the chute through a deceleration trajectory (utilizing translation and rotation animations), bending ad folding oscillations and finally some unfolding as it sinks through the air. The Space Shuttle chute uses the following control loop for 10 seconds of jettison dynamics:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var drag_chute_jettison_animation = func (time) {&lt;br /&gt;
&lt;br /&gt;
var dt = getprop(&amp;quot;/sim/time/delta-sec&amp;quot;);&lt;br /&gt;
time = time + dt;&lt;br /&gt;
&lt;br /&gt;
# horizontal motion&lt;br /&gt;
&lt;br /&gt;
var x = 0.0;&lt;br /&gt;
&lt;br /&gt;
if (time &amp;gt; 2.0)&lt;br /&gt;
	{x = -16.0 + 20.0 * time;}&lt;br /&gt;
else&lt;br /&gt;
	{x = 2.0 * time + 5.0 * time * time;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
setprop(&amp;quot;/controls/shuttle/drag-chute-dist&amp;quot;,x);&lt;br /&gt;
&lt;br /&gt;
# vertical motion&lt;br /&gt;
&lt;br /&gt;
var y = 0.0;&lt;br /&gt;
if (time &amp;gt; 5.0)&lt;br /&gt;
	{&lt;br /&gt;
	y = -2.5 + 0.6 * (time-5.0) * (time-5.0);&lt;br /&gt;
	}&lt;br /&gt;
else 	&lt;br /&gt;
	{&lt;br /&gt;
	y = -0.2 * time;&lt;br /&gt;
	}&lt;br /&gt;
if (y &amp;gt; 12.5) {y=12.5;}&lt;br /&gt;
&lt;br /&gt;
setprop(&amp;quot;/controls/shuttle/drag-chute-down&amp;quot;,y);&lt;br /&gt;
&lt;br /&gt;
# fold&lt;br /&gt;
&lt;br /&gt;
var f = 0.5 * time;&lt;br /&gt;
if (f&amp;gt; 1.0) {f = 1.0;}&lt;br /&gt;
if (time &amp;gt; 9.5)&lt;br /&gt;
	{f = 0.25 + 1.5 + (time-9.5);}&lt;br /&gt;
if (time &amp;gt; 6.0)&lt;br /&gt;
	{&lt;br /&gt;
 	f = f -0.3* (time-7.0); &lt;br /&gt;
	if (f&amp;lt;0.1) {f=0.1;}&lt;br /&gt;
	}&lt;br /&gt;
setprop(&amp;quot;/controls/shuttle/drag-chute-fold&amp;quot;, f);&lt;br /&gt;
&lt;br /&gt;
# rotate&lt;br /&gt;
&lt;br /&gt;
var r = (time - 2.0) * 18.0;&lt;br /&gt;
if (r&amp;gt;90.0) {r=90.0;}&lt;br /&gt;
if (r&amp;lt;0.0) {r=0.0;}&lt;br /&gt;
setprop(&amp;quot;/controls/shuttle/drag-chute-slant&amp;quot;, r);&lt;br /&gt;
&lt;br /&gt;
# bend&lt;br /&gt;
&lt;br /&gt;
var b = 0;&lt;br /&gt;
if (time &amp;gt; 7.5)&lt;br /&gt;
	{b = 0;}&lt;br /&gt;
else if (time &amp;gt;6.0)&lt;br /&gt;
	{b = 0.75 - 0.5 * (time - 6.0);} &lt;br /&gt;
else if (time &amp;gt; 4.5) &lt;br /&gt;
	{b = (time - 4.5) * 0.5;}&lt;br /&gt;
else {b=0;}	&lt;br /&gt;
&lt;br /&gt;
setprop(&amp;quot;/controls/shuttle/drag-chute-bend&amp;quot;, b);&lt;br /&gt;
&lt;br /&gt;
if (time &amp;gt; 10.0) &lt;br /&gt;
	{&lt;br /&gt;
	print(&amp;quot;Exiting...&amp;quot;);&lt;br /&gt;
	settimer (func { setprop(&amp;quot;/controls/shuttle/drag-chute-deploy-timer&amp;quot;, 0); }, 0.5);&lt;br /&gt;
	return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
setprop(&amp;quot;/test/timer&amp;quot;, time);&lt;br /&gt;
&lt;br /&gt;
settimer( func{ drag_chute_jettison_animation (time); }, 0);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ALS glass effect ==&lt;br /&gt;
&lt;br /&gt;
As of FlightGear version 3.5, ALS supports a glass effect with dynamic response to the environment which can render, for instance, the splashes of raindrops on the canopy, frost or fogging.&lt;br /&gt;
&lt;br /&gt;
[[File:Glass01.jpg|400px|Frost effect]]&lt;br /&gt;
[[File:Glass07.jpg|400px|Raindrop splashes]]&lt;br /&gt;
&lt;br /&gt;
The base effect properties are controlled via inheritance and the environment response run-time via properties residing in &amp;lt;b&amp;gt;/environment/aircraft-effects&amp;lt;/b&amp;gt;. Derived effects should inherit from &amp;lt;b&amp;gt;Effects/glass&amp;lt;/b&amp;gt;. Any surface using the glass effect will automatically register itself as transparent for use in [[Project Rembrandt| Rembrandt]]. &lt;br /&gt;
&lt;br /&gt;
The glass effect is primarily intended for interior views. In particular, no external fog or haze is rendered for the glass, i.e. if the effect is used in an outside view, it is the responsibility of the aircraft modeler to take care (e.g. with LOD settings or range animations) that no problems in bad visibility occur.&lt;br /&gt;
&lt;br /&gt;
=== Why a separate effect for glass seen from inside? ===&lt;br /&gt;
&lt;br /&gt;
Basically because the two situations are rather different. Slight dirt on the glass against the background of the sky from inside is rather prominent, against the background of the cockpit seen from outside it is not. Visuals from inside are dominated by Mie forward scattering of light, leading to a bright glare effect when looking at dirt, frost, fog or scratches close to the sun. From outside, reflected light rather than transmitted light is dominant. The reflection of any external object on the outside of the glass changes as the aircraft moves, this is not the case for the reflection of the cockpit in the glass seen from the inside. &lt;br /&gt;
&lt;br /&gt;
The viewing situation is also different. From the inside, we usually do not focus the eyes on the plane of the glass but look through it, from the outside the focus of the eyes is often close to the glass surface. For something half a meter before the eye, we also need to apply a lot more resolution and details than for an object typically seen from 10+ meters from the outside.&lt;br /&gt;
&lt;br /&gt;
Add to this that atmospheric fog is never relevant for glass seen from inside but for glass seen from outside, and it suddenly makes sense to use a different effect.&lt;br /&gt;
&lt;br /&gt;
The recommended effect for glass surfaces seen from outside is model-combined-transparent.eff.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Rain ===&lt;br /&gt;
Rain splashes will render automatically when the weather system reports rain via environment/rain-norm. In addition, the user can set rain splashes to render via &amp;lt;code&amp;gt;environment/aircraft-effects/ground-splash-norm&amp;lt;/code&amp;gt; (this is intended to allow splashes to be rendered e.g., for water landings of aircraft equipped with floats).&lt;br /&gt;
&lt;br /&gt;
By default, the rain splashes impact from above (more precisely the +z direction in model coordinates). This may be inadequate if the aircraft is moving. However, the shader can not know what the airstream at the glass will be, so the impact vector of rain splashes has to be modeled aircraft-side and set via &amp;lt;code&amp;gt;environment/aircraft-effects/splash-vector-x&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;splash-vector-y&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;splash-vector-z&amp;lt;/code&amp;gt;). These are likewise in model coordinates.&lt;br /&gt;
&lt;br /&gt;
As long as the length of the splash vector is less than 1, just the impact angle will change, as the length of the vector increases to 2, droplets will also be visibly moving. This allows fine control of the visuals dependent on any number of factors desired. A simple Nasal snipped varying the splash vector with airspeed for the F-16 is given below (but ''do not mindlessly copy and expect to work for any aircraft — it won't!''). This example is for normals pointing outwards, if the normals are pointing inwards the vector needs to be inverted.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var splash_vec_loop = func(){&lt;br /&gt;
    var airspeed = getprop(&amp;quot;/velocities/airspeed-kt&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    # f16&lt;br /&gt;
    var airspeed_max = 120;&lt;br /&gt;
&lt;br /&gt;
    if (airspeed &amp;gt; airspeed_max) {&lt;br /&gt;
        airspeed = airspeed_max;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    airspeed = math.sqrt(airspeed / airspeed_max);&lt;br /&gt;
&lt;br /&gt;
    var splash_x = -0.1 - 2 * airspeed;&lt;br /&gt;
    var splash_y = 0.0;&lt;br /&gt;
    var splash_z = 1.0 - 1.35 * airspeed;&lt;br /&gt;
&lt;br /&gt;
    setprop(&amp;quot;/environment/aircraft-effects/splash-vector-x&amp;quot;, splash_x);&lt;br /&gt;
    setprop(&amp;quot;/environment/aircraft-effects/splash-vector-y&amp;quot;, splash_y);&lt;br /&gt;
    setprop(&amp;quot;/environment/aircraft-effects/splash-vector-z&amp;quot;, splash_z);&lt;br /&gt;
&lt;br /&gt;
    settimer(func(){&lt;br /&gt;
        splash_vec_loop();&lt;br /&gt;
    }, 1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note the timing constant of the loop — running the update per-frame leads to a spurious movement of the coordinate system in which rain is rendered and spoils the effect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another method when using JSBSIM would be to use a combination of FCS Functions and Filters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;system name=&amp;quot;c172p-glass-effects&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;channel name=&amp;quot;rain&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;fcs_function name=&amp;quot;glass-effects/splashx&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;function&amp;gt;&lt;br /&gt;
                &amp;lt;difference&amp;gt;&lt;br /&gt;
                    &amp;lt;value&amp;gt;-0.1&amp;lt;/value&amp;gt;&lt;br /&gt;
                    &amp;lt;product&amp;gt;&lt;br /&gt;
                        &amp;lt;value&amp;gt;2.0&amp;lt;/value&amp;gt;&lt;br /&gt;
                        &amp;lt;sqrt&amp;gt;&lt;br /&gt;
                            &amp;lt;quotient&amp;gt;&lt;br /&gt;
                                &amp;lt;min&amp;gt;&lt;br /&gt;
                                    &amp;lt;property&amp;gt;/velocities/airspeed-kt&amp;lt;/property&amp;gt;&lt;br /&gt;
                                    &amp;lt;value&amp;gt;40&amp;lt;/value&amp;gt;&lt;br /&gt;
                                &amp;lt;/min&amp;gt;&lt;br /&gt;
                                &amp;lt;value&amp;gt;40&amp;lt;/value&amp;gt;&lt;br /&gt;
                            &amp;lt;/quotient&amp;gt;&lt;br /&gt;
                        &amp;lt;/sqrt&amp;gt;&lt;br /&gt;
                    &amp;lt;/product&amp;gt;&lt;br /&gt;
                &amp;lt;/difference&amp;gt;&lt;br /&gt;
            &amp;lt;/function&amp;gt;&lt;br /&gt;
        &amp;lt;/fcs_function&amp;gt;&lt;br /&gt;
        &amp;lt;fcs_function name=&amp;quot;glass-effects/splashz&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;function&amp;gt;&lt;br /&gt;
                &amp;lt;difference&amp;gt;&lt;br /&gt;
                    &amp;lt;value&amp;gt;1.0&amp;lt;/value&amp;gt;&lt;br /&gt;
                    &amp;lt;product&amp;gt;&lt;br /&gt;
                        &amp;lt;value&amp;gt;1.35&amp;lt;/value&amp;gt;&lt;br /&gt;
                        &amp;lt;sqrt&amp;gt;&lt;br /&gt;
                            &amp;lt;quotient&amp;gt;&lt;br /&gt;
                                &amp;lt;min&amp;gt;&lt;br /&gt;
                                    &amp;lt;property&amp;gt;/velocities/airspeed-kt&amp;lt;/property&amp;gt;&lt;br /&gt;
                                    &amp;lt;value&amp;gt;40&amp;lt;/value&amp;gt;&lt;br /&gt;
                                &amp;lt;/min&amp;gt;&lt;br /&gt;
                                &amp;lt;value&amp;gt;40&amp;lt;/value&amp;gt;&lt;br /&gt;
                            &amp;lt;/quotient&amp;gt;&lt;br /&gt;
                        &amp;lt;/sqrt&amp;gt;&lt;br /&gt;
                    &amp;lt;/product&amp;gt;&lt;br /&gt;
                &amp;lt;/difference&amp;gt;&lt;br /&gt;
            &amp;lt;/function&amp;gt;&lt;br /&gt;
        &amp;lt;/fcs_function&amp;gt;&lt;br /&gt;
    &amp;lt;/channel&amp;gt;&lt;br /&gt;
&amp;lt;/system&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
    &amp;lt;filter&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;splashX&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;gain&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;input&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;/fdm/jsbsim/glass-effects/splashx&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;/input&amp;gt;&lt;br /&gt;
        &amp;lt;output&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;/environment/aircraft-effects/splash-vector-x&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/filter&amp;gt;&lt;br /&gt;
    &amp;lt;filter&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;splashY&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;gain&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;input&amp;gt;&lt;br /&gt;
            &amp;lt;value&amp;gt;0.0&amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;/input&amp;gt;&lt;br /&gt;
        &amp;lt;output&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;/environment/aircraft-effects/splash-vector-y&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/filter&amp;gt;&lt;br /&gt;
    &amp;lt;filter&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;splashZ&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;gain&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;input&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;/fdm/jsbsim/glass-effects/splashz&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;/input&amp;gt;&lt;br /&gt;
        &amp;lt;output&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;/environment/aircraft-effects/splash-vector-z&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/filter&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You could reduce the above method and eliminate the &amp;quot;filters&amp;quot; by doing the following.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;system name=&amp;quot;c172p-glass-effects&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;channel name=&amp;quot;rain&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;fcs_function name=&amp;quot;glass-effects/airspeed-clamped-sqrt&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;function&amp;gt;  &lt;br /&gt;
                &amp;lt;sqrt&amp;gt;&lt;br /&gt;
                    &amp;lt;quotient&amp;gt;&lt;br /&gt;
                        &amp;lt;min&amp;gt;&lt;br /&gt;
                            &amp;lt;property&amp;gt;/velocities/airspeed-kt&amp;lt;/property&amp;gt;&lt;br /&gt;
                            &amp;lt;value&amp;gt;40&amp;lt;/value&amp;gt;&lt;br /&gt;
                        &amp;lt;/min&amp;gt;&lt;br /&gt;
                        &amp;lt;value&amp;gt;40&amp;lt;/value&amp;gt;&lt;br /&gt;
                    &amp;lt;/quotient&amp;gt;&lt;br /&gt;
                &amp;lt;/sqrt&amp;gt;&lt;br /&gt;
            &amp;lt;/function&amp;gt;&lt;br /&gt;
        &amp;lt;/fcs_function&amp;gt;&lt;br /&gt;
        &amp;lt;fcs_function name=&amp;quot;glass-effects/splashx&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;function&amp;gt;&lt;br /&gt;
                &amp;lt;difference&amp;gt;&lt;br /&gt;
                    &amp;lt;value&amp;gt;-0.1&amp;lt;/value&amp;gt;&lt;br /&gt;
                    &amp;lt;product&amp;gt;&lt;br /&gt;
                        &amp;lt;value&amp;gt;2.0&amp;lt;/value&amp;gt;&lt;br /&gt;
                        &amp;lt;property&amp;gt;/fdm/jsbsim/glass-effects/airspeed-clamped-sqrt&amp;lt;/property&amp;gt;&lt;br /&gt;
                    &amp;lt;/product&amp;gt;&lt;br /&gt;
                &amp;lt;/difference&amp;gt;&lt;br /&gt;
            &amp;lt;/function&amp;gt;&lt;br /&gt;
            &amp;lt;output&amp;gt;/environment/aircraft-effects/splash-vector-x&amp;lt;/output&amp;gt;&lt;br /&gt;
        &amp;lt;/fcs_function&amp;gt;&lt;br /&gt;
        &amp;lt;fcs_function name=&amp;quot;glass-effects/splashy&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;function&amp;gt;&lt;br /&gt;
               &amp;lt;value&amp;gt;0.0&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/function&amp;gt;&lt;br /&gt;
            &amp;lt;output&amp;gt;/environment/aircraft-effects/splash-vector-y&amp;lt;/output&amp;gt;&lt;br /&gt;
        &amp;lt;/fcs_function&amp;gt;&lt;br /&gt;
        &amp;lt;fcs_function name=&amp;quot;glass-effects/splashz&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;function&amp;gt;&lt;br /&gt;
                &amp;lt;difference&amp;gt;&lt;br /&gt;
                    &amp;lt;value&amp;gt;1.0&amp;lt;/value&amp;gt;&lt;br /&gt;
                    &amp;lt;product&amp;gt;&lt;br /&gt;
                        &amp;lt;value&amp;gt;1.35&amp;lt;/value&amp;gt;&lt;br /&gt;
                        &amp;lt;property&amp;gt;/fdm/jsbsim/glass-effects/airspeed-clamped-sqrt&amp;lt;/property&amp;gt;&lt;br /&gt;
                    &amp;lt;/product&amp;gt;&lt;br /&gt;
                &amp;lt;/difference&amp;gt;&lt;br /&gt;
            &amp;lt;/function&amp;gt;&lt;br /&gt;
            &amp;lt;output&amp;gt;/environment/aircraft-effects/splash-vector-z&amp;lt;/output&amp;gt;&lt;br /&gt;
        &amp;lt;/fcs_function&amp;gt;&lt;br /&gt;
    &amp;lt;/channel&amp;gt;&lt;br /&gt;
&amp;lt;/system&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yet another method (currently used in the c172p) limits movement to a range of table entries. This gives the developer the ability to control the behavior even more.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
    &amp;lt;filter&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;splash-xa&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;update-interval-secs type=&amp;quot;double&amp;quot;&amp;gt;0.1&amp;lt;/update-interval-secs&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;gain&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;gain&amp;gt;1.0&amp;lt;/gain&amp;gt;&lt;br /&gt;
        &amp;lt;input&amp;gt;&lt;br /&gt;
            &amp;lt;expression&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;property&amp;gt;/velocities/airspeed-kt&amp;lt;/property&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;   0 &amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt; -0.33 &amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;   4 &amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt; -0.33 &amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;   5 &amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt; -1.7  &amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;  50 &amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt; -2.1  &amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/expression&amp;gt;&lt;br /&gt;
        &amp;lt;/input&amp;gt;&lt;br /&gt;
        &amp;lt;output&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;/environment/aircraft-effects/splash-xa&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/filter&amp;gt;&lt;br /&gt;
    &amp;lt;filter&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;splash-za&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;update-interval-secs type=&amp;quot;double&amp;quot;&amp;gt;0.1&amp;lt;/update-interval-secs&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;gain&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;gain&amp;gt;1.0&amp;lt;/gain&amp;gt;&lt;br /&gt;
        &amp;lt;input&amp;gt;&lt;br /&gt;
            &amp;lt;expression&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;property&amp;gt;/velocities/airspeed-kt&amp;lt;/property&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;   0 &amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;  0.82 &amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;   4 &amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;  0.82 &amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;   5 &amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt; -0.17 &amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;  50 &amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt; -0.35 &amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/expression&amp;gt;&lt;br /&gt;
        &amp;lt;/input&amp;gt;&lt;br /&gt;
        &amp;lt;output&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;/environment/aircraft-effects/splash-za&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/filter&amp;gt;&lt;br /&gt;
    &amp;lt;filter&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;splash-xr&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;update-interval-secs type=&amp;quot;double&amp;quot;&amp;gt;0.1&amp;lt;/update-interval-secs&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;gain&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;gain&amp;gt;1.0&amp;lt;/gain&amp;gt;&lt;br /&gt;
        &amp;lt;input&amp;gt;&lt;br /&gt;
            &amp;lt;expression&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;property&amp;gt;/engines/active-engine/rpm&amp;lt;/property&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;    0 &amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt; -0.33 &amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;  600 &amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt; -0.33 &amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;  601 &amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt; -1.3  &amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt; 1500 &amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt; -1.9  &amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;/expression&amp;gt;&lt;br /&gt;
        &amp;lt;/input&amp;gt;&lt;br /&gt;
        &amp;lt;output&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;/environment/aircraft-effects/splash-xr&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/filter&amp;gt;&lt;br /&gt;
    &amp;lt;filter&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;splash-zr&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;update-interval-secs type=&amp;quot;double&amp;quot;&amp;gt;0.1&amp;lt;/update-interval-secs&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;gain&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;gain&amp;gt;1.0&amp;lt;/gain&amp;gt;&lt;br /&gt;
        &amp;lt;input&amp;gt;&lt;br /&gt;
            &amp;lt;expression&amp;gt;&lt;br /&gt;
                &amp;lt;table&amp;gt;&lt;br /&gt;
                    &amp;lt;property&amp;gt;/engines/active-engine/rpm&amp;lt;/property&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;    0 &amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;  0.82  &amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;  600 &amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;  0.82  &amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;  601 &amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;  0.127 &amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt; 1500 &amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt; -0.29  &amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
                &amp;lt;/table&amp;gt;0&lt;br /&gt;
            &amp;lt;/expression&amp;gt;&lt;br /&gt;
        &amp;lt;/input&amp;gt;&lt;br /&gt;
        &amp;lt;output&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;/environment/aircraft-effects/splash-zr&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/filter&amp;gt;&lt;br /&gt;
    &amp;lt;filter&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;splash-x&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;update-interval-secs type=&amp;quot;double&amp;quot;&amp;gt;0.1&amp;lt;/update-interval-secs&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;gain&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;gain&amp;gt;1.0&amp;lt;/gain&amp;gt;&lt;br /&gt;
        &amp;lt;input&amp;gt;&lt;br /&gt;
            &amp;lt;condition&amp;gt;&lt;br /&gt;
                &amp;lt;greater-than-equals&amp;gt;&lt;br /&gt;
                    &amp;lt;property&amp;gt;/velocities/airspeed-kt&amp;lt;/property&amp;gt;&lt;br /&gt;
                    &amp;lt;value&amp;gt;5&amp;lt;/value&amp;gt;&lt;br /&gt;
                &amp;lt;/greater-than-equals&amp;gt;&lt;br /&gt;
            &amp;lt;/condition&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;/environment/aircraft-effects/splash-xa&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;/input&amp;gt;&lt;br /&gt;
        &amp;lt;input&amp;gt;&lt;br /&gt;
            &amp;lt;condition&amp;gt;&lt;br /&gt;
                &amp;lt;less-than&amp;gt;&lt;br /&gt;
                    &amp;lt;property&amp;gt;/velocities/airspeed-kt&amp;lt;/property&amp;gt;&lt;br /&gt;
                    &amp;lt;value&amp;gt;5&amp;lt;/value&amp;gt;&lt;br /&gt;
                &amp;lt;/less-than&amp;gt;&lt;br /&gt;
            &amp;lt;/condition&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;/environment/aircraft-effects/splash-xr&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;/input&amp;gt;&lt;br /&gt;
        &amp;lt;output&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;/environment/aircraft-effects/splash-vector-x&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/filter&amp;gt;&lt;br /&gt;
    &amp;lt;filter&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;splash-y&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;update-interval-secs type=&amp;quot;double&amp;quot;&amp;gt;0.1&amp;lt;/update-interval-secs&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;gain&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;gain&amp;gt;1.0&amp;lt;/gain&amp;gt;&lt;br /&gt;
        &amp;lt;input&amp;gt;&lt;br /&gt;
            &amp;lt;value&amp;gt;0.0&amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;/input&amp;gt;&lt;br /&gt;
        &amp;lt;output&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;/environment/aircraft-effects/splash-vector-y&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/filter&amp;gt;&lt;br /&gt;
    &amp;lt;filter&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;splash-z&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;update-interval-secs type=&amp;quot;double&amp;quot;&amp;gt;0.1&amp;lt;/update-interval-secs&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;gain&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;gain&amp;gt;1.0&amp;lt;/gain&amp;gt;&lt;br /&gt;
        &amp;lt;input&amp;gt;&lt;br /&gt;
            &amp;lt;condition&amp;gt;&lt;br /&gt;
                &amp;lt;greater-than-equals&amp;gt;&lt;br /&gt;
                    &amp;lt;property&amp;gt;/velocities/airspeed-kt&amp;lt;/property&amp;gt;&lt;br /&gt;
                    &amp;lt;value&amp;gt;5&amp;lt;/value&amp;gt;&lt;br /&gt;
                &amp;lt;/greater-than-equals&amp;gt;&lt;br /&gt;
            &amp;lt;/condition&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;/environment/aircraft-effects/splash-za&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;/input&amp;gt;&lt;br /&gt;
        &amp;lt;input&amp;gt;&lt;br /&gt;
            &amp;lt;condition&amp;gt;&lt;br /&gt;
                &amp;lt;less-than&amp;gt;&lt;br /&gt;
                    &amp;lt;property&amp;gt;/velocities/airspeed-kt&amp;lt;/property&amp;gt;&lt;br /&gt;
                    &amp;lt;value&amp;gt;5&amp;lt;/value&amp;gt;&lt;br /&gt;
                &amp;lt;/less-than&amp;gt;&lt;br /&gt;
            &amp;lt;/condition&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;/environment/aircraft-effects/splash-zr&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;/input&amp;gt;&lt;br /&gt;
        &amp;lt;output&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;/environment/aircraft-effects/splash-vector-z&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/filter&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Frost and fogging ===&lt;br /&gt;
&lt;br /&gt;
Frost on the canopy is rendered when environment/aircraft-effects/frost-level is set in the range from 0 to 1. Again, it is up to the aircraft developer to decide at what exterior conditions frosting should happen and whether the aircraft is equipped with heating to remove the frost again.&lt;br /&gt;
&lt;br /&gt;
Fogging is controlled by environment/aircraft-effects/fog-level in the range 0 to 1. Unless a mask is used, fogging is homogeneous across the whole surface (it is really intended to be used with a mask).&lt;br /&gt;
&lt;br /&gt;
=== Tint ===&lt;br /&gt;
&lt;br /&gt;
Tinted glass can be easily created by changing &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;glass-tint type=&amp;quot;vec4d&amp;quot; n=&amp;quot;0&amp;quot;&amp;gt; 1.0 1.0 1.0 1.0&amp;lt;/glass-tint&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to any value desired. This will affect all effects assumed outside of the glass layer (frost and rain splashes) but not fogging inside the glass. Use primarily for development and quick tests, don't misuse the alpha value available here, it has odd side effects.&lt;br /&gt;
&lt;br /&gt;
=== Functional masks ===&lt;br /&gt;
&lt;br /&gt;
If the glass surface is uv-mapped and textured, it is possible to switch on a mask functionality in the inheritance via&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;texture n=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;image&amp;gt;my_mask.png&amp;lt;/image&amp;gt;&lt;br /&gt;
	&amp;lt;type&amp;gt;2d&amp;lt;/type&amp;gt;&lt;br /&gt;
	&amp;lt;filter&amp;gt;linear-mipmap-linear&amp;lt;/filter&amp;gt;&lt;br /&gt;
	&amp;lt;wrap-s&amp;gt;clamp&amp;lt;/wrap-s&amp;gt;&lt;br /&gt;
	&amp;lt;wrap-t&amp;gt;clamp&amp;lt;/wrap-t&amp;gt;&lt;br /&gt;
	&amp;lt;internal-format&amp;gt;normalized&amp;lt;/internal-format&amp;gt;&lt;br /&gt;
&amp;lt;/texture&amp;gt;&lt;br /&gt;
&amp;lt;use-mask type=&amp;quot;int&amp;quot;&amp;gt;1&amp;lt;/use-mask&amp;gt;&lt;br /&gt;
&amp;lt;overlay-color type=&amp;quot;vec3d&amp;quot; n=&amp;quot;0&amp;quot;&amp;gt;1.0 1.0 1.0&amp;lt;/overlay-color&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The red channel in my_mask.png controls the strength of fogging, full red corresponds to maximal fogging, no red to zero fogging. This allows to selectively model the position of heaters in the cockpit. Use &amp;lt;b&amp;gt;/environment/aircraft-effects/fog-level&amp;lt;/b&amp;gt; to adjust the actual amount of fog runtime.&lt;br /&gt;
&lt;br /&gt;
The green channel of my_mask.png is the amount of reduction of rain in an area. This is intended for airplanes equipped with windshield wipers to partially clear the wiped area of the rain. Whether the windshield wiper is actually on or not is controlled runtime via &amp;lt;b&amp;gt;/environent/aircraft-effects/use-wipers&amp;lt;/b&amp;gt; (1 sets wipers to on).&lt;br /&gt;
&lt;br /&gt;
The blue channel of my_mask.png is reserved for an overlay pattern which will be drawn in an optionally specified &amp;lt;overlay-color&amp;gt; vector (white in the example xml above) - the primary function is to render damage on the glass, but with a different color, also dirt or an alternative more finely controlled frost pattern can be used. The strength of the pattern can be adjusted runtime via &amp;lt;b&amp;gt;/environment/aircraft-effects/overlay-alpha&amp;lt;/b&amp;gt;, allowing dynamical accumulation of dirt or sudden appearance of damage.&lt;br /&gt;
&lt;br /&gt;
Examples for the result of a fog mask and a damage mask are shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Glass12.jpg|400px|Crack pattern using a damage mask]]&lt;br /&gt;
[[File:Glass11.jpg|400px|Partial fogging using a mask texture]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note that by default all the runtime switches for the mask are off / set to zero! Remember to to switch them on when testing the effect!&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mie scattering ===&lt;br /&gt;
&lt;br /&gt;
Most glass effects show prominent Mie forward scattering as in reality, i.e. frost patterns or fogging will appear much more prominent when looking almost towards the sun than under any other angle. While the frost pattern is normally not very prominent and one is able to look through unhindered, this changes substantially when looking into the sun, at which point it almost obscures the view.&lt;br /&gt;
&lt;br /&gt;
[[File:Glass08.jpg|400px|Mie scattering of low light on frost]]&lt;br /&gt;
[[File:Glass13.jpg|400px|Morning sun Mie scattering on fog]]&lt;br /&gt;
&lt;br /&gt;
For frost and fog, the strength of the effect is set automatically, but for the damage/dirt layer it is under user control at effect design time. Changing the parameter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;overlay-glare type=&amp;quot;float&amp;quot;&amp;gt;0.5&amp;lt;/overlay-glare&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
from its default value allows to adjust the strength of the glare when looking through the overlay layer close to the sun.&lt;br /&gt;
&lt;br /&gt;
=== Internal cockpit reflection ===&lt;br /&gt;
&lt;br /&gt;
There is support for a reflection of the cockpit interior.&lt;br /&gt;
&lt;br /&gt;
[[File:Reflect.jpg|640px|Internal glass cube map reflection]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This needs to be provided as a cubemap specific for the airplane and switched on via the flag &amp;lt;use-reflection&amp;gt; set to 1. The relative strength of the reflection can be optionally via &amp;lt;reflection-strength&amp;gt;. The strength of the reflection in the cockpit is dynamically adjusted for a number of factors, among them balance of direct to indirect light, the approximate amount of light falling on the surface seen in the reflection and the amount of direct sunlight falling into the eye.&lt;br /&gt;
&lt;br /&gt;
If the six cubemap faces are called my_cube_map_??.png, then using an effect file called c172p-reflect.eff the inheritance looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;c172-reflect&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;inherits-from&amp;gt;Effects/glass&amp;lt;/inherits-from&amp;gt;&lt;br /&gt;
  &amp;lt;parameters&amp;gt;&lt;br /&gt;
    &amp;lt;texture n=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;cubemap&amp;lt;/type&amp;gt;&lt;br /&gt;
      &amp;lt;images&amp;gt;&lt;br /&gt;
        &amp;lt;positive-x&amp;gt;my_cube_map_px.png&amp;lt;/positive-x&amp;gt;&lt;br /&gt;
        &amp;lt;negative-x&amp;gt;my_cube_map_nx.png&amp;lt;/negative-x&amp;gt;&lt;br /&gt;
        &amp;lt;positive-y&amp;gt;my_cube_map_py.png&amp;lt;/positive-y&amp;gt;&lt;br /&gt;
        &amp;lt;negative-y&amp;gt;my_cube_map_ny.png&amp;lt;/negative-y&amp;gt;&lt;br /&gt;
        &amp;lt;positive-z&amp;gt;my_cube_map_pz.png&amp;lt;/positive-z&amp;gt;&lt;br /&gt;
        &amp;lt;negative-z&amp;gt;my_cube_map_nz.png&amp;lt;/negative-z&amp;gt;&lt;br /&gt;
        &amp;lt;/images&amp;gt;&lt;br /&gt;
    &amp;lt;/texture&amp;gt;&lt;br /&gt;
    &amp;lt;use-reflection type=&amp;quot;int&amp;quot;&amp;gt;1&amp;lt;/use-reflection&amp;gt;&lt;br /&gt;
    &amp;lt;reflection-strength type=&amp;quot;float&amp;quot;&amp;gt;1.0&amp;lt;/reflection-strength&amp;gt;&lt;br /&gt;
  &amp;lt;/parameters&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The inheritance call includes all surface objects that use the effect.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;effect&amp;gt;&lt;br /&gt;
   &amp;lt;inherits-from&amp;gt;Aircraft/c172p/Models/Effects/c172p-reflect&amp;lt;/inherits-from&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;glas&amp;lt;/object-name&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;rightwindow&amp;lt;/object-name&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;leftwindow&amp;lt;/object-name&amp;gt;&lt;br /&gt;
&amp;lt;/effect&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See below (Interior shading), for details on cube_map creation and orientation.&lt;br /&gt;
&lt;br /&gt;
=== Lightmaps for internal cockpit reflection ===&lt;br /&gt;
&lt;br /&gt;
If the cockpit is illuminated at night, the reflection map will not show this change by default. However,the glass effect supports a lightmap for the reflection, which can be used in parallel with the lightmap for the panels to show the reflection of a lit panel at night.&lt;br /&gt;
&lt;br /&gt;
Since the reflection map is a cube map, the lightmap for it has to be as well, the syntax is hence&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;use-reflection-lightmap type=&amp;quot;int&amp;quot;&amp;gt;1&amp;lt;/use-reflection-lightmap&amp;gt;&lt;br /&gt;
&amp;lt;texture n=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;cubemap&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;images&amp;gt;&lt;br /&gt;
          &amp;lt;positive-x&amp;gt;Models/Effects/interior/reflection/light-px.png&amp;lt;/positive-x&amp;gt;     &lt;br /&gt;
          &amp;lt;negative-x&amp;gt;Models/Effects/interior/reflection/light-nx.png&amp;lt;/negative-x&amp;gt;   &lt;br /&gt;
          &amp;lt;positive-y&amp;gt;Models/Effects/interior/reflection/light-py.png&amp;lt;/positive-y&amp;gt;     &lt;br /&gt;
          &amp;lt;negative-y&amp;gt;Models/Effects/interior/reflection/light-ny.png&amp;lt;/negative-y&amp;gt;    &lt;br /&gt;
          &amp;lt;positive-z&amp;gt;Models/Effects/interior/reflection/light-pz.png&amp;lt;/positive-z&amp;gt;      &lt;br /&gt;
          &amp;lt;negative-z&amp;gt;Models/Effects/interior/reflection/light-nz.png&amp;lt;/negative-z&amp;gt;      &lt;br /&gt;
      &amp;lt;/images&amp;gt;&lt;br /&gt;
&amp;lt;/texture&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The control parameters of the lightmap otherwise parallel those of the [[Model-combined_effect]] or the model interior effect described below, i.e. up to four channels can be independently specified on the lightmap.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
By default, rain and frost are mapped to the shape of the canopy using coordinate systems that adapts to the splash vector and the canopy shape. This requires no particular action aircraft-side except to provide the bare geometry of a canopy/windshield, but may not be satisfactory in all instances - in particular for near vertical cockpit side windows the scheme does poorly.&lt;br /&gt;
&lt;br /&gt;
There are two alternative coordinate maps available in this case, controlled by the parameter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;surface-mapping-scheme type=&amp;quot;int&amp;quot;&amp;gt;0&amp;lt;/surface-mapping-scheme&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the parameter is changed to 1, the uv-mapping of the surface is used (it has to exist of course). For this to work properly, the uv-mapping needs to be sufficiently regular and roughly preserve the mapped area.&lt;br /&gt;
&lt;br /&gt;
If the parameter is changed to 2, a local orthonormal system based on the normals of the surface is constructed. This no longer takes the splash vector consistently into account  and works poorly for surfaces which are flat in the (xy)-plane, but gives decent result for side windows.&lt;br /&gt;
&lt;br /&gt;
== The HUD effect ==&lt;br /&gt;
&lt;br /&gt;
The HUD effect is a variant of the glass effect designed to render the visuals of a head-up display (HUD) closer to real life. This only works if the HUD is custom-created via [[Canvas]], not via the native FG HUD mechanism as the latter by-passes the effect framework.&lt;br /&gt;
&lt;br /&gt;
The effect takes the same configuration options as the glass effect (i.e. it can render frost, damage, scratches, glare,...) but in addition it runs a blur over the HUD image and alters the color distribution of the projected symbols to de-saturate the bright parts in the center. The result looks less monochromatic and more like light projected onto a surface (left: bare canvas right: HUD effect)&lt;br /&gt;
&lt;br /&gt;
[[File:HUD effect.jpg|800px|Comparison between a bare canvas HUD (left) and the ALS HUD shader run over it (right)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
The effect is used from the model file by assigning it to the surface that also carries the canvas texture of the HUD via&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;effect&amp;gt;&lt;br /&gt;
        &amp;lt;inherits-from&amp;gt;Effects/hud&amp;lt;/inherits-from&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;HUDImage&amp;lt;/object-name&amp;gt;&lt;br /&gt;
    &amp;lt;/effect&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This should usually work out of the box, but if the HUD brightness should be changeable or the glass properties adjusted, a derived effect needs to be created.&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
&lt;br /&gt;
In addition to the parameters supported by the glass shader (which, for instance in the case of rain splashes, may or may not be appropriate for a HUD, this is left at user's discretion), the HUD effect takes the following special parameters:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;brightness&amp;gt;1.0&amp;lt;/brightness&amp;gt;&lt;br /&gt;
   &amp;lt;sample-res&amp;gt;0.0006&amp;lt;/sample-res&amp;gt;&lt;br /&gt;
   &amp;lt;sample-far&amp;gt;2.5&amp;lt;/sample-far&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first one is the relative brightness setting of the HUD (which should equal the alpha value assigned to the canvas image of the symbols). This parameter is used to de-saturate colors in the symbol centers.&lt;br /&gt;
&lt;br /&gt;
Remaining two parameters represent the size and shape of the blur Kernel being used. The sample resolution (sample-res) determines the overall size of the blur region, the farthest sample (sample-far) how far out the tails of the blur region extend.&lt;br /&gt;
&lt;br /&gt;
Note: The number of sampling steps is not computed adaptive to these parameters, if the steps get too coarse, then multiple image echoes instead of a proper blur will be generated - adjust these parameters with care (if at all).&lt;br /&gt;
&lt;br /&gt;
== The ALS interior model effect  ==&lt;br /&gt;
&lt;br /&gt;
Since the interior of a cockpit is a large part of what a pilot gets to see in-flight, but this interior represents a rather special situation (light is reduced as it falls through windows, it may have artificial light, there is never any fog or haze,...) ALS offers a separate effect to specifically render the interior of a plane.&lt;br /&gt;
&lt;br /&gt;
This effect also includes optional features which will be available at higher quality settings of the model shader.&lt;br /&gt;
&lt;br /&gt;
=== Interior shadows and tinted glass effect ===&lt;br /&gt;
&lt;br /&gt;
With FlightGear version 3.5 and above, ALS now supports interior shading; i.e. the sun shining through the windows and casting shadows on the panel.&lt;br /&gt;
&lt;br /&gt;
[[File:interior01.jpg|640px|Interior shading effect]]&lt;br /&gt;
&lt;br /&gt;
This effect is based on an opacity map - a cube map of textures which tells the renderer where the cockpit is transparent and where not. The opacity map has to be created beforehand, which allows to make it quite detailed. In this map, white stands for a completely transparent surface, black for an opaque surface, colors for tinted glass which will create a colored light spot in the cockpit, grey hues for partial shadowing allowing to paint dirt effects onto the windows, and caustics can be drawn using the alpha channel: (1-alpha) will be used as an enhancement of the light at a certain spot.&lt;br /&gt;
&lt;br /&gt;
The effect is typically declared as derived by inheritance using an effect file such as c172-interior.eff which looks like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;c172-interior-glass&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;inherits-from&amp;gt;Effects/model-interior&amp;lt;/inherits-from&amp;gt;&lt;br /&gt;
  &amp;lt;parameters&amp;gt;&lt;br /&gt;
	&amp;lt;texture n=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
	  &amp;lt;type&amp;gt;cubemap&amp;lt;/type&amp;gt;&lt;br /&gt;
	  &amp;lt;images&amp;gt;&lt;br /&gt;
		 &amp;lt;positive-x&amp;gt;Models/Effects/interior/clr_px.png&amp;lt;/positive-x&amp;gt;&lt;br /&gt;
		 &amp;lt;negative-x&amp;gt;Models/Effects/interior/clr_nx.png&amp;lt;/negative-x&amp;gt;&lt;br /&gt;
		 &amp;lt;positive-y&amp;gt;Models/Effects/interior/clr_py.png&amp;lt;/positive-y&amp;gt;&lt;br /&gt;
		 &amp;lt;negative-y&amp;gt;Models/Effects/interior/clr_ny.png&amp;lt;/negative-y&amp;gt;&lt;br /&gt;
		 &amp;lt;positive-z&amp;gt;Models/Effects/interior/clr_pz.png&amp;lt;/positive-z&amp;gt;&lt;br /&gt;
		 &amp;lt;negative-z&amp;gt;Models/Effects/interior/clr_nz.png&amp;lt;/negative-z&amp;gt;&lt;br /&gt;
	  &amp;lt;/images&amp;gt;&lt;br /&gt;
	&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;opacity-cube-center type=&amp;quot;vec3d&amp;quot; n=&amp;quot;0&amp;quot;&amp;gt; 0.5 0.0 0.3&amp;lt;/opacity-cube-center&amp;gt;&lt;br /&gt;
	&amp;lt;opacity-cube-scale type=&amp;quot;vec3d&amp;quot; n=&amp;quot;0&amp;quot;&amp;gt; 1.5 0.5 0.7&amp;lt;/opacity-cube-scale&amp;gt;&lt;br /&gt;
	&amp;lt;opacity-cube-angle type=&amp;quot;float&amp;quot;&amp;gt;0.0&amp;lt;/opacity-cube-angle&amp;gt;&lt;br /&gt;
  &amp;lt;/parameters&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which is called by inheritance in the model.xml file.&lt;br /&gt;
&lt;br /&gt;
Imagine the opacity map as a box surrounding the cockpit and trying to closely follow its contours. The origin in the box needs to be placed into the center of the cockpit, which is what &amp;lt;b&amp;gt;&amp;lt;opacity-cube-center&amp;gt;&amp;lt;/b&amp;gt; does. Each of the three dimensions then needs to be stretched to roughly fit the layout of the canopy, this is done by &amp;lt;b&amp;gt;&amp;lt;opacity-cube-scale&amp;gt;&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
If opacity map center and scale are wrong, you will still see shadows, but they won't match the real cockpit layout (the lightspot of a window will be seen displaced and at a different size of the real window). Thus, carefully measuring the best box layout in a 3d tool is moderately important.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aircraft-side the effect is called as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;effect&amp;gt;&lt;br /&gt;
   &amp;lt;inherits-from&amp;gt;Aircraft/c172p/Models/Effects/c172p-interior&amp;lt;/inherits-from&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;Plane.010_0&amp;lt;/object-name&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;Plane.010_1&amp;lt;/object-name&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;PilotSeat&amp;lt;/object-name&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;CopilotSeat&amp;lt;/object-name&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;panel_1_1&amp;lt;/object-name&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;InstrumentCover.001&amp;lt;/object-name&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;doorint_right&amp;lt;/object-name&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;doorint_left&amp;lt;/object-name&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;doorhandleint_right&amp;lt;/object-name&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;doorhandleint_left&amp;lt;/object-name&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;Panel_0&amp;lt;/object-name&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;Throttle&amp;lt;/object-name&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;Mixture&amp;lt;/object-name&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;Pedestal&amp;lt;/object-name&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;TrimWheel&amp;lt;/object-name&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;ParkingBrake&amp;lt;/object-name&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;BackSeat&amp;lt;/object-name&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;FuelSelectorFace&amp;lt;/object-name&amp;gt;&lt;br /&gt;
 &amp;lt;/effect&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each object that you want the shadow effect to fall on must be included in the inheritance.&lt;br /&gt;
&lt;br /&gt;
Unless you supply a path, the cube_.png's need to reside in the same directory as the model.xml where you added the &amp;lt;effect&amp;gt; tag pair that calls c172-interior.eff, not where you put the aircraft_interior.eff.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The orientation of the faces of each cube have to be adjusted based on the positive and negative axis of the model.&lt;br /&gt;
&lt;br /&gt;
For example, using the c172p model as a reference.&lt;br /&gt;
&lt;br /&gt;
The tail, right wing and top on the model are positive inside Blender. So the cube faces are laid out as follows.&lt;br /&gt;
&lt;br /&gt;
Note: Depending on the image's orientation when photographed the rotation direction will vary. This is assuming the images are being taken from the center of the cockpit looking out. Using compass headings to describe how to rotate the images.&lt;br /&gt;
&lt;br /&gt;
px (tail) rotate 90 deg from N or S to W&lt;br /&gt;
&lt;br /&gt;
nx (nose) rotate 90 deg from N or S to E&lt;br /&gt;
&lt;br /&gt;
py (starboard/right) from N do not rotate&lt;br /&gt;
&lt;br /&gt;
ny (port/left) from N rotate 180 deg to S&lt;br /&gt;
&lt;br /&gt;
pz (top) rotate 90 deg from N or S to W&lt;br /&gt;
&lt;br /&gt;
nz (bottom) rotate 90 deg from N or S to W&lt;br /&gt;
&lt;br /&gt;
[[File:C172p-cube.jpg|640px|Cube map layout of the c172p]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With Blender, it's pretty easy to create the cubemap.&lt;br /&gt;
&lt;br /&gt;
1. Add a camera where the cubemap will be. Set the FOV to 90 degrees.&lt;br /&gt;
2. Set the resolution to 1024x1024 (or any other square, power-of-two size).&lt;br /&gt;
3. Hide all lights and windows; disable ambient lighting (set it to black) and turn off ambient occlusion.&lt;br /&gt;
4. Set the world color to white.&lt;br /&gt;
5. Enable the compositor and add an invert node.&lt;br /&gt;
6. Render and save the six views as you would normally.&lt;br /&gt;
7. Add dirt, tinted glass color and caustics by hand&lt;br /&gt;
&lt;br /&gt;
This process depends on the model setup but it should work for most aircraft with a few tweaks.&lt;br /&gt;
&lt;br /&gt;
==== Cubemap Kit for Blender ====&lt;br /&gt;
&lt;br /&gt;
[[File:Als-interior-shadow-blender-instructions.png|320px|How to make an interior cubemap with the cubemap kit]]&lt;br /&gt;
&lt;br /&gt;
See [http://chateau-logic.com/content/flightgear-interior-shadow-cubemap-kit flightgear-interior-shadow-cubemap-kit] for a premade kit to create the cubemap and the .eff sample file to use it.&lt;br /&gt;
&lt;br /&gt;
==== Important Notes ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Important note:&amp;lt;/b&amp;gt; Currently (May 2015) the effect does not deal gracefully with child models included into the main model with offsets and/or rotations because these introduce a different coordinate system in which the shadow does not match. The general idea of a code solution is known, but not implemented. Right now this can only be addressed by explicitly positioning child models in the *.ac file and not using any offsets when including them.&lt;br /&gt;
&lt;br /&gt;
=== ALS flashlight ===&lt;br /&gt;
&lt;br /&gt;
This effect is meant to imitate a hand held flashlight for use in getting instruments in the cockpit turned on in dark conditions.&lt;br /&gt;
It is almost identical in nature to ALS searchlight only it is applied using interior-model.eff.&lt;br /&gt;
It has two user defined light color filters that can be applied and also a user defined light radius setting.&lt;br /&gt;
&lt;br /&gt;
[[File:ALS flashlight.jpg|600px|ALS flashlight effect]]&lt;br /&gt;
&lt;br /&gt;
To implement this effect use&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;inherits-from&amp;gt;Effects/model-interior&amp;lt;/inherits-from&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
A full definition looks like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;c172-interior&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;inherits-from&amp;gt;Effects/model-interior&amp;lt;/inherits-from&amp;gt;&lt;br /&gt;
  &amp;lt;parameters&amp;gt;&lt;br /&gt;
	&amp;lt;light-filter-one type=&amp;quot;vec3d&amp;quot;&amp;gt;0.5 0.5 0.5&amp;lt;/light-filter-one&amp;gt;&lt;br /&gt;
	&amp;lt;light-filter-two type=&amp;quot;vec3d&amp;quot;&amp;gt;0.9 0.2 0.2&amp;lt;/light-filter-two&amp;gt;&lt;br /&gt;
	&amp;lt;light-radius type=&amp;quot;float&amp;quot;&amp;gt;13&amp;lt;/light-radius&amp;gt;&lt;br /&gt;
  &amp;lt;/parameters&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
In the example above light-filter-one is soft white light and light-filter-two is a soft red light.&lt;br /&gt;
&lt;br /&gt;
After defining as above you can turn it on using the following property&lt;br /&gt;
&lt;br /&gt;
/sim/rendering/als-secondary-lights/use-flashlight = 1 is light-filter-one&lt;br /&gt;
&lt;br /&gt;
/sim/rendering/als-secondary-lights/use-flashlight = 2 is light-filter-two&lt;br /&gt;
&lt;br /&gt;
'''Special note:'''&lt;br /&gt;
The flashlight effect inherits model-interior, model-interior.eff is setup around the opacity cube map, it won't allow you to go without one, and in the event you try, you get an environment reflection cube map as default which happens to have green grass on it and may cast a greenish hue over applied objects.&lt;br /&gt;
A workaround is to create a pseudo cubemap by creating a white.png 64x64 square, and creating the following structure to represent a transparent cubemap.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;texture n=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;type&amp;gt;cubemap&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;images&amp;gt;&lt;br /&gt;
      &amp;lt;positive-x&amp;gt;Aircraft/c172p/Models/Effects/interior/white.png&amp;lt;/positive-x&amp;gt;&lt;br /&gt;
      &amp;lt;negative-x&amp;gt;Aircraft/c172p/Models/Effects/interior/white.png&amp;lt;/negative-x&amp;gt;&lt;br /&gt;
      &amp;lt;positive-y&amp;gt;Aircraft/c172p/Models/Effects/interior/white.png&amp;lt;/positive-y&amp;gt;&lt;br /&gt;
      &amp;lt;negative-y&amp;gt;Aircraft/c172p/Models/Effects/interior/white.png&amp;lt;/negative-y&amp;gt;&lt;br /&gt;
      &amp;lt;positive-z&amp;gt;Aircraft/c172p/Models/Effects/interior/white.png&amp;lt;/positive-z&amp;gt;&lt;br /&gt;
      &amp;lt;negative-z&amp;gt;Aircraft/c172p/Models/Effects/interior/white.png&amp;lt;/negative-z&amp;gt;&lt;br /&gt;
   &amp;lt;/images&amp;gt;&lt;br /&gt;
&amp;lt;/texture&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Implicit lightmap ===&lt;br /&gt;
&lt;br /&gt;
At lowest quality level, the effect supports an implicit lightmap, i.e. a color range of the basic texture can be selected and declared to act as a lightmap. This is specifically useful to render panel backlighting as in the example below:&lt;br /&gt;
&lt;br /&gt;
[[File:Ilightmap.jpg|600px|An implicit lightmap used to simulate a backlit panel]]&lt;br /&gt;
&lt;br /&gt;
The effect is off by default and switched on by setting&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;implicit-lightmap-enabled type=&amp;quot;int&amp;quot;&amp;gt;1&amp;lt;/implicit-lightmap-enabled&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following parameters are available:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;implicit-lightmap-tag-color type=&amp;quot;vec3d&amp;quot;&amp;gt;1.0 1.0 1.0&amp;lt;/implicit-lightmap-tag-color&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets the base color to be tagged, i.e. if the panel labels to be illuminated at night are white, the color needs to be set to white.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;implicit-lightmap-threshold-low type=&amp;quot;float&amp;quot;&amp;gt;0.5&amp;lt;/implicit-lightmap-threshold-low&amp;gt;&lt;br /&gt;
&amp;lt;implicit-lightmap-threshold-high type=&amp;quot;float&amp;quot;&amp;gt;1.5&amp;lt;/implicit-lightmap-threshold-high&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The thresholds determine how similar a color may be to the base color in order to be still illuminated. The measure is the Euklidean distance of the color vectors. The lower thresholds determines when illumination will start to fade, the higher threshold at what distance in color space illumination will no longer take place. The thresholds have to be adapted to the specific situation - the technique works best for high-contrast panels (white labels on black background) and may not work at all for low contrast panels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;implicit-lightmap-emit-color type=&amp;quot;vec3d&amp;quot;&amp;gt;1.0 1.0 1.0&amp;lt;/implicit-lightmap-emit-color&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The emit color specifies at which color the pixel will show if it is tagged (see above) and the implicit lightmap is on (see below) - set this to the color of the backlight.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;implicit-lightmap-intensity type=&amp;quot;float&amp;quot;&amp;gt;0.0&amp;lt;/implicit-lightmap-intensity&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, the intensity determines how brightly the illuminated pixel will shine.&lt;br /&gt;
&lt;br /&gt;
Ambiance lighting can be simulated with the following tags.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;residual-ambience-r type=&amp;quot;float&amp;quot;&amp;gt;&amp;lt;use&amp;gt;/fdm/jsbsim/systems/light/cockpit-ambience-r&amp;lt;/use&amp;gt;&amp;lt;/residual-ambience-r&amp;gt;&lt;br /&gt;
&amp;lt;residual-ambience-g type=&amp;quot;float&amp;quot;&amp;gt;&amp;lt;use&amp;gt;/fdm/jsbsim/systems/light/cockpit-ambience-g&amp;lt;/use&amp;gt;&amp;lt;/residual-ambience-g&amp;gt;&lt;br /&gt;
&amp;lt;residual-ambience-b type=&amp;quot;float&amp;quot;&amp;gt;&amp;lt;use&amp;gt;/fdm/jsbsim/systems/light/cockpit-ambience-b&amp;lt;/use&amp;gt;&amp;lt;/residual-ambience-b&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example note the use of the &amp;quot;use&amp;quot; tag.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;use&amp;gt;/fdm/jsbsim/systems/light/cockpit-ambience-r&amp;lt;/use&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This can be any defined property or static value.&lt;br /&gt;
&lt;br /&gt;
'''Special note:'''&lt;br /&gt;
The implicit lightmap inherits model-interior, model-interior.eff is setup around the opacity cube map, it won't allow you to go without one, and in the event you try, you get an environment reflection cube map as default which happens to have green grass on it and may cast a greenish hue over applied objects.&lt;br /&gt;
A workaround is to create a pseudo cubemap by creating a white.png 64x64 square, and creating the following structure to represent a transparent cubemap.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;texture n=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;type&amp;gt;cubemap&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;images&amp;gt;&lt;br /&gt;
      &amp;lt;positive-x&amp;gt;Aircraft/c172p/Models/Effects/interior/white.png&amp;lt;/positive-x&amp;gt;&lt;br /&gt;
      &amp;lt;negative-x&amp;gt;Aircraft/c172p/Models/Effects/interior/white.png&amp;lt;/negative-x&amp;gt;&lt;br /&gt;
      &amp;lt;positive-y&amp;gt;Aircraft/c172p/Models/Effects/interior/white.png&amp;lt;/positive-y&amp;gt;&lt;br /&gt;
      &amp;lt;negative-y&amp;gt;Aircraft/c172p/Models/Effects/interior/white.png&amp;lt;/negative-y&amp;gt;&lt;br /&gt;
      &amp;lt;positive-z&amp;gt;Aircraft/c172p/Models/Effects/interior/white.png&amp;lt;/positive-z&amp;gt;&lt;br /&gt;
      &amp;lt;negative-z&amp;gt;Aircraft/c172p/Models/Effects/interior/white.png&amp;lt;/negative-z&amp;gt;&lt;br /&gt;
   &amp;lt;/images&amp;gt;&lt;br /&gt;
&amp;lt;/texture&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Irradiance maps ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; This effect requires higher than minimum model shader quality setting.&lt;br /&gt;
&lt;br /&gt;
In the simplest rendering schemes, diffuse and specular light are assumed to be highly directional (i.e. it illuminates lit surfaces only) while ambient light is taken to be omnidirectional.&lt;br /&gt;
&lt;br /&gt;
In reality, that is hardly ever true. In a typical outside location, ambient light is mainly coming from the sky above (which is why the ground underneath a car is dark even in the absence of directional light when the sky is overcast and the sun is not visible). In an enclosed space (like a room, or an aircraft cockpit), ambient light has to fall through the windows, i.e. is mainly not coming above but falling in horizontally.&lt;br /&gt;
&lt;br /&gt;
The directional dependence is not very strong though, yet it leaves measurable effects. In rendering, this can be accounted for by irradiance maps. In the following, the interior of the C-172p is rendered in the first case using omnidirectional ambient light, in the second case using an irradiance map giving the ambient light the directionality of the cabin windows, i.e. the light falls in predominantly horizontally (in addition, a grain map is superimposed to provide structure). Note how the spatial structure of the roof, looking bland when rendered in omnidirectional light is brought out by the irradiance map.&lt;br /&gt;
&lt;br /&gt;
[[File:Als-interior-irradiance01.jpg|400px|C-172p cabin interior rendered without irradiance and grain map]]&lt;br /&gt;
[[File:Als-interior-irradiance02.jpg|400px|C-172p cabin interior rendered with irradiance and grain map]]&lt;br /&gt;
&lt;br /&gt;
Irradiance mapping is configured by the following parameters:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;irradiance-map-type type=&amp;quot;int&amp;quot;&amp;gt;2&amp;lt;/irradiance-map-type&amp;gt;&lt;br /&gt;
&amp;lt;irradiance-map-strength type=&amp;quot;float&amp;quot;&amp;gt;0.5&amp;lt;/irradiance-map-strength&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are several pre-configured irradiance map functions which can be chosen by map type. &lt;br /&gt;
&lt;br /&gt;
0: (default) omndirectional light&lt;br /&gt;
1: light predominantly coming from above (most appropriate for fighter cockpits)&lt;br /&gt;
2: light predominantly coming from the horizon (most appropriate for GA aircraft)&lt;br /&gt;
&lt;br /&gt;
The strength of the irradiance map regulates how pronounced the asymmetry of the map will be. A strength of zero always makes the light omnidirectional, whereas a strength of 1 implies that no light is coming from any direction 90 degree to the main direction (i.e. for the option 2, a strength of 1.0 means that no ambient light will fall in from above or below and that hence horizontal surfaces will appear pitch black unless direct light falls on them)&lt;br /&gt;
&lt;br /&gt;
'''Special note:'''&lt;br /&gt;
The irradiance map inherits model-interior, model-interior.eff is setup around the opacity cube map, it won't allow you to go without one, and in the event you try, you get an environment reflection cube map as default which happens to have green grass on it and may cast a greenish hue over applied objects.&lt;br /&gt;
A workaround is to create a pseudo cubemap by creating a white.png 64x64 square, and creating the following structure to represent a transparent cubemap.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;texture n=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;type&amp;gt;cubemap&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;images&amp;gt;&lt;br /&gt;
      &amp;lt;positive-x&amp;gt;Aircraft/c172p/Models/Effects/interior/white.png&amp;lt;/positive-x&amp;gt;&lt;br /&gt;
      &amp;lt;negative-x&amp;gt;Aircraft/c172p/Models/Effects/interior/white.png&amp;lt;/negative-x&amp;gt;&lt;br /&gt;
      &amp;lt;positive-y&amp;gt;Aircraft/c172p/Models/Effects/interior/white.png&amp;lt;/positive-y&amp;gt;&lt;br /&gt;
      &amp;lt;negative-y&amp;gt;Aircraft/c172p/Models/Effects/interior/white.png&amp;lt;/negative-y&amp;gt;&lt;br /&gt;
      &amp;lt;positive-z&amp;gt;Aircraft/c172p/Models/Effects/interior/white.png&amp;lt;/positive-z&amp;gt;&lt;br /&gt;
      &amp;lt;negative-z&amp;gt;Aircraft/c172p/Models/Effects/interior/white.png&amp;lt;/negative-z&amp;gt;&lt;br /&gt;
   &amp;lt;/images&amp;gt;&lt;br /&gt;
&amp;lt;/texture&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Explicit lightmap ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; This effect requires higher than minimum model shader quality setting.&lt;br /&gt;
&lt;br /&gt;
In addition to the implicit lightmap, it is also possible to explicitly specify a lightmap. The syntax for this exactly parallels the syntax of the [[Model-combined_effect]] which supplies lightmaps for the exterior.&lt;br /&gt;
&lt;br /&gt;
For example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;texture n=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;image&amp;gt;Aircraft/MyAircraft/Effects/my_lightmap.png&amp;lt;/image&amp;gt;&lt;br /&gt;
&amp;lt;type&amp;gt;2d&amp;lt;/type&amp;gt;&lt;br /&gt;
&amp;lt;filter&amp;gt;linear-mipmap-linear&amp;lt;/filter&amp;gt;&lt;br /&gt;
&amp;lt;wrap-s&amp;gt;clamp&amp;lt;/wrap-s&amp;gt;&lt;br /&gt;
&amp;lt;wrap-t&amp;gt;clamp&amp;lt;/wrap-t&amp;gt;&lt;br /&gt;
&amp;lt;internal-format&amp;gt;normalized&amp;lt;/internal-format&amp;gt;&lt;br /&gt;
&amp;lt;/texture&amp;gt;&lt;br /&gt;
&amp;lt;lightmap-enabled type=&amp;quot;int&amp;quot;&amp;gt;1&amp;lt;/lightmap-enabled&amp;gt;&lt;br /&gt;
&amp;lt;lightmap-multi type=&amp;quot;int&amp;quot;&amp;gt;0&amp;lt;/lightmap-multi&amp;gt;&lt;br /&gt;
&amp;lt;lightmap-factor type=&amp;quot;float&amp;quot; n=&amp;quot;0&amp;quot;&amp;gt;1.0&amp;lt;/lightmap-factor&amp;gt;&lt;br /&gt;
&amp;lt;lightmap-color type=&amp;quot;vec3d&amp;quot; n=&amp;quot;0&amp;quot;&amp;gt; 1.0 1.0 1.0 &amp;lt;/lightmap-color&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sets up a single channel lightmap in which pixel color times the lightmap color provides the illumination. Using the multi-channel function, up to four different maps can be specified in which the (rgba) values of a pixel encode where the light falls and the associated lightmap color what color the illumination takes. Each of these maps can be switched on and off or dimmed in intensity independently.&lt;br /&gt;
&lt;br /&gt;
=== Grain map ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; This effect requires higher than minimum model shader quality setting.&lt;br /&gt;
&lt;br /&gt;
The grain map sets a repeating hires overlay texture which can supply a very credible illusion of structure to a surface for cheap. The syntax exactly parallels that of the [[Model-combined_effect]] ALS grain feature described above.&lt;br /&gt;
&lt;br /&gt;
For instance, the following&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;texture n=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;image&amp;gt;Aircraft/Effects/MyGrainmap.png&amp;lt;/image&amp;gt;&lt;br /&gt;
&amp;lt;type&amp;gt;2d&amp;lt;/type&amp;gt;&lt;br /&gt;
&amp;lt;filter&amp;gt;linear-mipmap-linear&amp;lt;/filter&amp;gt;&lt;br /&gt;
&amp;lt;wrap-s&amp;gt;repeat&amp;lt;/wrap-s&amp;gt;&lt;br /&gt;
&amp;lt;wrap-t&amp;gt;repeat&amp;lt;/wrap-t&amp;gt;&lt;br /&gt;
&amp;lt;internal-format&amp;gt;normalized&amp;lt;/internal-format&amp;gt;&lt;br /&gt;
&amp;lt;/texture&amp;gt;&lt;br /&gt;
&amp;lt;grain-texture-enabled type=&amp;quot;int&amp;quot;&amp;gt;1&amp;lt;/grain-texture-enabled&amp;gt;&lt;br /&gt;
&amp;lt;grain-magnification type=&amp;quot;float&amp;quot;&amp;gt;10&amp;lt;/grain-magnification&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sets up a grain overlay with a 10-time higher resolution over the base texture layer.&lt;br /&gt;
&lt;br /&gt;
== ALS procedural lights ==&lt;br /&gt;
&lt;br /&gt;
The ALS framework supports procedurally generated lights (for instance aircraft position lights, strobe lights,... ) for aircraft and models. Note that the effect produces the visuals of the lights themselves, but they do not illuminate their surroundings.&lt;br /&gt;
&lt;br /&gt;
=== Why procedural lights? ===&lt;br /&gt;
&lt;br /&gt;
Traditionally aircraft position lights have been implemented as billboarded emissive textures. This technique is limited in scope, as it has difficulty producing a directional light or changes in the light appearance (for instance glare) with changed scene lighting. The ALS procedural lights are designed to give visuals consistent with the auto-generated scene lights (runway lighting, street lights) and support configurable directionality, glare and even the illumination of fog by the lights.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Basic implementation ===&lt;br /&gt;
&lt;br /&gt;
The base of the light is a texture quad which has Effects/procedural-light.eff assigned. Start from including the template provided into your model as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;model&amp;gt;&lt;br /&gt;
  &amp;lt;path&amp;gt;/Models/Effects/procedural_light.xml&amp;lt;/path&amp;gt;&lt;br /&gt;
        &amp;lt;offsets&amp;gt;&lt;br /&gt;
            &amp;lt;x-m&amp;gt; 0 &amp;lt;/x-m&amp;gt;&lt;br /&gt;
            &amp;lt;y-m&amp;gt; 0 &amp;lt;/y-m&amp;gt;&lt;br /&gt;
            &amp;lt;z-m&amp;gt; 2 &amp;lt;/z-m&amp;gt;&lt;br /&gt;
        &amp;lt;/offsets&amp;gt;&lt;br /&gt;
 &amp;lt;/model&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and configure from there according to your own needs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Do not billboard the light via animation!&amp;lt;/b&amp;gt; The GLSL code will take care of the billboarding. Use a scale animation to change the size of the light, do not change the quad (the *.ac) itself in size, the shader code requires its geometry to be fixed.&lt;br /&gt;
&lt;br /&gt;
The lights are currently not supported in the default or Rembrandt renderer and will simply be invisible in these frameworks.&lt;br /&gt;
&lt;br /&gt;
=== Configuring the light ===&lt;br /&gt;
&lt;br /&gt;
Make your own derived effect inheriting from Effects/procedural-light.eff and assign it in the xml wrapper of the light.&lt;br /&gt;
&lt;br /&gt;
* the base light color can be set via&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;light_color_base_r type=&amp;quot;float&amp;quot;&amp;gt;1.0&amp;lt;/light_color_base_r&amp;gt;&lt;br /&gt;
    &amp;lt;light_color_base_g type=&amp;quot;float&amp;quot;&amp;gt;0.0&amp;lt;/light_color_base_g&amp;gt;&lt;br /&gt;
    &amp;lt;light_color_base_b type=&amp;quot;float&amp;quot;&amp;gt;0.0&amp;lt;/light_color_base_b&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These take the normal set of values ranging from 0 to 1. &lt;br /&gt;
&lt;br /&gt;
* how the light appears at full intensity in the center can be set via&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;light_color_center_r type=&amp;quot;float&amp;quot;&amp;gt;1.0&amp;lt;/light_color_center_r&amp;gt;&lt;br /&gt;
    &amp;lt;light_color_center_g type=&amp;quot;float&amp;quot;&amp;gt;1.0&amp;lt;/light_color_center_g&amp;gt;&lt;br /&gt;
    &amp;lt;light_color_center_b type=&amp;quot;float&amp;quot;&amp;gt;1.0&amp;lt;/light_color_center_b&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The idea behind this is that lights give a better visual appearance if their center is rendered visually brighter and de-saturated, but this occurs only if the light is at full intensity.&lt;br /&gt;
&lt;br /&gt;
There are no sanity checks done, you can assign any center color you like even if this makes no sense - you can change center color or darken it, so use with care.&lt;br /&gt;
&lt;br /&gt;
* to runtime change the light intensity, assign&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;intensity_scale type=&amp;quot;float&amp;quot;&amp;gt;1.0&amp;lt;/intensity_scale&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to a property and change that property in the range from 0 to 1. Eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;intensity_scale&amp;gt;&lt;br /&gt;
       &amp;lt;use&amp;gt;/rendering/nav-lights-factor&amp;lt;/use&amp;gt;&lt;br /&gt;
     &amp;lt;/intensity_scale&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* for directional lights, you need to assign a pointing vector in aircraft coordinates into which the light cone points and set the directionality flag to true to activate the computations. This is done via:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;    &lt;br /&gt;
    &amp;lt;pointing_x type=&amp;quot;float&amp;quot;&amp;gt;-1.0&amp;lt;/pointing_x&amp;gt;&lt;br /&gt;
    &amp;lt;pointing_y type=&amp;quot;float&amp;quot;&amp;gt;0.0&amp;lt;/pointing_y&amp;gt;&lt;br /&gt;
    &amp;lt;pointing_z type=&amp;quot;float&amp;quot;&amp;gt;0.0&amp;lt;/pointing_z&amp;gt;&lt;br /&gt;
    &amp;lt;is_directional type=&amp;quot;bool&amp;quot;&amp;gt;true&amp;lt;/is_directional&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It would be customary to pass a normalized vector, but if you don't know how to do it, the shader will do it for you. By assigning properties to the pointing coordinates, the light direction can be changed runtime.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Do not use a rotation animation to change the light direction - it won't work.&amp;lt;/b&amp;gt; Make the pointing vector properties and change them to your needs.&lt;br /&gt;
&lt;br /&gt;
* fading of a directional light  away from the pointing axis is controlled by passing angles (or rather sines of angles).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;    &lt;br /&gt;
    &amp;lt;inner_angle type=&amp;quot;float&amp;quot;&amp;gt;0.2&amp;lt;/inner_angle&amp;gt;&lt;br /&gt;
    &amp;lt;outer_angle type=&amp;quot;float&amp;quot;&amp;gt;0.4&amp;lt;/outer_angle&amp;gt;&lt;br /&gt;
    &amp;lt;zero_angle type=&amp;quot;float&amp;quot;&amp;gt;0.7&amp;lt;/zero_angle&amp;gt;&lt;br /&gt;
    &amp;lt;outer_gain type=&amp;quot;float&amp;quot;&amp;gt;0.5&amp;lt;/outer_gain&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Up to inner_angle, the light will have full intensity. From inner to outer angle the light will linearly fade to outer_gain. From outer angle to zero angle, the light intensity will linearly fade to zero.&lt;br /&gt;
&lt;br /&gt;
* to get an automatic strobe effect you can set&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;    &lt;br /&gt;
    &amp;lt;is_strobe type=&amp;quot;bool&amp;quot;&amp;gt;true&amp;lt;/is_strobe&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to true. If you want your own strobe pattern, generate a strobe function and use &amp;lt;b&amp;gt;intensity_scale&amp;lt;/b&amp;gt; instead to pass it to the shader.&lt;br /&gt;
&lt;br /&gt;
=== Complete example ===&lt;br /&gt;
&lt;br /&gt;
Here's the left nav light of the C-172p:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;    &lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;name&amp;gt;procedural-light-nav-left&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;inherits-from&amp;gt;Effects/procedural-light&amp;lt;/inherits-from&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;parameters&amp;gt;&lt;br /&gt;
        &amp;lt;light_color_base_r type=&amp;quot;float&amp;quot;&amp;gt;1.000&amp;lt;/light_color_base_r&amp;gt;&lt;br /&gt;
        &amp;lt;light_color_base_g type=&amp;quot;float&amp;quot;&amp;gt;0.320&amp;lt;/light_color_base_g&amp;gt;&lt;br /&gt;
        &amp;lt;light_color_base_b type=&amp;quot;float&amp;quot;&amp;gt;0.320&amp;lt;/light_color_base_b&amp;gt;&lt;br /&gt;
        &amp;lt;light_color_center_r type=&amp;quot;float&amp;quot;&amp;gt;1.0&amp;lt;/light_color_center_r&amp;gt;&lt;br /&gt;
        &amp;lt;light_color_center_g type=&amp;quot;float&amp;quot;&amp;gt;1.0&amp;lt;/light_color_center_g&amp;gt;&lt;br /&gt;
        &amp;lt;light_color_center_b type=&amp;quot;float&amp;quot;&amp;gt;1.0&amp;lt;/light_color_center_b&amp;gt;&lt;br /&gt;
        &amp;lt;intensity_scale type=&amp;quot;float&amp;quot;&amp;gt;1.0&amp;lt;/intensity_scale&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- Arc is 110 deg, is 55 deg per side, giving 35 deg from wing --&amp;gt;&lt;br /&gt;
        &amp;lt;pointing_x type=&amp;quot;float&amp;quot;&amp;gt;1.0&amp;lt;/pointing_x&amp;gt;&lt;br /&gt;
        &amp;lt;pointing_y type=&amp;quot;float&amp;quot;&amp;gt;0.7002075382097097&amp;lt;/pointing_y&amp;gt;&lt;br /&gt;
        &amp;lt;pointing_z type=&amp;quot;float&amp;quot;&amp;gt;0.0&amp;lt;/pointing_z&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;is_directional type=&amp;quot;bool&amp;quot;&amp;gt;true&amp;lt;/is_directional&amp;gt;&lt;br /&gt;
        &amp;lt;is_strobe type=&amp;quot;bool&amp;quot;&amp;gt;false&amp;lt;/is_strobe&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- Angles are 0.0 at 0 deg from pointing direction, 1.0 at&lt;br /&gt;
             90/-90 deg, and 0.0 at 180/-180 deg.&lt;br /&gt;
&lt;br /&gt;
             For left navigation light we use -0/-35 .. +110/+145 for&lt;br /&gt;
             the inner/outer range. This gives an arc of 110/180 deg,&lt;br /&gt;
             or 55/90 deg from center.&lt;br /&gt;
&lt;br /&gt;
             Value = sin(angle in degrees)&lt;br /&gt;
&lt;br /&gt;
             0.8191520442889918 = 55 deg (* 2 = 110 deg inner angle)&lt;br /&gt;
             1.0000 = 90 deg (* 2 = 180 deg outer angle)&lt;br /&gt;
        --&amp;gt;&lt;br /&gt;
        &amp;lt;inner_angle type=&amp;quot;float&amp;quot;&amp;gt;0.8191520442889918&amp;lt;/inner_angle&amp;gt;&lt;br /&gt;
        &amp;lt;outer_angle type=&amp;quot;float&amp;quot;&amp;gt;1.0&amp;lt;/outer_angle&amp;gt;&lt;br /&gt;
        &amp;lt;zero_angle type=&amp;quot;float&amp;quot;&amp;gt;0.982547593563&amp;lt;/zero_angle&amp;gt;&lt;br /&gt;
        &amp;lt;outer_gain type=&amp;quot;float&amp;quot;&amp;gt;0.1&amp;lt;/outer_gain&amp;gt;&lt;br /&gt;
    &amp;lt;/parameters&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
The Cessna 182 by Heiko Schulz and Gilberto Agostinho with procedural lights activated:&amp;lt;br&amp;gt;&lt;br /&gt;
:''(To percieve the effect well, you probably have to darken your room and switch to fullscreen)''&lt;br /&gt;
[[File:Cessna 182 with procedural lights.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== ALS fuselage shadow effect ==&lt;br /&gt;
ALS supports the manipulation of a (simplified) ground shadow. This effect uses an existing simplified shadow animation configuration and by default uses the gear-agl-m property to calculate the ground placement of that simplified shadow.&lt;br /&gt;
&lt;br /&gt;
The system, techniques for using it, and several working examples are on [https://forum.flightgear.org/viewtopic.php?f=47&amp;amp;t=24859&amp;amp;start=135 this extensive forum thread about the ALS shadow effects].&lt;br /&gt;
&lt;br /&gt;
[[File:Alsshadow.jpg|800px|ALS Shadow]]&lt;br /&gt;
&lt;br /&gt;
The effect can be applied easily in any aircraft that report the gear-agl-m property by simply adding a declaration inheriting from shadow.eff.&lt;br /&gt;
&lt;br /&gt;
If the aircraft does not support the gear-agl-m property, (notably JSBSim), you need to create a [[Autopilot configuration reference | Property Rule]] to pass a supported AGL data to the gear-agl-m property. In this case we use altitude-agl-ft converted to meters using a property rule configuration file.&lt;br /&gt;
&lt;br /&gt;
For the first example we'll use the &amp;quot;supported gear-agl-m&amp;quot; method for aircraft that don't require a property rule.&lt;br /&gt;
&lt;br /&gt;
Simply add the following inheritance declaration after you declare your shadow animation statement.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;effect&amp;gt;&lt;br /&gt;
    &amp;lt;inherits-from&amp;gt;Effects/shadow&amp;lt;/inherits-from&amp;gt;&lt;br /&gt;
    &amp;lt;object-name&amp;gt;name_of_the_shadow_object&amp;lt;/object-name&amp;gt;&lt;br /&gt;
&amp;lt;/effect&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
In the non-ALS simplified shadow code you normally use a &amp;quot;translate&amp;quot; animation to position the shadow on the ground.&lt;br /&gt;
When using the ALS method you must either remove, comment out, or apply a condition to restrict its use to non ALS shadow applications, because ALS is responsible for computing the shadows ground position.&lt;br /&gt;
&lt;br /&gt;
Here is how we apply a condition to the translation to limit it effect to non-ALS application only.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--Translate to ground level  --&amp;gt;&lt;br /&gt;
  &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;translate&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;shadow&amp;lt;/object-name&amp;gt;&lt;br /&gt;
   &amp;lt;condition&amp;gt;&lt;br /&gt;
    &amp;lt;not&amp;gt;&lt;br /&gt;
      &amp;lt;property&amp;gt;/sim/rendering/shaders/skydome&amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;/not&amp;gt;&lt;br /&gt;
   &amp;lt;/condition&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;/position/altitude-agl-ft&amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;factor&amp;gt;-0.3048&amp;lt;/factor&amp;gt;&lt;br /&gt;
   &amp;lt;center&amp;gt;&lt;br /&gt;
     &amp;lt;x-m&amp;gt;0&amp;lt;/x-m&amp;gt;&lt;br /&gt;
     &amp;lt;y-m&amp;gt;0&amp;lt;/y-m&amp;gt;&lt;br /&gt;
     &amp;lt;z-m&amp;gt;0&amp;lt;/z-m&amp;gt;&lt;br /&gt;
   &amp;lt;/center&amp;gt;&lt;br /&gt;
   &amp;lt;axis&amp;gt;&lt;br /&gt;
     &amp;lt;x&amp;gt;0&amp;lt;/x&amp;gt;&lt;br /&gt;
     &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
     &amp;lt;z&amp;gt;1&amp;lt;/z&amp;gt;&lt;br /&gt;
   &amp;lt;/axis&amp;gt;&lt;br /&gt;
 &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A complete shadow animation block looks like this.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;animation&amp;gt;&lt;br /&gt;
    &amp;lt;!-- opaque objects --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- transparent objects --&amp;gt;&lt;br /&gt;
    &amp;lt;object-name&amp;gt;shadow&amp;lt;/object-name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;select&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;condition&amp;gt;&lt;br /&gt;
      &amp;lt;not&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;/sim/rendering/rembrandt/enabled&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;/not&amp;gt;&lt;br /&gt;
    &amp;lt;/condition&amp;gt;&lt;br /&gt;
  &amp;lt;/animation&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;effect&amp;gt;&lt;br /&gt;
    &amp;lt;inherits-from&amp;gt;Effects/shadow&amp;lt;/inherits-from&amp;gt;&lt;br /&gt;
    &amp;lt;object-name&amp;gt;shadow&amp;lt;/object-name&amp;gt;&lt;br /&gt;
  &amp;lt;/effect&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;animation&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;noshadow&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;object-name&amp;gt;shadow&amp;lt;/object-name&amp;gt;&lt;br /&gt;
  &amp;lt;/animation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- pitch --&amp;gt;&lt;br /&gt;
  &amp;lt;animation&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;rotate&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;object-name&amp;gt;shadow&amp;lt;/object-name&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;/orientation/pitch-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;factor&amp;gt;-1.0&amp;lt;/factor&amp;gt;&lt;br /&gt;
    &amp;lt;center&amp;gt;&lt;br /&gt;
      &amp;lt;x-m&amp;gt;0&amp;lt;/x-m&amp;gt;&lt;br /&gt;
      &amp;lt;y-m&amp;gt;0&amp;lt;/y-m&amp;gt;&lt;br /&gt;
      &amp;lt;z-m&amp;gt;0&amp;lt;/z-m&amp;gt;&lt;br /&gt;
    &amp;lt;/center&amp;gt;&lt;br /&gt;
    &amp;lt;axis&amp;gt;&lt;br /&gt;
      &amp;lt;x&amp;gt;0&amp;lt;/x&amp;gt;&lt;br /&gt;
      &amp;lt;y&amp;gt;1&amp;lt;/y&amp;gt;&lt;br /&gt;
      &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
    &amp;lt;/axis&amp;gt;&lt;br /&gt;
  &amp;lt;/animation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- roll --&amp;gt;&lt;br /&gt;
  &amp;lt;animation&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;rotate&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;object-name&amp;gt;shadow&amp;lt;/object-name&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;/orientation/roll-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;factor&amp;gt;1.0&amp;lt;/factor&amp;gt;&lt;br /&gt;
    &amp;lt;center&amp;gt;&lt;br /&gt;
      &amp;lt;x-m&amp;gt;0&amp;lt;/x-m&amp;gt;&lt;br /&gt;
      &amp;lt;y-m&amp;gt;0&amp;lt;/y-m&amp;gt;&lt;br /&gt;
      &amp;lt;z-m&amp;gt;0&amp;lt;/z-m&amp;gt;&lt;br /&gt;
    &amp;lt;/center&amp;gt;&lt;br /&gt;
    &amp;lt;axis&amp;gt;&lt;br /&gt;
      &amp;lt;x&amp;gt;1&amp;lt;/x&amp;gt;&lt;br /&gt;
      &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
      &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
    &amp;lt;/axis&amp;gt;&lt;br /&gt;
  &amp;lt;/animation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!--Translate to ground level  --&amp;gt;&lt;br /&gt;
  &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;translate&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;shadow&amp;lt;/object-name&amp;gt;&lt;br /&gt;
   &amp;lt;condition&amp;gt;&lt;br /&gt;
    &amp;lt;not&amp;gt;&lt;br /&gt;
      &amp;lt;property&amp;gt;/sim/rendering/shaders/skydome&amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;/not&amp;gt;&lt;br /&gt;
   &amp;lt;/condition&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;/position/altitude-agl-ft&amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;factor&amp;gt;-0.3048&amp;lt;/factor&amp;gt;&lt;br /&gt;
   &amp;lt;center&amp;gt;&lt;br /&gt;
     &amp;lt;x-m&amp;gt;0&amp;lt;/x-m&amp;gt;&lt;br /&gt;
     &amp;lt;y-m&amp;gt;0&amp;lt;/y-m&amp;gt;&lt;br /&gt;
     &amp;lt;z-m&amp;gt;0&amp;lt;/z-m&amp;gt;&lt;br /&gt;
   &amp;lt;/center&amp;gt;&lt;br /&gt;
   &amp;lt;axis&amp;gt;&lt;br /&gt;
     &amp;lt;x&amp;gt;0&amp;lt;/x&amp;gt;&lt;br /&gt;
     &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
     &amp;lt;z&amp;gt;1&amp;lt;/z&amp;gt;&lt;br /&gt;
   &amp;lt;/axis&amp;gt;&lt;br /&gt;
  &amp;lt;/animation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For aircraft requiring a [[Autopilot configuration reference | Property Rule]] there are a couple extra steps.&lt;br /&gt;
&lt;br /&gt;
In aircraft-set.xml you add the property rule call to the &amp;quot;configuration file&amp;quot; in between the PropertyList/sim/systems tag pairs.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;	&lt;br /&gt;
&amp;lt;property-rule n=&amp;quot;101&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;gear_agl-m&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;path&amp;gt;Aircraft/c172p/Systems/gearAGL.xml&amp;lt;/path&amp;gt;&lt;br /&gt;
&amp;lt;/property-rule&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Note: the n=&amp;quot;101&amp;quot; needs to be =+100 as -100 is reserved for system wide property rules.&lt;br /&gt;
In the above example 101 was used because 100 was already being used by a previous property rule definition.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;configuration file&amp;quot; normally goes in /Systems.&lt;br /&gt;
In this example we named the configuration file /Systems/gearAGL.xml.&lt;br /&gt;
&lt;br /&gt;
Here is the complete /Systems/gearAGL.xml configuration file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
  &amp;lt;filter&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;gain&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;gain&amp;gt;0.3048&amp;lt;/gain&amp;gt;&lt;br /&gt;
    &amp;lt;input&amp;gt;/position/altitude-agl-ft&amp;lt;/input&amp;gt;&lt;br /&gt;
    &amp;lt;reference&amp;gt;6&amp;lt;/reference&amp;gt;&lt;br /&gt;
    &amp;lt;output&amp;gt;/position/gear-agl-m&amp;lt;/output&amp;gt;&lt;br /&gt;
  &amp;lt;/filter&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
What the configuration file does is convert the input of altitude-agl-ft to the output of (((altitude-agl-ft)-6)*0.3048) or (convert ft-6 to m) and pass it to /position/gear-agl-m.&lt;br /&gt;
 &lt;br /&gt;
See [[Autopilot configuration reference | Input and reference properties or values &amp;lt;input&amp;gt; and &amp;lt;reference&amp;gt;]].&lt;br /&gt;
&lt;br /&gt;
== ALS 3d shadow volume effect ==&lt;br /&gt;
What might be considered the next level of realism using a relatively &amp;quot;cheap&amp;quot; shadow effect is to use a 3d volume shadow.&lt;br /&gt;
&lt;br /&gt;
[[File:Shadow vol02.jpg|800px|ALS 3d Shadow Volume]]&lt;br /&gt;
&lt;br /&gt;
The procedure to implement the ALS shadow volume is similar to the ALS-shadow above with a few modifications.&lt;br /&gt;
&lt;br /&gt;
First you have to have a 3d shadow volume model of the aircraft you are applying the effect to. This model should be a low poly model that is optimized to be as little of a footprint as possible.&lt;br /&gt;
&lt;br /&gt;
A property rule is required, same as above. This is used to generate the above ground altitude in meters, (altitude-agl-m). The &amp;quot;altitude-agl-m&amp;quot; is used to place the shadow close to the ground in real time at an FDM rate of execution.&lt;br /&gt;
{{note|Do not confuse &amp;quot;altitude-agl-m&amp;quot; with the other type of non-3d ALS-shadow property of &amp;quot;gear-agl-m&amp;quot;. The shaders involved use these two different properties respectively for the two different effect. They are not interchangeable.}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
   &amp;lt;filter&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;gain&amp;lt;/type&amp;gt;&lt;br /&gt;
      &amp;lt;gain&amp;gt;0.3048&amp;lt;/gain&amp;gt;&lt;br /&gt;
      &amp;lt;input&amp;gt;/position/altitude-agl-ft&amp;lt;/input&amp;gt;&lt;br /&gt;
      &amp;lt;reference&amp;gt;1.0&amp;lt;/reference&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;/position/altitude-agl-m&amp;lt;/output&amp;gt;&lt;br /&gt;
   &amp;lt;/filter&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The other difference from the ALS-shadow above is that it uses a different inherited effect.&lt;br /&gt;
Instead of&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;effect&amp;gt;&lt;br /&gt;
    &amp;lt;inherits-from&amp;gt;Effects/shadow&amp;lt;/inherits-from&amp;gt;&lt;br /&gt;
    &amp;lt;object-name&amp;gt;shadow&amp;lt;/object-name&amp;gt;&lt;br /&gt;
 &amp;lt;/effect&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
you use&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;effect&amp;gt;&lt;br /&gt;
    &amp;lt;inherits-from&amp;gt;Effects/shadow-vol&amp;lt;/inherits-from&amp;gt;&lt;br /&gt;
    &amp;lt;object-name&amp;gt;shadow&amp;lt;/object-name&amp;gt;&lt;br /&gt;
  &amp;lt;/effect&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make sure there is no duplicate 3d model shown in other renderers besides ALS it is also important to use a different select animation:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
    &amp;lt;!-- hide 3d shadow in non ALS mode --&amp;gt;&lt;br /&gt;
    &amp;lt;object-name&amp;gt;shadow&amp;lt;/object-name&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;select&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;condition&amp;gt;&lt;br /&gt;
      &amp;lt;property&amp;gt;/sim/rendering/shaders/skydome&amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;/condition&amp;gt;&lt;br /&gt;
  &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
&lt;br /&gt;
* [[Procedural Texturing]]&lt;br /&gt;
* [[Atmospheric light scattering]]&lt;br /&gt;
* [[ALS infrared vision]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Shader development]]&lt;br /&gt;
[[Category:ALS]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Canvas&amp;diff=60233</id>
		<title>Canvas</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Canvas&amp;diff=60233"/>
		<updated>2013-05-17T21:11:18Z</updated>

		<summary type="html">&lt;p&gt;AndersM: Mouse events video&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infobox subsystem&lt;br /&gt;
|image =Canvas GUI Demo.png&lt;br /&gt;
|name =Canvas Subsystem&lt;br /&gt;
|started= 05/2012&lt;br /&gt;
|description = Dynamic 2D drawing at runtime using the property tree and scripting (for instruments, HUDs, GUIs)&lt;br /&gt;
|status = Under active development as of 02/2013&lt;br /&gt;
|maintainers  = TheTom&lt;br /&gt;
|developers = [[User:TheTom]] (since 02/2012),&lt;br /&gt;
|folders = [http://gitorious.org/fg/flightgear/trees/next/src/Canvas $FG_SRC/Canvas]&lt;br /&gt;
           [http://gitorious.org/fg/simgear/trees/next/simgear/canvas $SG_SRC/simgear/canvas]&lt;br /&gt;
|topic-sg= (main repository, next branch)&lt;br /&gt;
|topic-fg= (main repository, next branch)&lt;br /&gt;
|topic-fgdata= (main repository, master branch; https://gitorious.org/~tomprogs/fg/toms-fgdata/commits/canvas-gui-demo)&lt;br /&gt;
|subforum= http://flightgear.org/forums/viewforum.php?f=71&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Template:Canvas Navigation}}&lt;br /&gt;
&lt;br /&gt;
== Intro ==&lt;br /&gt;
The &amp;quot;Canvas&amp;quot; system is a fairly new feature, added in 06/2012 to FlightGear - first available in FlightGear 2.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In FlightGear, a &amp;quot;canvas&amp;quot; is a dynamically created texture that can be modified (drawn to) at runtime by using the property tree, i.e. via the built-in scripting language [[Nasal]]. Canvas textures can be used for a number of different purposes, such as creating fully scripted avionics (airliner/bizjet -style glass cockpits) but also custom HUDs and eventually also custom GUI textures or even fully interactive GUI widgets (scheduled for FG 3.0+). &lt;br /&gt;
&lt;br /&gt;
The canvas subsystem is entirely implemented on top of the FlightGear [[Property Tree]], it makes use of property listeners to watch a sub tree of the property tree for canvas-related events, so that textures can be dynamically instantiated and modified by setting properties in the property tree. This method is not specific to [[Nasal]] scripting, the same system can be used by other subsystems (such as the [[Telnet]] or HTTP daemons) to create and modify textures without directly using Nasal. &lt;br /&gt;
&lt;br /&gt;
As of 08/2012, the Canvas system is still under active development and nothing is set in stone yet.&lt;br /&gt;
See [[Canvas Properties]] for further information.&lt;br /&gt;
&lt;br /&gt;
A first prototype of the canvas system is available in FlightGear 2.8, this lacks some features currently under development (notably the Nasal API)- it is expected that a more feature-rich version will be available in the following release, i.e. FlightGear 3.0+ - possibly replacing the entire GUI with a fully Canvas-driven implementation in scripting space (one of the long-term goals). &lt;br /&gt;
&lt;br /&gt;
Future FlightGear versions will contain reimplementations of currently hard-coded instruments such as the wxradar, tcas or navdisplay using the canvas system, so that these can be easily maintained as part of the base package, and so that the same backend code can be also used for creating complex dialogs using the Canvas system, such as ATC displays like [[ATC-FS]]. &lt;br /&gt;
&lt;br /&gt;
Among other advantages, this will also provide for an opportunity to run Canvas-based instruments and GUI elements in another process, or even on another computer, analogous to [[FGPanel]] (see [[FGCanvas]]).&lt;br /&gt;
&lt;br /&gt;
Also, there's currently work ongoing to port the old 2D panel and HUD systems to the new Canvas system, using custom Nasal wrappers reimplementing the old behavior and turning the textures into canvas properties.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
A short video demonstrating a possible usecase (C-130J AMU):&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|A7j-B0LgV-A}}&lt;br /&gt;
&lt;br /&gt;
By using alphablending it can also be used to render the contents of a HUD:&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|_oRX53JyXmM}}&lt;br /&gt;
&lt;br /&gt;
In my branch there is now also support for using the canvas in a gui widget:&lt;br /&gt;
&lt;br /&gt;
[[File:Canvas GUI Demo.png|thumb|none|400px|Using the Canvas as a GUI widget]]&lt;br /&gt;
&lt;br /&gt;
With the new ''map'' element it is also very easy to draw maps:&lt;br /&gt;
&lt;br /&gt;
[[File:Demonstration of using the Canvas inside a GUI dialog..png|thumb|none|400px|Simple Map of KSFO]]&lt;br /&gt;
&lt;br /&gt;
Using the new [[Howto:Use_SVG_inside_a_Canvas|''canvas.parsesvg'']] function to use an SVG file to simulate an EICAS display:&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|43P7xKNJnV4}}&lt;br /&gt;
&lt;br /&gt;
Demonstrating how the new Canvas GUI wrapper can be used to create entirely custom, scripted GUI widgets using XML, SVG and Nasal:&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|1a6wtPVPWc4}}&lt;br /&gt;
&lt;br /&gt;
Experimenting with selecting text and positioning a cursor inside the text. The visualization is all done using Nasal.&lt;br /&gt;
{{#ev:youtube|CIS8UyuJLgM}}&lt;br /&gt;
&lt;br /&gt;
Since 07/2012, the canvas system also provides support for full window-drawing:&lt;br /&gt;
{{#ev:youtube|Qv-uEX42QZY}} &lt;br /&gt;
&lt;br /&gt;
Omega95 has reimplemented the CDU of the ATR72 using the Canvas system:&lt;br /&gt;
{{#ev:youtube|sAaVEKuiF5w}}&lt;br /&gt;
&lt;br /&gt;
Another video demonstrating window stacking and nested canvases:&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|llVaasTEf44}}&lt;br /&gt;
&lt;br /&gt;
Using Canvas mouse events to create [http://www.flightgear.org/forums/viewtopic.php?p=183653#p183653 animation of slider, wheel and knob]&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|HELiLjEGno8}}&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Write_a_fuel_system_in_JSBSim&amp;diff=60203</id>
		<title>Howto:Write a fuel system in JSBSim</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Write_a_fuel_system_in_JSBSim&amp;diff=60203"/>
		<updated>2013-05-14T06:38:14Z</updated>

		<summary type="html">&lt;p&gt;AndersM: Edited for -2.10 compatibility&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of [[FlightGear]] 2.4.0, JSBSim aircraft have a new tank-property: &amp;lt;tt&amp;gt;propulsion/tank[n]/external-flow-rate-pps&amp;lt;/tt&amp;gt;. Setting this property will either draw fuel from (value &amp;lt; 0), or insert fuel into (value &amp;gt; 0) the respective tank. By using this property, one can simulate complex fuel systems.&lt;br /&gt;
&lt;br /&gt;
== A fuel system file ==&lt;br /&gt;
First we create a system file, in which we will write the actual system. It's advised to save this file as &amp;lt;tt&amp;gt;Aircraft/.../Systems/fuel.xml&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;system name=&amp;quot;fuel&amp;quot;&amp;gt; &lt;br /&gt;
	&amp;lt;!-- we will write the system here --&amp;gt;&lt;br /&gt;
&amp;lt;/system&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We link the main FDM to this system by adding the following line, somewhere in your aircraft's FDM (I advise to put it below &amp;lt;tt&amp;gt;&amp;lt;/propulsion&amp;gt;&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;system file=&amp;quot;fuel&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Notice how &amp;quot;fuel&amp;quot; refers to &amp;lt;tt&amp;gt;Aircraft/.../Systems/fuel.xml&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Fuel handling in JSBSim ==&lt;br /&gt;
To make JSBSim handle the fuel system during simulation we create one or more channels in the system file. Within these we can use the different control components [http://jsbsim.sourceforge.net/JSBSimReferenceManual.pdf available in JSBSim].&lt;br /&gt;
&lt;br /&gt;
When using &amp;lt;tt&amp;gt;propulsion/tank[n]/external-flow-rate-pps&amp;lt;/tt&amp;gt; there is no automatic detection if the tank is full or empty. Fuel filling an already full tank will just disappear, creating a &amp;quot;leak&amp;quot;. Fuel drawn from an empty tank will make new fuel magically appear in the system. In most cases we will have to make checks to avoid these problems.&lt;br /&gt;
&lt;br /&gt;
Two control components that is useful in a fuel system are summers and switches.&lt;br /&gt;
 &lt;br /&gt;
=== Summers ===&lt;br /&gt;
To calculate the total fuel-flows to/from each tank, we need to sum up the independent flows. This must be done for each single tank, but the principle is the same every time and simple to understand. Every flow that transports fuel ''from'' a tank should get a minus sign.&lt;br /&gt;
&lt;br /&gt;
This summer calculates the total flow to or from tank[0].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;summer&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;-propulsion/tank[0]/external-flow-rate/jettison&amp;lt;/input&amp;gt;		&amp;lt;!-- jettison --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;-propulsion/tank[0]/external-flow-rate/tank[1]&amp;lt;/input&amp;gt;		&amp;lt;!-- to tank 1 --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;-propulsion/tank[0]/external-flow-rate/tank[2]&amp;lt;/input&amp;gt;		&amp;lt;!-- to tank 2 --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;-propulsion/tank[0]/external-flow-rate/tank[3]&amp;lt;/input&amp;gt;		&amp;lt;!-- to tank 3 --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;propulsion/tank[1]/external-flow-rate/tank[0]&amp;lt;/input&amp;gt;		&amp;lt;!-- from tank 1 --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;propulsion/tank[2]/external-flow-rate/tank[0]&amp;lt;/input&amp;gt;		&amp;lt;!-- from tank 2 --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;propulsion/tank[3]/external-flow-rate/tank[0]&amp;lt;/input&amp;gt;		&amp;lt;!-- from tank 3 --&amp;gt;&lt;br /&gt;
	&amp;lt;output&amp;gt;propulsion/tank[0]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
&amp;lt;/summer&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Switches ===&lt;br /&gt;
To turn the flow on or off we need a switch.&lt;br /&gt;
&lt;br /&gt;
This switch draws 5 lbs/s from tank[0] until its empty as long as the collector vale is open.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;switch&amp;gt;&lt;br /&gt;
      &amp;lt;default value=&amp;quot;-5&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;test logic=&amp;quot;OR&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
        propulsion/tank[0]/collector-valve EQ 0&lt;br /&gt;
        propulsion/tank[0]/pct-full LE 0&lt;br /&gt;
      &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;propulsion/tank[0]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/switch&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Jettison switch  ===&lt;br /&gt;
The /controls/fuel/fuel-to-remain property controls the amount of fuel (in lbs) that should be kept a board. When the total-fuel-level reaches that level, fuel dumping will auomatically stop. Fuel dumping can also be stopped by closing the jettison valves (disable &amp;lt;tt&amp;gt;/controls/fuel/dump-valve&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;switch&amp;gt;&lt;br /&gt;
	&amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;12.25&amp;quot;&amp;gt;&lt;br /&gt;
		/controls/fuel/dump-valve == 1&lt;br /&gt;
		propulsion/total-fuel-lbs gt /controls/fuel/fuel-to-remain&lt;br /&gt;
	&amp;lt;/test&amp;gt;&lt;br /&gt;
	&amp;lt;output&amp;gt;propulsion/tank[0]/external-flow-rate/jettison&amp;lt;/output&amp;gt;&lt;br /&gt;
	&amp;lt;output&amp;gt;propulsion/tank[2]/external-flow-rate/jettison&amp;lt;/output&amp;gt;&lt;br /&gt;
	&amp;lt;output&amp;gt;propulsion/tank[3]/external-flow-rate/jettison&amp;lt;/output&amp;gt;&lt;br /&gt;
	&amp;lt;output&amp;gt;propulsion/tank[7]/external-flow-rate/jettison&amp;lt;/output&amp;gt;&lt;br /&gt;
&amp;lt;/switch&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The output properties should be added as inputs to the respective summers. Add a minus sign, as the fuel is taken ''from'' the tank.&lt;br /&gt;
&lt;br /&gt;
=== Two tanks and a collector tank ===&lt;br /&gt;
A system with two tanks (tank[0] and tank[1]) feeding a collector tank (tank[2]). The engine is fed from the collector tank. There is valves between each of the tanks and the collector that can be set open or closed. Negative Gs cut the  supply to the collector.&lt;br /&gt;
&lt;br /&gt;
The system consists of two properties: propulsion/tank[0]/collector-valve and propulsion/tank[1]/collector-valve that represent the valves and a channel that handles the fuel transfer from the tanks to the collector and the necessary checks.&lt;br /&gt;
&lt;br /&gt;
The fuel transfer using external-flow-rate-pps does not check against if tanks are empty or full. This can create fuel when &amp;quot;fuel&amp;quot; is drawn from an empty tank or a &amp;quot;leak&amp;quot; when fuel is pumped into a full tank. The collector tank in the example has the capacity 130 lbs so making the check against collector tank level greater or equal to 129 instead of against 130 is done to avoid the later kind of leak since the collector tank normally receives more fuel every time step than the engine uses. The 1 lb margin creates a buffer for this difference as the value oscillates around 129 lbs as the switch turns on and off the flow.&lt;br /&gt;
&lt;br /&gt;
[[File:Collector-tank-system2.png|thumb|Two tanks and a collector tank]]&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;system name=&amp;quot;Fuel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- tank[2] collector tank connected to the engine fuel pump, tank[0] and tank[1] feeds the collector through valves.&lt;br /&gt;
Negative Gs (&amp;lt;-0.5g) cuts the supply to the collector tanks --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;property type=&amp;quot;bool&amp;quot; value=&amp;quot;1&amp;quot;&amp;gt;propulsion/tank[0]/collector-valve&amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property type=&amp;quot;bool&amp;quot; value=&amp;quot;1&amp;quot;&amp;gt;propulsion/tank[1]/collector-valve&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;channel name=&amp;quot;Fuel pumping&amp;quot;&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
    &amp;lt;switch&amp;gt;&lt;br /&gt;
      &amp;lt;default value=&amp;quot;-5&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;test logic=&amp;quot;OR&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
        propulsion/tank[0]/collector-valve EQ 0&lt;br /&gt;
        propulsion/tank[0]/contents-lbs LE 0&lt;br /&gt;
        propulsion/tank[2]/contents-lbs GE 129 &amp;lt;!-- 1 lb below capacity --&amp;gt;&lt;br /&gt;
        accelerations/Nz LE -0.5&lt;br /&gt;
      &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;propulsion/tank[0]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;switch&amp;gt;&lt;br /&gt;
      &amp;lt;default value=&amp;quot;-5&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;test logic=&amp;quot;OR&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
        propulsion/tank[1]/collector-valve EQ 0&lt;br /&gt;
        propulsion/tank[1]/contents-lbs LE 0&lt;br /&gt;
        propulsion/tank[2]/contents-lbs GE 129 &amp;lt;!-- 1 lb below capacity --&amp;gt;&lt;br /&gt;
        accelerations/Nz LE -0.5 &lt;br /&gt;
      &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;propulsion/tank[1]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;summer&amp;gt;&lt;br /&gt;
      &amp;lt;input&amp;gt;-propulsion/tank[0]/external-flow-rate-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
      &amp;lt;input&amp;gt;-propulsion/tank[1]/external-flow-rate-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;propulsion/tank[2]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/summer&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/channel&amp;gt;      &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/system&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Spitfire: Carburetor engine ===&lt;br /&gt;
&lt;br /&gt;
Spitfire II fuel system. This systems have properties for damage, leaks and simulates the carburetor as a small tank to handle fuel starvation at negative Gs.&lt;br /&gt;
The Spitfire has two interconnected tanks with fuel flowing from an upper tank to a lower and both connected to the engine through cocks. The layout of the system can be seen [http://616sqn.tidesofwar.net/gallery/spitfuelsm.jpg here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
    &amp;lt;system name=&amp;quot;Fuel&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
       &amp;lt;property type=&amp;quot;bool&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt; /fdm/jsbsim/fuel/tank_top_cock&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;property type=&amp;quot;bool&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt; /fdm/jsbsim/fuel/tank_bottom_cock&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;property type=&amp;quot;double&amp;quot; value=&amp;quot;1&amp;quot;&amp;gt; /fdm/jsbsim/fuel/damage&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;property type=&amp;quot;double&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt; /fdm/jsbsim/fuel/priming&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;property type=&amp;quot;double&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt; /fdm/jsbsim/fuel/leak_top_tank&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;property type=&amp;quot;double&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt; /fdm/jsbsim/fuel/leak_bottom_tank&amp;lt;/property&amp;gt;&lt;br /&gt;
       &lt;br /&gt;
       &amp;lt;channel name=&amp;quot;carburetor&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;!-- Total Carburetor Flow Rate in pps --&amp;gt;         &lt;br /&gt;
          &amp;lt;summer name=&amp;quot;fuel/float_chamber-pps&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;fuel/pump_flow_to_float-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;/fdm/jsbsim/fuel/priming&amp;lt;/input&amp;gt;         &lt;br /&gt;
             &amp;lt;input&amp;gt;-propulsion/engine/fuel-flow-rate-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;output&amp;gt;propulsion/tank[0]/external-flow-rate-pps&amp;lt;/output&amp;gt;      &lt;br /&gt;
          &amp;lt;/summer&amp;gt;      &lt;br /&gt;
&lt;br /&gt;
       &amp;lt;/channel&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
       &amp;lt;channel name=&amp;quot;Fuel Pump&amp;quot;&amp;gt;&lt;br /&gt;
       &lt;br /&gt;
          &amp;lt;!-- float throttle valve position --&amp;gt;         &lt;br /&gt;
          &amp;lt;aerosurface_scale name=&amp;quot;fuel/float_throttle-valve-cmd&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;propulsion/tank[0]/contents-lbs&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;zero_centered&amp;gt;false&amp;lt;/zero_centered&amp;gt;&lt;br /&gt;
             &amp;lt;domain&amp;gt;&lt;br /&gt;
                &amp;lt;min&amp;gt;0.0&amp;lt;/min&amp;gt;&lt;br /&gt;
                &amp;lt;max&amp;gt;0.5&amp;lt;/max&amp;gt;&lt;br /&gt;
             &amp;lt;/domain&amp;gt;                  &lt;br /&gt;
             &amp;lt;range&amp;gt;&lt;br /&gt;
                &amp;lt;min&amp;gt;1.0&amp;lt;/min&amp;gt;&lt;br /&gt;
                &amp;lt;max&amp;gt;0.0&amp;lt;/max&amp;gt;&lt;br /&gt;
             &amp;lt;/range&amp;gt;&lt;br /&gt;
          &amp;lt;/aerosurface_scale &amp;gt;      &lt;br /&gt;
          &lt;br /&gt;
          &lt;br /&gt;
          &amp;lt;!-- Fuel Flow into Float Chamber in pps --&amp;gt;&lt;br /&gt;
          &amp;lt;switch name=&amp;quot;fuel/flowing_from_tank&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;fuel/float_throttle-valve-cmd&amp;quot;&amp;gt;&lt;br /&gt;
                accelerations/Nz GE -0.5&lt;br /&gt;
                &amp;lt;test logic=&amp;quot;OR&amp;quot;&amp;gt;&lt;br /&gt;
                   &amp;lt;test logic=&amp;quot;AND&amp;quot;&amp;gt;&lt;br /&gt;
                      fuel/tank_top_cock EQ 1               &lt;br /&gt;
                      propulsion/tank[1]/contents-lbs GT 0&lt;br /&gt;
                   &amp;lt;/test&amp;gt;            &lt;br /&gt;
                   &amp;lt;test logic=&amp;quot;AND&amp;quot;&amp;gt;&lt;br /&gt;
                      fuel/tank_bottom_cock EQ 1&lt;br /&gt;
                      propulsion/tank[2]/contents-lbs GT 0&lt;br /&gt;
                   &amp;lt;/test&amp;gt;      &lt;br /&gt;
                &amp;lt;/test&amp;gt;&lt;br /&gt;
             &amp;lt;/test&amp;gt;               &lt;br /&gt;
          &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;fcs_function name=&amp;quot;fuel/pump_flow_to_float-pps&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;function&amp;gt;&lt;br /&gt;
                   &amp;lt;product&amp;gt;&lt;br /&gt;
                      &amp;lt;property&amp;gt;fuel/flowing_from_tank&amp;lt;/property&amp;gt;&lt;br /&gt;
                      &amp;lt;table&amp;gt;      &amp;lt;!-- Fuel pump in pps --&amp;gt;&lt;br /&gt;
                         &amp;lt;independentVar&amp;gt;propulsion/engine/engine-rpm&amp;lt;/independentVar&amp;gt;&lt;br /&gt;
                         &amp;lt;tableData&amp;gt; &amp;lt;!-- Fuel pump curve --&amp;gt;               &lt;br /&gt;
                            0      0&lt;br /&gt;
                            100      1&lt;br /&gt;
                            3000   10                  &lt;br /&gt;
                         &amp;lt;/tableData&amp;gt;&lt;br /&gt;
                      &amp;lt;/table&amp;gt;&lt;br /&gt;
                      &amp;lt;property&amp;gt;fuel/damage&amp;lt;/property&amp;gt;&lt;br /&gt;
                      &amp;lt;value&amp;gt;0.12&amp;lt;/value&amp;gt; &amp;lt;!-- full throttle max fuel demand in pps  --&amp;gt;&lt;br /&gt;
                   &amp;lt;/product&amp;gt;            &lt;br /&gt;
             &amp;lt;/function&amp;gt;&lt;br /&gt;
             &amp;lt;output&amp;gt;fuel/pump_flow_to_float-pps&amp;lt;/output&amp;gt;   &lt;br /&gt;
          &amp;lt;/fcs_function&amp;gt;   &lt;br /&gt;
          &lt;br /&gt;
       &amp;lt;/channel&amp;gt;      &lt;br /&gt;
          &lt;br /&gt;
          &lt;br /&gt;
       &amp;lt;channel name=&amp;quot;Tanks&amp;quot;&amp;gt;&lt;br /&gt;
             &lt;br /&gt;
          &amp;lt;!-- Fuel flow to be divided aross a number of tanks --&amp;gt;      &lt;br /&gt;
          &amp;lt;fcs_function name=&amp;quot;fuel/flow_from_tank&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;function&amp;gt;&lt;br /&gt;
                &amp;lt;quotient&amp;gt;&lt;br /&gt;
                   &amp;lt;property&amp;gt;fuel/pump_flow_to_float-pps&amp;lt;/property&amp;gt;&lt;br /&gt;
                   &amp;lt;sum&amp;gt;&lt;br /&gt;
                      &amp;lt;property&amp;gt;fuel/tank_top_cock&amp;lt;/property&amp;gt;&lt;br /&gt;
                      &amp;lt;property&amp;gt;fuel/tank_bottom_cock&amp;lt;/property&amp;gt;&lt;br /&gt;
                   &amp;lt;/sum&amp;gt;&lt;br /&gt;
                &amp;lt;/quotient&amp;gt;               &lt;br /&gt;
             &amp;lt;/function&amp;gt;&lt;br /&gt;
             &amp;lt;output&amp;gt;fuel/flow_from_tank&amp;lt;/output&amp;gt;         &lt;br /&gt;
          &amp;lt;/fcs_function&amp;gt;         &lt;br /&gt;
&lt;br /&gt;
       &amp;lt;/channel&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
          &lt;br /&gt;
       &amp;lt;channel name=&amp;quot;Top Tank&amp;quot;&amp;gt;&lt;br /&gt;
       &lt;br /&gt;
          &amp;lt;!-- top_bottom_transfer --&amp;gt;            &lt;br /&gt;
          &amp;lt;switch name=&amp;quot;fuel/top_bottom_transfer&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                propulsion/tank[1]/contents-lbs GT 0&lt;br /&gt;
                propulsion/tank[2]/contents-lbs LT 322&lt;br /&gt;
                accelerations/Nz GE -0.5&lt;br /&gt;
             &amp;lt;/test&amp;gt;         &lt;br /&gt;
          &amp;lt;/switch&amp;gt;   &lt;br /&gt;
             &lt;br /&gt;
          &amp;lt;!-- Fuel tranfer rate in pps--&amp;gt;&lt;br /&gt;
          &amp;lt;fcs_function name=&amp;quot;fuel/top_bottom_transfer-pps&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;function&amp;gt;&lt;br /&gt;
                &amp;lt;product&amp;gt;&lt;br /&gt;
                   &amp;lt;property&amp;gt;fuel/top_bottom_transfer&amp;lt;/property&amp;gt;            &lt;br /&gt;
                   &amp;lt;sum&amp;gt;&lt;br /&gt;
                      &amp;lt;property&amp;gt;fuel/from_bottom_tank&amp;lt;/property&amp;gt;&lt;br /&gt;
                      &amp;lt;table&amp;gt;      &amp;lt;!-- Liquid finds it's own level --&amp;gt;&lt;br /&gt;
                         &amp;lt;independentVar&amp;gt;propulsion/tank[2]/contents-lbs&amp;lt;/independentVar&amp;gt;&lt;br /&gt;
                         &amp;lt;tableData&amp;gt;&lt;br /&gt;
                            319      1&lt;br /&gt;
                            322      0       &lt;br /&gt;
                         &amp;lt;/tableData&amp;gt;&lt;br /&gt;
                      &amp;lt;/table&amp;gt;&lt;br /&gt;
                   &amp;lt;/sum&amp;gt;&lt;br /&gt;
                &amp;lt;/product&amp;gt;               &lt;br /&gt;
             &amp;lt;/function&amp;gt;&lt;br /&gt;
             &amp;lt;output&amp;gt;fuel/top_bottom_transfer-pps&amp;lt;/output&amp;gt;   &lt;br /&gt;
          &amp;lt;/fcs_function&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
          &amp;lt;!-- Top Tank Fuel Flow Rate in pps --&amp;gt;         &lt;br /&gt;
          &amp;lt;switch name=&amp;quot;fuel/from_top_tank&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;fuel/flow_from_tank&amp;quot;&amp;gt;   &lt;br /&gt;
                fuel/tank_top_cock EQ 1&lt;br /&gt;
                accelerations/Nz GE -0.5   &lt;br /&gt;
             &amp;lt;/test&amp;gt;      &lt;br /&gt;
          &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;!-- Total Top Tank Fuel Flow Rate in pps --&amp;gt;         &lt;br /&gt;
          &amp;lt;summer name=&amp;quot;fuel/total_from_top_tank-pps&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-fuel/top_bottom_transfer-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-fuel/from_top_tank&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-fuel/leak_top_tank&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;output&amp;gt;propulsion/tank[1]/external-flow-rate-pps&amp;lt;/output&amp;gt;            &lt;br /&gt;
          &amp;lt;/summer&amp;gt;&lt;br /&gt;
          &lt;br /&gt;
       &amp;lt;/channel&amp;gt;&lt;br /&gt;
       &lt;br /&gt;
       &amp;lt;channel name=&amp;quot;Bottom Tank&amp;quot;&amp;gt;         &lt;br /&gt;
                &lt;br /&gt;
          &amp;lt;!-- Bottom Tank Fuel Flow Rate in pps --&amp;gt;            &lt;br /&gt;
          &amp;lt;switch name=&amp;quot;fuel/from_bottom_tank&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;fuel/flow_from_tank&amp;quot;&amp;gt;&lt;br /&gt;
                fuel/tank_bottom_cock EQ 1&lt;br /&gt;
                accelerations/Nz GE -0.5         &lt;br /&gt;
             &amp;lt;/test&amp;gt;&lt;br /&gt;
          &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;!-- Total Bottom Tank Fuel Flow Rate in pps --&amp;gt;         &lt;br /&gt;
          &amp;lt;summer name=&amp;quot;fuel/total_from_bottom_tank-pps&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;fuel/top_bottom_transfer-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-/fdm/jsbsim/fuel/priming&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-fuel/from_bottom_tank&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-fuel/leak_bottom_tank&amp;lt;/input&amp;gt;         &lt;br /&gt;
             &amp;lt;output&amp;gt;propulsion/tank[2]/external-flow-rate-pps&amp;lt;/output&amp;gt;            &lt;br /&gt;
          &amp;lt;/summer&amp;gt;&lt;br /&gt;
          &lt;br /&gt;
       &amp;lt;/channel&amp;gt;      &lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/system&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Douglas DC3 (2 engines, 4 tanks) ===&lt;br /&gt;
The real aircraft has two engines and four tanks.Two tank selectors (one per engine) allows each engine to be fed by each tank, separately and one tank at a time for a given engine. The diagram of the fuel system can be seen [http://www.theaviatornetwork.com/pdf/GTM-05-050130-Fuel-System.pdf at the end of this document].&lt;br /&gt;
For FG, the engines are numbered [0] and (1], the 'true' feed tanks [0], [1], [2], [3]. Each tank selector is a 5-positions ('OFF' + 4 tanks) rotary switch. Its positions are numbered -1 (OFF), 0, 1, 2, 3, for 'no tank selected', tank[0], [1], [2], [3] respectively.&lt;br /&gt;
&lt;br /&gt;
'''Prerequisite''': A nasal code logic says:&lt;br /&gt;
* if an engine[N] boost-pump is &amp;quot;ON&amp;quot;, and fuel-level &amp;gt; 4 lbs in the tank selected for this engine[N] ==&amp;gt; fuel-pressure = 16 psi&lt;br /&gt;
* else, if engine[N] is running, and fuel-level &amp;gt; 4 lbs in the tank selected for this engine[N] ==&amp;gt; fuel-pressure = 14.5&lt;br /&gt;
* else of all that, fuel-pressure = 0&lt;br /&gt;
Hence, fuel pressure is a a good criteria to tell that an engine is fed ot not, i.e. if it is connected to a tank, if this tank is filled, with a running pump (or not).&lt;br /&gt;
(This function could probably be implemented by XML)&lt;br /&gt;
&lt;br /&gt;
'''For the fuel system presented here''', two small collector tanks 4 and 5 (each collector tank feeding one engine) have been added. These collector tanks are necessary to have each engine be separately fed by its selected 'true' tank and selectively stop if the tank runs out of fuel. The collector tanks are fed by the selected tanks (rotary switches) and have their level kept constant. This functionning is close to a constant level carburetor.&lt;br /&gt;
&lt;br /&gt;
'''The FDM''' contains the following lines which set the tanks.&lt;br /&gt;
Notice that the engines are written as fed by the collector tanks ((4 and 5), which themselves will be fed by the selected 'true' tanks (0 to 3).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;propulsion&amp;gt;&lt;br /&gt;
   &amp;lt;engine file=&amp;quot;DC3_engine&amp;quot;&amp;gt; &amp;lt;!-- number 0 --&amp;gt;&lt;br /&gt;
    .........&lt;br /&gt;
    &amp;lt;feed&amp;gt;4&amp;lt;/feed&amp;gt;&lt;br /&gt;
    .........&lt;br /&gt;
  &amp;lt;/engine&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;engine file=&amp;quot;DC3_engine&amp;quot;&amp;gt; &amp;lt;!-- number 1 --&amp;gt;&lt;br /&gt;
    .........&lt;br /&gt;
    &amp;lt;feed&amp;gt;5&amp;lt;/feed&amp;gt;&lt;br /&gt;
    .........&lt;br /&gt;
  &amp;lt;/engine&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tank type=&amp;quot;FUEL&amp;quot; number=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
     .........&lt;br /&gt;
     &amp;lt;capacity unit=&amp;quot;LBS&amp;quot;&amp;gt; 1202 &amp;lt;/capacity&amp;gt;&lt;br /&gt;
     &amp;lt;contents unit=&amp;quot;LBS&amp;quot;&amp;gt; 600 &amp;lt;/contents&amp;gt;&lt;br /&gt;
  &amp;lt;/tank&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tank type=&amp;quot;FUEL&amp;quot; number=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      ...........&lt;br /&gt;
     &amp;lt;capacity unit=&amp;quot;LBS&amp;quot;&amp;gt; 1210 &amp;lt;/capacity&amp;gt;&lt;br /&gt;
     &amp;lt;contents unit=&amp;quot;LBS&amp;quot;&amp;gt; 600 &amp;lt;/contents&amp;gt;&lt;br /&gt;
  &amp;lt;/tank&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tank type=&amp;quot;FUEL&amp;quot; number=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
     ...........&lt;br /&gt;
     &amp;lt;capacity unit=&amp;quot;LBS&amp;quot;&amp;gt; 1210 &amp;lt;/capacity&amp;gt;&lt;br /&gt;
     &amp;lt;contents unit=&amp;quot;LBS&amp;quot;&amp;gt; 600 &amp;lt;/contents&amp;gt;&lt;br /&gt;
  &amp;lt;/tank&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tank type=&amp;quot;FUEL&amp;quot; number=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
     ...............&lt;br /&gt;
     &amp;lt;capacity unit=&amp;quot;LBS&amp;quot;&amp;gt; 1202 &amp;lt;/capacity&amp;gt;&lt;br /&gt;
     &amp;lt;contents unit=&amp;quot;LBS&amp;quot;&amp;gt; 600 &amp;lt;/contents&amp;gt;&lt;br /&gt;
  &amp;lt;/tank&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tank type=&amp;quot;FUEL&amp;quot; number=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;!-- Collector Tank (left engine) --&amp;gt;&lt;br /&gt;
     ...........&lt;br /&gt;
     &amp;lt;capacity unit=&amp;quot;LBS&amp;quot;&amp;gt; 0.5 &amp;lt;/capacity&amp;gt;&lt;br /&gt;
     &amp;lt;contents unit=&amp;quot;LBS&amp;quot;&amp;gt; 0 &amp;lt;/contents&amp;gt;&lt;br /&gt;
  &amp;lt;/tank&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tank type=&amp;quot;FUEL&amp;quot; number=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;!-- Collector Tank (right engine) --&amp;gt;&lt;br /&gt;
     ..............&lt;br /&gt;
     &amp;lt;capacity unit=&amp;quot;LBS&amp;quot;&amp;gt; 0.5 &amp;lt;/capacity&amp;gt;&lt;br /&gt;
     &amp;lt;contents unit=&amp;quot;LBS&amp;quot;&amp;gt; 0 &amp;lt;/contents&amp;gt;&lt;br /&gt;
  &amp;lt;/tank&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/propulsion&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The '''Fuel system XML file''' itself is (can be named fuel.xml, see at the top of this document for how to link the FDM to it):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
***********************************************************************************&lt;br /&gt;
Douglas DC-3 C47, initial 3D and YASim FDM by Emmanuel BARANGER,&lt;br /&gt;
further modifications by PAF team:  http://http://equipe-flightgear.forumactif.com&lt;br /&gt;
&lt;br /&gt;
May 2013, Daniel DUBREUIL, fuel system for JSBSim FDM&lt;br /&gt;
with Bomber (Simon), jam007, Jon S. Berndt Assistance. Thank you!&lt;br /&gt;
***********************************************************************************&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;system name=&amp;quot;fuel&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- *********************************************************************************** --&amp;gt;&lt;br /&gt;
&amp;lt;!-- ************ LEFT ENGINE *************** --&amp;gt;&lt;br /&gt;
&amp;lt;!-- *********************************************************************************** --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;channel name=&amp;quot;Engine 0 Rotary Left Valve Logic&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
      &amp;lt;!-- to Collector Tank 4 and Left Engine Fuel Flow Rate in pps --&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Collector Tank 4 works like a constant-level carburetor for left engine --&amp;gt;&lt;br /&gt;
      &amp;lt;switch name=&amp;quot;fuel/through-left-valve&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;0.5&amp;quot;&amp;gt;&lt;br /&gt;
               /controls/fuel/left-valve EQ 0               &lt;br /&gt;
               propulsion/tank[0]/contents-lbs GT 0&lt;br /&gt;
               /consumables/fuel/tank[4]/level-lbs LT 0.25&lt;br /&gt;
               /engines/engine[0]/fuel-psi-norm GT 5&lt;br /&gt;
            &amp;lt;/test&amp;gt;            &lt;br /&gt;
            &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;0.5&amp;quot;&amp;gt;&lt;br /&gt;
               /controls/fuel/left-valve EQ 1&lt;br /&gt;
               propulsion/tank[1]/contents-lbs GT 0&lt;br /&gt;
               /consumables/fuel/tank[4]/level-lbs LT 0.25&lt;br /&gt;
               /engines/engine[0]/fuel-psi-norm GT 5&lt;br /&gt;
            &amp;lt;/test&amp;gt;&lt;br /&gt;
            &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;0.5&amp;quot;&amp;gt;&lt;br /&gt;
               /controls/fuel/left-valve EQ 2               &lt;br /&gt;
               propulsion/tank[2]/contents-lbs GT 0&lt;br /&gt;
               /consumables/fuel/tank[4]/level-lbs LT 0.25&lt;br /&gt;
               /engines/engine[0]/fuel-psi-norm GT 5&lt;br /&gt;
            &amp;lt;/test&amp;gt;            &lt;br /&gt;
            &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;0.5&amp;quot;&amp;gt;&lt;br /&gt;
               /controls/fuel/left-valve EQ 3&lt;br /&gt;
               propulsion/tank[3]/contents-lbs GT 0&lt;br /&gt;
               /consumables/fuel/tank[4]/level-lbs LT 0.25&lt;br /&gt;
               /engines/engine[0]/fuel-psi-norm GT 5&lt;br /&gt;
            &amp;lt;/test&amp;gt;&lt;br /&gt;
            &amp;lt;output&amp;gt;propulsion/tank[4]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
      &amp;lt;/switch&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
      &amp;lt;!-- from Tank 0 to Left Engine Fuel Flow Rate in pps --&amp;gt;            &lt;br /&gt;
      &amp;lt;switch name=&amp;quot;fuel/eng0-from-tank0&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;test value=&amp;quot;-fuel/through-left-valve&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/left-valve EQ 0      &lt;br /&gt;
         &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;/switch&amp;gt;      &lt;br /&gt;
&lt;br /&gt;
      &amp;lt;!-- from Tank 1 to Left Engine Fuel Flow Rate in pps --&amp;gt;            &lt;br /&gt;
      &amp;lt;switch name=&amp;quot;fuel/eng0-from-tank1&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;test value=&amp;quot;-fuel/through-left-valve&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/left-valve EQ 1      &lt;br /&gt;
         &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;!-- from Tank 2 to Left Engine Fuel Flow Rate in pps --&amp;gt;            &lt;br /&gt;
      &amp;lt;switch name=&amp;quot;fuel/eng0-from-tank2&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;test value=&amp;quot;-fuel/through-left-valve&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/left-valve EQ 2      &lt;br /&gt;
         &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;/switch&amp;gt;      &lt;br /&gt;
&lt;br /&gt;
      &amp;lt;!-- from Tank 3 to Left Engine Fuel Flow Rate in pps --&amp;gt;            &lt;br /&gt;
      &amp;lt;switch name=&amp;quot;fuel/eng0-from-tank3&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;test value=&amp;quot;-fuel/through-left-valve&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/left-valve EQ 3      &lt;br /&gt;
         &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;/channel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;!-- *********************************************************************************** --&amp;gt;&lt;br /&gt;
&amp;lt;!-- ************ RIGHT ENGINE *************** --&amp;gt;&lt;br /&gt;
&amp;lt;!-- *********************************************************************************** --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;channel name=&amp;quot;Engine 1 Rotary Right Valve Logic&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
      &amp;lt;!-- to Collector Tank 5 and Right Engine Fuel Flow Rate in pps --&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Collector Tank 5 works like a constant-level carburetor for right engine --&amp;gt;&lt;br /&gt;
      &amp;lt;switch name=&amp;quot;fuel/through-right-valve&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;0.5&amp;quot;&amp;gt;&lt;br /&gt;
               /controls/fuel/right-valve EQ 0               &lt;br /&gt;
               propulsion/tank[0]/contents-lbs GT 0&lt;br /&gt;
               /consumables/fuel/tank[5]/level-lbs LT 0.25&lt;br /&gt;
               /engines/engine[1]/fuel-psi-norm GT 5&lt;br /&gt;
            &amp;lt;/test&amp;gt;            &lt;br /&gt;
            &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;0.5&amp;quot;&amp;gt;&lt;br /&gt;
               /controls/fuel/right-valve EQ 1&lt;br /&gt;
               propulsion/tank[1]/contents-lbs GT 0&lt;br /&gt;
               /consumables/fuel/tank[5]/level-lbs LT 0.25&lt;br /&gt;
               /engines/engine[1]/fuel-psi-norm GT 5&lt;br /&gt;
            &amp;lt;/test&amp;gt;&lt;br /&gt;
            &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;0.5&amp;quot;&amp;gt;&lt;br /&gt;
               /controls/fuel/right-valve EQ 2               &lt;br /&gt;
               propulsion/tank[2]/contents-lbs GT 0&lt;br /&gt;
               /consumables/fuel/tank[5]/level-lbs LT 0.25&lt;br /&gt;
               /engines/engine[1]/fuel-psi-norm GT 5&lt;br /&gt;
            &amp;lt;/test&amp;gt;            &lt;br /&gt;
            &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;0.5&amp;quot;&amp;gt;&lt;br /&gt;
               /controls/fuel/right-valve EQ 3&lt;br /&gt;
               propulsion/tank[3]/contents-lbs GT 0&lt;br /&gt;
               /consumables/fuel/tank[5]/level-lbs LT 0.25&lt;br /&gt;
               /engines/engine[1]/fuel-psi-norm GT 5&lt;br /&gt;
            &amp;lt;/test&amp;gt;&lt;br /&gt;
            &amp;lt;output&amp;gt;propulsion/tank[5]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
      &amp;lt;/switch&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
      &amp;lt;!-- from Tank 0 to Right Engine Fuel Flow Rate in pps --&amp;gt;            &lt;br /&gt;
      &amp;lt;switch name=&amp;quot;fuel/eng1-from-tank0&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;test value=&amp;quot;-fuel/through-right-valve&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/right-valve EQ 0      &lt;br /&gt;
         &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;/switch&amp;gt;      &lt;br /&gt;
&lt;br /&gt;
      &amp;lt;!-- from Tank 1 to Right Engine Fuel Flow Rate in pps --&amp;gt;            &lt;br /&gt;
      &amp;lt;switch name=&amp;quot;fuel/eng1-from-tank1&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;test value=&amp;quot;-fuel/through-right-valve&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/right-valve EQ 1      &lt;br /&gt;
         &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;!-- from Tank 2 to Right Engine Fuel Flow Rate in pps --&amp;gt;            &lt;br /&gt;
      &amp;lt;switch name=&amp;quot;fuel/eng1-from-tank2&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;test value=&amp;quot;-fuel/through-right-valve&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/right-valve EQ 2      &lt;br /&gt;
         &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;/switch&amp;gt;      &lt;br /&gt;
&lt;br /&gt;
      &amp;lt;!-- from Tank 3 to Right Engine Fuel Flow Rate in pps --&amp;gt;            &lt;br /&gt;
      &amp;lt;switch name=&amp;quot;fuel/eng1-from-tank3&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;test value=&amp;quot;-fuel/through-right-valve&amp;quot;&amp;gt;&lt;br /&gt;
            /controls/fuel/right-valve EQ 3      &lt;br /&gt;
         &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;/channel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- *********************************************************************************** --&amp;gt;&lt;br /&gt;
&amp;lt;!-- ************ TOTAL FLOW RATE per TANK *************** --&amp;gt;&lt;br /&gt;
&amp;lt;!-- *********************************************************************************** --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
     &amp;lt;channel name=&amp;quot;Total flow rates&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;summer name=&amp;quot;fuel/tank0-flow-rate&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;input&amp;gt;fuel/eng0-from-tank0&amp;lt;/input&amp;gt;&lt;br /&gt;
         &amp;lt;input&amp;gt;fuel/eng1-from-tank0&amp;lt;/input&amp;gt;&lt;br /&gt;
         &amp;lt;output&amp;gt;propulsion/tank[0]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
      &amp;lt;/summer&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
       &amp;lt;summer name=&amp;quot;fuel/tank1-flow-rate&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;input&amp;gt;fuel/eng0-from-tank1&amp;lt;/input&amp;gt;&lt;br /&gt;
         &amp;lt;input&amp;gt;fuel/eng1-from-tank1&amp;lt;/input&amp;gt;&lt;br /&gt;
         &amp;lt;output&amp;gt;propulsion/tank[1]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
      &amp;lt;/summer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;summer name=&amp;quot;fuel/tank2-flow-rate&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;input&amp;gt;fuel/eng0-from-tank2&amp;lt;/input&amp;gt;&lt;br /&gt;
         &amp;lt;input&amp;gt;fuel/eng1-from-tank2&amp;lt;/input&amp;gt;&lt;br /&gt;
         &amp;lt;output&amp;gt;propulsion/tank[2]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
      &amp;lt;/summer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;summer name=&amp;quot;fuel/tank3-flow-rate&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;input&amp;gt;fuel/eng0-from-tank3&amp;lt;/input&amp;gt;&lt;br /&gt;
         &amp;lt;input&amp;gt;fuel/eng1-from-tank3&amp;lt;/input&amp;gt;&lt;br /&gt;
         &amp;lt;output&amp;gt;propulsion/tank[3]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
      &amp;lt;/summer&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
   &amp;lt;/channel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/system&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{JSBSim}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft enhancement|Fuel system JSBSim]]&lt;br /&gt;
[[Category:Howto|Fuel system JSBSim]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken&amp;diff=60068</id>
		<title>Saab 35 Draken</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken&amp;diff=60068"/>
		<updated>2013-05-09T19:41:10Z</updated>

		<summary type="html">&lt;p&gt;AndersM: /* Gauges and instruments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{aero-stub}}&lt;br /&gt;
&lt;br /&gt;
{{infobox Aircraft&lt;br /&gt;
|image 			= Saab_J35.jpg&lt;br /&gt;
|image2 		= Saab_J35_cockpit.jpg&lt;br /&gt;
|name 			= Saab 35 Draken&lt;br /&gt;
|type 			= Fighter aircraft&lt;br /&gt;
|fdm 			= JSBSim&lt;br /&gt;
|status-fdm		= 3&lt;br /&gt;
|status-systems		= 2&lt;br /&gt;
|status-cockpit		= 3&lt;br /&gt;
|status-model		= 3&lt;br /&gt;
|authors 		= Oliver Reischl (3D model), Anders M (FDM, Cockpit)&lt;br /&gt;
|fgname 		= SaabJ35F&lt;br /&gt;
}}&lt;br /&gt;
The '''Saab 35 Draken''' (Dragon) is a Swedish supersonic interceptor developed in the 1950s. The model F was delivered between 1965 and 1972 and is the model that the FG plane is based on.&lt;br /&gt;
&lt;br /&gt;
== Description of the features ==&lt;br /&gt;
Number in parenthesis refers to the cockpit image.&lt;br /&gt;
 &lt;br /&gt;
=== Special aircraft keys ===&lt;br /&gt;
&lt;br /&gt;
*Shift-S Automatic start sequence including all systems. (The aircraft needs to be stationary.)&lt;br /&gt;
*Shift_L Attach or remove drop tanks on ground. (Stationary and drop tank selector off)&lt;br /&gt;
*Ctrl-J Jettison drop tanks in air.&lt;br /&gt;
*Ctrl-D Unlocks and opens/closes and locks canopy. Closed and locked canopy - first press unlocks second opens canopy. Closed and unlocked canopy at simulation start - first press locks. Open canopy - first press closes canopy second locks &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Special indicators ===&lt;br /&gt;
&lt;br /&gt;
*GLÖM EJ LAND-STÄLL: (&amp;quot;Do not forget landing gear&amp;quot;) flashes if altitude &amp;lt; 1450 m, airspeed &amp;lt; 450 km/h and throttle &amp;lt; 85%&lt;br /&gt;
&lt;br /&gt;
*HUVUDVARN.: Main caution light. Indicates important system warnings. See below.&lt;br /&gt;
&lt;br /&gt;
*HÖJDV: Autopilot indicator. Flashes as long as aircraft not at target altitude. Lit when stable at target altitude.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Gauges and instruments ===&lt;br /&gt;
&lt;br /&gt;
'''Fuel gauge'''&lt;br /&gt;
&lt;br /&gt;
Shows percent of droptanks left until they are empty if attached. Otherwise percent of internal fuel remaining. The two needles shows left/front and right/rear tank level. The engine is supplied by the two tanks alternating if not on afterburner, therefore the needles will chase each other down the scale.&lt;br /&gt;
&lt;br /&gt;
'''G-gauge'''&lt;br /&gt;
&lt;br /&gt;
Max G-force is displayed by a striped needle. Reset by clicking the small reset pin on the right side of the instrument.&lt;br /&gt;
&lt;br /&gt;
'''Altitude gauge'''&lt;br /&gt;
&lt;br /&gt;
Pressure setting is done by clicking left or right side of the setting knob (lower left of he instrument).&lt;br /&gt;
&lt;br /&gt;
'''Altitude selector'''&lt;br /&gt;
&lt;br /&gt;
Right side below secondary AI. Sets target altitude for autopilot. (7)&lt;br /&gt;
&lt;br /&gt;
'''Course selector'''&lt;br /&gt;
&lt;br /&gt;
Below Heading indicator. Sets course needle on the heading indicator (compass).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''AHK'''&lt;br /&gt;
&lt;br /&gt;
The real AHK (swe.Avstånd Höjd Kommando, eng. distance altitude command), on the right side of the radar, was an instrument connected to the Swedish air combat control centres (The system is part of &amp;quot;STRIL60&amp;quot;). It gave tactical information to the pilot by 20 different commands, displayed as words at the top of the instrument, and also by the distance scale and the arrow needle on the height scale. Some of the commands are reused  as instrument modes.(6)&lt;br /&gt;
&lt;br /&gt;
In all modes the &amp;quot;HÖJD&amp;quot; (altitude) scale shows pressure-altitude. Dot-needle from 0-2000 m and tape-needle from 0-20000 m.&lt;br /&gt;
&lt;br /&gt;
Modes:&lt;br /&gt;
&lt;br /&gt;
*0: (Off) Only altitude shown&lt;br /&gt;
*HÖJDÄNDRING: Arrow shows height reached in one minute at current vertical speed. Scale 0-20000 m. &amp;quot;AVST&amp;quot; tape shows distance over ground to change altitude 1000 m at current vertical speed. Speed over ground calculated from IAS using standard atmosphere.&lt;br /&gt;
*LANDA: Arrow shows height reached in one minute at current vertical speed. Scale 0-2000 m.&lt;br /&gt;
&amp;quot;AVST&amp;quot; tape shows distance over ground until tuchdown at sealevel and current vertical speed. Speed over ground calculated from IAS using standard atmosphere.&lt;br /&gt;
*AVST. 400: Arrow shows height reached in one minute at current vertical speed. AVST tape shows distance to beacon 0-400 km.&lt;br /&gt;
*AVSTÅND 40: Arrow shows height reached in one minute at current vertical speed. AVST tape shows distance to beacon 0-40 km.&lt;br /&gt;
*BARBRO: Arrow shows height reached in one minute at current vertical speed, scale 0-2000 m. AVST tape shows distance to beacon 0-40 km.&lt;br /&gt;
*NYTT MÅL: Arrow shows Route Manager cruise altitude 0- 20000 m. AVST shows distance 0-400 km to next Route Manager waypoint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Caution panel'''&lt;br /&gt;
&lt;br /&gt;
Lower right.(9) Shows system cautions and warnings.&lt;br /&gt;
Those with ! in front triggers main caution light:&lt;br /&gt;
&lt;br /&gt;
*!BRAND MOTOR: (fire engine) not implemented&lt;br /&gt;
*!BRAND EBK P: (fire afterburner pump) not implemented&lt;br /&gt;
*STYR AUT: (autopilot) autopilot off&lt;br /&gt;
*MOTOR IS: (engine ice) engine deicing on not implemented yet&lt;br /&gt;
*!TANK LUFT: (tank air) airpressure fault in fuel system. Not implemented&lt;br /&gt;
*!OLJE TRYCK: (oil pressure) low oil pressure.&lt;br /&gt;
*EBK: (afterburner) Indicates that the exhaust nozzle is working as AB is turned off or on&lt;br /&gt;
or open when idle on the ground to keep engine from overheating. (Not lit constantly when using AB.)&lt;br /&gt;
*!SYR GAS: (oxygen pressure) not implemented&lt;br /&gt;
*!EL FEL: (electric fault) fault in AC circuit or generator off.&lt;br /&gt;
*!HYDR I, HYDR II: (hydraulic I and II) Low pressure in hydraulic circuit&lt;br /&gt;
*!KABIN TRYCK: (cabin pressure) Cabin pressure too low. Not implemented.&lt;br /&gt;
*!HUV LÅS: (canopy lock) canopy not locked.&lt;br /&gt;
&lt;br /&gt;
TANK LUFT, OLJE TRYCK, EL FEL, HYDR I and HYDR II will be lit when generator off. But should go off during engine start up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Radar'''&lt;br /&gt;
&lt;br /&gt;
Showing a sweep and antenna azimut as well as navigation indicators.&lt;br /&gt;
In multiplayer the radar shows aircraft in radar range: dist. &amp;lt; 40 km, +-60 deg in yaw, +-30 deg in pitch and &amp;gt; 100 m above ground.&lt;br /&gt;
&lt;br /&gt;
Radar modes are set by the navigation radio.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Autopilot'''&lt;br /&gt;
&lt;br /&gt;
The autopilot is on the right side of the seat (11) and has the following functions and controls:&lt;br /&gt;
*HÖJD: Altitude hold&lt;br /&gt;
*ATTITYD: Attitude hold- pitch and roll&lt;br /&gt;
*DÄMPN: Pitch and yaw-damper on. This is on in all normal flight conditions&lt;br /&gt;
*SVÄNG: Banks the aircraft in attitude mode&lt;br /&gt;
*NOS: Pitch setting in attitude mode&lt;br /&gt;
*FRÅN TILL: Main autopilot switch. Normally left on. Triggers caution light if off.&lt;br /&gt;
*ROLL: Roll trim elevon setting&lt;br /&gt;
*GIR: Rudder trim setting&lt;br /&gt;
*Middle mouse button zeros the slider/knob.&lt;br /&gt;
&lt;br /&gt;
''IMPORTANT:'' The autopilot has an automatic switch to only damping if airspeed is Mach 0.95-1.05 or G-force is above 4 G or below -0.5 G. No warning is given.&lt;br /&gt;
&lt;br /&gt;
At present the autopilot is not as stable as it should be, especially altitude hold.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Navigation radio and mode selector'''&lt;br /&gt;
&lt;br /&gt;
3D model right side panel below cautions.(10) Main mode selector for navigation, AHK and radar.&lt;br /&gt;
&lt;br /&gt;
Draken does not have ordinary navigation instruments. It has a special system that was integrated in the combat command and navigation system of the Swedish airforce. A letter code was used to select navigation beacons and airbase landing system. There was two parts of the system: Anita - general navigation and Barbro - landing guidance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To simulate this and still be compatible with FG there is a file beacons.txt in the aircraft's directory. In that file you write a line for each beacon you want to use. The format is a comma separated list: letter code,type,frequenzy,note&lt;br /&gt;
*letter code: Three letters A-P that identifies the beacon. Anita (VOR, NDB) does only use the first two (you can set the last to any character you want). Barbro (ILS) uses all three.&lt;br /&gt;
*type: VOR, NDB or ILS.&lt;br /&gt;
*frequency: The beacons frequency VOR/ILS in MHz, NDB in kHz.&lt;br /&gt;
*note: Descriptive note. Must have at least one character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The selected mode sets input to course needle (cn), radar and AHK:&lt;br /&gt;
*FRÅN: (Off)  No nav radio, Radar off, AHK 0, cn manual&lt;br /&gt;
*FÖRV: (Preselected) No nav radio, Radar off, AHK HÖJDÄNDRING, cn manual&lt;br /&gt;
*STRIL: (Combat command) Activates Route Manager, Radar scanning, AHK NYTT MÅL, cn direction to next waypoint.&lt;br /&gt;
*STRID: (Combat) No nav info, Radar scanning, AHK HÖJDÄNDRING, cn manual&lt;br /&gt;
*NAVRIKTN: (Navigation direction) Uses NDB/VOR set by the two letters NAV. Radar shows direction pointer, AHK HÖJDÄNDRING, cn ADF.&lt;br /&gt;
*NAV 400: (Navigation 400 km) Uses VOR/NDB set by the two letters NAV. Radar shows direction pointer, AHK AVST. 400 (shows 0 if NDB), cn direction to VOR.&lt;br /&gt;
*NAV 40: (Navigation 40 km) Uses VOR/NDB set by the two letters NAV. Radar shows direction pointer, AHK AVSTÅND 40 (shows 0 if NDB), cn direction to beacon.&lt;br /&gt;
*LANDN 40: (Landing 40 km) Uses NDB/VOR set by the two letters NAV. Radar shows direction pointer, AHK LANDA, cn direction to beacon.&lt;br /&gt;
*BARBRO: (Barbro) Uses ILS set by the three letters NAV+LANDN. Radar shows glide slope pointers, AHK BARBRO, cn direction to ILS beacon. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Special Controls and switches'''&lt;br /&gt;
*Droptank fuel valve: Right front canopy rim.(8) Set to on (forward) when using drop tanks.&lt;br /&gt;
*Parking brake: Center console below instrument panel to the right.(5)&lt;br /&gt;
*Jettison droptanks: Left side with red protection ring.(4)&lt;br /&gt;
*Canopy handle: Left side(3)&lt;br /&gt;
*Start panel: Lower left instrument panel.(2) Se below.&lt;br /&gt;
*Instrument and panel lighting: Left side knob above throttle.(1) Click to change intensity.&lt;br /&gt;
&lt;br /&gt;
=== Flying ===&lt;br /&gt;
[[File:J35 Draken start panel.jpg|thumb|Start panel]]&lt;br /&gt;
'''Starting the aircraft'''&lt;br /&gt;
&lt;br /&gt;
Either press Shift-S and let the automatic start make the work or follow the check list below.&lt;br /&gt;
&lt;br /&gt;
* Battery switch on. The smaller covered switch on the start panel.(no. 1) Click cover to open and then switch.&lt;br /&gt;
* Lock canopy. Click handle. The HUV LÅS caution should now go out.&lt;br /&gt;
* Turn on main fuel pump. Under the large cover on he start panel.(no. 2)&lt;br /&gt;
* Turn on afterburner fuel pump. Leftmost switch on the start panel.(no. 3) The red light on the start panel is now off.&lt;br /&gt;
* Turn on drop tanks fuel valve. The yellow light on the start panel is now unlit.&lt;br /&gt;
* Press START button on the start panel and wait until the engine is ignited.(no. 4)&lt;br /&gt;
* Switch on the generator when engine at 30%. The switch next to the start button.(no. 5)&lt;br /&gt;
All caution lights should now be unlit in a few seconds.&lt;br /&gt;
 &lt;br /&gt;
'''Normal operations'''&lt;br /&gt;
* Draken has elevons, combined ailerons and elevators. Large elevon deflections decreases the available aileron difference.&lt;br /&gt;
* The aircraft has non-linear control response in elevation to lessen effect of small stick movements.&lt;br /&gt;
* To avoid accidents on landing is it not possible to retract landing gears if throttle &amp;lt; 90 %&lt;br /&gt;
* Rotation 250 km/h&lt;br /&gt;
* Max airspeed(Vne) 1350 km/h. Max speed with gear extended 500 km/h.&lt;br /&gt;
* Touch down speed ca. 300 km/h. 12 degrees AoA&lt;br /&gt;
* Too long with negative G causes fuel starvation.&lt;br /&gt;
* Watch alpha and speed. Drag increases fast with increasing alpha and pitch can occur at alpha &amp;gt; 25 deg&lt;br /&gt;
&lt;br /&gt;
== External link ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Saab_35_Draken Saab 35 Draken] (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
[[Category:Delta-wing aircraft]]&lt;br /&gt;
[[Category:Fighter aircraft]]&lt;br /&gt;
[[Category:Single-engined jets]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken&amp;diff=60066</id>
		<title>Saab 35 Draken</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken&amp;diff=60066"/>
		<updated>2013-05-09T19:38:24Z</updated>

		<summary type="html">&lt;p&gt;AndersM: /* Flying */ Start panel image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{aero-stub}}&lt;br /&gt;
&lt;br /&gt;
{{infobox Aircraft&lt;br /&gt;
|image 			= Saab_J35.jpg&lt;br /&gt;
|image2 		= Saab_J35_cockpit.jpg&lt;br /&gt;
|name 			= Saab 35 Draken&lt;br /&gt;
|type 			= Fighter aircraft&lt;br /&gt;
|fdm 			= JSBSim&lt;br /&gt;
|status-fdm		= 3&lt;br /&gt;
|status-systems		= 2&lt;br /&gt;
|status-cockpit		= 3&lt;br /&gt;
|status-model		= 3&lt;br /&gt;
|authors 		= Oliver Reischl (3D model), Anders M (FDM, Cockpit)&lt;br /&gt;
|fgname 		= SaabJ35F&lt;br /&gt;
}}&lt;br /&gt;
The '''Saab 35 Draken''' (Dragon) is a Swedish supersonic interceptor developed in the 1950s. The model F was delivered between 1965 and 1972 and is the model that the FG plane is based on.&lt;br /&gt;
&lt;br /&gt;
== Description of the features ==&lt;br /&gt;
Number in parenthesis refers to the cockpit image.&lt;br /&gt;
 &lt;br /&gt;
=== Special aircraft keys ===&lt;br /&gt;
&lt;br /&gt;
*Shift-S Automatic start sequence including all systems. (The aircraft needs to be stationary.)&lt;br /&gt;
*Shift_L Attach or remove drop tanks on ground. (Stationary and drop tank selector off)&lt;br /&gt;
*Ctrl-J Jettison drop tanks in air.&lt;br /&gt;
*Ctrl-D Unlocks and opens/closes and locks canopy. Closed and locked canopy - first press unlocks second opens canopy. Closed and unlocked canopy at simulation start - first press locks. Open canopy - first press closes canopy second locks &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Special indicators ===&lt;br /&gt;
&lt;br /&gt;
*GLÖM EJ LAND-STÄLL: (&amp;quot;Do not forget landing gear&amp;quot;) flashes if altitude &amp;lt; 1450 m, airspeed &amp;lt; 450 km/h and throttle &amp;lt; 85%&lt;br /&gt;
&lt;br /&gt;
*HUVUDVARN.: Main caution light. Indicates important system warnings. See below.&lt;br /&gt;
&lt;br /&gt;
*HÖJDV: Autopilot indicator. Flashes as long as aircraft not at target altitude. Lit when stable at target altitude.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Gauges and instruments ===&lt;br /&gt;
&lt;br /&gt;
'''Fuel gauge'''&lt;br /&gt;
&lt;br /&gt;
Shows percent of droptanks left until they are empty if attached. Otherwise percent of internal fuel remaining. The two needles shows left/front and right/rear tank level. The engine is supplied by the two tanks alternating if not on afterburner, therefore the needles will chase each other down the scale.&lt;br /&gt;
&lt;br /&gt;
'''G-gauge'''&lt;br /&gt;
&lt;br /&gt;
Max G-force is displayed by a striped needle. Reset by clicking the small reset pin on the right side of the instrument.&lt;br /&gt;
&lt;br /&gt;
'''Altitude gauge'''&lt;br /&gt;
&lt;br /&gt;
Pressure setting is done by clicking left or right side of the setting knob (lower left of he instrument).&lt;br /&gt;
&lt;br /&gt;
'''Altitude selector'''&lt;br /&gt;
&lt;br /&gt;
Right side below secondary AI. Sets target altitude for autopilot. (7)&lt;br /&gt;
&lt;br /&gt;
'''Course selector'''&lt;br /&gt;
&lt;br /&gt;
Below Heading indicator. Sets course needle on the heading indicator (compass).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''AHK'''&lt;br /&gt;
&lt;br /&gt;
The real AHK (swe.Avstånd Höjd Kommando, eng. distance altitude command), on the right side of the radar, was an instrument connected to the Swedish air combat control centres (The system is part of &amp;quot;STRIL60&amp;quot;). It gave tactical information to the pilot by 20 different commands, displayed as words at the top of the instrument, and also by the distance scale and the arrow needle on the height scale. Some of the commands are reused  as instrument modes.(6)&lt;br /&gt;
&lt;br /&gt;
In all modes the &amp;quot;HÖJD&amp;quot; (altitude) scale shows pressure-altitude. Dot-needle from 0-2000 m and tape-needle from 0-20000 m.&lt;br /&gt;
&lt;br /&gt;
Modes:&lt;br /&gt;
&lt;br /&gt;
*0: (Off) Only altitude shown&lt;br /&gt;
*HÖJDÄNDRING: Arrow shows height reached in one minute at current vertical speed. Scale 0-20000 m. &amp;quot;AVST&amp;quot; tape shows distance over ground to change altitude 1000 m at current vertical speed. Speed over ground calculated from IAS using standard atmosphere.&lt;br /&gt;
*LANDA: Arrow shows height reached in one minute at current vertical speed. Scale 0-2000 m.&lt;br /&gt;
&amp;quot;AVST&amp;quot; tape shows distance over ground until tuchdown at sealevel and current vertical speed. Speed over ground calculated from IAS using standard atmosphere.&lt;br /&gt;
*AVST. 400: Arrow shows height reached in one minute at current vertical speed. AVST tape shows distance to beacon 0-400 km.&lt;br /&gt;
*AVSTÅND 40: Arrow shows height reached in one minute at current vertical speed. AVST tape shows distance to beacon 0-40 km.&lt;br /&gt;
*BARBRO: Arrow shows height reached in one minute at current vertical speed, scale 0-2000 m. AVST tape shows distance to beacon 0-40 km.&lt;br /&gt;
*NYTT MÅL: Arrow shows Route Manager cruise altitude 0- 20000 m. AVST shows distance 0-400 km to next Route Manager waypoint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Caution panel'''&lt;br /&gt;
&lt;br /&gt;
Lower right.(9) Shows system cautions and warnings.&lt;br /&gt;
Those with ! in front triggers main caution light:&lt;br /&gt;
&lt;br /&gt;
*!BRAND MOTOR: (fire engine) not implemented&lt;br /&gt;
*!BRAND EBK P: (fire afterburner pump) not implemented&lt;br /&gt;
*STYR AUT: (autopilot) autopilot off&lt;br /&gt;
*MOTOR IS: (engine ice) engine deicing on not implemented yet&lt;br /&gt;
*!TANK LUFT: (tank air) airpressure fault in fuel system. Not implemented&lt;br /&gt;
*!OLJE TRYCK: (oil pressure) low oil pressure.&lt;br /&gt;
*EBK: (afterburner) Indicates that the exhaust nozzle is working as AB is turned off or on&lt;br /&gt;
or open when idle on the ground to keep engine from overheating. (Not lit constantly when using AB.)&lt;br /&gt;
*!SYR GAS: (oxygen pressure) not implemented&lt;br /&gt;
*!EL FEL: (electric fault) fault in AC circuit or generator off.&lt;br /&gt;
*!HYDR I, HYDR II: (hydraulic I and II) Low pressure in hydraulic circuit&lt;br /&gt;
*!KABIN TRYCK: (cabin pressure) Cabin pressure too low. Not implemented.&lt;br /&gt;
*!HUV LÅS: (canopy lock) canopy not locked.&lt;br /&gt;
&lt;br /&gt;
TANK LUFT, OLJE TRYCK, EL FEL, HYDR I and HYDR II will be lit when generator off. But should go off during engine start up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Radar'''&lt;br /&gt;
&lt;br /&gt;
Showing a sweep and antenna azimut as well as navigation indicators.&lt;br /&gt;
In multiplayer the radar shows aircraft in radar range: dist. &amp;lt; 40 km, +-60 deg in yaw, +-30 deg in pitch and &amp;gt; 100 m above ground.&lt;br /&gt;
&lt;br /&gt;
Radar modes are set by the navigation radio.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Autopilot'''&lt;br /&gt;
The autopilot is on the right side of the seat (11) and has the following functions and controls:&lt;br /&gt;
*HÖJD: Altitude hold&lt;br /&gt;
*ATTITYD: Attitude hold- pitch and roll&lt;br /&gt;
*DÄMPN: Pitch and yaw-damper on. This is on in all normal flight conditions&lt;br /&gt;
*SVÄNG: Banks the aircraft in attitude mode&lt;br /&gt;
*NOS: Pitch setting in attitude mode&lt;br /&gt;
*FRÅN TILL: Main autopilot switch. Normally left on. Triggers caution light if off.&lt;br /&gt;
*ROLL: Roll trim elevon setting&lt;br /&gt;
*GIR: Rudder trim setting&lt;br /&gt;
*Middle mouse button zeros the slider/knob.&lt;br /&gt;
&lt;br /&gt;
''IMPORTANT:'' The autopilot has an automatic switch to only damping if airspeed is Mach 0.95-1.05 or G-force is above 4 G or below -0.5 G. No warning is given.&lt;br /&gt;
&lt;br /&gt;
At present the autopilot is not as stable as it should be, especially altitude hold.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
Navigation radio and mode selector'''&lt;br /&gt;
&lt;br /&gt;
3D model right side panel below cautions.(10) Main mode selector for navigation, AHK and radar.&lt;br /&gt;
&lt;br /&gt;
Draken does not have ordinary navigation instruments. It has a special system that was integrated in the combat command and navigation system of the Swedish airforce. A letter code was used to select navigation beacons and airbase landing system. There was two parts of the system: Anita - general navigation and Barbro - landing guidance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To simulate this and still be compatible with FG there is a file beacons.txt in the aircraft's directory. In that file you write a line for each beacon you want to use. The format is a comma separated list: letter code,type,frequenzy,note&lt;br /&gt;
*letter code: Three letters A-P that identifies the beacon. Anita (VOR, NDB) does only use the first two (you can set the last to any character you want). Barbro (ILS) uses all three.&lt;br /&gt;
*type: VOR, NDB or ILS.&lt;br /&gt;
*frequency: The beacons frequency VOR/ILS in MHz, NDB in kHz.&lt;br /&gt;
*note: Descriptive note. Must have at least one character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The selected mode sets input to course needle (cn), radar and AHK:&lt;br /&gt;
*FRÅN: (Off)  No nav radio, Radar off, AHK 0, cn manual&lt;br /&gt;
*FÖRV: (Preselected) No nav radio, Radar off, AHK HÖJDÄNDRING, cn manual&lt;br /&gt;
*STRIL: (Combat command) Activates Route Manager, Radar scanning, AHK NYTT MÅL, cn direction to next waypoint.&lt;br /&gt;
*STRID: (Combat) No nav info, Radar scanning, AHK HÖJDÄNDRING, cn manual&lt;br /&gt;
*NAVRIKTN: (Navigation direction) Uses NDB/VOR set by the two letters NAV. Radar shows direction pointer, AHK HÖJDÄNDRING, cn ADF.&lt;br /&gt;
*NAV 400: (Navigation 400 km) Uses VOR/NDB set by the two letters NAV. Radar shows direction pointer, AHK AVST. 400 (shows 0 if NDB), cn direction to VOR.&lt;br /&gt;
*NAV 40: (Navigation 40 km) Uses VOR/NDB set by the two letters NAV. Radar shows direction pointer, AHK AVSTÅND 40 (shows 0 if NDB), cn direction to beacon.&lt;br /&gt;
*LANDN 40: (Landing 40 km) Uses NDB/VOR set by the two letters NAV. Radar shows direction pointer, AHK LANDA, cn direction to beacon.&lt;br /&gt;
*BARBRO: (Barbro) Uses ILS set by the three letters NAV+LANDN. Radar shows glide slope pointers, AHK BARBRO, cn direction to ILS beacon. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Special Controls and switches'''&lt;br /&gt;
*Droptank fuel valve: Right front canopy rim.(8) Set to on (forward) when using drop tanks.&lt;br /&gt;
*Parking brake: Center console below instrument panel to the right.(5)&lt;br /&gt;
*Jettison droptanks: Left side with red protection ring.(4)&lt;br /&gt;
*Canopy handle: Left side(3)&lt;br /&gt;
*Start panel: Lower left instrument panel.(2) Se below.&lt;br /&gt;
*Instrument and panel lighting: Left side knob above throttle.(1) Click to change intensity.&lt;br /&gt;
&lt;br /&gt;
=== Flying ===&lt;br /&gt;
[[File:J35 Draken start panel.jpg|thumb|Start panel]]&lt;br /&gt;
'''Starting the aircraft'''&lt;br /&gt;
&lt;br /&gt;
Either press Shift-S and let the automatic start make the work or follow the check list below.&lt;br /&gt;
&lt;br /&gt;
* Battery switch on. The smaller covered switch on the start panel.(no. 1) Click cover to open and then switch.&lt;br /&gt;
* Lock canopy. Click handle. The HUV LÅS caution should now go out.&lt;br /&gt;
* Turn on main fuel pump. Under the large cover on he start panel.(no. 2)&lt;br /&gt;
* Turn on afterburner fuel pump. Leftmost switch on the start panel.(no. 3) The red light on the start panel is now off.&lt;br /&gt;
* Turn on drop tanks fuel valve. The yellow light on the start panel is now unlit.&lt;br /&gt;
* Press START button on the start panel and wait until the engine is ignited.(no. 4)&lt;br /&gt;
* Switch on the generator when engine at 30%. The switch next to the start button.(no. 5)&lt;br /&gt;
All caution lights should now be unlit in a few seconds.&lt;br /&gt;
 &lt;br /&gt;
'''Normal operations'''&lt;br /&gt;
* Draken has elevons, combined ailerons and elevators. Large elevon deflections decreases the available aileron difference.&lt;br /&gt;
* The aircraft has non-linear control response in elevation to lessen effect of small stick movements.&lt;br /&gt;
* To avoid accidents on landing is it not possible to retract landing gears if throttle &amp;lt; 90 %&lt;br /&gt;
* Rotation 250 km/h&lt;br /&gt;
* Max airspeed(Vne) 1350 km/h. Max speed with gear extended 500 km/h.&lt;br /&gt;
* Touch down speed ca. 300 km/h. 12 degrees AoA&lt;br /&gt;
* Too long with negative G causes fuel starvation.&lt;br /&gt;
* Watch alpha and speed. Drag increases fast with increasing alpha and pitch can occur at alpha &amp;gt; 25 deg&lt;br /&gt;
&lt;br /&gt;
== External link ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Saab_35_Draken Saab 35 Draken] (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
[[Category:Delta-wing aircraft]]&lt;br /&gt;
[[Category:Fighter aircraft]]&lt;br /&gt;
[[Category:Single-engined jets]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:J35_Draken_start_panel.jpg&amp;diff=60064</id>
		<title>File:J35 Draken start panel.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:J35_Draken_start_panel.jpg&amp;diff=60064"/>
		<updated>2013-05-09T19:35:14Z</updated>

		<summary type="html">&lt;p&gt;AndersM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=Start panel J25 Draken}}&lt;br /&gt;
|date=2013-05-09&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:AndersM|AndersM]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken&amp;diff=60062</id>
		<title>Saab 35 Draken</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Saab_35_Draken&amp;diff=60062"/>
		<updated>2013-05-09T19:31:29Z</updated>

		<summary type="html">&lt;p&gt;AndersM: Updated to describe current version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{aero-stub}}&lt;br /&gt;
&lt;br /&gt;
{{infobox Aircraft&lt;br /&gt;
|image 			= Saab_J35.jpg&lt;br /&gt;
|image2 		= Saab_J35_cockpit.jpg&lt;br /&gt;
|name 			= Saab 35 Draken&lt;br /&gt;
|type 			= Fighter aircraft&lt;br /&gt;
|fdm 			= JSBSim&lt;br /&gt;
|status-fdm		= 3&lt;br /&gt;
|status-systems		= 2&lt;br /&gt;
|status-cockpit		= 3&lt;br /&gt;
|status-model		= 3&lt;br /&gt;
|authors 		= Oliver Reischl (3D model), Anders M (FDM, Cockpit)&lt;br /&gt;
|fgname 		= SaabJ35F&lt;br /&gt;
}}&lt;br /&gt;
The '''Saab 35 Draken''' (Dragon) is a Swedish supersonic interceptor developed in the 1950s. The model F was delivered between 1965 and 1972 and is the model that the FG plane is based on.&lt;br /&gt;
&lt;br /&gt;
== Description of the features ==&lt;br /&gt;
Number in parenthesis refers to the cockpit image.&lt;br /&gt;
 &lt;br /&gt;
=== Special aircraft keys ===&lt;br /&gt;
&lt;br /&gt;
*Shift-S Automatic start sequence including all systems. (The aircraft needs to be stationary.)&lt;br /&gt;
*Shift_L Attach or remove drop tanks on ground. (Stationary and drop tank selector off)&lt;br /&gt;
*Ctrl-J Jettison drop tanks in air.&lt;br /&gt;
*Ctrl-D Unlocks and opens/closes and locks canopy. Closed and locked canopy - first press unlocks second opens canopy. Closed and unlocked canopy at simulation start - first press locks. Open canopy - first press closes canopy second locks &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Special indicators ===&lt;br /&gt;
&lt;br /&gt;
*GLÖM EJ LAND-STÄLL: (&amp;quot;Do not forget landing gear&amp;quot;) flashes if altitude &amp;lt; 1450 m, airspeed &amp;lt; 450 km/h and throttle &amp;lt; 85%&lt;br /&gt;
&lt;br /&gt;
*HUVUDVARN.: Main caution light. Indicates important system warnings. See below.&lt;br /&gt;
&lt;br /&gt;
*HÖJDV: Autopilot indicator. Flashes as long as aircraft not at target altitude. Lit when stable at target altitude.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Gauges and instruments ===&lt;br /&gt;
&lt;br /&gt;
'''Fuel gauge'''&lt;br /&gt;
&lt;br /&gt;
Shows percent of droptanks left until they are empty if attached. Otherwise percent of internal fuel remaining. The two needles shows left/front and right/rear tank level. The engine is supplied by the two tanks alternating if not on afterburner, therefore the needles will chase each other down the scale.&lt;br /&gt;
&lt;br /&gt;
'''G-gauge'''&lt;br /&gt;
&lt;br /&gt;
Max G-force is displayed by a striped needle. Reset by clicking the small reset pin on the right side of the instrument.&lt;br /&gt;
&lt;br /&gt;
'''Altitude gauge'''&lt;br /&gt;
&lt;br /&gt;
Pressure setting is done by clicking left or right side of the setting knob (lower left of he instrument).&lt;br /&gt;
&lt;br /&gt;
'''Altitude selector'''&lt;br /&gt;
&lt;br /&gt;
Right side below secondary AI. Sets target altitude for autopilot. (7)&lt;br /&gt;
&lt;br /&gt;
'''Course selector'''&lt;br /&gt;
&lt;br /&gt;
Below Heading indicator. Sets course needle on the heading indicator (compass).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''AHK'''&lt;br /&gt;
&lt;br /&gt;
The real AHK (swe.Avstånd Höjd Kommando, eng. distance altitude command), on the right side of the radar, was an instrument connected to the Swedish air combat control centres (The system is part of &amp;quot;STRIL60&amp;quot;). It gave tactical information to the pilot by 20 different commands, displayed as words at the top of the instrument, and also by the distance scale and the arrow needle on the height scale. Some of the commands are reused  as instrument modes.(6)&lt;br /&gt;
&lt;br /&gt;
In all modes the &amp;quot;HÖJD&amp;quot; (altitude) scale shows pressure-altitude. Dot-needle from 0-2000 m and tape-needle from 0-20000 m.&lt;br /&gt;
&lt;br /&gt;
Modes:&lt;br /&gt;
&lt;br /&gt;
*0: (Off) Only altitude shown&lt;br /&gt;
*HÖJDÄNDRING: Arrow shows height reached in one minute at current vertical speed. Scale 0-20000 m. &amp;quot;AVST&amp;quot; tape shows distance over ground to change altitude 1000 m at current vertical speed. Speed over ground calculated from IAS using standard atmosphere.&lt;br /&gt;
*LANDA: Arrow shows height reached in one minute at current vertical speed. Scale 0-2000 m.&lt;br /&gt;
&amp;quot;AVST&amp;quot; tape shows distance over ground until tuchdown at sealevel and current vertical speed. Speed over ground calculated from IAS using standard atmosphere.&lt;br /&gt;
*AVST. 400: Arrow shows height reached in one minute at current vertical speed. AVST tape shows distance to beacon 0-400 km.&lt;br /&gt;
*AVSTÅND 40: Arrow shows height reached in one minute at current vertical speed. AVST tape shows distance to beacon 0-40 km.&lt;br /&gt;
*BARBRO: Arrow shows height reached in one minute at current vertical speed, scale 0-2000 m. AVST tape shows distance to beacon 0-40 km.&lt;br /&gt;
*NYTT MÅL: Arrow shows Route Manager cruise altitude 0- 20000 m. AVST shows distance 0-400 km to next Route Manager waypoint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Caution panel'''&lt;br /&gt;
&lt;br /&gt;
Lower right.(9) Shows system cautions and warnings.&lt;br /&gt;
Those with ! in front triggers main caution light:&lt;br /&gt;
&lt;br /&gt;
*!BRAND MOTOR: (fire engine) not implemented&lt;br /&gt;
*!BRAND EBK P: (fire afterburner pump) not implemented&lt;br /&gt;
*STYR AUT: (autopilot) autopilot off&lt;br /&gt;
*MOTOR IS: (engine ice) engine deicing on not implemented yet&lt;br /&gt;
*!TANK LUFT: (tank air) airpressure fault in fuel system. Not implemented&lt;br /&gt;
*!OLJE TRYCK: (oil pressure) low oil pressure.&lt;br /&gt;
*EBK: (afterburner) Indicates that the exhaust nozzle is working as AB is turned off or on&lt;br /&gt;
or open when idle on the ground to keep engine from overheating. (Not lit constantly when using AB.)&lt;br /&gt;
*!SYR GAS: (oxygen pressure) not implemented&lt;br /&gt;
*!EL FEL: (electric fault) fault in AC circuit or generator off.&lt;br /&gt;
*!HYDR I, HYDR II: (hydraulic I and II) Low pressure in hydraulic circuit&lt;br /&gt;
*!KABIN TRYCK: (cabin pressure) Cabin pressure too low. Not implemented.&lt;br /&gt;
*!HUV LÅS: (canopy lock) canopy not locked.&lt;br /&gt;
&lt;br /&gt;
TANK LUFT, OLJE TRYCK, EL FEL, HYDR I and HYDR II will be lit when generator off. But should go off during engine start up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Radar'''&lt;br /&gt;
&lt;br /&gt;
Showing a sweep and antenna azimut as well as navigation indicators.&lt;br /&gt;
In multiplayer the radar shows aircraft in radar range: dist. &amp;lt; 40 km, +-60 deg in yaw, +-30 deg in pitch and &amp;gt; 100 m above ground.&lt;br /&gt;
&lt;br /&gt;
Radar modes are set by the navigation radio.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Autopilot'''&lt;br /&gt;
The autopilot is on the right side of the seat (11) and has the following functions and controls:&lt;br /&gt;
*HÖJD: Altitude hold&lt;br /&gt;
*ATTITYD: Attitude hold- pitch and roll&lt;br /&gt;
*DÄMPN: Pitch and yaw-damper on. This is on in all normal flight conditions&lt;br /&gt;
*SVÄNG: Banks the aircraft in attitude mode&lt;br /&gt;
*NOS: Pitch setting in attitude mode&lt;br /&gt;
*FRÅN TILL: Main autopilot switch. Normally left on. Triggers caution light if off.&lt;br /&gt;
*ROLL: Roll trim elevon setting&lt;br /&gt;
*GIR: Rudder trim setting&lt;br /&gt;
*Middle mouse button zeros the slider/knob.&lt;br /&gt;
&lt;br /&gt;
''IMPORTANT:'' The autopilot has an automatic switch to only damping if airspeed is Mach 0.95-1.05 or G-force is above 4 G or below -0.5 G. No warning is given.&lt;br /&gt;
&lt;br /&gt;
At present the autopilot is not as stable as it should be, especially altitude hold.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
Navigation radio and mode selector'''&lt;br /&gt;
&lt;br /&gt;
3D model right side panel below cautions.(10) Main mode selector for navigation, AHK and radar.&lt;br /&gt;
&lt;br /&gt;
Draken does not have ordinary navigation instruments. It has a special system that was integrated in the combat command and navigation system of the Swedish airforce. A letter code was used to select navigation beacons and airbase landing system. There was two parts of the system: Anita - general navigation and Barbro - landing guidance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To simulate this and still be compatible with FG there is a file beacons.txt in the aircraft's directory. In that file you write a line for each beacon you want to use. The format is a comma separated list: letter code,type,frequenzy,note&lt;br /&gt;
*letter code: Three letters A-P that identifies the beacon. Anita (VOR, NDB) does only use the first two (you can set the last to any character you want). Barbro (ILS) uses all three.&lt;br /&gt;
*type: VOR, NDB or ILS.&lt;br /&gt;
*frequency: The beacons frequency VOR/ILS in MHz, NDB in kHz.&lt;br /&gt;
*note: Descriptive note. Must have at least one character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The selected mode sets input to course needle (cn), radar and AHK:&lt;br /&gt;
*FRÅN: (Off)  No nav radio, Radar off, AHK 0, cn manual&lt;br /&gt;
*FÖRV: (Preselected) No nav radio, Radar off, AHK HÖJDÄNDRING, cn manual&lt;br /&gt;
*STRIL: (Combat command) Activates Route Manager, Radar scanning, AHK NYTT MÅL, cn direction to next waypoint.&lt;br /&gt;
*STRID: (Combat) No nav info, Radar scanning, AHK HÖJDÄNDRING, cn manual&lt;br /&gt;
*NAVRIKTN: (Navigation direction) Uses NDB/VOR set by the two letters NAV. Radar shows direction pointer, AHK HÖJDÄNDRING, cn ADF.&lt;br /&gt;
*NAV 400: (Navigation 400 km) Uses VOR/NDB set by the two letters NAV. Radar shows direction pointer, AHK AVST. 400 (shows 0 if NDB), cn direction to VOR.&lt;br /&gt;
*NAV 40: (Navigation 40 km) Uses VOR/NDB set by the two letters NAV. Radar shows direction pointer, AHK AVSTÅND 40 (shows 0 if NDB), cn direction to beacon.&lt;br /&gt;
*LANDN 40: (Landing 40 km) Uses NDB/VOR set by the two letters NAV. Radar shows direction pointer, AHK LANDA, cn direction to beacon.&lt;br /&gt;
*BARBRO: (Barbro) Uses ILS set by the three letters NAV+LANDN. Radar shows glide slope pointers, AHK BARBRO, cn direction to ILS beacon. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Special Controls and switches'''&lt;br /&gt;
*Droptank fuel valve: Right front canopy rim.(8) Set to on (forward) when using drop tanks.&lt;br /&gt;
*Parking brake: Center console below instrument panel to the right.(5)&lt;br /&gt;
*Jettison droptanks: Left side with red protection ring.(4)&lt;br /&gt;
*Canopy handle: Left side(3)&lt;br /&gt;
*Start panel: Lower left instrument panel.(2) Se below.&lt;br /&gt;
*Instrument and panel lighting: Left side knob above throttle.(1) Click to change intensity.&lt;br /&gt;
&lt;br /&gt;
=== Flying ===&lt;br /&gt;
&lt;br /&gt;
'''Starting the aircraft'''&lt;br /&gt;
&lt;br /&gt;
Either press Shift-S and let the automatic start make the work or follow the check list below.&lt;br /&gt;
&lt;br /&gt;
* Battery switch on. The smaller covered switch on the start panel. Click cover to open and then switch.&lt;br /&gt;
* Lock canopy. Click handle. The HUV LÅS caution should now go out.&lt;br /&gt;
* Turn on main fuel pump. Under the large cover on he start panel.&lt;br /&gt;
* Turn on afterburner fuel pump. Leftmost switch on the start panel. The red light on the start panel is now off.&lt;br /&gt;
* Turn on drop tanks fuel valve. The yellow light on the start panel is now unlit.&lt;br /&gt;
* Press START button on the start panel and wait until the engine is ignited.&lt;br /&gt;
* Switch on the generator when engine at 30%. The switch next to the start button.&lt;br /&gt;
All caution lights should now be unlit in a few seconds.&lt;br /&gt;
 &lt;br /&gt;
'''Normal operations'''&lt;br /&gt;
* Draken has elevons, combined ailerons and elevators. Large elevon deflections decreases the available aileron difference.&lt;br /&gt;
* The aircraft has non-linear control response in elevation to lessen effect of small stick movements.&lt;br /&gt;
* To avoid accidents on landing is it not possible to retract landing gears if throttle &amp;lt; 90 %&lt;br /&gt;
* Rotation 250 km/h&lt;br /&gt;
* Max airspeed(Vne) 1350 km/h. Max speed with gear extended 500 km/h.&lt;br /&gt;
* Touch down speed ca. 300 km/h. 12 degrees AoA&lt;br /&gt;
* Too long with negative G causes fuel starvation.&lt;br /&gt;
* Watch alpha and speed. Drag increases fast with increasing alpha and pitch can occur at alpha &amp;gt; 25 deg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External link ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Saab_35_Draken Saab 35 Draken] (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
[[Category:Delta-wing aircraft]]&lt;br /&gt;
[[Category:Fighter aircraft]]&lt;br /&gt;
[[Category:Single-engined jets]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Saab_J35_cockpit.jpg&amp;diff=60055</id>
		<title>File:Saab J35 cockpit.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Saab_J35_cockpit.jpg&amp;diff=60055"/>
		<updated>2013-05-09T18:27:53Z</updated>

		<summary type="html">&lt;p&gt;AndersM: uploaded a new version of &amp;amp;quot;File:Saab J35 cockpit.jpg&amp;amp;quot;: Updated to newest GIT version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=Cockpit of the Saab J35 Draken.}}&lt;br /&gt;
|date=2013-03-04&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Gijs|Gijs]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
[[Category:FlightGear cockpit screenshots]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Bindings&amp;diff=59906</id>
		<title>Bindings</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Bindings&amp;diff=59906"/>
		<updated>2013-05-05T13:32:26Z</updated>

		<summary type="html">&lt;p&gt;AndersM: /* Commands */  link to source&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Bindings''' define what happens when a user:&lt;br /&gt;
* [[Howto: Make a clickable panel#Pick|clicks an object]] in the [[scenery]] or an [[aircraft]]&lt;br /&gt;
* press a key on the keyboard or [[joystick]]&lt;br /&gt;
* clicks a [[menu]] item&lt;br /&gt;
* click a buttons or fields in a dialog&lt;br /&gt;
You can assign multiple bindings to one object/button/key.&lt;br /&gt;
&lt;br /&gt;
All give codes are examples, found on various places in the [[FlightGear]] package.&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
&lt;br /&gt;
Below are a number of useful commands. See further [http://mapserver.flightgear.org/git/?p=flightgear;a=blob;f=src/Main/fg_commands.cxx;h=4c3272916f56a3180e29b9d8457e697bb71cfecb;hb=HEAD#l1555 fg_commands.cxx]. &lt;br /&gt;
&lt;br /&gt;
=== dialog-close ===&lt;br /&gt;
Closes the active dialog.&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;dialog-close&amp;lt;/command&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== dialog-show ===&lt;br /&gt;
Shows a dialog, which should be present in &amp;lt;tt&amp;gt;[[$FG ROOT]]/gui/dialogs&amp;lt;/tt&amp;gt;. Starting with FlightGear 2.7 dialog files located in &amp;lt;tt&amp;gt;&amp;lt;Current aircraft directory&amp;gt;/gui/dialogs&amp;lt;/tt&amp;gt; are also loaded. This should be used for dialogs specific to a certain aircraft.&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;dialog-show&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;dialog-name&amp;gt;location-in-air&amp;lt;/dialog-name&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
* '''dialog-name:''' the name of the dialog, as designated in its .xml file.&lt;br /&gt;
&lt;br /&gt;
=== nasal ===&lt;br /&gt;
[[Nasal]] is frequently used for complicated systems.&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;script&amp;gt;b777.afds.input(0,1);&amp;lt;/script&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-adjust ===&lt;br /&gt;
Increases or decreases a property's value with a given step. Maximum and minimum values are optional.&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/lighting/panel-norm&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;step&amp;gt;-0.05&amp;lt;/step&amp;gt;&lt;br /&gt;
  &amp;lt;min&amp;gt;0&amp;lt;/min&amp;gt;&lt;br /&gt;
  &amp;lt;max&amp;gt;1&amp;lt;/max&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-assign ===&lt;br /&gt;
One of the most important commands. It sets a property to a predefined value.&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/autopilot/settings/target-speed-kt&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-cycle ===&lt;br /&gt;
Cycles between a list of values and assigns one to a property. The value-list can vary in length. If the current value is &amp;quot;value1&amp;quot;, it will change to &amp;quot;value2&amp;quot;; if it is &amp;quot;value2&amp;quot;, it will change to &amp;quot;value3&amp;quot;, and so on, wrapping around the end.  If the current value is not in the list, it will jump to the first one.&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-cycle&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/autopilot/autobrake/setting&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;value type=&amp;quot;string&amp;quot;&amp;gt;ARM&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;value type=&amp;quot;string&amp;quot;&amp;gt;DISARM&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;value type=&amp;quot;string&amp;quot;&amp;gt;OFF&amp;lt;/value&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-interpolate ===&lt;br /&gt;
Interpolates to a value with a given rate of change (per second).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
 &amp;lt;command&amp;gt;property-interpolate&amp;lt;/command&amp;gt;&lt;br /&gt;
 &amp;lt;property&amp;gt;/controls/flight/aileron-trim&amp;lt;/property&amp;gt;&lt;br /&gt;
 &amp;lt;value type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
 &amp;lt;rate&amp;gt;0.5&amp;lt;/rate&amp;gt;&amp;lt;!-- 2 seconds to 0 from 1 or -1 --&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead of using &amp;lt;rate&amp;gt;, one could use &amp;lt;time&amp;gt;, to specify the time (in seconds) it takes to go to the new value, independent of the current value.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
 &amp;lt;command&amp;gt;property-interpolate&amp;lt;/command&amp;gt;&lt;br /&gt;
 &amp;lt;property&amp;gt;/controls/flight/aileron-trim&amp;lt;/property&amp;gt;&lt;br /&gt;
 &amp;lt;value type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
 &amp;lt;time&amp;gt;2&amp;lt;/time&amp;gt;&amp;lt;!-- 2 seconds to 0 from 1, 0.5, -1 etc. --&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also interpolate to a value given by a property.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
 &amp;lt;command&amp;gt;property-interpolate&amp;lt;/command&amp;gt;&lt;br /&gt;
 &amp;lt;property&amp;gt;/controls/flight/aileron-trim&amp;lt;/property&amp;gt;&lt;br /&gt;
 &amp;lt;property&amp;gt;/controls/flight/default-aileron-trim&amp;lt;/property&amp;gt;&amp;lt;!-- the value to interpolate to, is 0 --&amp;gt;&lt;br /&gt;
 &amp;lt;rate&amp;gt;0.5&amp;lt;/rate&amp;gt;&amp;lt;!-- 2 seconds to 0 from 1 or -1 --&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-multiply ===&lt;br /&gt;
Multiply the value of a property by a given factor.&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-multiply&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/aileron&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;factor&amp;gt;0.5&amp;lt;/factor&amp;gt;&lt;br /&gt;
  &amp;lt;min&amp;gt;-1&amp;lt;/min&amp;gt;&lt;br /&gt;
  &amp;lt;max&amp;gt;1&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;mask&amp;gt;all&amp;lt;/mask&amp;gt;&lt;br /&gt;
  &amp;lt;wrap&amp;gt;true&amp;lt;/wrap&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
*'''factor:''' the amount to multiply by.&lt;br /&gt;
*'''min:''' minimum value.&lt;br /&gt;
*'''max:''' maximum value.&lt;br /&gt;
*'''mask:'''&lt;br /&gt;
** '''integer:''' mutiply only left of the decimal point.&lt;br /&gt;
** '''decimal:''' multiply only the right of the decimal point.&lt;br /&gt;
** '''all:''' multiply the entire value.&lt;br /&gt;
*'''wrap:''' true if the value should be wrapped if it passes min/max. It is required to set both min and max in that case.&lt;br /&gt;
&lt;br /&gt;
=== property-randomize ===&lt;br /&gt;
Assigns a random value (between min and max) to a property.&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-randomize&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/orientation/pitch-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;min&amp;gt;0&amp;lt;/min&amp;gt;&lt;br /&gt;
  &amp;lt;max&amp;gt;360&amp;lt;/max&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-scale ===&lt;br /&gt;
Sett the value of a property based on an axis, often used in [[joystick]] configuration files.&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-scale&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/aileron&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0.001&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;factor&amp;gt;-1&amp;lt;/factor&amp;gt;&lt;br /&gt;
  &amp;lt;power&amp;gt;3&amp;lt;/power&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''offset:''' the offset to shift by, before applying the factor.&lt;br /&gt;
* '''factor:''' the factor to multiply by (use negative to reverse).&lt;br /&gt;
* '''squared:''' if true will square the resulting value (same as power=2).&lt;br /&gt;
* '''power:''' the resulting value will be taken to the power of this integer value (overrides squared).&lt;br /&gt;
&lt;br /&gt;
Remember: &amp;lt;tt&amp;gt;((property+offset)*factor)^power=result&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-swap ===&lt;br /&gt;
Swaps the values of two properties, useful for radio panels.&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-swap&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/instrumentation/comm/frequencies/selected-mhz&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/instrumentation/comm/frequencies/standby-mhz&amp;lt;/property&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-toggle ===&lt;br /&gt;
Toggles the value of a property on each click, between true (1) and false (0).&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-toggle&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/gear/gear-down&amp;lt;/property&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
Or - if defined - it toggles between two custom values.&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-toggle&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/gear/gear-down&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;value&amp;gt;2&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;value&amp;gt;3&amp;lt;/value&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
* &amp;lt;tt&amp;gt;[[$FG_ROOT]]/Docs/README.commands&amp;lt;/tt&amp;gt; [https://gitorious.org/fg/fgdata/blobs/master/Docs/README.commands view online]&lt;br /&gt;
* [[Howto: Make a clickable panel]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Bindings&amp;diff=59904</id>
		<title>Bindings</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Bindings&amp;diff=59904"/>
		<updated>2013-05-05T08:42:42Z</updated>

		<summary type="html">&lt;p&gt;AndersM: /* property-multiply */ property-interpolate&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Bindings''' define what happens when a user:&lt;br /&gt;
* [[Howto: Make a clickable panel#Pick|clicks an object]] in the [[scenery]] or an [[aircraft]]&lt;br /&gt;
* press a key on the keyboard or [[joystick]]&lt;br /&gt;
* clicks a [[menu]] item&lt;br /&gt;
* click a buttons or fields in a dialog&lt;br /&gt;
You can assign multiple bindings to one object/button/key.&lt;br /&gt;
&lt;br /&gt;
All give codes are examples, found on various places in the [[FlightGear]] package.&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
=== dialog-close ===&lt;br /&gt;
Closes the active dialog.&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;dialog-close&amp;lt;/command&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== dialog-show ===&lt;br /&gt;
Shows a dialog, which should be present in &amp;lt;tt&amp;gt;[[$FG ROOT]]/gui/dialogs&amp;lt;/tt&amp;gt;. Starting with FlightGear 2.7 dialog files located in &amp;lt;tt&amp;gt;&amp;lt;Current aircraft directory&amp;gt;/gui/dialogs&amp;lt;/tt&amp;gt; are also loaded. This should be used for dialogs specific to a certain aircraft.&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;dialog-show&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;dialog-name&amp;gt;location-in-air&amp;lt;/dialog-name&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
* '''dialog-name:''' the name of the dialog, as designated in its .xml file.&lt;br /&gt;
&lt;br /&gt;
=== nasal ===&lt;br /&gt;
[[Nasal]] is frequently used for complicated systems.&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;script&amp;gt;b777.afds.input(0,1);&amp;lt;/script&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-adjust ===&lt;br /&gt;
Increases or decreases a property's value with a given step. Maximum and minimum values are optional.&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/lighting/panel-norm&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;step&amp;gt;-0.05&amp;lt;/step&amp;gt;&lt;br /&gt;
  &amp;lt;min&amp;gt;0&amp;lt;/min&amp;gt;&lt;br /&gt;
  &amp;lt;max&amp;gt;1&amp;lt;/max&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-assign ===&lt;br /&gt;
One of the most important commands. It sets a property to a predefined value.&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/autopilot/settings/target-speed-kt&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-cycle ===&lt;br /&gt;
Cycles between a list of values and assigns one to a property. The value-list can vary in length. If the current value is &amp;quot;value1&amp;quot;, it will change to &amp;quot;value2&amp;quot;; if it is &amp;quot;value2&amp;quot;, it will change to &amp;quot;value3&amp;quot;, and so on, wrapping around the end.  If the current value is not in the list, it will jump to the first one.&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-cycle&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/autopilot/autobrake/setting&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;value type=&amp;quot;string&amp;quot;&amp;gt;ARM&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;value type=&amp;quot;string&amp;quot;&amp;gt;DISARM&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;value type=&amp;quot;string&amp;quot;&amp;gt;OFF&amp;lt;/value&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-interpolate ===&lt;br /&gt;
Interpolates to a value with a given rate of change.&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
        &amp;lt;command&amp;gt;property-interpolate&amp;lt;/command&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;/controls/flight/aileron-trim&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;value type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;rate&amp;gt;0.5&amp;lt;/rate&amp;gt;&amp;lt;!-- 2 seconds to 0 from 1 or -1 --&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also interpolate to a value given by a property.&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
        &amp;lt;command&amp;gt;property-interpolate&amp;lt;/command&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;/controls/flight/aileron-trim&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;/controls/flight/default-aileron-trim&amp;lt;/property&amp;gt;&amp;lt;!-- the value to interpolate to --&amp;gt;&lt;br /&gt;
        &amp;lt;rate&amp;gt;0.5&amp;lt;/rate&amp;gt;&amp;lt;!-- 2 seconds to 0 from 1 or -1 --&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== property-multiply ===&lt;br /&gt;
Multiply the value of a property by a given factor.&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-multiply&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/aileron&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;factor&amp;gt;0.5&amp;lt;/factor&amp;gt;&lt;br /&gt;
  &amp;lt;min&amp;gt;-1&amp;lt;/min&amp;gt;&lt;br /&gt;
  &amp;lt;max&amp;gt;1&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;mask&amp;gt;all&amp;lt;/mask&amp;gt;&lt;br /&gt;
  &amp;lt;wrap&amp;gt;true&amp;lt;/wrap&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
*'''factor:''' the amount to multiply by.&lt;br /&gt;
*'''min:''' minimum value.&lt;br /&gt;
*'''max:''' maximum value.&lt;br /&gt;
*'''mask:'''&lt;br /&gt;
** '''integer:''' mutiply only left of the decimal point.&lt;br /&gt;
** '''decimal:''' multiply only the right of the decimal point.&lt;br /&gt;
** '''all:''' multiply the entire value.&lt;br /&gt;
*'''wrap:''' true if the value should be wrapped if it passes min/max. It is required to set both min and max in that case.&lt;br /&gt;
&lt;br /&gt;
=== property-randomize ===&lt;br /&gt;
Assigns a random value (between min and max) to a property.&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-randomize&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/orientation/pitch-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;min&amp;gt;0&amp;lt;/min&amp;gt;&lt;br /&gt;
  &amp;lt;max&amp;gt;360&amp;lt;/max&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-scale ===&lt;br /&gt;
Sett the value of a property based on an axis, often used in [[joystick]] configuration files.&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-scale&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/aileron&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0.001&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;factor&amp;gt;-1&amp;lt;/factor&amp;gt;&lt;br /&gt;
  &amp;lt;power&amp;gt;3&amp;lt;/power&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''offset:''' the offset to shift by, before applying the factor.&lt;br /&gt;
* '''factor:''' the factor to multiply by (use negative to reverse).&lt;br /&gt;
* '''squared:''' if true will square the resulting value (same as power=2).&lt;br /&gt;
* '''power:''' the resulting value will be taken to the power of this integer value (overrides squared).&lt;br /&gt;
&lt;br /&gt;
Remember: &amp;lt;tt&amp;gt;((property+offset)*factor)^power=result&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-swap ===&lt;br /&gt;
Swaps the values of two properties, useful for radio panels.&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-swap&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/instrumentation/comm/frequencies/selected-mhz&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/instrumentation/comm/frequencies/standby-mhz&amp;lt;/property&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-toggle ===&lt;br /&gt;
Toggles the value of a property on each click, between true (1) and false (0).&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-toggle&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/gear/gear-down&amp;lt;/property&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
Or - if defined - it toggles between two custom values.&lt;br /&gt;
 &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-toggle&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/gear/gear-down&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;value&amp;gt;2&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;value&amp;gt;3&amp;lt;/value&amp;gt;&lt;br /&gt;
 &amp;lt;/binding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
* &amp;lt;tt&amp;gt;[[$FG_ROOT]]/Docs/README.commands&amp;lt;/tt&amp;gt; [https://gitorious.org/fg/fgdata/blobs/master/Docs/README.commands view online]&lt;br /&gt;
* [[Howto: Make a clickable panel]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Aircraft_systems&amp;diff=59808</id>
		<title>Aircraft systems</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Aircraft_systems&amp;diff=59808"/>
		<updated>2013-05-01T18:32:48Z</updated>

		<summary type="html">&lt;p&gt;AndersM: some corrections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Almost all aircraft needs systems of different kinds. Eg. fuel electric, vacuum, hydraulic.&lt;br /&gt;
&lt;br /&gt;
By default an aircraft is supplied with generic systems defined in [https://gitorious.org/fg/fgdata/blobs/master/Aircraft/Generic/generic-systems.xml generic-systems.xml]. The workings of these systems are hard-coded in c++. See the [https://gitorious.org/fg/flightgear/trees/next/src/Systems source code].&lt;br /&gt;
&lt;br /&gt;
Flightgear also has standard implementations of different common aircraft instruments and avionics. These creates useful output properties, found under instrumentation in the property tree. These properties can be used either by directly adding the generic instruments available in Aircraft/Instruments-3d or as input to your own instruments. Many of the standard instrument implementations depend on system properties to work. A list of dependencies are found [[System dependent instruments|here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Electric ===&lt;br /&gt;
The hard-coded electric system implementation is considered deprecated but are still used in many aircrafts. A xml configuration file is used. The generic electrical system configuration is based on that of a small single engine aircraft. For information on configuration see [https://gitorious.org/fg/fgdata/blobs/master/Docs/README.electrical README.electrical] provided in the Doc folder.&lt;br /&gt;
As an alternative you can build a Nasal based system. &lt;br /&gt;
&lt;br /&gt;
Here are two engines for Nasal-based electric systems:&lt;br /&gt;
&lt;br /&gt;
Buckaroo's: [http://www.buckarooshangar.com/flightgear/electrical_1.html A Nasal-Based Electrical System for Flightgear]&lt;br /&gt;
&lt;br /&gt;
AndersM's: [[Howto:A system engine in Nasal]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fuel ===&lt;br /&gt;
No hard-coded fuel system is available. The flight dynamics model (FDM) is used for that. For JSBSim based aircrafts you can make fuel systems integrated in the FDM. See [[Howto:Write a fuel system in JSBSim]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hydraulic ===&lt;br /&gt;
No hard-coded hydraulic system is available. For JSBSim based aircrafts you can make hydraulic systems integrated in the FDM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Pitot ===&lt;br /&gt;
The hard-coded pitot system is a simple system with two output properties, total-pressure-inhg and measured-total-pressure-inhg.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Static ===&lt;br /&gt;
The hard-coded static pressure system is a simple system with one output property, pressure-inhg.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Vacuum ===&lt;br /&gt;
The hard-coded vacuum has one output propery: suction-inhg. This property is used to drive gyros needed in the standard instrument implementation. The generic implementation is based on a piston-engine and the vacuum depends on the engine's rpm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;rpm&amp;gt;/engines/engine[1]/rpm&amp;lt;/rpm&amp;gt;&lt;br /&gt;
    &amp;lt;scale&amp;gt;1.0&amp;lt;/scale&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can set another property as source for the vacuum. If rpm times factor is greater than approx. 500 you will have fully functional gyros at all (reasonable) altitudes. Eg using an electric output to drive the gyro vacuum:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;rpm&amp;gt;systems/electrical/outputs/inst_ac&amp;lt;/rpm&amp;gt;&lt;br /&gt;
    &amp;lt;scale&amp;gt;50.0&amp;lt;/scale&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft enhancement]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Aircraft_systems&amp;diff=59804</id>
		<title>Aircraft systems</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Aircraft_systems&amp;diff=59804"/>
		<updated>2013-05-01T14:45:35Z</updated>

		<summary type="html">&lt;p&gt;AndersM: Info on systems&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Almost all aircraft needs systems of different kinds. Eg. fuel electric, vacuum, hydraulic.&lt;br /&gt;
&lt;br /&gt;
By default an aircraft is supplied with generic systems defined in [https://gitorious.org/fg/fgdata/blobs/master/Aircraft/Generic/generic-systems.xml generic-systems.xml]. The workings of these systems are hard-coded in c++. See the [https://gitorious.org/fg/flightgear/trees/next/src/Systems source code].&lt;br /&gt;
&lt;br /&gt;
Flightgear also has standard implementations of different common aircraft instruments and avionics. These creates useful output properties, found under instrumentation in the property tree, that can be used either by directly adding the generic instruments available in Aircraft/Instruments-3d or as input to your own instruments. Many of these standard instrument implementations are dependent on system properties to work. A list of dependencies are found [[System dependent instruments|here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Electric ===&lt;br /&gt;
The standard electric system implementation is considered deprecated but are still used in many aircrafts. A xml configuration file is used. The generic electrical system configuration is based on that of a small single engine aircraft. For information on configuration see [https://gitorious.org/fg/fgdata/blobs/master/Docs/README.electrical README.electrical] provided in the Doc folder.&lt;br /&gt;
As an alternative you can build a Nasal based system. &lt;br /&gt;
&lt;br /&gt;
Here are two engines for Nasal-based electric systems:&lt;br /&gt;
&lt;br /&gt;
Buckaroo's: [http://www.buckarooshangar.com/flightgear/electrical_1.html A Nasal-Based Electrical System for Flightgear]&lt;br /&gt;
&lt;br /&gt;
AndersM's: [[Howto:A system engine in Nasal]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fuel ===&lt;br /&gt;
For JSBSim based aircrafts you can make fuel systems integrated in the FDM. See [[Howto:Write a fuel system in JSBSim]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hydraulic ===&lt;br /&gt;
No standard hydraulic system is available. For JSBSim based aircrafts you can make hydraulic systems integrated in the FDM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Pitot ===&lt;br /&gt;
A simple system with two output properties, total-pressure-inhg and measured-total-pressure-inhg.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Static ===&lt;br /&gt;
A simple system with one output property, pressure-inhg.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Vacuum ===&lt;br /&gt;
Vacuum has one output propery: suction-inhg. This property is used to drive gyros needed in the standard instrument implementation. The generic implementation is based on a piston-engine and the vacuum depends on the engine's rpm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;rpm&amp;gt;/engines/engine[1]/rpm&amp;lt;/rpm&amp;gt;&lt;br /&gt;
    &amp;lt;scale&amp;gt;1.0&amp;lt;/scale&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can set another property as source for the vacuum. If rpm times factor is greater than approx. 500 you will have fully functional gyros at all (resonable) altitudes. Eg using an electric output to drive the gyro vacuum:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;rpm&amp;gt;systems/electrical/outputs/inst_ac&amp;lt;/rpm&amp;gt;&lt;br /&gt;
    &amp;lt;scale&amp;gt;50.0&amp;lt;/scale&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft enhancement]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Scripted_Compilation_on_Linux_Debian/Ubuntu&amp;diff=59741</id>
		<title>Scripted Compilation on Linux Debian/Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Scripted_Compilation_on_Linux_Debian/Ubuntu&amp;diff=59741"/>
		<updated>2013-04-28T06:01:38Z</updated>

		<summary type="html">&lt;p&gt;AndersM: /* Download */ Note on repository change. Delete when script is changed.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
The following script takes care of downloading and compiling FlightGear from the git repositories with just one command execution for both 32-bit and 64-bit Debian based systems (Debian, Ubuntu). Pre-existing installed version (if any) of FlightGear are not touched at all since the script builds and installs everything under the directory in which it is launched. You can choose between building all or only specific tools and applications. For redhat-based systems (Fedora, CentOS) you may want to check out [[CentOS]].&lt;br /&gt;
&lt;br /&gt;
Necessary packages are installed via the apt-get system while libraries not included in the repositories are downloaded and compiled on the fly (i.e. [[Plib]], [[Simgear]] and [[OSG]]).&lt;br /&gt;
&lt;br /&gt;
For Hints on Using a RPM based distribution like CentOS, please see [[CentOS]]&lt;br /&gt;
&lt;br /&gt;
=== Disk Space Requirements ===&lt;br /&gt;
As of 02/2013, this script will by at least require 24-30 gb of disk space, note that this includes the downloaded source trees and the build files, but also the fgdata checkout (which accounts approx. for 50% of the whole thing).  &lt;br /&gt;
&lt;br /&gt;
=== List of compiled programs ===&lt;br /&gt;
The script is able to download and compile:&lt;br /&gt;
* FlightGear (And all the data needed to use it)&lt;br /&gt;
* [[Fgrun]]&lt;br /&gt;
* [[FGCOM]]&lt;br /&gt;
* [[FGComGui]]&lt;br /&gt;
* [[FGo!]]&lt;br /&gt;
* [[FGX]]&lt;br /&gt;
* [[Atlas]]&lt;br /&gt;
* [[Terrasync]]&lt;br /&gt;
* [[FlightGear HLA support (High Level Architecture) | OpenRTI]]&lt;br /&gt;
&lt;br /&gt;
Note that openRTI is just another optional dependency for HLA support: http://wiki.flightgear.org/FlightGear_HLA_support_(High_Level_Architecture)&lt;br /&gt;
&lt;br /&gt;
For the time being, you should be just fine building without HLA support. Eventually, the idea is for HLA to replace the existing MP system and even increasingly distribute the FlightGear architecture such that more and more components can be more easily run in separate threads or even separate processes, possibly even on different machines. So this is going to be an important feature for professional users, using several computers and screens to create a comprehensive and immersive simulation environment.&lt;br /&gt;
&lt;br /&gt;
At the moment, it's probably safe to say that HLA is only of interest to developers and people willing to play with experimental features.&lt;br /&gt;
&lt;br /&gt;
==== Updated list of programs compilation status ====&lt;br /&gt;
Keeping in mind that this script compiles bleeding edge software versions, using latest debian derivered distros, it can happen that the program that was successfully compiling last week, today does not.&amp;lt;BR/&amp;gt;&lt;br /&gt;
This is a list of what does and does not compile as much updated as possible.&amp;lt;BR&amp;gt;&lt;br /&gt;
Date: 19 November 2012&lt;br /&gt;
* FlightGear ... OK&lt;br /&gt;
* [[Fgrun]] ... OK&lt;br /&gt;
* [[FGCOM]] ... OK&lt;br /&gt;
* [[FGComGui]] ... OK&lt;br /&gt;
* [[FGo!]] ... OK&lt;br /&gt;
* [[FGX]] ... OK&lt;br /&gt;
* [[Atlas]] ... COMPILATION ERROR&lt;br /&gt;
* [[Terrasync]] ... OK&lt;br /&gt;
* [[FlightGear HLA support (High Level Architecture) | OpenRTI]] ... OK&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
You can download the script here: &lt;br /&gt;
* Primary site: [http://www.gitorious.org/fg/fgmeta/blobs/raw/master/download_and_compile.sh download_and_compile.sh]&lt;br /&gt;
* Mirror: [http://assistenza.larasrl.net/brisa/fgfs/download_and_compile.sh download_and_compile.sh]&lt;br /&gt;
&lt;br /&gt;
'''Note''' 28/4-13: A change in address to OpenSceneGraph svn must be done before running the script. Se [http://www.flightgear.org/forums/viewtopic.php?p=182239#p182239 Flightgear forum] for more information. &lt;br /&gt;
&lt;br /&gt;
The script is maintained in the FlightGear main repository. Remember to update this script whenever a new FlightGear version is released, so that you'll be able to download the latest stable revision.&lt;br /&gt;
&lt;br /&gt;
There is also another option for building FlightGear and all its dependencies in an automated fashion, please refer to: http://geoffmclane.com/fg/fgfs-052.htm&lt;br /&gt;
&lt;br /&gt;
== Instructions ==&lt;br /&gt;
To run download_and_compile.sh, just save it in a directory called for example: ~/fgfs&lt;br /&gt;
then execute it (no need to execute it as root).&lt;br /&gt;
&lt;br /&gt;
Here is for example a sequence of commands to get the script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/fgfs&lt;br /&gt;
cd ~/fgfs&lt;br /&gt;
wget http://www.gitorious.org/fg/fgmeta/blobs/raw/master/download_and_compile.sh&lt;br /&gt;
chmod 755 download_and_compile.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have two options now: build the latest ''stable'' FlightGear release or build the ''current development'' version (bleeding edge).&lt;br /&gt;
&lt;br /&gt;
=== Build the latest stable FlightGear release ===&lt;br /&gt;
When executing the script, use the &amp;quot;-s&amp;quot; option to build the latest stable release:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./download_and_compile.sh -s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Build the current FlightGear development version ===&lt;br /&gt;
When executing the script without any option, the latest development version is built.&lt;br /&gt;
&lt;br /&gt;
'''Warning''': The development version changes on an almost daily basis. It provides the latest features, but is not always guaranteed to work reliably. If you're unfamiliar with software testing, you may prefer to use the latest stable release.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./download_and_compile.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the script is finished, you will successfully get Flightgear and Fgrun installed in the ~/fgfs directory.&lt;br /&gt;
&lt;br /&gt;
=== Launching FlightGear ===&lt;br /&gt;
When using brisa's script, the various FG dependencies/libs are usually not installed system-wide, but in a custom location (that makes it possible, to easily use different OSG/SG/FG versions on a single system, i.e. for testing purposes - but also to have separate build trees (optimized/debug) ) - which is why you either need to set LD_LIBRARY_PATH or simply use Brisa's script to run everything (something like run_fgfs.sh, which automatically sets up all environment variables according to your build settings). &lt;br /&gt;
&lt;br /&gt;
To run your new git installation of FlightGear you have to launch the ''run_fgfs.sh'' command under the same folder, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/fgfs&lt;br /&gt;
sh run_fgfs.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Launching Fgrun ===&lt;br /&gt;
[[File:fgrun-page2.jpg|thumb|right]]&lt;br /&gt;
For many users it's more comfortable having FlightGear launched by the graphical utility Fgrun which is installed as well in the same folder. You have to launch the ''run_fgrun.sh'' command, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/fgfs&lt;br /&gt;
sh run_fgrun.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Launching Fgo! ===&lt;br /&gt;
[[File:Fgo01.jpg|thumb|left]]&lt;br /&gt;
This is a graphical utility written in [[python]], You have to launch the ''run_fgo.sh'' command, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/fgfs&lt;br /&gt;
sh run_fgo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Remember that the first time you run it, you have to go to preferences and set the binary and fgdata path (Do no set the working directory, you don't need it).&lt;br /&gt;
&lt;br /&gt;
== Additional programs ==&lt;br /&gt;
If you wish to get all the other programs, you need to launch the script adding the &amp;quot;ALL&amp;quot; option to the command line:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./download_and_compile.sh ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This, will also install FGCOM, FGComGui and Atlas&lt;br /&gt;
&lt;br /&gt;
=== Launching FGCOM ===&lt;br /&gt;
FGCOM is the system used by FlightGear to simulate radio communications between users. Launch it using the ''run_fgcom.sh'' command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/fgfs&lt;br /&gt;
sh run_fgcom.sh -cs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Launching FGComGui ===&lt;br /&gt;
FgComGui is a GUI wrapper to launch fgcom.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/fgfs  &lt;br /&gt;
sh run_fgcomgui.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Launching Atlas ===&lt;br /&gt;
[[File:Atlas.jpg|thumb]]&lt;br /&gt;
Atlas provides a map for FlightGear, use it launching: ''run_atlas.sh''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/fgfs&lt;br /&gt;
sh run_atlas.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Launching Terrasync ===&lt;br /&gt;
Your FlightGear compilation comes with the Terrasync program too, so if you want to use it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/fgfs&lt;br /&gt;
sh run_terrasync.sh -S -p 5500 -d /folder/with/sceneries&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Where: ''/folder/with/sceneries'' is the folder containing the sceneries data.&lt;br /&gt;
&lt;br /&gt;
Then launch fgfs with the '''--fg-scenery=/folder/with/sceneries --atlas=socket,out,5,localhost,5500,udp''' option&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Compilation errors ===&lt;br /&gt;
Here we are, no fear, if you wish to use programs from the cvs/svn/git repositories, you might face compilation errors that will prevent you to have a working copy of one or more of the programs provided by this script. What can be the causes that prevent us from successfully compiling? As far as I know those:&lt;br /&gt;
# Software developers introduce a new functionality with a new piece of code that prevents the compilation under your architecture, this can happen working with cvs/svn/git sources.&lt;br /&gt;
# The program refuses to compile because of a divergence in the libraries on which it depends. For example FlightGear might not compile because OSG has been modified, while OSG itself compiles fine, FG won't.&lt;br /&gt;
# One or more repositories are down and you can't get the library you need. (Both from cvs/svn/git or apt-get)&lt;br /&gt;
&lt;br /&gt;
There is a simple solution to the above errors: wait and relaunch the script after some time (hours or days), if software developers repair or synchronize their code with the newly updated libraries (which generally happens eventually), your FlightGear will compile fine as if the previous error never took place.&lt;br /&gt;
&lt;br /&gt;
Sometimes it happens that the script fails to compile only fgrun, fgcom or atlas, if you then see the run_fgfs.sh file it means that FlightGear installation was successful and you can safely run it.&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
The script by default (without any option) will only compile FlightGear and Fgrun. To make it compile all, you need to launch the script with the ''ALL'' parameter. i.e.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./download_and_compile.sh ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Compiling only one program ===&lt;br /&gt;
If you wish to recompile only one of the programs you can launch the script with one of the following parameters:&lt;br /&gt;
* PLIB (to compile and install only plib)&lt;br /&gt;
* OSG (to compile and install only OpenSceneGraph)&lt;br /&gt;
* SIMGEAR (to compile and install only Simgear)&lt;br /&gt;
* FGFS (to compile and install only FlightGear)&lt;br /&gt;
* DATA (to download / update only data files for FlightGear)&lt;br /&gt;
* FGRUN (to compile and install only Fgrun)&lt;br /&gt;
* FGO (to compile and install only Fgo!)&lt;br /&gt;
* FGCOM (to compile and install only Fgcom)&lt;br /&gt;
* FGCOMGUI (to compile and install only FgComGui)&lt;br /&gt;
* ATLAS (to compile and install only Atlas)&lt;br /&gt;
&lt;br /&gt;
=== Fast updating ===&lt;br /&gt;
There is a second parameter ''UPDATE'' that allows you to just update your installation. i.e.:&lt;br /&gt;
This will only update FGFS&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./download_and_compile.sh FGFS UPDATE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Compiling last stable versions (Experimental) ===&lt;br /&gt;
Even if the script fetches data and sources from bleeding edge developers repositories (which sometimes do not compile), you can still force the script to download latest known versions of the software that were compiling successfully by adding the -s option.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./download_and_compile.sh -s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
How does it work? Inside the script there is a small list with latest known versions of successfully compiling revisions, it will download from svn/git those specific revisions, which have been found able to compile together.&amp;lt;BR/&amp;gt;&lt;br /&gt;
Warning: If you run this option inside a folder where you previously compiled fgfs, it will probably fail to compile, you better run the script with this option inside an empty folder or a folder whith the same fgfs version compiled previously.&lt;br /&gt;
&lt;br /&gt;
=== Advanced options ===&lt;br /&gt;
* Skip download of packages using '''-p n''' option&lt;br /&gt;
* Skip compilation of programs using '''-c n''' option&lt;br /&gt;
* Skip retrieving software updates using '''-d n''' option&lt;br /&gt;
* Skip reconfigure (make clean) using '''-r n''' option&lt;br /&gt;
&lt;br /&gt;
For example, if you are a developer and wish to quickly recompile and reinstall only your own modifications for FlightGear do this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./download_and_compile.sh -p n -d n -r n  FGFS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this will only recompile modifications and reinstall them.&lt;br /&gt;
&lt;br /&gt;
=== Multicore Acceleration ===&lt;br /&gt;
Using the option '''-j x''' (where x is the number of your CPU-Cores you wish to assign to the job) will speed up the whole compilation process considerably.&lt;br /&gt;
&lt;br /&gt;
== Disk usage ==&lt;br /&gt;
Having both compiled program, source code, and data from git requires some hard disk space: It will take something like 13 GB of space.&lt;br /&gt;
If you don't have a fast machine, it will require several hours of compilation time.&lt;br /&gt;
&lt;br /&gt;
== Optimus technology ==&lt;br /&gt;
If your computer has a GPU with optimus technology, you need a dedicated script in order to make FG running with the powerful GPU.&lt;br /&gt;
&lt;br /&gt;
After having installed required tools (Bumblebee) you just need to run this command line in your FG installation directory (where you executed ./download_and_compile.sh) : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed  's|\./fgfs|optirun ./fgfs|' run_fgfs.sh &amp;gt; run_fgfs_optirun.sh &amp;amp;&amp;amp; chmod +x run_fgfs_optirun.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now you can run FG with ./run_fgfs_optirun.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[nl:Compileren met een Script op Linux Debian/Ubuntu]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:A_system_engine_in_Nasal&amp;diff=59696</id>
		<title>Howto:A system engine in Nasal</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:A_system_engine_in_Nasal&amp;diff=59696"/>
		<updated>2013-04-27T17:06:15Z</updated>

		<summary type="html">&lt;p&gt;AndersM: More examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes an engine for aircraft systems, or rather for staging an impression of such a system. It doesn’t handle potentials, pressures or Kirchhoff's laws. It checks if switches are on or off and if minimum criterions are met.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The system is defined in a text-file with rows of entries, connections. Each connection is a comma separated list consisting of:&lt;br /&gt;
depends,limit,in,out,off,ramp&lt;br /&gt;
&lt;br /&gt;
'''depends''': The output depends on the value of this property. Must be of type number or boolean.&lt;br /&gt;
&lt;br /&gt;
'''limit''': A value or property that sets the lower limit. If depends is greater than limit then the state will be considered ''on''.&lt;br /&gt;
&lt;br /&gt;
'''in''': A property or value if the state is on. If in is set to . the depends value is copied to out regardless of state.&lt;br /&gt;
&lt;br /&gt;
'''out''': The output property. Set to in if the state is ''on'' and off if not.&lt;br /&gt;
&lt;br /&gt;
'''off''': A value or property that out is set to if the state is ''off''.&lt;br /&gt;
&lt;br /&gt;
'''ramp''': max change in out per second. Unlimited if 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
An example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
engines/engine[0]/n1,27,1,systems/electrical/generator_enabled,0,0&lt;br /&gt;
systems/electrical/generator_enabled,0,controls/electric/engine/generator,systems/electrical/generator_on,0,0&lt;br /&gt;
systems/electrical/generator_on,0,200,systems/electrical/outputs/main_ac,0,0&lt;br /&gt;
systems/electrical/generator_on,0,45,systems/electrical/outputs/inst_ac,0,0&lt;br /&gt;
systems/electrical/generator_on,0,29,systems/electrical/battery_voltage,24,0&lt;br /&gt;
controls/electric/battery-switch,0,systems/electrical/battery_voltage,systems/electrical/outputs/battery,0,0&lt;br /&gt;
systems/electrical/outputs/battery,0,systems/electrical/outputs/main_ac,systems/electrical/outputs/fuel,0,0&lt;br /&gt;
systems/electrical/battery_voltage,0,.,systems/electrical/outputs/comm[0],0,0&lt;br /&gt;
systems/electrical/outputs/battery,0,.,systems/electrical/outputs/turn-coordinator,0,0&lt;br /&gt;
systems/electrical/outputs/battery,0,.,systems/electrical/outputs/nav[0],0,0&lt;br /&gt;
systems/electrical/outputs/battery,0,.,systems/electrical/outputs/gps,0,0&lt;br /&gt;
systems/electrical/outputs/inst_ac,0,.,systems/electrical/outputs/adf,0,0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first two rows creates a &amp;quot;and-effect&amp;quot;. If n1 is larger than 27% and the generator cockpit switch is on, then the property systems/electrical/generator_on is set to 1 otherwise 0. This simulates an automatic disconnect of the generator at engine start or stop.&lt;br /&gt;
&lt;br /&gt;
The next two rows sets the two AC circuits voltage. Both are fed by the generator.&lt;br /&gt;
&lt;br /&gt;
The fifth row sets the battery voltage to 29 V if charged by the generator and 24 if not.&lt;br /&gt;
&lt;br /&gt;
The next row simulates the main battery switch in the cockpit.  The property systems/electrical/outputs/battery is the voltage of the main battery bus that feeds most instruments.&lt;br /&gt;
&lt;br /&gt;
The seventh row is another &amp;quot;and-effect&amp;quot;. The fuel measurement systems need both battery power and AC power to work.&lt;br /&gt;
&lt;br /&gt;
The rest of the rows copies the main battery bus output to the properties needed for some of the [[System dependent instruments|standard FG instrument]] implementations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To simulate pumps or other parts that takes time to go from one state to another ramp is useful:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systems/electrical/outputs/main_ac,0,5,systems/hydraulic/pumps/pump1,0,2.5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above simulates the hydraulic pump1 go from 0 to 5 (or 5 to 0) in 2 seconds when the main AC is switched on (or off).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;or-effect&amp;quot; can be created by combining two connections like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systems/electrical/generator_on,0,200,systems/electrical/outputs/gen_ac,0,0&lt;br /&gt;
systems/electrical/emergency_gen_on,0,200,systems/electrical/outputs/main_ac,systems/electrical/outputs/gen_ac,0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This makes the main AC bus supplied by either the generator or the emergency generator (or both).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The code ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
# Potemkin system&lt;br /&gt;
&lt;br /&gt;
# Connections&lt;br /&gt;
#dep: depends on this property.&lt;br /&gt;
#limit: value or property, lower limit for true. dep &amp;gt; limit eq. true&lt;br /&gt;
#in: input property eg. orientation/pitch-deg or number constant. &lt;br /&gt;
#    Use . to copy dep value to out.&lt;br /&gt;
#out output property eg.instruments/ai/spin&lt;br /&gt;
#off: value if not dep true, can be a property to be read&lt;br /&gt;
#ramp: max change per second of out, 0 no limit&lt;br /&gt;
&lt;br /&gt;
var Connection = {&lt;br /&gt;
  new : func(cv) {&lt;br /&gt;
    var m = {parents:[Connection] };&lt;br /&gt;
    m.dep=cv[0];&lt;br /&gt;
    m.limit=cv[1];&lt;br /&gt;
    m.in=cv[2];&lt;br /&gt;
    m.out=cv[3];&lt;br /&gt;
    m.off=cv[4];&lt;br /&gt;
    m.ramp=num(cv[5]);&lt;br /&gt;
    return m;&lt;br /&gt;
  },&lt;br /&gt;
  &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var System_P = {&lt;br /&gt;
&lt;br /&gt;
  new : func(system_file) {&lt;br /&gt;
    var m = {parents:[System_P] };&lt;br /&gt;
    m.file=system_file;&lt;br /&gt;
    m.connections = [];&lt;br /&gt;
    m.verbose = 2;&lt;br /&gt;
    m.running=0;&lt;br /&gt;
    m.dt=0;&lt;br /&gt;
    m.oldtime=0;&lt;br /&gt;
    return m;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
  read_connections : func {&lt;br /&gt;
    if (me.verbose &amp;gt; 0) print(&amp;quot;Reading connections&amp;quot;);&lt;br /&gt;
    var fh = io.open(getprop(&amp;quot;/sim/aircraft-dir&amp;quot;)~&amp;quot;/&amp;quot;~me.file, &amp;quot;r&amp;quot;);&lt;br /&gt;
    var line=&amp;quot;&amp;quot;;&lt;br /&gt;
    while (line != nil) {&lt;br /&gt;
      line = io.readln(fh);&lt;br /&gt;
      if (line != nil) {&lt;br /&gt;
        var c_arr=split(&amp;quot;,&amp;quot;, line);&lt;br /&gt;
        if (size(c_arr) == 6) {&lt;br /&gt;
          append(me.connections, Connection.new(c_arr));&lt;br /&gt;
          if (me.verbose &amp;gt; 1) print(&amp;quot;Adding: &amp;quot;~line);&lt;br /&gt;
        } else if (me.verbose &amp;gt; 1) print(&amp;quot;Skipping: &amp;quot;~line);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    io.close(fh); &lt;br /&gt;
    if (me.verbose &amp;gt; 0) print(&amp;quot;Read connections&amp;quot;);&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  change_value : func(prop, value, ramp) {&lt;br /&gt;
    if (ramp == 0) setprop(prop, value);&lt;br /&gt;
    else {&lt;br /&gt;
      var ov=num(getprop(prop));&lt;br /&gt;
      if (ov&amp;lt;value and value-ov &amp;gt; ramp*me.dt) setprop(prop, ov+ramp*me.dt);&lt;br /&gt;
      else if (ov&amp;gt;value and ov-value &amp;gt; ramp*me.dt) setprop(prop, ov-ramp*me.dt);&lt;br /&gt;
      else setprop(prop, value);&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  update : func {&lt;br /&gt;
    if (!me.running) return;&lt;br /&gt;
    var time=getprop(&amp;quot;/sim/time/elapsed-sec&amp;quot;);&lt;br /&gt;
    me.dt= time-me.oldtime;&lt;br /&gt;
    foreach (con; me.connections) {&lt;br /&gt;
      dp=getprop(con.dep);&lt;br /&gt;
      if (dp != nil) {&lt;br /&gt;
        if (num(con.limit) != nil) limit=num(con.limit); else limit=getprop(con.limit);&lt;br /&gt;
        if (con.in == &amp;quot;.&amp;quot;) me.change_value(con.out, dp, con.ramp); #copy dep value to out&lt;br /&gt;
        else if (dp &amp;lt;= limit) {&lt;br /&gt;
            if (num(con.off) != nil) me.change_value(con.out, num(con.off), con.ramp);&lt;br /&gt;
            else me.change_value(con.out, getprop(con.off), con.ramp);&lt;br /&gt;
        } else {&lt;br /&gt;
          if (num(con.in) != nil) me.change_value(con.out, num(con.in), con.ramp);&lt;br /&gt;
          else me.change_value(con.out, getprop(con.in), con.ramp);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    me.oldtime=time;&lt;br /&gt;
    settimer( func me.update(), 0.05);    &lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  init : func {&lt;br /&gt;
    me.read_connections();&lt;br /&gt;
    foreach (con; me.connections) {&lt;br /&gt;
      if (num(con.off) != nil) setprop(con.out, num(con.off));&lt;br /&gt;
      else setprop(con.out, getprop(con.off));&lt;br /&gt;
    }&lt;br /&gt;
    me.running=1;&lt;br /&gt;
    me.oldtime= getprop(&amp;quot;/sim/time/elapsed-sec&amp;quot;);&lt;br /&gt;
    if (me.verbose &amp;gt; 0) print(&amp;quot;Initialized system&amp;quot;);&lt;br /&gt;
    me.update();&lt;br /&gt;
  },&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use the system by first creating the system with a reference to the connection file and then init it, eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
var el = System_P.new(&amp;quot;Systems/electric.txt&amp;quot;);&lt;br /&gt;
el.init();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft enhancement|Systems]]&lt;br /&gt;
[[Category:Nasal howto]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:A_system_engine_in_Nasal&amp;diff=59695</id>
		<title>Howto:A system engine in Nasal</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:A_system_engine_in_Nasal&amp;diff=59695"/>
		<updated>2013-04-27T14:03:42Z</updated>

		<summary type="html">&lt;p&gt;AndersM: More text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes an engine for aircraft systems, or rather for staging an impression of such a system. It doesn’t handle potentials, pressures or Kirchhoff's laws. It checks if switches are on or off and if minimum criterion’s are met.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The system is defined in a text-file with rows of entries, connections. Each connection consists of a comma separated list consisting of:&lt;br /&gt;
depends,limit,in,out,off,ramp&lt;br /&gt;
&lt;br /&gt;
'''depends''': The output depends on the value of this property. Must be of type number or boolean.&lt;br /&gt;
&lt;br /&gt;
'''limit''': A value or property that sets the lower limit. If depends is greater than limit then the state will be considered ''on''.&lt;br /&gt;
&lt;br /&gt;
'''in''': A property or value if the state is on. If in is set to . the depends value is copied to out regardless of state.&lt;br /&gt;
&lt;br /&gt;
'''out''': The output property. Set to in if the state is ''on'' and off if not.&lt;br /&gt;
&lt;br /&gt;
'''off''': A value or property that out is set to if the state is ''off''.&lt;br /&gt;
&lt;br /&gt;
'''ramp''': max change in out per second. Unlimited if 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
engines/engine[0]/n1,27,1,systems/electrical/generator_enabled,0,0&lt;br /&gt;
systems/electrical/generator_enabled,0,controls/electric/engine/generator,systems/electrical/generator_on,0,0&lt;br /&gt;
systems/electrical/generator_on,0,200,systems/electrical/outputs/main_ac,0,0&lt;br /&gt;
systems/electrical/generator_on,0,45,systems/electrical/outputs/inst_ac,0,0&lt;br /&gt;
systems/electrical/generator_on,0,29,systems/electrical/battery_voltage,24,0&lt;br /&gt;
controls/electric/battery-switch,0,systems/electrical/battery_voltage,systems/electrical/outputs/battery,0,0&lt;br /&gt;
systems/electrical/outputs/battery,0,systems/electrical/outputs/main_ac,systems/electrical/outputs/fuel,0,0&lt;br /&gt;
systems/electrical/battery_voltage,0,.,systems/electrical/outputs/comm[0],0,0&lt;br /&gt;
systems/electrical/outputs/battery,0,.,systems/electrical/outputs/turn-coordinator,0,0&lt;br /&gt;
systems/electrical/outputs/battery,0,.,systems/electrical/outputs/nav[0],0,0&lt;br /&gt;
systems/electrical/outputs/battery,0,.,systems/electrical/outputs/gps,0,0&lt;br /&gt;
systems/electrical/outputs/inst_ac,0,.,systems/electrical/outputs/adf,0,0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first two rows creates a &amp;quot;and-effect&amp;quot;. If n1 is larger than 27% and the generator cockpit switch is on, then the property systems/electrical/generator_on is set to 1 otherwise 0. This simulates an automatic disconnect of the generator at engine start or stop.&lt;br /&gt;
&lt;br /&gt;
The next two rows sets the two AC circuits voltage. Both are fed by the generator.&lt;br /&gt;
&lt;br /&gt;
The fifth row sets the battery voltage to 29 V if charged by the generator and 24 if not.&lt;br /&gt;
&lt;br /&gt;
The next row simulates the main battery switch in the cockpit.  The property systems/electrical/outputs/battery is the voltage of the main battery bus that feeds most instruments.&lt;br /&gt;
&lt;br /&gt;
The seventh row is another &amp;quot;and-effect&amp;quot;. The fuel measurement systems need both battery power and AC power to work.&lt;br /&gt;
&lt;br /&gt;
The rest of the rows copies the main battery bus output to the properties needed for some of the [[System dependent instruments|standard FG instrument]] implementations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
# Potemkin system&lt;br /&gt;
&lt;br /&gt;
# Connections&lt;br /&gt;
#dep: depends on this property.&lt;br /&gt;
#limit: value or property, lower limit for true. dep &amp;gt; limit eq. true&lt;br /&gt;
#in: input property eg. orientation/pitch-deg or number constant. &lt;br /&gt;
#    Use . to copy dep value to out.&lt;br /&gt;
#out output property eg.instruments/ai/spin&lt;br /&gt;
#off: value if not dep true, can be a property to be read&lt;br /&gt;
#ramp: max change per second of out, 0 no limit&lt;br /&gt;
&lt;br /&gt;
var Connection = {&lt;br /&gt;
  new : func(cv) {&lt;br /&gt;
    var m = {parents:[Connection] };&lt;br /&gt;
    m.dep=cv[0];&lt;br /&gt;
    m.limit=cv[1];&lt;br /&gt;
    m.in=cv[2];&lt;br /&gt;
    m.out=cv[3];&lt;br /&gt;
    m.off=cv[4];&lt;br /&gt;
    m.ramp=num(cv[5]);&lt;br /&gt;
    return m;&lt;br /&gt;
  },&lt;br /&gt;
  &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var System_P = {&lt;br /&gt;
&lt;br /&gt;
  new : func(system_file) {&lt;br /&gt;
    var m = {parents:[System_P] };&lt;br /&gt;
    m.file=system_file;&lt;br /&gt;
    m.connections = [];&lt;br /&gt;
    m.verbose = 2;&lt;br /&gt;
    m.running=0;&lt;br /&gt;
    m.dt=0;&lt;br /&gt;
    m.oldtime=0;&lt;br /&gt;
    return m;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
  read_connections : func {&lt;br /&gt;
    if (me.verbose &amp;gt; 0) print(&amp;quot;Reading connections&amp;quot;);&lt;br /&gt;
    var fh = io.open(getprop(&amp;quot;/sim/aircraft-dir&amp;quot;)~&amp;quot;/&amp;quot;~me.file, &amp;quot;r&amp;quot;);&lt;br /&gt;
    var line=&amp;quot;&amp;quot;;&lt;br /&gt;
    while (line != nil) {&lt;br /&gt;
      line = io.readln(fh);&lt;br /&gt;
      if (line != nil) {&lt;br /&gt;
        var c_arr=split(&amp;quot;,&amp;quot;, line);&lt;br /&gt;
        if (size(c_arr) == 6) {&lt;br /&gt;
          append(me.connections, Connection.new(c_arr));&lt;br /&gt;
          if (me.verbose &amp;gt; 1) print(&amp;quot;Adding: &amp;quot;~line);&lt;br /&gt;
        } else if (me.verbose &amp;gt; 1) print(&amp;quot;Skipping: &amp;quot;~line);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    io.close(fh); &lt;br /&gt;
    if (me.verbose &amp;gt; 0) print(&amp;quot;Read connections&amp;quot;);&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  change_value : func(prop, value, ramp) {&lt;br /&gt;
    if (ramp == 0) setprop(prop, value);&lt;br /&gt;
    else {&lt;br /&gt;
      var ov=num(getprop(prop));&lt;br /&gt;
      if (ov&amp;lt;value and value-ov &amp;gt; ramp*me.dt) setprop(prop, ov+ramp*me.dt);&lt;br /&gt;
      else if (ov&amp;gt;value and ov-value &amp;gt; ramp*me.dt) setprop(prop, ov-ramp*me.dt);&lt;br /&gt;
      else setprop(prop, value);&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  update : func {&lt;br /&gt;
    if (!me.running) return;&lt;br /&gt;
    var time=getprop(&amp;quot;/sim/time/elapsed-sec&amp;quot;);&lt;br /&gt;
    me.dt= time-me.oldtime;&lt;br /&gt;
    foreach (con; me.connections) {&lt;br /&gt;
      dp=getprop(con.dep);&lt;br /&gt;
      if (dp != nil) {&lt;br /&gt;
        if (num(con.limit) != nil) limit=num(con.limit); else limit=getprop(con.limit);&lt;br /&gt;
        if (con.in == &amp;quot;.&amp;quot;) me.change_value(con.out, dp, con.ramp); #copy dep value to out&lt;br /&gt;
        else if (dp &amp;lt;= limit) {&lt;br /&gt;
            if (num(con.off) != nil) me.change_value(con.out, num(con.off), con.ramp);&lt;br /&gt;
            else me.change_value(con.out, getprop(con.off), con.ramp);&lt;br /&gt;
        } else {&lt;br /&gt;
          if (num(con.in) != nil) me.change_value(con.out, num(con.in), con.ramp);&lt;br /&gt;
          else me.change_value(con.out, getprop(con.in), con.ramp);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    me.oldtime=time;&lt;br /&gt;
    settimer( func me.update(), 0.05);    &lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  init : func {&lt;br /&gt;
    me.read_connections();&lt;br /&gt;
    foreach (con; me.connections) {&lt;br /&gt;
      if (num(con.off) != nil) setprop(con.out, num(con.off));&lt;br /&gt;
      else setprop(con.out, getprop(con.off));&lt;br /&gt;
    }&lt;br /&gt;
    me.running=1;&lt;br /&gt;
    me.oldtime= getprop(&amp;quot;/sim/time/elapsed-sec&amp;quot;);&lt;br /&gt;
    if (me.verbose &amp;gt; 0) print(&amp;quot;Initialized system&amp;quot;);&lt;br /&gt;
    me.update();&lt;br /&gt;
  },&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:A_system_engine_in_Nasal&amp;diff=59694</id>
		<title>Howto:A system engine in Nasal</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:A_system_engine_in_Nasal&amp;diff=59694"/>
		<updated>2013-04-27T13:14:46Z</updated>

		<summary type="html">&lt;p&gt;AndersM: More text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes an engine for aircraft systems, or rather for staging an impression of such a system. It doesn’t handle potentials, pressures or Kirchhoff's laws. It checks if switches are on or off and if minimum criterion’s are met.&lt;br /&gt;
&lt;br /&gt;
The system is defined in a text-file with rows of entries, connections, each connection consists of a comma separated list consisting of:&lt;br /&gt;
depends,limit,in,out,off,ramp&lt;br /&gt;
&lt;br /&gt;
'''depends''': The output depends on the value of this property. Must be of type number or boolean.&lt;br /&gt;
&lt;br /&gt;
'''limit''': A value or property that sets the lower limit. If depends is greater than limit then the state will be considered ''on''.&lt;br /&gt;
&lt;br /&gt;
'''in''': A property or value if the state is on. If in is set to . the depends value is copied to out regardless of state.&lt;br /&gt;
&lt;br /&gt;
'''out''': The output property. Set to in if the state is ''on'' and off if not.&lt;br /&gt;
&lt;br /&gt;
'''off''': A value or property that out is set to if the state is ''off''.&lt;br /&gt;
&lt;br /&gt;
'''ramp''': max change in out per second. Unlimited if 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
engines/engine[0]/n1,27,1,systems/electrical/generator_enabled,0,0&lt;br /&gt;
systems/electrical/generator_enabled,0,controls/electric/engine/generator,systems/electrical/generator_on,0,0&lt;br /&gt;
systems/electrical/generator_on,0,200,systems/electrical/outputs/main_ac,0,0&lt;br /&gt;
systems/electrical/generator_on,0,45,systems/electrical/outputs/inst_ac,0,0&lt;br /&gt;
systems/electrical/generator_on,0,29,systems/electrical/battery_voltage,24,0&lt;br /&gt;
controls/electric/battery-switch,0,systems/electrical/battery_voltage,systems/electrical/outputs/battery,0,0&lt;br /&gt;
systems/electrical/battery_voltage,0,.,systems/electrical/outputs/comm[0],0,0&lt;br /&gt;
systems/electrical/outputs/battery,0,systems/electrical/outputs/main_ac,systems/electrical/outputs/fuel,0,0&lt;br /&gt;
systems/electrical/outputs/battery,0,.,systems/electrical/outputs/turn-coordinator,0,0&lt;br /&gt;
systems/electrical/outputs/battery,0,.,systems/electrical/outputs/nav[0],0,0&lt;br /&gt;
systems/electrical/outputs/battery,0,.,systems/electrical/outputs/gps,0,0&lt;br /&gt;
systems/electrical/outputs/inst_ac,0,.,systems/electrical/outputs/adf,0,0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
# Potemkin system&lt;br /&gt;
&lt;br /&gt;
# Connections&lt;br /&gt;
#dep: depends on this property.&lt;br /&gt;
#limit: value or property, lower limit for true. dep &amp;gt; limit eq. true&lt;br /&gt;
#in: input property eg. orientation/pitch-deg or number constant. &lt;br /&gt;
#    Use . to copy dep value to out.&lt;br /&gt;
#out output property eg.instruments/ai/spin&lt;br /&gt;
#off: value if not dep true, can be a property to be read&lt;br /&gt;
#ramp: max change per second of out, 0 no limit&lt;br /&gt;
&lt;br /&gt;
var Connection = {&lt;br /&gt;
  new : func(cv) {&lt;br /&gt;
    var m = {parents:[Connection] };&lt;br /&gt;
    m.dep=cv[0];&lt;br /&gt;
    m.limit=cv[1];&lt;br /&gt;
    m.in=cv[2];&lt;br /&gt;
    m.out=cv[3];&lt;br /&gt;
    m.off=cv[4];&lt;br /&gt;
    m.ramp=num(cv[5]);&lt;br /&gt;
    return m;&lt;br /&gt;
  },&lt;br /&gt;
  &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var System_P = {&lt;br /&gt;
&lt;br /&gt;
  new : func(system_file) {&lt;br /&gt;
    var m = {parents:[System_P] };&lt;br /&gt;
    m.file=system_file;&lt;br /&gt;
    m.connections = [];&lt;br /&gt;
    m.verbose = 2;&lt;br /&gt;
    m.running=0;&lt;br /&gt;
    m.dt=0;&lt;br /&gt;
    m.oldtime=0;&lt;br /&gt;
    return m;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
  read_connections : func {&lt;br /&gt;
    if (me.verbose &amp;gt; 0) print(&amp;quot;Reading connections&amp;quot;);&lt;br /&gt;
    var fh = io.open(getprop(&amp;quot;/sim/aircraft-dir&amp;quot;)~&amp;quot;/&amp;quot;~me.file, &amp;quot;r&amp;quot;);&lt;br /&gt;
    var line=&amp;quot;&amp;quot;;&lt;br /&gt;
    while (line != nil) {&lt;br /&gt;
      line = io.readln(fh);&lt;br /&gt;
      if (line != nil) {&lt;br /&gt;
        var c_arr=split(&amp;quot;,&amp;quot;, line);&lt;br /&gt;
        if (size(c_arr) == 6) {&lt;br /&gt;
          append(me.connections, Connection.new(c_arr));&lt;br /&gt;
          if (me.verbose &amp;gt; 1) print(&amp;quot;Adding: &amp;quot;~line);&lt;br /&gt;
        } else if (me.verbose &amp;gt; 1) print(&amp;quot;Skipping: &amp;quot;~line);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    io.close(fh); &lt;br /&gt;
    if (me.verbose &amp;gt; 0) print(&amp;quot;Read connections&amp;quot;);&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  change_value : func(prop, value, ramp) {&lt;br /&gt;
    if (ramp == 0) setprop(prop, value);&lt;br /&gt;
    else {&lt;br /&gt;
      var ov=num(getprop(prop));&lt;br /&gt;
      if (ov&amp;lt;value and value-ov &amp;gt; ramp*me.dt) setprop(prop, ov+ramp*me.dt);&lt;br /&gt;
      else if (ov&amp;gt;value and ov-value &amp;gt; ramp*me.dt) setprop(prop, ov-ramp*me.dt);&lt;br /&gt;
      else setprop(prop, value);&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  update : func {&lt;br /&gt;
    if (!me.running) return;&lt;br /&gt;
    var time=getprop(&amp;quot;/sim/time/elapsed-sec&amp;quot;);&lt;br /&gt;
    me.dt= time-me.oldtime;&lt;br /&gt;
    foreach (con; me.connections) {&lt;br /&gt;
      dp=getprop(con.dep);&lt;br /&gt;
      if (dp != nil) {&lt;br /&gt;
        if (num(con.limit) != nil) limit=num(con.limit); else limit=getprop(con.limit);&lt;br /&gt;
        if (con.in == &amp;quot;.&amp;quot;) me.change_value(con.out, dp, con.ramp); #copy dep value to out&lt;br /&gt;
        else if (dp &amp;lt;= limit) {&lt;br /&gt;
            if (num(con.off) != nil) me.change_value(con.out, num(con.off), con.ramp);&lt;br /&gt;
            else me.change_value(con.out, getprop(con.off), con.ramp);&lt;br /&gt;
        } else {&lt;br /&gt;
          if (num(con.in) != nil) me.change_value(con.out, num(con.in), con.ramp);&lt;br /&gt;
          else me.change_value(con.out, getprop(con.in), con.ramp);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    me.oldtime=time;&lt;br /&gt;
    settimer( func me.update(), 0.05);    &lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  init : func {&lt;br /&gt;
    me.read_connections();&lt;br /&gt;
    foreach (con; me.connections) {&lt;br /&gt;
      if (num(con.off) != nil) setprop(con.out, num(con.off));&lt;br /&gt;
      else setprop(con.out, getprop(con.off));&lt;br /&gt;
    }&lt;br /&gt;
    me.running=1;&lt;br /&gt;
    me.oldtime= getprop(&amp;quot;/sim/time/elapsed-sec&amp;quot;);&lt;br /&gt;
    if (me.verbose &amp;gt; 0) print(&amp;quot;Initialized system&amp;quot;);&lt;br /&gt;
    me.update();&lt;br /&gt;
  },&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:A_system_engine_in_Nasal&amp;diff=59685</id>
		<title>Howto:A system engine in Nasal</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:A_system_engine_in_Nasal&amp;diff=59685"/>
		<updated>2013-04-27T12:19:20Z</updated>

		<summary type="html">&lt;p&gt;AndersM: Started on the article&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes an engine for aircraft systems, or rather for staging an impression of such a system. It doesn’t handle potentials, pressures or Kirchhoff's laws. It checks if switches are on or off and if minimum criterion’s are met.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
# Potemkin system&lt;br /&gt;
&lt;br /&gt;
# Connections&lt;br /&gt;
#dep: depends on this property.&lt;br /&gt;
#limit: lower limit for true. dep &amp;gt; limit eq. true&lt;br /&gt;
#in: input property eg. orientation/pitch-deg or number constant. &lt;br /&gt;
#    Use . to copy dep value to out.&lt;br /&gt;
#out output property eg.instruments/ai/pitch-deg&lt;br /&gt;
#off: value if not dep true, can be a property to be read&lt;br /&gt;
#ramp: max change per second of out, 0 no limit&lt;br /&gt;
&lt;br /&gt;
var Connection = {&lt;br /&gt;
  new : func(cv) {&lt;br /&gt;
    var m = {parents:[Connection] };&lt;br /&gt;
    m.dep=cv[0];&lt;br /&gt;
    m.limit=cv[1];&lt;br /&gt;
    m.in=cv[2];&lt;br /&gt;
    m.out=cv[3];&lt;br /&gt;
    m.off=cv[4];&lt;br /&gt;
    m.ramp=num(cv[5]);&lt;br /&gt;
    return m;&lt;br /&gt;
  },&lt;br /&gt;
  &lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var System_P = {&lt;br /&gt;
&lt;br /&gt;
  new : func(system_file) {&lt;br /&gt;
    var m = {parents:[System_P] };&lt;br /&gt;
    m.file=system_file;&lt;br /&gt;
    m.connections = [];&lt;br /&gt;
    m.verbose = 2;&lt;br /&gt;
    m.running=0;&lt;br /&gt;
    m.dt=0;&lt;br /&gt;
    m.oldtime=0;&lt;br /&gt;
    return m;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
  read_connections : func {&lt;br /&gt;
    if (me.verbose &amp;gt; 0) print(&amp;quot;Reading connections&amp;quot;);&lt;br /&gt;
    var fh = io.open(getprop(&amp;quot;/sim/aircraft-dir&amp;quot;)~&amp;quot;/&amp;quot;~me.file, &amp;quot;r&amp;quot;);&lt;br /&gt;
    var line=&amp;quot;&amp;quot;;&lt;br /&gt;
    while (line != nil) {&lt;br /&gt;
      line = io.readln(fh);&lt;br /&gt;
      if (line != nil) {&lt;br /&gt;
        var c_arr=split(&amp;quot;,&amp;quot;, line);&lt;br /&gt;
        if (size(c_arr) == 6) {&lt;br /&gt;
          append(me.connections, Connection.new(c_arr));&lt;br /&gt;
          if (me.verbose &amp;gt; 1) print(&amp;quot;Adding: &amp;quot;~line);&lt;br /&gt;
        } else if (me.verbose &amp;gt; 1) print(&amp;quot;Skipping: &amp;quot;~line);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    io.close(fh); &lt;br /&gt;
    if (me.verbose &amp;gt; 0) print(&amp;quot;Read connections&amp;quot;);&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  change_value : func(prop, value, ramp) {&lt;br /&gt;
    if (ramp == 0) setprop(prop, value);&lt;br /&gt;
    else {&lt;br /&gt;
      var ov=num(getprop(prop));&lt;br /&gt;
      if (ov&amp;lt;value and value-ov &amp;gt; ramp*me.dt) setprop(prop, ov+ramp*me.dt);&lt;br /&gt;
      else if (ov&amp;gt;value and ov-value &amp;gt; ramp*me.dt) setprop(prop, ov-ramp*me.dt);&lt;br /&gt;
      else setprop(prop, value);&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  update : func {&lt;br /&gt;
    if (!me.running) return;&lt;br /&gt;
    var time=getprop(&amp;quot;/sim/time/elapsed-sec&amp;quot;);&lt;br /&gt;
    me.dt= time-me.oldtime;&lt;br /&gt;
    foreach (con; me.connections) {&lt;br /&gt;
      dp=getprop(con.dep);&lt;br /&gt;
      if (dp != nil) {&lt;br /&gt;
        if (con.in == &amp;quot;.&amp;quot;) me.change_value(con.out, dp, con.ramp); #copy dep value to out&lt;br /&gt;
        else if (dp &amp;lt;= con.limit) {&lt;br /&gt;
            if (num(con.off) != nil) me.change_value(con.out, num(con.off), con.ramp);&lt;br /&gt;
            else me.change_value(con.out, getprop(con.off), con.ramp);&lt;br /&gt;
        } else {&lt;br /&gt;
          if (num(con.in) != nil) me.change_value(con.out, num(con.in), con.ramp);&lt;br /&gt;
          else me.change_value(con.out, getprop(con.in), con.ramp);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    me.oldtime=time;&lt;br /&gt;
    settimer( func me.update(), 0.05);    &lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  init : func {&lt;br /&gt;
    me.read_connections();&lt;br /&gt;
    foreach (con; me.connections) {&lt;br /&gt;
      if (num(con.off) != nil) setprop(con.out, num(con.off));&lt;br /&gt;
      else setprop(con.out, getprop(con.off));&lt;br /&gt;
    }&lt;br /&gt;
    me.running=1;&lt;br /&gt;
    me.oldtime= getprop(&amp;quot;/sim/time/elapsed-sec&amp;quot;);&lt;br /&gt;
    if (me.verbose &amp;gt; 0) print(&amp;quot;Initialized system&amp;quot;);&lt;br /&gt;
    me.update();&lt;br /&gt;
  },&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Write_a_fuel_system_in_JSBSim&amp;diff=59621</id>
		<title>Howto:Write a fuel system in JSBSim</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Write_a_fuel_system_in_JSBSim&amp;diff=59621"/>
		<updated>2013-04-24T08:55:36Z</updated>

		<summary type="html">&lt;p&gt;AndersM: /* Spitfire: Carburetor engine */ Explaining text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of [[FlightGear]] 2.4.0, JSBSim aircraft have a new tank-property: &amp;lt;tt&amp;gt;propulsion/tank[n]/external-flow-rate-pps&amp;lt;/tt&amp;gt;. Setting this property will either draw fuel from (value &amp;lt; 0), or insert fuel into (value &amp;gt; 0) the respective tank. By using this property, one can simulate complex fuel systems.&lt;br /&gt;
&lt;br /&gt;
== A fuel system file ==&lt;br /&gt;
First we create a system file, in which we will write the actual system. It's advised to save this file as &amp;lt;tt&amp;gt;Aircraft/.../Systems/fuel.xml&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;system name=&amp;quot;fuel&amp;quot;&amp;gt; &lt;br /&gt;
	&amp;lt;!-- we will write the system here --&amp;gt;&lt;br /&gt;
&amp;lt;/system&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We link the main FDM to this system by adding the following line, somewhere in your aircraft's FDM (I advise to put it below &amp;lt;tt&amp;gt;&amp;lt;/propulsion&amp;gt;&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;system file=&amp;quot;fuel&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Notice how &amp;quot;fuel&amp;quot; refers to &amp;lt;tt&amp;gt;Aircraft/.../Systems/fuel.xml&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Fuel handling in JSBSim ==&lt;br /&gt;
To make JSBSim handle the fuel system during simulation we create one or more channels in the system file. Within these we can use the different control components [http://jsbsim.sourceforge.net/JSBSimReferenceManual.pdf available in JSBSim].&lt;br /&gt;
&lt;br /&gt;
When using &amp;lt;tt&amp;gt;propulsion/tank[n]/external-flow-rate-pps&amp;lt;/tt&amp;gt; there is no automatic detection if the tank is full or empty. Fuel filling an already full tank will just disappear, creating a &amp;quot;leak&amp;quot;. Fuel drawn from an empty tank will make new fuel magically appear in the system. In most cases we will have to make checks to avoid these problems.&lt;br /&gt;
&lt;br /&gt;
Two control components that is useful in a fuel system are summers and switches.&lt;br /&gt;
 &lt;br /&gt;
=== Summers ===&lt;br /&gt;
To calculate the total fuel-flows to/from each tank, we need to sum up the independent flows. This must be done for each single tank, but the principle is the same every time and simple to understand. Every flow that transports fuel ''from'' a tank should get a minus sign.&lt;br /&gt;
&lt;br /&gt;
This summer calculates the total flow to or from tank[0].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;summer&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;-propulsion/tank[0]/external-flow-rate/jettison&amp;lt;/input&amp;gt;		&amp;lt;!-- jettison --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;-propulsion/tank[0]/external-flow-rate/tank[1]&amp;lt;/input&amp;gt;		&amp;lt;!-- to tank 1 --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;-propulsion/tank[0]/external-flow-rate/tank[2]&amp;lt;/input&amp;gt;		&amp;lt;!-- to tank 2 --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;-propulsion/tank[0]/external-flow-rate/tank[3]&amp;lt;/input&amp;gt;		&amp;lt;!-- to tank 3 --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;propulsion/tank[1]/external-flow-rate/tank[0]&amp;lt;/input&amp;gt;		&amp;lt;!-- from tank 1 --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;propulsion/tank[2]/external-flow-rate/tank[0]&amp;lt;/input&amp;gt;		&amp;lt;!-- from tank 2 --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;propulsion/tank[3]/external-flow-rate/tank[0]&amp;lt;/input&amp;gt;		&amp;lt;!-- from tank 3 --&amp;gt;&lt;br /&gt;
	&amp;lt;output&amp;gt;propulsion/tank[0]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
&amp;lt;/summer&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Switches ===&lt;br /&gt;
To turn the flow on or off we need a switch.&lt;br /&gt;
&lt;br /&gt;
This switch draws 5 lbs/s from tank[0] until its empty as long as the collector vale is open.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;switch&amp;gt;&lt;br /&gt;
      &amp;lt;default value=&amp;quot;-5&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;test logic=&amp;quot;OR&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
        propulsion/tank[0]/collector-valve EQ 0&lt;br /&gt;
        propulsion/tank[0]/pct-full LE 0&lt;br /&gt;
      &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;propulsion/tank[0]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/switch&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Jettison switch  ===&lt;br /&gt;
The /controls/fuel/fuel-to-remain property controls the amount of fuel (in lbs) that should be kept a board. When the total-fuel-level reaches that level, fuel dumping will auomatically stop. Fuel dumping can also be stopped by closing the jettison valves (disable &amp;lt;tt&amp;gt;/controls/fuel/dump-valve&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;switch&amp;gt;&lt;br /&gt;
	&amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;12.25&amp;quot;&amp;gt;&lt;br /&gt;
		/controls/fuel/dump-valve == 1&lt;br /&gt;
		propulsion/total-fuel-lbs gt /controls/fuel/fuel-to-remain&lt;br /&gt;
	&amp;lt;/test&amp;gt;&lt;br /&gt;
	&amp;lt;output&amp;gt;propulsion/tank[0]/external-flow-rate/jettison&amp;lt;/output&amp;gt;&lt;br /&gt;
	&amp;lt;output&amp;gt;propulsion/tank[2]/external-flow-rate/jettison&amp;lt;/output&amp;gt;&lt;br /&gt;
	&amp;lt;output&amp;gt;propulsion/tank[3]/external-flow-rate/jettison&amp;lt;/output&amp;gt;&lt;br /&gt;
	&amp;lt;output&amp;gt;propulsion/tank[7]/external-flow-rate/jettison&amp;lt;/output&amp;gt;&lt;br /&gt;
&amp;lt;/switch&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The output properties should be added as inputs to the respective summers. Add a minus sign, as the fuel is taken ''from'' the tank.&lt;br /&gt;
&lt;br /&gt;
=== Two tanks and a collector tank ===&lt;br /&gt;
A system with two tanks (tank[0] and tank[1]) feeding a collector tank (tank[2]). The engine is fed from the collector tank. There is valves between each of the tanks and the collector that can be set open or closed. Negative Gs cut the  supply to the collector.&lt;br /&gt;
&lt;br /&gt;
The system consists of two properties: propulsion/tank[0]/collector-valve and propulsion/tank[1]/collector-valve that represent the valves and a channel that handles the fuel transfer from the tanks to the collector and the necessary checks.&lt;br /&gt;
&lt;br /&gt;
The fuel transfer using external-flow-rate-pps does not check against if tanks are empty or full. This can create fuel when &amp;quot;fuel&amp;quot; is drawn from an empty tank or a &amp;quot;leak&amp;quot; when fuel is pumped into a full tank. Making the check against collector tank level greater or equal to 99.5 % instead of against 100% is done to avoid the later kind of leak since the collector tank normally receives more fuel every time step than the engine uses. The 0.5% margin creates a buffer for this difference as the value oscillates around 99.5% as the switch turns on and off the flow.&lt;br /&gt;
&lt;br /&gt;
[[File:Collector-tank-system2.png|thumb|Two tanks and a collector tank]]&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;system name=&amp;quot;Fuel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- tank[2] collector tank connected to the engine fuel pump, tank[0] and tank[1] feeds the collector through valves.&lt;br /&gt;
Negative Gs (&amp;lt;-0.5g) cuts the supply to the collector tanks --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;property type=&amp;quot;bool&amp;quot; value=&amp;quot;1&amp;quot;&amp;gt;propulsion/tank[0]/collector-valve&amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property type=&amp;quot;bool&amp;quot; value=&amp;quot;1&amp;quot;&amp;gt;propulsion/tank[1]/collector-valve&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;channel name=&amp;quot;Fuel pumping&amp;quot;&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
    &amp;lt;switch&amp;gt;&lt;br /&gt;
      &amp;lt;default value=&amp;quot;-5&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;test logic=&amp;quot;OR&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
        propulsion/tank[0]/collector-valve EQ 0&lt;br /&gt;
        propulsion/tank[0]/pct-full LE 0&lt;br /&gt;
        propulsion/tank[2]/pct-full GE 99.5&lt;br /&gt;
        accelerations/Nz LE -0.5&lt;br /&gt;
      &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;propulsion/tank[0]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;switch&amp;gt;&lt;br /&gt;
      &amp;lt;default value=&amp;quot;-5&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;test logic=&amp;quot;OR&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
        propulsion/tank[1]/collector-valve EQ 0&lt;br /&gt;
        propulsion/tank[1]/pct-full LE 0&lt;br /&gt;
        propulsion/tank[2]/pct-full GE 99.5&lt;br /&gt;
        accelerations/Nz LE -0.5 &lt;br /&gt;
      &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;propulsion/tank[1]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;summer&amp;gt;&lt;br /&gt;
      &amp;lt;input&amp;gt;-propulsion/tank[0]/external-flow-rate-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
      &amp;lt;input&amp;gt;-propulsion/tank[1]/external-flow-rate-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;propulsion/tank[2]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/summer&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/channel&amp;gt;      &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/system&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Spitfire: Carburetor engine ===&lt;br /&gt;
&lt;br /&gt;
Spitfire II fuel system. This systems have properties for damage, leaks and simulates the carburetor as a small tank to handle fuel starvation at negative Gs.&lt;br /&gt;
The Spitfire has two interconnected tanks with fuel flowing from an upper tank to a lower and both connected to the engine through cocks. The layout of the system can be seen [http://616sqn.tidesofwar.net/gallery/spitfuelsm.jpg here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
    &amp;lt;system name=&amp;quot;Fuel&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
       &amp;lt;property type=&amp;quot;bool&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt; /fdm/jsbsim/fuel/tank_top_cock&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;property type=&amp;quot;bool&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt; /fdm/jsbsim/fuel/tank_bottom_cock&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;property type=&amp;quot;double&amp;quot; value=&amp;quot;1&amp;quot;&amp;gt; /fdm/jsbsim/fuel/damage&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;property type=&amp;quot;double&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt; /fdm/jsbsim/fuel/priming&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;property type=&amp;quot;double&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt; /fdm/jsbsim/fuel/leak_top_tank&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;property type=&amp;quot;double&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt; /fdm/jsbsim/fuel/leak_bottom_tank&amp;lt;/property&amp;gt;&lt;br /&gt;
       &lt;br /&gt;
       &amp;lt;channel name=&amp;quot;carburetor&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;!-- Total Carburetor Flow Rate in pps --&amp;gt;         &lt;br /&gt;
          &amp;lt;summer name=&amp;quot;fuel/float_chamber-pps&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;fuel/pump_flow_to_float-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;/fdm/jsbsim/fuel/priming&amp;lt;/input&amp;gt;         &lt;br /&gt;
             &amp;lt;input&amp;gt;-propulsion/engine/fuel-flow-rate-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;output&amp;gt;propulsion/tank[0]/external-flow-rate-pps&amp;lt;/output&amp;gt;      &lt;br /&gt;
          &amp;lt;/summer&amp;gt;      &lt;br /&gt;
&lt;br /&gt;
       &amp;lt;/channel&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
       &amp;lt;channel name=&amp;quot;Fuel Pump&amp;quot;&amp;gt;&lt;br /&gt;
       &lt;br /&gt;
          &amp;lt;!-- float throttle valve position --&amp;gt;         &lt;br /&gt;
          &amp;lt;aerosurface_scale name=&amp;quot;fuel/float_throttle-valve-cmd&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;propulsion/tank[0]/contents-lbs&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;zero_centered&amp;gt;false&amp;lt;/zero_centered&amp;gt;&lt;br /&gt;
             &amp;lt;domain&amp;gt;&lt;br /&gt;
                &amp;lt;min&amp;gt;0.0&amp;lt;/min&amp;gt;&lt;br /&gt;
                &amp;lt;max&amp;gt;0.5&amp;lt;/max&amp;gt;&lt;br /&gt;
             &amp;lt;/domain&amp;gt;                  &lt;br /&gt;
             &amp;lt;range&amp;gt;&lt;br /&gt;
                &amp;lt;min&amp;gt;1.0&amp;lt;/min&amp;gt;&lt;br /&gt;
                &amp;lt;max&amp;gt;0.0&amp;lt;/max&amp;gt;&lt;br /&gt;
             &amp;lt;/range&amp;gt;&lt;br /&gt;
          &amp;lt;/aerosurface_scale &amp;gt;      &lt;br /&gt;
          &lt;br /&gt;
          &lt;br /&gt;
          &amp;lt;!-- Fuel Flow into Float Chamber in pps --&amp;gt;&lt;br /&gt;
          &amp;lt;switch name=&amp;quot;fuel/flowing_from_tank&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;fuel/float_throttle-valve-cmd&amp;quot;&amp;gt;&lt;br /&gt;
                accelerations/Nz GE -0.5&lt;br /&gt;
                &amp;lt;test logic=&amp;quot;OR&amp;quot;&amp;gt;&lt;br /&gt;
                   &amp;lt;test logic=&amp;quot;AND&amp;quot;&amp;gt;&lt;br /&gt;
                      fuel/tank_top_cock EQ 1               &lt;br /&gt;
                      propulsion/tank[1]/contents-lbs GT 0&lt;br /&gt;
                   &amp;lt;/test&amp;gt;            &lt;br /&gt;
                   &amp;lt;test logic=&amp;quot;AND&amp;quot;&amp;gt;&lt;br /&gt;
                      fuel/tank_bottom_cock EQ 1&lt;br /&gt;
                      propulsion/tank[2]/contents-lbs GT 0&lt;br /&gt;
                   &amp;lt;/test&amp;gt;      &lt;br /&gt;
                &amp;lt;/test&amp;gt;&lt;br /&gt;
             &amp;lt;/test&amp;gt;               &lt;br /&gt;
          &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;fcs_function name=&amp;quot;fuel/pump_flow_to_float-pps&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;function&amp;gt;&lt;br /&gt;
                   &amp;lt;product&amp;gt;&lt;br /&gt;
                      &amp;lt;property&amp;gt;fuel/flowing_from_tank&amp;lt;/property&amp;gt;&lt;br /&gt;
                      &amp;lt;table&amp;gt;      &amp;lt;!-- Fuel pump in pps --&amp;gt;&lt;br /&gt;
                         &amp;lt;independentVar&amp;gt;propulsion/engine/engine-rpm&amp;lt;/independentVar&amp;gt;&lt;br /&gt;
                         &amp;lt;tableData&amp;gt; &amp;lt;!-- Fuel pump curve --&amp;gt;               &lt;br /&gt;
                            0      0&lt;br /&gt;
                            100      1&lt;br /&gt;
                            3000   10                  &lt;br /&gt;
                         &amp;lt;/tableData&amp;gt;&lt;br /&gt;
                      &amp;lt;/table&amp;gt;&lt;br /&gt;
                      &amp;lt;property&amp;gt;fuel/damage&amp;lt;/property&amp;gt;&lt;br /&gt;
                      &amp;lt;value&amp;gt;0.12&amp;lt;/value&amp;gt; &amp;lt;!-- full throttle max fuel demand in pps  --&amp;gt;&lt;br /&gt;
                   &amp;lt;/product&amp;gt;            &lt;br /&gt;
             &amp;lt;/function&amp;gt;&lt;br /&gt;
             &amp;lt;output&amp;gt;fuel/pump_flow_to_float-pps&amp;lt;/output&amp;gt;   &lt;br /&gt;
          &amp;lt;/fcs_function&amp;gt;   &lt;br /&gt;
          &lt;br /&gt;
       &amp;lt;/channel&amp;gt;      &lt;br /&gt;
          &lt;br /&gt;
          &lt;br /&gt;
       &amp;lt;channel name=&amp;quot;Tanks&amp;quot;&amp;gt;&lt;br /&gt;
             &lt;br /&gt;
          &amp;lt;!-- Fuel flow to be divided aross a number of tanks --&amp;gt;      &lt;br /&gt;
          &amp;lt;fcs_function name=&amp;quot;fuel/flow_from_tank&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;function&amp;gt;&lt;br /&gt;
                &amp;lt;quotient&amp;gt;&lt;br /&gt;
                   &amp;lt;property&amp;gt;fuel/pump_flow_to_float-pps&amp;lt;/property&amp;gt;&lt;br /&gt;
                   &amp;lt;sum&amp;gt;&lt;br /&gt;
                      &amp;lt;property&amp;gt;fuel/tank_top_cock&amp;lt;/property&amp;gt;&lt;br /&gt;
                      &amp;lt;property&amp;gt;fuel/tank_bottom_cock&amp;lt;/property&amp;gt;&lt;br /&gt;
                   &amp;lt;/sum&amp;gt;&lt;br /&gt;
                &amp;lt;/quotient&amp;gt;               &lt;br /&gt;
             &amp;lt;/function&amp;gt;&lt;br /&gt;
             &amp;lt;output&amp;gt;fuel/flow_from_tank&amp;lt;/output&amp;gt;         &lt;br /&gt;
          &amp;lt;/fcs_function&amp;gt;         &lt;br /&gt;
&lt;br /&gt;
       &amp;lt;/channel&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
          &lt;br /&gt;
       &amp;lt;channel name=&amp;quot;Top Tank&amp;quot;&amp;gt;&lt;br /&gt;
       &lt;br /&gt;
          &amp;lt;!-- top_bottom_transfer --&amp;gt;            &lt;br /&gt;
          &amp;lt;switch name=&amp;quot;fuel/top_bottom_transfer&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                propulsion/tank[1]/contents-lbs GT 0&lt;br /&gt;
                propulsion/tank[2]/contents-lbs LT 322&lt;br /&gt;
                accelerations/Nz GE -0.5&lt;br /&gt;
             &amp;lt;/test&amp;gt;         &lt;br /&gt;
          &amp;lt;/switch&amp;gt;   &lt;br /&gt;
             &lt;br /&gt;
          &amp;lt;!-- Fuel tranfer rate in pps--&amp;gt;&lt;br /&gt;
          &amp;lt;fcs_function name=&amp;quot;fuel/top_bottom_transfer-pps&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;function&amp;gt;&lt;br /&gt;
                &amp;lt;product&amp;gt;&lt;br /&gt;
                   &amp;lt;property&amp;gt;fuel/top_bottom_transfer&amp;lt;/property&amp;gt;            &lt;br /&gt;
                   &amp;lt;sum&amp;gt;&lt;br /&gt;
                      &amp;lt;property&amp;gt;fuel/from_bottom_tank&amp;lt;/property&amp;gt;&lt;br /&gt;
                      &amp;lt;table&amp;gt;      &amp;lt;!-- Liquid finds it's own level --&amp;gt;&lt;br /&gt;
                         &amp;lt;independentVar&amp;gt;propulsion/tank[2]/contents-lbs&amp;lt;/independentVar&amp;gt;&lt;br /&gt;
                         &amp;lt;tableData&amp;gt;&lt;br /&gt;
                            319      1&lt;br /&gt;
                            322      0       &lt;br /&gt;
                         &amp;lt;/tableData&amp;gt;&lt;br /&gt;
                      &amp;lt;/table&amp;gt;&lt;br /&gt;
                   &amp;lt;/sum&amp;gt;&lt;br /&gt;
                &amp;lt;/product&amp;gt;               &lt;br /&gt;
             &amp;lt;/function&amp;gt;&lt;br /&gt;
             &amp;lt;output&amp;gt;fuel/top_bottom_transfer-pps&amp;lt;/output&amp;gt;   &lt;br /&gt;
          &amp;lt;/fcs_function&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
          &amp;lt;!-- Top Tank Fuel Flow Rate in pps --&amp;gt;         &lt;br /&gt;
          &amp;lt;switch name=&amp;quot;fuel/from_top_tank&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;fuel/flow_from_tank&amp;quot;&amp;gt;   &lt;br /&gt;
                fuel/tank_top_cock EQ 1&lt;br /&gt;
                accelerations/Nz GE -0.5   &lt;br /&gt;
             &amp;lt;/test&amp;gt;      &lt;br /&gt;
          &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;!-- Total Top Tank Fuel Flow Rate in pps --&amp;gt;         &lt;br /&gt;
          &amp;lt;summer name=&amp;quot;fuel/total_from_top_tank-pps&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-fuel/top_bottom_transfer-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-fuel/from_top_tank&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-fuel/leak_top_tank&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;output&amp;gt;propulsion/tank[1]/external-flow-rate-pps&amp;lt;/output&amp;gt;            &lt;br /&gt;
          &amp;lt;/summer&amp;gt;&lt;br /&gt;
          &lt;br /&gt;
       &amp;lt;/channel&amp;gt;&lt;br /&gt;
       &lt;br /&gt;
       &amp;lt;channel name=&amp;quot;Bottom Tank&amp;quot;&amp;gt;         &lt;br /&gt;
                &lt;br /&gt;
          &amp;lt;!-- Bottom Tank Fuel Flow Rate in pps --&amp;gt;            &lt;br /&gt;
          &amp;lt;switch name=&amp;quot;fuel/from_bottom_tank&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;fuel/flow_from_tank&amp;quot;&amp;gt;&lt;br /&gt;
                fuel/tank_bottom_cock EQ 1&lt;br /&gt;
                accelerations/Nz GE -0.5         &lt;br /&gt;
             &amp;lt;/test&amp;gt;&lt;br /&gt;
          &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;!-- Total Bottom Tank Fuel Flow Rate in pps --&amp;gt;         &lt;br /&gt;
          &amp;lt;summer name=&amp;quot;fuel/total_from_bottom_tank-pps&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;fuel/top_bottom_transfer-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-/fdm/jsbsim/fuel/priming&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-fuel/from_bottom_tank&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-fuel/leak_bottom_tank&amp;lt;/input&amp;gt;         &lt;br /&gt;
             &amp;lt;output&amp;gt;propulsion/tank[2]/external-flow-rate-pps&amp;lt;/output&amp;gt;            &lt;br /&gt;
          &amp;lt;/summer&amp;gt;&lt;br /&gt;
          &lt;br /&gt;
       &amp;lt;/channel&amp;gt;      &lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/system&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{JSBSim}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft enhancement|Fuel system JSBSim]]&lt;br /&gt;
[[Category:Howto|Fuel system JSBSim]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Write_a_fuel_system_in_JSBSim&amp;diff=59616</id>
		<title>Howto:Write a fuel system in JSBSim</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Write_a_fuel_system_in_JSBSim&amp;diff=59616"/>
		<updated>2013-04-23T13:48:55Z</updated>

		<summary type="html">&lt;p&gt;AndersM: /* Examples */ Spitfire&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of [[FlightGear]] 2.4.0, JSBSim aircraft have a new tank-property: &amp;lt;tt&amp;gt;propulsion/tank[n]/external-flow-rate-pps&amp;lt;/tt&amp;gt;. Setting this property will either draw fuel from (value &amp;lt; 0), or insert fuel into (value &amp;gt; 0) the respective tank. By using this property, one can simulate complex fuel systems.&lt;br /&gt;
&lt;br /&gt;
== A fuel system file ==&lt;br /&gt;
First we create a system file, in which we will write the actual system. It's advised to save this file as &amp;lt;tt&amp;gt;Aircraft/.../Systems/fuel.xml&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;system name=&amp;quot;fuel&amp;quot;&amp;gt; &lt;br /&gt;
	&amp;lt;!-- we will write the system here --&amp;gt;&lt;br /&gt;
&amp;lt;/system&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We link the main FDM to this system by adding the following line, somewhere in your aircraft's FDM (I advise to put it below &amp;lt;tt&amp;gt;&amp;lt;/propulsion&amp;gt;&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;system file=&amp;quot;fuel&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Notice how &amp;quot;fuel&amp;quot; refers to &amp;lt;tt&amp;gt;Aircraft/.../Systems/fuel.xml&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Fuel handling in JSBSim ==&lt;br /&gt;
To make JSBSim handle the fuel system during simulation we create one or more channels in the system file. Within these we can use the different control components [http://jsbsim.sourceforge.net/JSBSimReferenceManual.pdf available in JSBSim].&lt;br /&gt;
&lt;br /&gt;
When using &amp;lt;tt&amp;gt;propulsion/tank[n]/external-flow-rate-pps&amp;lt;/tt&amp;gt; there is no automatic detection if the tank is full or empty. Fuel filling an already full tank will just disappear, creating a &amp;quot;leak&amp;quot;. Fuel drawn from an empty tank will make new fuel magically appear in the system. In most cases we will have to make checks to avoid these problems.&lt;br /&gt;
&lt;br /&gt;
Two control components that is useful in a fuel system are summers and switches.&lt;br /&gt;
 &lt;br /&gt;
=== Summers ===&lt;br /&gt;
To calculate the total fuel-flows to/from each tank, we need to sum up the independent flows. This must be done for each single tank, but the principle is the same every time and simple to understand. Every flow that transports fuel ''from'' a tank should get a minus sign.&lt;br /&gt;
&lt;br /&gt;
This summer calculates the total flow to or from tank[0].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;summer&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;-propulsion/tank[0]/external-flow-rate/jettison&amp;lt;/input&amp;gt;		&amp;lt;!-- jettison --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;-propulsion/tank[0]/external-flow-rate/tank[1]&amp;lt;/input&amp;gt;		&amp;lt;!-- to tank 1 --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;-propulsion/tank[0]/external-flow-rate/tank[2]&amp;lt;/input&amp;gt;		&amp;lt;!-- to tank 2 --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;-propulsion/tank[0]/external-flow-rate/tank[3]&amp;lt;/input&amp;gt;		&amp;lt;!-- to tank 3 --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;propulsion/tank[1]/external-flow-rate/tank[0]&amp;lt;/input&amp;gt;		&amp;lt;!-- from tank 1 --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;propulsion/tank[2]/external-flow-rate/tank[0]&amp;lt;/input&amp;gt;		&amp;lt;!-- from tank 2 --&amp;gt;&lt;br /&gt;
	&amp;lt;input&amp;gt;propulsion/tank[3]/external-flow-rate/tank[0]&amp;lt;/input&amp;gt;		&amp;lt;!-- from tank 3 --&amp;gt;&lt;br /&gt;
	&amp;lt;output&amp;gt;propulsion/tank[0]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
&amp;lt;/summer&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Switches ===&lt;br /&gt;
To turn the flow on or off we need a switch.&lt;br /&gt;
&lt;br /&gt;
This switch draws 5 lbs/s from tank[0] until its empty as long as the collector vale is open.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;switch&amp;gt;&lt;br /&gt;
      &amp;lt;default value=&amp;quot;-5&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;test logic=&amp;quot;OR&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
        propulsion/tank[0]/collector-valve EQ 0&lt;br /&gt;
        propulsion/tank[0]/pct-full LE 0&lt;br /&gt;
      &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;propulsion/tank[0]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/switch&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Jettison switch  ===&lt;br /&gt;
The /controls/fuel/fuel-to-remain property controls the amount of fuel (in lbs) that should be kept a board. When the total-fuel-level reaches that level, fuel dumping will auomatically stop. Fuel dumping can also be stopped by closing the jettison valves (disable &amp;lt;tt&amp;gt;/controls/fuel/dump-valve&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;switch&amp;gt;&lt;br /&gt;
	&amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;12.25&amp;quot;&amp;gt;&lt;br /&gt;
		/controls/fuel/dump-valve == 1&lt;br /&gt;
		propulsion/total-fuel-lbs gt /controls/fuel/fuel-to-remain&lt;br /&gt;
	&amp;lt;/test&amp;gt;&lt;br /&gt;
	&amp;lt;output&amp;gt;propulsion/tank[0]/external-flow-rate/jettison&amp;lt;/output&amp;gt;&lt;br /&gt;
	&amp;lt;output&amp;gt;propulsion/tank[2]/external-flow-rate/jettison&amp;lt;/output&amp;gt;&lt;br /&gt;
	&amp;lt;output&amp;gt;propulsion/tank[3]/external-flow-rate/jettison&amp;lt;/output&amp;gt;&lt;br /&gt;
	&amp;lt;output&amp;gt;propulsion/tank[7]/external-flow-rate/jettison&amp;lt;/output&amp;gt;&lt;br /&gt;
&amp;lt;/switch&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The output properties should be added as inputs to the respective summers. Add a minus sign, as the fuel is taken ''from'' the tank.&lt;br /&gt;
&lt;br /&gt;
=== Two tanks and a collector tank ===&lt;br /&gt;
A system with two tanks (tank[0] and tank[1]) feeding a collector tank (tank[2]). The engine is fed from the collector tank. There is valves between each of the tanks and the collector that can be set open or closed. Negative Gs cut the  supply to the collector.&lt;br /&gt;
&lt;br /&gt;
The system consists of two properties: propulsion/tank[0]/collector-valve and propulsion/tank[1]/collector-valve that represent the valves and a channel that handles the fuel transfer from the tanks to the collector and the necessary checks.&lt;br /&gt;
&lt;br /&gt;
The fuel transfer using external-flow-rate-pps does not check against if tanks are empty or full. This can create fuel when &amp;quot;fuel&amp;quot; is drawn from an empty tank or a &amp;quot;leak&amp;quot; when fuel is pumped into a full tank. Making the check against collector tank level greater or equal to 99.5 % instead of against 100% is done to avoid the later kind of leak since the collector tank normally receives more fuel every time step than the engine uses. The 0.5% margin creates a buffer for this difference as the value oscillates around 99.5% as the switch turns on and off the flow.&lt;br /&gt;
&lt;br /&gt;
[[File:Collector-tank-system2.png|thumb|Two tanks and a collector tank]]&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;system name=&amp;quot;Fuel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- tank[2] collector tank connected to the engine fuel pump, tank[0] and tank[1] feeds the collector through valves.&lt;br /&gt;
Negative Gs (&amp;lt;-0.5g) cuts the supply to the collector tanks --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;property type=&amp;quot;bool&amp;quot; value=&amp;quot;1&amp;quot;&amp;gt;propulsion/tank[0]/collector-valve&amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property type=&amp;quot;bool&amp;quot; value=&amp;quot;1&amp;quot;&amp;gt;propulsion/tank[1]/collector-valve&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;channel name=&amp;quot;Fuel pumping&amp;quot;&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
    &amp;lt;switch&amp;gt;&lt;br /&gt;
      &amp;lt;default value=&amp;quot;-5&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;test logic=&amp;quot;OR&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
        propulsion/tank[0]/collector-valve EQ 0&lt;br /&gt;
        propulsion/tank[0]/pct-full LE 0&lt;br /&gt;
        propulsion/tank[2]/pct-full GE 99.5&lt;br /&gt;
        accelerations/Nz LE -0.5&lt;br /&gt;
      &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;propulsion/tank[0]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;switch&amp;gt;&lt;br /&gt;
      &amp;lt;default value=&amp;quot;-5&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;test logic=&amp;quot;OR&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
        propulsion/tank[1]/collector-valve EQ 0&lt;br /&gt;
        propulsion/tank[1]/pct-full LE 0&lt;br /&gt;
        propulsion/tank[2]/pct-full GE 99.5&lt;br /&gt;
        accelerations/Nz LE -0.5 &lt;br /&gt;
      &amp;lt;/test&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;propulsion/tank[1]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;summer&amp;gt;&lt;br /&gt;
      &amp;lt;input&amp;gt;-propulsion/tank[0]/external-flow-rate-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
      &amp;lt;input&amp;gt;-propulsion/tank[1]/external-flow-rate-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
      &amp;lt;output&amp;gt;propulsion/tank[2]/external-flow-rate-pps&amp;lt;/output&amp;gt;&lt;br /&gt;
    &amp;lt;/summer&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/channel&amp;gt;      &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/system&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Spitfire: Carburetor engine ===&lt;br /&gt;
&lt;br /&gt;
Spitfire II fuel system. Simulating the carburetor as a small tank to handle fuel starvation if negative Gs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
    &amp;lt;system name=&amp;quot;Fuel&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
       &amp;lt;property type=&amp;quot;bool&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt; /fdm/jsbsim/fuel/tank_top_cock&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;property type=&amp;quot;bool&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt; /fdm/jsbsim/fuel/tank_bottom_cock&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;property type=&amp;quot;double&amp;quot; value=&amp;quot;1&amp;quot;&amp;gt; /fdm/jsbsim/fuel/damage&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;property type=&amp;quot;double&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt; /fdm/jsbsim/fuel/priming&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;property type=&amp;quot;double&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt; /fdm/jsbsim/fuel/leak_top_tank&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;property type=&amp;quot;double&amp;quot; value=&amp;quot;0&amp;quot;&amp;gt; /fdm/jsbsim/fuel/leak_bottom_tank&amp;lt;/property&amp;gt;&lt;br /&gt;
       &lt;br /&gt;
       &amp;lt;channel name=&amp;quot;carburetor&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;!-- Total Carburetor Flow Rate in pps --&amp;gt;         &lt;br /&gt;
          &amp;lt;summer name=&amp;quot;fuel/float_chamber-pps&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;fuel/pump_flow_to_float-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;/fdm/jsbsim/fuel/priming&amp;lt;/input&amp;gt;         &lt;br /&gt;
             &amp;lt;input&amp;gt;-propulsion/engine/fuel-flow-rate-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;output&amp;gt;propulsion/tank[0]/external-flow-rate-pps&amp;lt;/output&amp;gt;      &lt;br /&gt;
          &amp;lt;/summer&amp;gt;      &lt;br /&gt;
&lt;br /&gt;
       &amp;lt;/channel&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
       &amp;lt;channel name=&amp;quot;Fuel Pump&amp;quot;&amp;gt;&lt;br /&gt;
       &lt;br /&gt;
          &amp;lt;!-- float throttle valve position --&amp;gt;         &lt;br /&gt;
          &amp;lt;aerosurface_scale name=&amp;quot;fuel/float_throttle-valve-cmd&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;propulsion/tank[0]/contents-lbs&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;zero_centered&amp;gt;false&amp;lt;/zero_centered&amp;gt;&lt;br /&gt;
             &amp;lt;domain&amp;gt;&lt;br /&gt;
                &amp;lt;min&amp;gt;0.0&amp;lt;/min&amp;gt;&lt;br /&gt;
                &amp;lt;max&amp;gt;0.5&amp;lt;/max&amp;gt;&lt;br /&gt;
             &amp;lt;/domain&amp;gt;                  &lt;br /&gt;
             &amp;lt;range&amp;gt;&lt;br /&gt;
                &amp;lt;min&amp;gt;1.0&amp;lt;/min&amp;gt;&lt;br /&gt;
                &amp;lt;max&amp;gt;0.0&amp;lt;/max&amp;gt;&lt;br /&gt;
             &amp;lt;/range&amp;gt;&lt;br /&gt;
          &amp;lt;/aerosurface_scale &amp;gt;      &lt;br /&gt;
          &lt;br /&gt;
          &lt;br /&gt;
          &amp;lt;!-- Fuel Flow into Float Chamber in pps --&amp;gt;&lt;br /&gt;
          &amp;lt;switch name=&amp;quot;fuel/flowing_from_tank&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;fuel/float_throttle-valve-cmd&amp;quot;&amp;gt;&lt;br /&gt;
                accelerations/Nz GE -0.5&lt;br /&gt;
                &amp;lt;test logic=&amp;quot;OR&amp;quot;&amp;gt;&lt;br /&gt;
                   &amp;lt;test logic=&amp;quot;AND&amp;quot;&amp;gt;&lt;br /&gt;
                      fuel/tank_top_cock EQ 1               &lt;br /&gt;
                      propulsion/tank[1]/contents-lbs GT 0&lt;br /&gt;
                   &amp;lt;/test&amp;gt;            &lt;br /&gt;
                   &amp;lt;test logic=&amp;quot;AND&amp;quot;&amp;gt;&lt;br /&gt;
                      fuel/tank_bottom_cock EQ 1&lt;br /&gt;
                      propulsion/tank[2]/contents-lbs GT 0&lt;br /&gt;
                   &amp;lt;/test&amp;gt;      &lt;br /&gt;
                &amp;lt;/test&amp;gt;&lt;br /&gt;
             &amp;lt;/test&amp;gt;               &lt;br /&gt;
          &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;fcs_function name=&amp;quot;fuel/pump_flow_to_float-pps&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;function&amp;gt;&lt;br /&gt;
                   &amp;lt;product&amp;gt;&lt;br /&gt;
                      &amp;lt;property&amp;gt;fuel/flowing_from_tank&amp;lt;/property&amp;gt;&lt;br /&gt;
                      &amp;lt;table&amp;gt;      &amp;lt;!-- Fuel pump in pps --&amp;gt;&lt;br /&gt;
                         &amp;lt;independentVar&amp;gt;propulsion/engine/engine-rpm&amp;lt;/independentVar&amp;gt;&lt;br /&gt;
                         &amp;lt;tableData&amp;gt; &amp;lt;!-- Fuel pump curve --&amp;gt;               &lt;br /&gt;
                            0      0&lt;br /&gt;
                            100      1&lt;br /&gt;
                            3000   10                  &lt;br /&gt;
                         &amp;lt;/tableData&amp;gt;&lt;br /&gt;
                      &amp;lt;/table&amp;gt;&lt;br /&gt;
                      &amp;lt;property&amp;gt;fuel/damage&amp;lt;/property&amp;gt;&lt;br /&gt;
                      &amp;lt;value&amp;gt;0.12&amp;lt;/value&amp;gt; &amp;lt;!-- full throttle max fuel demand in pps  --&amp;gt;&lt;br /&gt;
                   &amp;lt;/product&amp;gt;            &lt;br /&gt;
             &amp;lt;/function&amp;gt;&lt;br /&gt;
             &amp;lt;output&amp;gt;fuel/pump_flow_to_float-pps&amp;lt;/output&amp;gt;   &lt;br /&gt;
          &amp;lt;/fcs_function&amp;gt;   &lt;br /&gt;
          &lt;br /&gt;
       &amp;lt;/channel&amp;gt;      &lt;br /&gt;
          &lt;br /&gt;
          &lt;br /&gt;
       &amp;lt;channel name=&amp;quot;Tanks&amp;quot;&amp;gt;&lt;br /&gt;
             &lt;br /&gt;
          &amp;lt;!-- Fuel flow to be divided aross a number of tanks --&amp;gt;      &lt;br /&gt;
          &amp;lt;fcs_function name=&amp;quot;fuel/flow_from_tank&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;function&amp;gt;&lt;br /&gt;
                &amp;lt;quotient&amp;gt;&lt;br /&gt;
                   &amp;lt;property&amp;gt;fuel/pump_flow_to_float-pps&amp;lt;/property&amp;gt;&lt;br /&gt;
                   &amp;lt;sum&amp;gt;&lt;br /&gt;
                      &amp;lt;property&amp;gt;fuel/tank_top_cock&amp;lt;/property&amp;gt;&lt;br /&gt;
                      &amp;lt;property&amp;gt;fuel/tank_bottom_cock&amp;lt;/property&amp;gt;&lt;br /&gt;
                   &amp;lt;/sum&amp;gt;&lt;br /&gt;
                &amp;lt;/quotient&amp;gt;               &lt;br /&gt;
             &amp;lt;/function&amp;gt;&lt;br /&gt;
             &amp;lt;output&amp;gt;fuel/flow_from_tank&amp;lt;/output&amp;gt;         &lt;br /&gt;
          &amp;lt;/fcs_function&amp;gt;         &lt;br /&gt;
&lt;br /&gt;
       &amp;lt;/channel&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
          &lt;br /&gt;
       &amp;lt;channel name=&amp;quot;Top Tank&amp;quot;&amp;gt;&lt;br /&gt;
       &lt;br /&gt;
          &amp;lt;!-- top_bottom_transfer --&amp;gt;            &lt;br /&gt;
          &amp;lt;switch name=&amp;quot;fuel/top_bottom_transfer&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                propulsion/tank[1]/contents-lbs GT 0&lt;br /&gt;
                propulsion/tank[2]/contents-lbs LT 322&lt;br /&gt;
                accelerations/Nz GE -0.5&lt;br /&gt;
             &amp;lt;/test&amp;gt;         &lt;br /&gt;
          &amp;lt;/switch&amp;gt;   &lt;br /&gt;
             &lt;br /&gt;
          &amp;lt;!-- Fuel tranfer rate in pps--&amp;gt;&lt;br /&gt;
          &amp;lt;fcs_function name=&amp;quot;fuel/top_bottom_transfer-pps&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;function&amp;gt;&lt;br /&gt;
                &amp;lt;product&amp;gt;&lt;br /&gt;
                   &amp;lt;property&amp;gt;fuel/top_bottom_transfer&amp;lt;/property&amp;gt;            &lt;br /&gt;
                   &amp;lt;sum&amp;gt;&lt;br /&gt;
                      &amp;lt;property&amp;gt;fuel/from_bottom_tank&amp;lt;/property&amp;gt;&lt;br /&gt;
                      &amp;lt;table&amp;gt;      &amp;lt;!-- Liquid finds it's own level --&amp;gt;&lt;br /&gt;
                         &amp;lt;independentVar&amp;gt;propulsion/tank[2]/contents-lbs&amp;lt;/independentVar&amp;gt;&lt;br /&gt;
                         &amp;lt;tableData&amp;gt;&lt;br /&gt;
                            319      1&lt;br /&gt;
                            322      0       &lt;br /&gt;
                         &amp;lt;/tableData&amp;gt;&lt;br /&gt;
                      &amp;lt;/table&amp;gt;&lt;br /&gt;
                   &amp;lt;/sum&amp;gt;&lt;br /&gt;
                &amp;lt;/product&amp;gt;               &lt;br /&gt;
             &amp;lt;/function&amp;gt;&lt;br /&gt;
             &amp;lt;output&amp;gt;fuel/top_bottom_transfer-pps&amp;lt;/output&amp;gt;   &lt;br /&gt;
          &amp;lt;/fcs_function&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
          &amp;lt;!-- Top Tank Fuel Flow Rate in pps --&amp;gt;         &lt;br /&gt;
          &amp;lt;switch name=&amp;quot;fuel/from_top_tank&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;fuel/flow_from_tank&amp;quot;&amp;gt;   &lt;br /&gt;
                fuel/tank_top_cock EQ 1&lt;br /&gt;
                accelerations/Nz GE -0.5   &lt;br /&gt;
             &amp;lt;/test&amp;gt;      &lt;br /&gt;
          &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;!-- Total Top Tank Fuel Flow Rate in pps --&amp;gt;         &lt;br /&gt;
          &amp;lt;summer name=&amp;quot;fuel/total_from_top_tank-pps&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-fuel/top_bottom_transfer-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-fuel/from_top_tank&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-fuel/leak_top_tank&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;output&amp;gt;propulsion/tank[1]/external-flow-rate-pps&amp;lt;/output&amp;gt;            &lt;br /&gt;
          &amp;lt;/summer&amp;gt;&lt;br /&gt;
          &lt;br /&gt;
       &amp;lt;/channel&amp;gt;&lt;br /&gt;
       &lt;br /&gt;
       &amp;lt;channel name=&amp;quot;Bottom Tank&amp;quot;&amp;gt;         &lt;br /&gt;
                &lt;br /&gt;
          &amp;lt;!-- Bottom Tank Fuel Flow Rate in pps --&amp;gt;            &lt;br /&gt;
          &amp;lt;switch name=&amp;quot;fuel/from_bottom_tank&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;default value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;test logic=&amp;quot;AND&amp;quot; value=&amp;quot;fuel/flow_from_tank&amp;quot;&amp;gt;&lt;br /&gt;
                fuel/tank_bottom_cock EQ 1&lt;br /&gt;
                accelerations/Nz GE -0.5         &lt;br /&gt;
             &amp;lt;/test&amp;gt;&lt;br /&gt;
          &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;!-- Total Bottom Tank Fuel Flow Rate in pps --&amp;gt;         &lt;br /&gt;
          &amp;lt;summer name=&amp;quot;fuel/total_from_bottom_tank-pps&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;fuel/top_bottom_transfer-pps&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-/fdm/jsbsim/fuel/priming&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-fuel/from_bottom_tank&amp;lt;/input&amp;gt;&lt;br /&gt;
             &amp;lt;input&amp;gt;-fuel/leak_bottom_tank&amp;lt;/input&amp;gt;         &lt;br /&gt;
             &amp;lt;output&amp;gt;propulsion/tank[2]/external-flow-rate-pps&amp;lt;/output&amp;gt;            &lt;br /&gt;
          &amp;lt;/summer&amp;gt;&lt;br /&gt;
          &lt;br /&gt;
       &amp;lt;/channel&amp;gt;      &lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/system&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{JSBSim}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft enhancement|Fuel system JSBSim]]&lt;br /&gt;
[[Category:Howto|Fuel system JSBSim]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Frequently_asked_questions&amp;diff=59589</id>
		<title>Frequently asked questions</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Frequently_asked_questions&amp;diff=59589"/>
		<updated>2013-04-20T07:26:26Z</updated>

		<summary type="html">&lt;p&gt;AndersM: /* Starting engine in single-engine aircraft */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Thank you for downloading [[FlightGear]]! This '''FAQ''' lists some of the most commonly asked questions. Please create a topic at [http://flightgear.org/forums our forum] if you cannot find the answer on your problem(s).&lt;br /&gt;
&lt;br /&gt;
== The FAQ ==&lt;br /&gt;
=== Where can I get the latest version of this FAQ? ===&lt;br /&gt;
http://wiki.flightgear.org/index.php/FAQ&lt;br /&gt;
&lt;br /&gt;
=== Who do I contact if I have comments about this FAQ? ===&lt;br /&gt;
Add your comment to this FAQ's [[Talk:Frequently asked questions|discussion page]].&lt;br /&gt;
&lt;br /&gt;
=== How old is this document? ===&lt;br /&gt;
Check its &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[{{fullurl:{{PAGENAME}}|action=history}} history]&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== What other important documentation should I read? ===&lt;br /&gt;
* [http://flightgear.org/Docs/getstart/getstart.html Getting Started Guide]&lt;br /&gt;
* [[New to FlightGear]]&lt;br /&gt;
* Also see the FlightGear/docs-mini/ directory in the source distribution for various other helpful documents.&lt;br /&gt;
* Also see the other [http://www.flightgear.org/Docs/FAQ.shtml FAQ]&lt;br /&gt;
&lt;br /&gt;
== Distribution ==&lt;br /&gt;
=== Where can I get FlightGear? ===&lt;br /&gt;
The official download page is http://www.flightgear.org/download/. Source code is our primary form of distribution, but precompiled binaries are available for Windows and SGI IRIX.&lt;br /&gt;
&lt;br /&gt;
Alternatively, FlightGear is packaged for Linux by SuSE, Debian and Mandrake, and can be directly installed through those distributions via any package manager.&lt;br /&gt;
&lt;br /&gt;
=== How do I install FlightGear on Ubuntu? ===&lt;br /&gt;
FlightGear 2.0.0 can be installed directly from the Synaptic Package Manager for Ubuntu 11.04 onwards. Open Synaptic Package Manager, search for FlightGear and follow instructions.&lt;br /&gt;
FlightGear 2.4.0 is available as a [http://www.getdeb.net/welcome/ GetDeb] package for Ubuntu 11.04 onwards. Install GetDeb on your Ubuntu machine and install FlightGear from [http://www.playdeb.net/updates/ubuntu/11.04/?q=flightgear PlayDeb]'s website.&lt;br /&gt;
&lt;br /&gt;
=== What is the password for the FTP server? ===&lt;br /&gt;
The FTP server uses standard anonymous login procedures. Login with the username &amp;quot;anonymous&amp;quot; and use your email address as the password. Most FTP clients and web browsers will do this automatically for you.&lt;br /&gt;
&lt;br /&gt;
=== Why won't the FTP server let me in with the right login info? ===&lt;br /&gt;
This generally means that the server is at its capacity. You should receive a message saying such, but your FTP client may be hiding it from you. Your options are to keep trying until a slot opens up or try connecting to one of our FTP mirrors listed at http://www.flightgear.org/mirrors.html.&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the latest development source code? ===&lt;br /&gt;
{{Main article|Flightgear and Git}}&lt;br /&gt;
The latest development code is available for everyone through our Git [http://gitorious.org/fg repository]. &lt;br /&gt;
&lt;br /&gt;
=== Why are the aircraft at FlightGear.org out of date? ===&lt;br /&gt;
The [http://www.flightgear.org/download/aircraft-v2-4/ official aircraft downloads] are only updated at the time of a new release of FlightGear. This is done because aircraft that are currently in development are usually developed on development/unreleased versions of FlightGear. Those development versions have lots of features that are not supported by the (older) stable release. Would we update the aircraft downloads more often; most aircraft won't work on the stable release of FlightGear.&lt;br /&gt;
&lt;br /&gt;
=== What is SimGear, and why do I need it? ===&lt;br /&gt;
[[SimGear]] is a library of supporting code. SimGear is only needed if you plan on compiling FlightGear — it is not needed to run precompiled binaries. For more information see http://www.simgear.org/. Note: When compiling FlightGear it is very important to have the matching version of SimGear.&lt;br /&gt;
&lt;br /&gt;
=== Where can I fly and where do I get the scenery? ===&lt;br /&gt;
While the base package only comes with scenery for the San Francisco Bay area, you can currently fly just about anywhere in the world. See the &amp;quot;Additional Scenery&amp;quot; section of http://www.flightgear.org/download/ for more information or go directly to our graphical downloader at  http://www.flightgear.org/Downloads/scenery-1.0.1.html&lt;br /&gt;
&lt;br /&gt;
[[Terrasync]] is an option too. It downloads the latest scenery while flying. In 2.4.0 a GUI for enabling/disabing Terrasync can be found at Environment-&amp;gt;Scenery Download.&lt;br /&gt;
&lt;br /&gt;
Also visit our &amp;quot;Places to Fly&amp;quot; section of the website (http://www.flightgear.org/places.html) for some help navigating to some awesome locations. (see also [[Installing Scenery]])&lt;br /&gt;
&lt;br /&gt;
=== Where can I get different 3D models for my plane? ===&lt;br /&gt;
Official FlightGear aircraft can be found at http://www.flightgear.org/download/aircraft-v2-4/ . Other aircraft in development can be found on [[Git]], and some other aircraft can be found on 3rd party [[FlightGear hangars]].&lt;br /&gt;
&lt;br /&gt;
=== How current is the data in FlightGear compared to the real world? ===&lt;br /&gt;
We use the same navaid and airport dataset that X-Plane uses. The current dataset can be found in the &amp;lt;tt&amp;gt;[[$FG ROOT]]/Navaids/&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;[[$FG ROOT]]/Airports/&amp;lt;/tt&amp;gt; directories. If you have updates or corrections to the dataset, see http://www.flightgear.org/Docs/AirNav/AptNavFAQ.FlightGear.html for instructions on contacting the database maintainer.&lt;br /&gt;
&lt;br /&gt;
=== Where is the moving map? ===&lt;br /&gt;
A popular moving map display is available under a separate project called [[Atlas]]. Also, [[MPmap]] is an online map for multiplayer.&lt;br /&gt;
&lt;br /&gt;
If you like an alternative to Atlas with updated graphics and mapping provided by the OpenStreetMap project, then check out Flightgear Mapping [http://rubyforge.org/projects/fgmap fgmapping] or [[JMapView]].&lt;br /&gt;
&lt;br /&gt;
=== Why don't you charge money for this? ===&lt;br /&gt;
FlightGear can be downloaded for free from many locations including the FlightGear website, but can also be bought on a CD. Although we offer that service (see the website), we encourage other groups to redistribute it for their users, especially within an operating system distribution which makes installation even faster and easier for new users.&lt;br /&gt;
&lt;br /&gt;
Occasionally you may see FlightGear for sale on auction sites or commercial websites under some other name. This can be done quite legitimately as long as the terms of the license are upheld and might be worth the cost if some value-added features such as additional scenery, aircraft or after-sale support are included. Unfortunately, most cases seen to date appear to be just someone trying to make money selling something that is free and providing no real added value.&lt;br /&gt;
&lt;br /&gt;
=== How can I get started with FlightGear ===&lt;br /&gt;
The latest release of FlightGear can be downloaded at the [http://www.flightgear.org/download/ download central], but most [[aircraft]] need to be separately downloaded [http://www.flightgear.org/download/aircraft-v2-4/ here] and installed manually. Be aware of system requirements! Also, check out [[New to FlightGear]].&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
{{main article|Building Flightgear}}&lt;br /&gt;
&lt;br /&gt;
=== Why won't FlightGear compile? ===&lt;br /&gt;
Well, that depends. First make sure you are using the appropriate versions of FlightGear, [[SimGear]], plib, zlib. If any of the packages are out of sync with the others, compilation may fail. See also [[Building FlightGear]]&lt;br /&gt;
&lt;br /&gt;
The [http://www.flightgear.org/download/ FlightGear Downloads page] should tell you what versions you need if you are trying to compile the latest stable release. If you are using a development snapshot, make sure all three packages are up-to-date.&lt;br /&gt;
&lt;br /&gt;
Also ensure that you have some implementation of OpenGL with glut support with the appropriate header files. Linux users with nVidia cards should make sure you have the latest drivers from nVidia. Other Linux users make sure you have Mesa3D (http://mesa3d.org/) and your X server installed correctly. &lt;br /&gt;
&lt;br /&gt;
If your problems persist, ask in the [http://www.flightgear.org/forums FlightGear Forums], on the [[IRC]] or subscribe to our FlightGear-Users [[mailing list]] and let us know what problem you're having.&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
=== How do I install new scenery? ===&lt;br /&gt;
{{Main article|Howto: Install scenery}}&lt;br /&gt;
The scenery archive files (ie. w100n30.tar.gz) should be untarred into the Scenery/Terrain directory in your [[$FG_ROOT]].&lt;br /&gt;
&lt;br /&gt;
=== How do I setup my joystick(s)? ===&lt;br /&gt;
{{Main article|Joystick}}&lt;br /&gt;
FlightGear should come with a helpful program called `fgjs` that can help configure your joystick. Run `fgjs` and then copy the dot file it created into your home directory or add its contents to your existing rc file.&lt;br /&gt;
&lt;br /&gt;
Also, see the &amp;lt;tt&amp;gt;[[$FG_ROOT]]/Docs/README.Joystick&amp;lt;/tt&amp;gt; file located in the FlightGear base package and the [[Joystick|joystick page]] on the wiki.&lt;br /&gt;
&lt;br /&gt;
=== What format should my personal .fgfsrc file be in? ===&lt;br /&gt;
Your .fgfsrc file should simply be a list of [[Command Line Parameters|command line options]] with one option per line. The file is not an XML file.&lt;br /&gt;
&lt;br /&gt;
If you would rather use an [[XML]] configuration file, you can add something like the following in your .fgfsrc&lt;br /&gt;
&lt;br /&gt;
 --config=/path/to/my/config.xml&lt;br /&gt;
&lt;br /&gt;
Almost every option corresponds to a property, so you can choose to use whichever method best suits your needs.&lt;br /&gt;
&lt;br /&gt;
== Running ==&lt;br /&gt;
If you get errors in the console (black window), please check [[Howto: Understand console output]] and see if your error is listed (with a solution).&lt;br /&gt;
&lt;br /&gt;
=== Unable to execute file: bin/Win32/fgrun.exe during installation ===&lt;br /&gt;
Your system is missing the MSVC runtime libraries required by FlightGear.&lt;br /&gt;
Download and install the following vcredist_x86.exe:&lt;br /&gt;
* MSVC9 for FG2.4.0 (and earlier):  http://www.microsoft.com/download/en/details.aspx?id=26368&lt;br /&gt;
* MSVC10 for FG2.6.0 (and later): http://www.microsoft.com/download/en/details.aspx?id=5555&lt;br /&gt;
&lt;br /&gt;
=== Why do I get an error loading libopenal.so.0? ===&lt;br /&gt;
With the default installation, libopenal.so.0 is installed into /usr/local/lib. You need to ensure that that path is listed in /etc/ld.so.conf, then run `ldconfig`as root.&lt;br /&gt;
&lt;br /&gt;
=== Why do I get &amp;quot;ssgInit called without a valid OpenGL context&amp;quot;? ===&lt;br /&gt;
In short, your GL libraries are broken. So far only Red Hat 7.x users have experienced this (see http://www.redhat.com/bugzilla/show_bug.cgi?id=18867). The only solutions are possibly complicated ones: you can either change distributions (most of us prefer Debian) or upgrade/downgrade your Mesa libs.&lt;br /&gt;
&lt;br /&gt;
Why do some other GL applications work though? Well, Steve Baker (Mr. PLIB) has explained this on the plib-users list (http://www.geocrawler.com/lists/3/SourceForge/1867/0/6470648/).&lt;br /&gt;
&lt;br /&gt;
=== What happened to the panel, keyboard, etc? ===&lt;br /&gt;
The problem is almost certainly that your base package is out of sync with FlightGear. Many configurable parts of FlightGear are defined in [[XML]] files contained in the base package.&lt;br /&gt;
&lt;br /&gt;
=== Why doesn't audio work properly under Irix? ===&lt;br /&gt;
FlightGear (as of June 2001) uses the Portable Libraries ([[PLIB]]) for playing audio. The audio queue implementation of PLIB is far from optimal (in fact it's just wrong). This seems to work on other platforms quite well, but Irix expects things to be programmed properly.&lt;br /&gt;
&lt;br /&gt;
There has been discussion about using OpenAL (http://www.openal.org/) for the next release of both PLIB and FlightGear. Tests show that the OpenAL audio implementation does the job right, meaning that these audio problems should be gone by then. In the mean time it is best to disable audio on Irix completely (by adding --disable-sound either on the command line or to your $HOME/.fgfsrc file).&lt;br /&gt;
&lt;br /&gt;
=== Why is FlightGear so slow? ===&lt;br /&gt;
{{Main article|Howto: Improve Framerates}}&lt;br /&gt;
FlightGear supports hardware acceleration, but it seems not to be activated. Make sure you have OpenGL libraries installed and configured properly and make sure you have the latest drivers for your video card.&lt;br /&gt;
&lt;br /&gt;
Linux users: If you are an nVidia user, follow their directions on getting your card working. For most other users, make sure Mesa is installed property and ensure that you have the appropriate kernel device drivers for your card. Most people (and distributions) use modules for their video card device drivers; run `lsmod` as root to see what modules are loaded. You should also make sure that you are loading the appropriate modules in your XF86Config and that your video device section is correct. Now try running an OpenGL application (other than FlightGear) to see how it performs. You can try the gears demo from Mesa or something like Quake3.&lt;br /&gt;
&lt;br /&gt;
=== Why is my SGI machine so slow? ===&lt;br /&gt;
First of all, one of the most common mistakes on SGI hardware is to forget to specify --fog-fastest. On most SGI machines the EXP2 shading model isn't hardware supported resulting in frame rates below 1 frame per second (fps).&lt;br /&gt;
&lt;br /&gt;
FlightGear makes extensive use of the OpenGL z-buffer feature,which on most older SGI hardware is only supported in software. This means that the CPU has to do all the z-buffer calculations in addition to the other tasks FlightGear involves (flight dynamics, scenery tracking, pushing commands into the graphics queue, etc). The following features are software rendered on low-end SGI machines (like Indy and Indigo):&lt;br /&gt;
&lt;br /&gt;
* stencil and accumulation buffer&lt;br /&gt;
* depth queuing and depth buffering&lt;br /&gt;
* fogging, lighting, clipping and transforms&lt;br /&gt;
* texturing&lt;br /&gt;
&lt;br /&gt;
This means that running FlightGear with the following options may not even get the desired result:&lt;br /&gt;
&lt;br /&gt;
 ./runfgfs --fog-disable --shading-flat --disable-skyblend  --disable-textures --disable-clouds --disable-sound --disable-panel --enable-hud --disable-anti-alias-hud&lt;br /&gt;
&lt;br /&gt;
I could even imagine that adding --enable-wireframe doesn't work on these machines (I would be happy to be proven wrong though).&lt;br /&gt;
&lt;br /&gt;
On a machine like O2 the following options give an acceptable result:&lt;br /&gt;
 ./runfgfs --fog-fastest --disable-sound&lt;br /&gt;
&lt;br /&gt;
Since I don't have access to other SGI hardware I can't tell which options would be appropriate for your situation.&lt;br /&gt;
&lt;br /&gt;
=== How do I see the Frame Rate? ===&lt;br /&gt;
On the in-sim [[menu]] select View &amp;gt; Display Options, then check the box that says &amp;quot;Show frame rate&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== How do I toggle panel settings? ===&lt;br /&gt;
There are two ways. One way is to hide the panel without the HUD showing. To hide the panel, use Shift+P; To make the HUD disappear, use H. The second way is to use the alternative HUD by Shift+I (Use I to switch back).&lt;br /&gt;
&lt;br /&gt;
=== Stuck upside down after &amp;quot;crash&amp;quot;? ===&lt;br /&gt;
In his infinite wisdom the FlightGear Grand Master decided that planes were too valuable to allow them to be destroyed by novice pilots who seemed to crash a lot. The fact that nobody has bothered to model crashes may have something to do with it too. :-)&lt;br /&gt;
&lt;br /&gt;
The result of this as you have noticed is that with a little practice an ingenuity you can trim the ship to fly inverted along the ground. The quick answer is to reset the sim, via the &amp;lt;tt&amp;gt;File &amp;gt; Reset&amp;lt;/tt&amp;gt; menu. This will place your aircraft back at its starting location.&lt;br /&gt;
&lt;br /&gt;
For the stubborn people out there: The trick to learn is to roll back to normal (non inverted) do this by nursing the elevator to get to about 500 feet or so and use the ailerons to snap roll 180*. This is all good avionics except for the plane not destroying itself. Remember the controls work in reverse when you are inverted and keep that airspeed up!!!&lt;br /&gt;
&lt;br /&gt;
=== Why does FlightGear die on startup saying &amp;quot;time zone reading failed&amp;quot;? ===&lt;br /&gt;
This is probably caused by a line-ending problem in the timezone files. Win32 users can resolve the problem by downloading a DOS to UNIX conversion utility available at http://www.nottingham.ac.uk/~eazdluf/d2u.zip. Run as `d2u *.tab` from within the timezone directory to fix your timezone files.&lt;br /&gt;
&lt;br /&gt;
=== Why won't the latest versions of some aircraft work in my (older) version of FlightGear? ===&lt;br /&gt;
Often new aircraft development keeps pace with the latest FlightGear code development. New or newly modified aircraft may rely on files (such as new instrument files) or features, only available with newer versions of FlightGear. If you are stuck with an older version of FlightGear, you can try downloading an earlier version of the aircraft at one of the archives: &lt;br /&gt;
* [http://www.flightgear.org/Downloads/aircraft-1.9.1/index.shtml Aircraft for 1.9.1]&lt;br /&gt;
* [http://flightgear.org/Downloads/aircraft-2.0.0/ Aircraft for 2.0.0]&lt;br /&gt;
* [http://ftp.riken.go.jp/pub/FreeBSD/distfiles/flightgear-aircrafts/ Aircraft from various dates]&lt;br /&gt;
&lt;br /&gt;
=== Why are my screenshots black? ===&lt;br /&gt;
Make sure you have multithreading disabled in &amp;lt;tt&amp;gt;[[$FG_ROOT]]/preferences.xml&amp;lt;/tt&amp;gt;. Enabling it currently breaks the screenshot function.&lt;br /&gt;
&lt;br /&gt;
== Flying ==&lt;br /&gt;
=== Why won't my engine(s) start? ===&lt;br /&gt;
Aircraft vary in their starting procedure. Some may have an auto-start sequence menu entry or instructions in the aircraft help menu (Press &amp;quot;?&amp;quot;) and/or at [[Aircraft|the aircraft's wiki]].&lt;br /&gt;
&lt;br /&gt;
==== Starting engine in single-engine aircraft ====&lt;br /&gt;
In general to start the engine on a piston-engine type aircraft, you need:&lt;br /&gt;
&lt;br /&gt;
# Fuel - You can run out of fuel, of course, but for certain aircraft, FlightGear may load it with no fuel, making it impossible to start the engines.  Check this in the menu &amp;lt;tt&amp;gt;Equipment &amp;gt; Fuel and Payload&amp;lt;/tt&amp;gt;.&lt;br /&gt;
# Correct mixture (generally &amp;quot;rich&amp;quot;, ie red knob all the way in)&lt;br /&gt;
# Magnetos on (R, L, or both--generally select &amp;quot;both&amp;quot;)&lt;br /&gt;
# Throttle (some engines start better with a little gas)&lt;br /&gt;
# Hold starter for sufficient time.&lt;br /&gt;
&lt;br /&gt;
You may be able to do all these functions with the standard 2-D panel or your aircraft's built-in panel. However using the standard key bindings is more reliable:&lt;br /&gt;
&lt;br /&gt;
# Press/hold &amp;quot;m&amp;quot; to set mixture to rich (m=rich, M=lean--if you are at a very high elevation you may need to set it somewhere besides full rich)&lt;br /&gt;
# Press &amp;quot;}}}&amp;quot; (three times) to set magneto to R, L, and finally &amp;quot;Both&amp;quot;.&lt;br /&gt;
# Open throttle a little.&lt;br /&gt;
# Press &amp;quot;s&amp;quot; to run the starter. For some aircraft you may have to hold &amp;quot;s&amp;quot; as long as 10 seconds before the engine starts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These instructions may not work for jet aircraft, helicopters, or other types of aircraft with complex start procedures.  Check the instructions in the aircraft help menu (Press &amp;quot;?&amp;quot;) and/or at [[Aircraft|the aircraft's wiki]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In general to start the engine on a jet engine type aircraft, you need to:&lt;br /&gt;
&lt;br /&gt;
# Set cutoff ON &lt;br /&gt;
# Engage the starter&lt;br /&gt;
# Once the engines spools up to approximately 5% N1, set cutoff OFF&lt;br /&gt;
# Disengage the starter once the engine has reached operational speed&lt;br /&gt;
&lt;br /&gt;
==== Starting engine in multi-engine aircraft ====&lt;br /&gt;
Starting all engines in a multi-engine aircraft is similar to the single engine--except you must follow the same start sequence for each and every engine.  Flightgear provides a convenient way to do this for all engines at once.&lt;br /&gt;
&lt;br /&gt;
Note that the default 2-D panel is connected to ''only one engine''. So if you try to start the engines using the 2-D panel controls you will most likely start only one engine.&lt;br /&gt;
&lt;br /&gt;
Instead, use the keyboard to start all engines at once:&lt;br /&gt;
&lt;br /&gt;
# Press &amp;quot;~&amp;quot; (select all engines)&lt;br /&gt;
# Press/hold &amp;quot;m&amp;quot; to set mixture to rich (m=rich, M=lean--if you are at a very high elevation you may need to set the mixture somewhere besides full rich)&lt;br /&gt;
# Press &amp;quot;}}}&amp;quot; (three times) to set magnetos to R, L, and finally &amp;quot;Both&amp;quot;.&lt;br /&gt;
# Open throttle a little (it now controls all engines).&lt;br /&gt;
# Press &amp;quot;s&amp;quot; to run the starter (it now runs the starter on all engines). For some aircraft you may have to hold &amp;quot;s&amp;quot; as long as 10 seconds before the engine starts.&lt;br /&gt;
# Rev the engines a little with your throttle and check your tachometers and/or visually to be sure all engines are running.&lt;br /&gt;
&lt;br /&gt;
If the engines won't start, make sure you have fuel. Some aircraft have switches to control which fuel tanks feed which engines, so check these. Make sure each engine you want to start is connected to a tank that has fuel. Check fuel tanks in the menu &amp;lt;tt&amp;gt;Equipment &amp;gt; Fuel and Payload&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
These instructions may not work for jet aircraft, helicopters, or other types of aircraft with complex start procedures.  Check the instructions in the aircraft help menu (Press &amp;quot;?&amp;quot;) and/or at [[Aircraft|the aircraft's wiki]].&lt;br /&gt;
&lt;br /&gt;
=== Where can I learn about instrument flying and navigation? ===&lt;br /&gt;
{{Main article|Understanding Navigation}}&lt;br /&gt;
* http://www.navfltsm.addr.com/ is a very good site for learning techniques for navigation.&lt;br /&gt;
* [http://www.av8n.com/how/ See How It Flies] a very nice book by John S. Denker, freely accessible online&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between Aileron and Rudder? ===&lt;br /&gt;
There is a bit of info on aileron vs. rudder in the very same book...&lt;br /&gt;
&lt;br /&gt;
=== Is there support for multi-player flying? ===&lt;br /&gt;
{{Main article|Howto: Multiplayer}}&lt;br /&gt;
Yes. Both the Windows and *nix versions of FlightGear are capable of multi-player flying on FlightGear servers.&lt;br /&gt;
&lt;br /&gt;
A map showing players aircraft online in real time is available as [[MPmap]].&lt;br /&gt;
&lt;br /&gt;
=== Where are the best places to fly in FlightGear? ===&lt;br /&gt;
FlightGear scenery covers the whole world, but thanks to the FlightGear user community, certain airports and areas are more detailed than others. For a full list of airports with buildings available in the default scenery, visit the forum's [http://flightgear.org/forums/viewtopic.php?f=5&amp;amp;t=4700&amp;amp;st=0&amp;amp;sk=t&amp;amp;sd=a|list of improved airports].&lt;br /&gt;
&lt;br /&gt;
* There are a lot of high-quality scenery models around Paris, France.&lt;br /&gt;
* EHAM Amsterdam Schiphol, EGKK London Gatwick and LFPG Paris Charles de Gaulle are some of the highest quality airports in FlightGear.&lt;br /&gt;
* TNCM St. Maarten is a popular destination, and the surrounding islands (Anguilla, St. Eustatius, Saba, St. Barthélemy, St. Kitts, and Nevis) are all well-modeled.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is a special wiki page with a list and preview of good [[Places to fly]].&lt;br /&gt;
&lt;br /&gt;
=== Where can I find airport info and aeronautical charts online? ===&lt;br /&gt;
{{Main article|Getting aeronautical charts}}&lt;br /&gt;
A world-wide database of airports and [[navaids]] can be found at [http://worldaerodata.com World Aero Data].&lt;br /&gt;
&lt;br /&gt;
Two very good US-only sources are&lt;br /&gt;
* Airports:&lt;br /&gt;
** [http://www.airnav.com/airports/ AirNav.com]&lt;br /&gt;
* Charts:&lt;br /&gt;
** [http://skyvector.com/ SkyVector.com]&lt;br /&gt;
&lt;br /&gt;
=== Is there support for any military scenarios like dog fighting or bomb dropping? ===&lt;br /&gt;
Most of our developers are primarily interested and focused on civilian aviation. We aren't explicitly excluding these features — 	we just haven't had anyone who has done much development in these areas until recently. Now there are third-party bombing scenarios for the [[A-10]] and other aircraft with armament, like the [[North American OV-10A Bronco]], [[General Dynamics F-16]] and [[F-117 Nighthawk]].&lt;br /&gt;
&lt;br /&gt;
[http://flightgear.org/forums/viewtopic.php?f=2&amp;amp;t=5742 A new add-on (9/2009)] adds support for dogfighting (including multiplayer dogfighting) and bombing scenarios.&lt;br /&gt;
&lt;br /&gt;
=== Why are my controls returning to a particular position? ===&lt;br /&gt;
There are several possibilities that can lead to this:&lt;br /&gt;
* If your aircraft's [[autopilot]] is enabled, it will take over (some of) your controls. Switch the autopilot off to regain control.&lt;br /&gt;
* Some laptops have an onboard gravity sensor, that might be detected by FlightGear as a [[joystick]]. You can set FlightGear to ignore this fake-joystick:&lt;br /&gt;
*# Get your accelerometer's name via the in-sim &amp;lt;tt&amp;gt;Help &amp;gt; Joystick Information&amp;lt;/tt&amp;gt; dialog.&lt;br /&gt;
*# Add this name to your &amp;lt;tt&amp;gt;[[$FG_ROOT]]/Input/Joysticks/Accelerometers/accelerometers.xml&amp;lt;/tt&amp;gt; file, enclosed by &amp;lt;tt&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/tt&amp;gt; tags..&lt;br /&gt;
*# Report your device name to #flightgear at [[IRC|irc.flightgear.org]], so it can be included in the &amp;quot;official&amp;quot; accelerometer.xml file.&lt;br /&gt;
&lt;br /&gt;
=== Why does my panel disappear when looking around? ===&lt;br /&gt;
2D panels are often only visible while looking in a fixed direction. At FlightGear, we prefer 3D cockpits, so most aircraft have those. The Cessna C172P is an example of an aircraft that has various variants, including a 2D and 3D one. Make sure you pick the 3D one (&amp;lt;tt&amp;gt;--aircraft=c172p&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Hacking ==&lt;br /&gt;
=== What language is FlightGear written in? ===&lt;br /&gt;
Mostly C++ with some supporting C code that's primarily contained within SimGear.&lt;br /&gt;
&lt;br /&gt;
See the [https://www.ohloh.net/p/flightgear/analyses/latest code analyses at Ohloh] for more details on the used languages:&lt;br /&gt;
* [https://www.ohloh.net/p/flightgear/analyses/latest FlightGear programm]&lt;br /&gt;
* [https://www.ohloh.net/p/flightgeardata/analyses/latest FlightGear data] (aircraft, sounds etc.)&lt;br /&gt;
&lt;br /&gt;
=== How do I design a flight dynamics model for a new aircraft? ===&lt;br /&gt;
FlightGear supports various [[flight dynamics model]]s (FDMs), but just two of them are commonly used:&lt;br /&gt;
* [[JSBSim]]: see http://jsbsim.sf.net/.&lt;br /&gt;
* [[YASim]]: if you want a simpler FDM to work with, try your hand at YASim. For a guide on creating YASim aircraft, look in the FlightGear base package for &amp;lt;tt&amp;gt;[[$FG_ROOT]]/Docs/README.yasim&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[UIUC]] is also available, but the main and most used ones are [[JSBSim]] and [[YASim]].&lt;br /&gt;
&lt;br /&gt;
=== How do I import planes from Microsoft Flight Simulator? ===&lt;br /&gt;
You can import planes by using the 3D Convert utility which will convert the MSFS 3d model to a format used by FlightGear. You have to add the animations and parts. &lt;br /&gt;
&lt;br /&gt;
Also, although you can import the 3D model and textures, the flight dynamics (the .AIR file) must be completely redone for FlightGear.&lt;br /&gt;
&lt;br /&gt;
If you wish to import a model made with gmax, you will need to convert it to .MDL format using Microsoft's MakeMDL SDK which is available at http://zone.msn.com/flightsim/FS02DevDeskSDK08.asp.&lt;br /&gt;
&lt;br /&gt;
=== How do I design or modify a panel? ===&lt;br /&gt;
See the README.xmlpanel file located in the FlightGear/docs-mini/ directory of the source distribution. &lt;br /&gt;
&lt;br /&gt;
=== How do I place objects, like buildings, into FlightGear? ===&lt;br /&gt;
{{Main article|Portal:Developer/Scenery}}&lt;br /&gt;
First, ensure that you have v0.7.7 or later, the scenery files where you plan to place the object, the actual model, and the longitude and latitude where you plan to place the object.&lt;br /&gt;
&lt;br /&gt;
Now get the altitude for your point. If you don't want to calculate this yourself, start FlightGear at your location and take note of the altitude. Here's an example command:&lt;br /&gt;
&lt;br /&gt;
 fgfs --lat=45.50 --lon=-75.73 2&amp;gt;&amp;amp;1 | tee fgfs.log&lt;br /&gt;
&lt;br /&gt;
The altitude is probably in feet, so divide the starting altitude by 3.28.&lt;br /&gt;
&lt;br /&gt;
Search the output log file for the first occurrence of the string &amp;quot;Loading tile&amp;quot; and take note of the filename. In the above example, the output line looks like:&lt;br /&gt;
&lt;br /&gt;
Loading tile /usr/local/Scenery/w080n40/w076n45/1712601&lt;br /&gt;
&lt;br /&gt;
Copy a 3D model in a format that Plib understands to the same directory as the tile file. Edit the text file in that directory consisting of the tile name with the extension &amp;quot;.stg&amp;quot;. The file will already exist if there is an airport on the tile; otherwise, you can create it from scratch. In our example, the filename is:&lt;br /&gt;
&lt;br /&gt;
 /usr/local/Scenery/w080n40/w076n45/1712601.stg&lt;br /&gt;
&lt;br /&gt;
At the end of the file, add a new entry for your object, consisting of the word &amp;quot;OBJECT_STATIC&amp;quot; followed by the model name, the longitude in degrees, the latitude in degrees, the altitude in meters, and the heading in degrees. In our example the line looks like:&lt;br /&gt;
&lt;br /&gt;
 OBJECT_STATIC Towerax.ac -75.73 45.40 60 0&lt;br /&gt;
&lt;br /&gt;
Save the changes to the .stg file, restart FlightGear, and enjoy.&lt;br /&gt;
&lt;br /&gt;
NOTE: The above information was taken from the following mailing list post: http://www.geocrawler.com/archives/3/11854/2001/6/0/5991409/. See that page if this one doesn't make sense.&lt;br /&gt;
&lt;br /&gt;
An alternative approach using PPE is described at http://mail.flightgear.org/pipermail/flightgear-devel/2001-December/002239.html by Norman Vine.&lt;br /&gt;
&lt;br /&gt;
Since Flightgear 0.9.10 there is an easy way for [[Placing 3D Objects with the UFO]].&lt;br /&gt;
&lt;br /&gt;
=== Where can I learn 3D programming and how do I get involved? ===&lt;br /&gt;
Contributing to the 2D panel doesn't require any coding at all, just a minimal knowledge of [[XML]] syntax (i.e. five minutes' worth) and good skills with drawing and/or paint programs. Every instrument on the current panel, with the partial exception of the magnetic compass, is defined entirely in XML with no custom C++ code. If you want to get started, take a look at John Check's excellent intro at &amp;lt;tt&amp;gt;[[$FG_ROOT]]/Docs/README.xmlpanel.html&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Likewise, if you want to create a 3D cockpit for FlightGear, or to create buildings, external aircraft models, etc., your help is *desperately* needed. The only rule is to go easy on the triangles -- a model with 50,000 triangles probably won't be usable in FlightGear, and one with 5,000 triangles, only marginally. If you can design a nice 3D cockpit interior for in a 3D design program such as [[AC3D]], [[Blender]] or [[PPE]] and you can write some XML code, it will be much appreciatted.&lt;br /&gt;
&lt;br /&gt;
If, on the other hand, you really want to get your hands dirty with C++ coding, you'll have to buy a good [[OpenGL]] book eventually. However, FlightGear uses [[OSG]], a high performance 3D graphics toolkit. To get started with 3D C++ coding, you can take a look at the OSG documentation and learn only as much OpenGL as you need, when you need it.&lt;br /&gt;
&lt;br /&gt;
=== How do I add an airport? ===&lt;br /&gt;
You can add your airport to the &amp;lt;tt&amp;gt;[[$FG ROOT]]/Airports/default.apt.gz&amp;lt;/tt&amp;gt; file, but to get the airport to show up visually, you will have to [[Frequently asked questions#Can I generate my own scenery?|rebuild the scenery]] around the airport. The format of the default.apt file is documented at http://www.flightgear.org/Docs/AirNav/AptNavFAQ.FlightGear.html.&lt;br /&gt;
&lt;br /&gt;
=== Can I generate my own scenery? ===&lt;br /&gt;
{{Main article|TerraGear}}&lt;br /&gt;
Yes, though it can be a difficult task. FlightGear's scenery generation is handled by a sister project, [[TerraGear]].&lt;br /&gt;
&lt;br /&gt;
[[Category:FlightGear]]&lt;br /&gt;
&lt;br /&gt;
[[de:FAQ]]&lt;br /&gt;
[[es:Preguntas frecuentes]]&lt;br /&gt;
[[fr:Foire aux questions]]&lt;br /&gt;
[[pl:FAQ]]&lt;br /&gt;
[[pt-br:Perguntas frequentes]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Frequently_asked_questions&amp;diff=59588</id>
		<title>Frequently asked questions</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Frequently_asked_questions&amp;diff=59588"/>
		<updated>2013-04-20T06:54:02Z</updated>

		<summary type="html">&lt;p&gt;AndersM: /* Starting engine in single-engine aircraft */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Thank you for downloading [[FlightGear]]! This '''FAQ''' lists some of the most commonly asked questions. Please create a topic at [http://flightgear.org/forums our forum] if you cannot find the answer on your problem(s).&lt;br /&gt;
&lt;br /&gt;
== The FAQ ==&lt;br /&gt;
=== Where can I get the latest version of this FAQ? ===&lt;br /&gt;
http://wiki.flightgear.org/index.php/FAQ&lt;br /&gt;
&lt;br /&gt;
=== Who do I contact if I have comments about this FAQ? ===&lt;br /&gt;
Add your comment to this FAQ's [[Talk:Frequently asked questions|discussion page]].&lt;br /&gt;
&lt;br /&gt;
=== How old is this document? ===&lt;br /&gt;
Check its &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[{{fullurl:{{PAGENAME}}|action=history}} history]&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== What other important documentation should I read? ===&lt;br /&gt;
* [http://flightgear.org/Docs/getstart/getstart.html Getting Started Guide]&lt;br /&gt;
* [[New to FlightGear]]&lt;br /&gt;
* Also see the FlightGear/docs-mini/ directory in the source distribution for various other helpful documents.&lt;br /&gt;
* Also see the other [http://www.flightgear.org/Docs/FAQ.shtml FAQ]&lt;br /&gt;
&lt;br /&gt;
== Distribution ==&lt;br /&gt;
=== Where can I get FlightGear? ===&lt;br /&gt;
The official download page is http://www.flightgear.org/download/. Source code is our primary form of distribution, but precompiled binaries are available for Windows and SGI IRIX.&lt;br /&gt;
&lt;br /&gt;
Alternatively, FlightGear is packaged for Linux by SuSE, Debian and Mandrake, and can be directly installed through those distributions via any package manager.&lt;br /&gt;
&lt;br /&gt;
=== How do I install FlightGear on Ubuntu? ===&lt;br /&gt;
FlightGear 2.0.0 can be installed directly from the Synaptic Package Manager for Ubuntu 11.04 onwards. Open Synaptic Package Manager, search for FlightGear and follow instructions.&lt;br /&gt;
FlightGear 2.4.0 is available as a [http://www.getdeb.net/welcome/ GetDeb] package for Ubuntu 11.04 onwards. Install GetDeb on your Ubuntu machine and install FlightGear from [http://www.playdeb.net/updates/ubuntu/11.04/?q=flightgear PlayDeb]'s website.&lt;br /&gt;
&lt;br /&gt;
=== What is the password for the FTP server? ===&lt;br /&gt;
The FTP server uses standard anonymous login procedures. Login with the username &amp;quot;anonymous&amp;quot; and use your email address as the password. Most FTP clients and web browsers will do this automatically for you.&lt;br /&gt;
&lt;br /&gt;
=== Why won't the FTP server let me in with the right login info? ===&lt;br /&gt;
This generally means that the server is at its capacity. You should receive a message saying such, but your FTP client may be hiding it from you. Your options are to keep trying until a slot opens up or try connecting to one of our FTP mirrors listed at http://www.flightgear.org/mirrors.html.&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the latest development source code? ===&lt;br /&gt;
{{Main article|Flightgear and Git}}&lt;br /&gt;
The latest development code is available for everyone through our Git [http://gitorious.org/fg repository]. &lt;br /&gt;
&lt;br /&gt;
=== Why are the aircraft at FlightGear.org out of date? ===&lt;br /&gt;
The [http://www.flightgear.org/download/aircraft-v2-4/ official aircraft downloads] are only updated at the time of a new release of FlightGear. This is done because aircraft that are currently in development are usually developed on development/unreleased versions of FlightGear. Those development versions have lots of features that are not supported by the (older) stable release. Would we update the aircraft downloads more often; most aircraft won't work on the stable release of FlightGear.&lt;br /&gt;
&lt;br /&gt;
=== What is SimGear, and why do I need it? ===&lt;br /&gt;
[[SimGear]] is a library of supporting code. SimGear is only needed if you plan on compiling FlightGear — it is not needed to run precompiled binaries. For more information see http://www.simgear.org/. Note: When compiling FlightGear it is very important to have the matching version of SimGear.&lt;br /&gt;
&lt;br /&gt;
=== Where can I fly and where do I get the scenery? ===&lt;br /&gt;
While the base package only comes with scenery for the San Francisco Bay area, you can currently fly just about anywhere in the world. See the &amp;quot;Additional Scenery&amp;quot; section of http://www.flightgear.org/download/ for more information or go directly to our graphical downloader at  http://www.flightgear.org/Downloads/scenery-1.0.1.html&lt;br /&gt;
&lt;br /&gt;
[[Terrasync]] is an option too. It downloads the latest scenery while flying. In 2.4.0 a GUI for enabling/disabing Terrasync can be found at Environment-&amp;gt;Scenery Download.&lt;br /&gt;
&lt;br /&gt;
Also visit our &amp;quot;Places to Fly&amp;quot; section of the website (http://www.flightgear.org/places.html) for some help navigating to some awesome locations. (see also [[Installing Scenery]])&lt;br /&gt;
&lt;br /&gt;
=== Where can I get different 3D models for my plane? ===&lt;br /&gt;
Official FlightGear aircraft can be found at http://www.flightgear.org/download/aircraft-v2-4/ . Other aircraft in development can be found on [[Git]], and some other aircraft can be found on 3rd party [[FlightGear hangars]].&lt;br /&gt;
&lt;br /&gt;
=== How current is the data in FlightGear compared to the real world? ===&lt;br /&gt;
We use the same navaid and airport dataset that X-Plane uses. The current dataset can be found in the &amp;lt;tt&amp;gt;[[$FG ROOT]]/Navaids/&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;[[$FG ROOT]]/Airports/&amp;lt;/tt&amp;gt; directories. If you have updates or corrections to the dataset, see http://www.flightgear.org/Docs/AirNav/AptNavFAQ.FlightGear.html for instructions on contacting the database maintainer.&lt;br /&gt;
&lt;br /&gt;
=== Where is the moving map? ===&lt;br /&gt;
A popular moving map display is available under a separate project called [[Atlas]]. Also, [[MPmap]] is an online map for multiplayer.&lt;br /&gt;
&lt;br /&gt;
If you like an alternative to Atlas with updated graphics and mapping provided by the OpenStreetMap project, then check out Flightgear Mapping [http://rubyforge.org/projects/fgmap fgmapping] or [[JMapView]].&lt;br /&gt;
&lt;br /&gt;
=== Why don't you charge money for this? ===&lt;br /&gt;
FlightGear can be downloaded for free from many locations including the FlightGear website, but can also be bought on a CD. Although we offer that service (see the website), we encourage other groups to redistribute it for their users, especially within an operating system distribution which makes installation even faster and easier for new users.&lt;br /&gt;
&lt;br /&gt;
Occasionally you may see FlightGear for sale on auction sites or commercial websites under some other name. This can be done quite legitimately as long as the terms of the license are upheld and might be worth the cost if some value-added features such as additional scenery, aircraft or after-sale support are included. Unfortunately, most cases seen to date appear to be just someone trying to make money selling something that is free and providing no real added value.&lt;br /&gt;
&lt;br /&gt;
=== How can I get started with FlightGear ===&lt;br /&gt;
The latest release of FlightGear can be downloaded at the [http://www.flightgear.org/download/ download central], but most [[aircraft]] need to be separately downloaded [http://www.flightgear.org/download/aircraft-v2-4/ here] and installed manually. Be aware of system requirements! Also, check out [[New to FlightGear]].&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
{{main article|Building Flightgear}}&lt;br /&gt;
&lt;br /&gt;
=== Why won't FlightGear compile? ===&lt;br /&gt;
Well, that depends. First make sure you are using the appropriate versions of FlightGear, [[SimGear]], plib, zlib. If any of the packages are out of sync with the others, compilation may fail. See also [[Building FlightGear]]&lt;br /&gt;
&lt;br /&gt;
The [http://www.flightgear.org/download/ FlightGear Downloads page] should tell you what versions you need if you are trying to compile the latest stable release. If you are using a development snapshot, make sure all three packages are up-to-date.&lt;br /&gt;
&lt;br /&gt;
Also ensure that you have some implementation of OpenGL with glut support with the appropriate header files. Linux users with nVidia cards should make sure you have the latest drivers from nVidia. Other Linux users make sure you have Mesa3D (http://mesa3d.org/) and your X server installed correctly. &lt;br /&gt;
&lt;br /&gt;
If your problems persist, ask in the [http://www.flightgear.org/forums FlightGear Forums], on the [[IRC]] or subscribe to our FlightGear-Users [[mailing list]] and let us know what problem you're having.&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
=== How do I install new scenery? ===&lt;br /&gt;
{{Main article|Howto: Install scenery}}&lt;br /&gt;
The scenery archive files (ie. w100n30.tar.gz) should be untarred into the Scenery/Terrain directory in your [[$FG_ROOT]].&lt;br /&gt;
&lt;br /&gt;
=== How do I setup my joystick(s)? ===&lt;br /&gt;
{{Main article|Joystick}}&lt;br /&gt;
FlightGear should come with a helpful program called `fgjs` that can help configure your joystick. Run `fgjs` and then copy the dot file it created into your home directory or add its contents to your existing rc file.&lt;br /&gt;
&lt;br /&gt;
Also, see the &amp;lt;tt&amp;gt;[[$FG_ROOT]]/Docs/README.Joystick&amp;lt;/tt&amp;gt; file located in the FlightGear base package and the [[Joystick|joystick page]] on the wiki.&lt;br /&gt;
&lt;br /&gt;
=== What format should my personal .fgfsrc file be in? ===&lt;br /&gt;
Your .fgfsrc file should simply be a list of [[Command Line Parameters|command line options]] with one option per line. The file is not an XML file.&lt;br /&gt;
&lt;br /&gt;
If you would rather use an [[XML]] configuration file, you can add something like the following in your .fgfsrc&lt;br /&gt;
&lt;br /&gt;
 --config=/path/to/my/config.xml&lt;br /&gt;
&lt;br /&gt;
Almost every option corresponds to a property, so you can choose to use whichever method best suits your needs.&lt;br /&gt;
&lt;br /&gt;
== Running ==&lt;br /&gt;
If you get errors in the console (black window), please check [[Howto: Understand console output]] and see if your error is listed (with a solution).&lt;br /&gt;
&lt;br /&gt;
=== Unable to execute file: bin/Win32/fgrun.exe during installation ===&lt;br /&gt;
Your system is missing the MSVC runtime libraries required by FlightGear.&lt;br /&gt;
Download and install the following vcredist_x86.exe:&lt;br /&gt;
* MSVC9 for FG2.4.0 (and earlier):  http://www.microsoft.com/download/en/details.aspx?id=26368&lt;br /&gt;
* MSVC10 for FG2.6.0 (and later): http://www.microsoft.com/download/en/details.aspx?id=5555&lt;br /&gt;
&lt;br /&gt;
=== Why do I get an error loading libopenal.so.0? ===&lt;br /&gt;
With the default installation, libopenal.so.0 is installed into /usr/local/lib. You need to ensure that that path is listed in /etc/ld.so.conf, then run `ldconfig`as root.&lt;br /&gt;
&lt;br /&gt;
=== Why do I get &amp;quot;ssgInit called without a valid OpenGL context&amp;quot;? ===&lt;br /&gt;
In short, your GL libraries are broken. So far only Red Hat 7.x users have experienced this (see http://www.redhat.com/bugzilla/show_bug.cgi?id=18867). The only solutions are possibly complicated ones: you can either change distributions (most of us prefer Debian) or upgrade/downgrade your Mesa libs.&lt;br /&gt;
&lt;br /&gt;
Why do some other GL applications work though? Well, Steve Baker (Mr. PLIB) has explained this on the plib-users list (http://www.geocrawler.com/lists/3/SourceForge/1867/0/6470648/).&lt;br /&gt;
&lt;br /&gt;
=== What happened to the panel, keyboard, etc? ===&lt;br /&gt;
The problem is almost certainly that your base package is out of sync with FlightGear. Many configurable parts of FlightGear are defined in [[XML]] files contained in the base package.&lt;br /&gt;
&lt;br /&gt;
=== Why doesn't audio work properly under Irix? ===&lt;br /&gt;
FlightGear (as of June 2001) uses the Portable Libraries ([[PLIB]]) for playing audio. The audio queue implementation of PLIB is far from optimal (in fact it's just wrong). This seems to work on other platforms quite well, but Irix expects things to be programmed properly.&lt;br /&gt;
&lt;br /&gt;
There has been discussion about using OpenAL (http://www.openal.org/) for the next release of both PLIB and FlightGear. Tests show that the OpenAL audio implementation does the job right, meaning that these audio problems should be gone by then. In the mean time it is best to disable audio on Irix completely (by adding --disable-sound either on the command line or to your $HOME/.fgfsrc file).&lt;br /&gt;
&lt;br /&gt;
=== Why is FlightGear so slow? ===&lt;br /&gt;
{{Main article|Howto: Improve Framerates}}&lt;br /&gt;
FlightGear supports hardware acceleration, but it seems not to be activated. Make sure you have OpenGL libraries installed and configured properly and make sure you have the latest drivers for your video card.&lt;br /&gt;
&lt;br /&gt;
Linux users: If you are an nVidia user, follow their directions on getting your card working. For most other users, make sure Mesa is installed property and ensure that you have the appropriate kernel device drivers for your card. Most people (and distributions) use modules for their video card device drivers; run `lsmod` as root to see what modules are loaded. You should also make sure that you are loading the appropriate modules in your XF86Config and that your video device section is correct. Now try running an OpenGL application (other than FlightGear) to see how it performs. You can try the gears demo from Mesa or something like Quake3.&lt;br /&gt;
&lt;br /&gt;
=== Why is my SGI machine so slow? ===&lt;br /&gt;
First of all, one of the most common mistakes on SGI hardware is to forget to specify --fog-fastest. On most SGI machines the EXP2 shading model isn't hardware supported resulting in frame rates below 1 frame per second (fps).&lt;br /&gt;
&lt;br /&gt;
FlightGear makes extensive use of the OpenGL z-buffer feature,which on most older SGI hardware is only supported in software. This means that the CPU has to do all the z-buffer calculations in addition to the other tasks FlightGear involves (flight dynamics, scenery tracking, pushing commands into the graphics queue, etc). The following features are software rendered on low-end SGI machines (like Indy and Indigo):&lt;br /&gt;
&lt;br /&gt;
* stencil and accumulation buffer&lt;br /&gt;
* depth queuing and depth buffering&lt;br /&gt;
* fogging, lighting, clipping and transforms&lt;br /&gt;
* texturing&lt;br /&gt;
&lt;br /&gt;
This means that running FlightGear with the following options may not even get the desired result:&lt;br /&gt;
&lt;br /&gt;
 ./runfgfs --fog-disable --shading-flat --disable-skyblend  --disable-textures --disable-clouds --disable-sound --disable-panel --enable-hud --disable-anti-alias-hud&lt;br /&gt;
&lt;br /&gt;
I could even imagine that adding --enable-wireframe doesn't work on these machines (I would be happy to be proven wrong though).&lt;br /&gt;
&lt;br /&gt;
On a machine like O2 the following options give an acceptable result:&lt;br /&gt;
 ./runfgfs --fog-fastest --disable-sound&lt;br /&gt;
&lt;br /&gt;
Since I don't have access to other SGI hardware I can't tell which options would be appropriate for your situation.&lt;br /&gt;
&lt;br /&gt;
=== How do I see the Frame Rate? ===&lt;br /&gt;
On the in-sim [[menu]] select View &amp;gt; Display Options, then check the box that says &amp;quot;Show frame rate&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== How do I toggle panel settings? ===&lt;br /&gt;
There are two ways. One way is to hide the panel without the HUD showing. To hide the panel, use Shift+P; To make the HUD disappear, use H. The second way is to use the alternative HUD by Shift+I (Use I to switch back).&lt;br /&gt;
&lt;br /&gt;
=== Stuck upside down after &amp;quot;crash&amp;quot;? ===&lt;br /&gt;
In his infinite wisdom the FlightGear Grand Master decided that planes were too valuable to allow them to be destroyed by novice pilots who seemed to crash a lot. The fact that nobody has bothered to model crashes may have something to do with it too. :-)&lt;br /&gt;
&lt;br /&gt;
The result of this as you have noticed is that with a little practice an ingenuity you can trim the ship to fly inverted along the ground. The quick answer is to reset the sim, via the &amp;lt;tt&amp;gt;File &amp;gt; Reset&amp;lt;/tt&amp;gt; menu. This will place your aircraft back at its starting location.&lt;br /&gt;
&lt;br /&gt;
For the stubborn people out there: The trick to learn is to roll back to normal (non inverted) do this by nursing the elevator to get to about 500 feet or so and use the ailerons to snap roll 180*. This is all good avionics except for the plane not destroying itself. Remember the controls work in reverse when you are inverted and keep that airspeed up!!!&lt;br /&gt;
&lt;br /&gt;
=== Why does FlightGear die on startup saying &amp;quot;time zone reading failed&amp;quot;? ===&lt;br /&gt;
This is probably caused by a line-ending problem in the timezone files. Win32 users can resolve the problem by downloading a DOS to UNIX conversion utility available at http://www.nottingham.ac.uk/~eazdluf/d2u.zip. Run as `d2u *.tab` from within the timezone directory to fix your timezone files.&lt;br /&gt;
&lt;br /&gt;
=== Why won't the latest versions of some aircraft work in my (older) version of FlightGear? ===&lt;br /&gt;
Often new aircraft development keeps pace with the latest FlightGear code development. New or newly modified aircraft may rely on files (such as new instrument files) or features, only available with newer versions of FlightGear. If you are stuck with an older version of FlightGear, you can try downloading an earlier version of the aircraft at one of the archives: &lt;br /&gt;
* [http://www.flightgear.org/Downloads/aircraft-1.9.1/index.shtml Aircraft for 1.9.1]&lt;br /&gt;
* [http://flightgear.org/Downloads/aircraft-2.0.0/ Aircraft for 2.0.0]&lt;br /&gt;
* [http://ftp.riken.go.jp/pub/FreeBSD/distfiles/flightgear-aircrafts/ Aircraft from various dates]&lt;br /&gt;
&lt;br /&gt;
=== Why are my screenshots black? ===&lt;br /&gt;
Make sure you have multithreading disabled in &amp;lt;tt&amp;gt;[[$FG_ROOT]]/preferences.xml&amp;lt;/tt&amp;gt;. Enabling it currently breaks the screenshot function.&lt;br /&gt;
&lt;br /&gt;
== Flying ==&lt;br /&gt;
=== Why won't my engine(s) start? ===&lt;br /&gt;
Aircraft vary in their starting procedure. Some may have an auto-start sequence menu entry or instructions in the aircraft help menu (Press &amp;quot;?&amp;quot;) and/or at [[Aircraft|the aircraft's wiki]].&lt;br /&gt;
&lt;br /&gt;
==== Starting engine in single-engine aircraft ====&lt;br /&gt;
In general to start the engine on a piston-engine type aircraft, you need:&lt;br /&gt;
&lt;br /&gt;
# Fuel - You can run out of fuel, of course, but for certain aircraft, FlightGear may load it with no fuel, making it impossible to start the engines.  Check this in the menu &amp;lt;tt&amp;gt;Equipment &amp;gt; Fuel and Payload&amp;lt;/tt&amp;gt;.&lt;br /&gt;
# Correct mixture (generally &amp;quot;rich&amp;quot;, ie red knob all the way in)&lt;br /&gt;
# Magnetos on (R, L, or both--generally select &amp;quot;both&amp;quot;)&lt;br /&gt;
# Throttle (some engines start better with a little gas)&lt;br /&gt;
# Hold starter for sufficient time.&lt;br /&gt;
&lt;br /&gt;
You may be able to do all these functions with the standard 2-D panel or your aircraft's built-in panel. However using the standard key bindings is more reliable:&lt;br /&gt;
&lt;br /&gt;
# Press/hold &amp;quot;m&amp;quot; to set mixture to rich (m=rich, M=lean--if you are at a very high elevation you may need to set it somewhere besides full rich)&lt;br /&gt;
# Press &amp;quot;}}}&amp;quot; (three times) to set magneto to R, L, and finally &amp;quot;Both&amp;quot;.&lt;br /&gt;
# Open throttle a little.&lt;br /&gt;
# Press &amp;quot;s&amp;quot; to run the starter. For some aircraft you may have to hold &amp;quot;s&amp;quot; as long as 10 seconds before the engine starts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In general to start the engine on a jet engine type aircraft, you need to:&lt;br /&gt;
&lt;br /&gt;
# Set cutoff ON &lt;br /&gt;
# Engage the starter&lt;br /&gt;
# Once the engines spools up to approximately 5% N1, set cutoff OFF&lt;br /&gt;
# Disengage the starter once the engine has reached operational speed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These instructions may not work for jet aircraft, helicopters, or other types of aircraft with complex start procedures.  Check the instructions in the aircraft help menu (Press &amp;quot;?&amp;quot;) and/or at [[Aircraft|the aircraft's wiki]].&lt;br /&gt;
&lt;br /&gt;
==== Starting engine in multi-engine aircraft ====&lt;br /&gt;
Starting all engines in a multi-engine aircraft is similar to the single engine--except you must follow the same start sequence for each and every engine.  Flightgear provides a convenient way to do this for all engines at once.&lt;br /&gt;
&lt;br /&gt;
Note that the default 2-D panel is connected to ''only one engine''. So if you try to start the engines using the 2-D panel controls you will most likely start only one engine.&lt;br /&gt;
&lt;br /&gt;
Instead, use the keyboard to start all engines at once:&lt;br /&gt;
&lt;br /&gt;
# Press &amp;quot;~&amp;quot; (select all engines)&lt;br /&gt;
# Press/hold &amp;quot;m&amp;quot; to set mixture to rich (m=rich, M=lean--if you are at a very high elevation you may need to set the mixture somewhere besides full rich)&lt;br /&gt;
# Press &amp;quot;}}}&amp;quot; (three times) to set magnetos to R, L, and finally &amp;quot;Both&amp;quot;.&lt;br /&gt;
# Open throttle a little (it now controls all engines).&lt;br /&gt;
# Press &amp;quot;s&amp;quot; to run the starter (it now runs the starter on all engines). For some aircraft you may have to hold &amp;quot;s&amp;quot; as long as 10 seconds before the engine starts.&lt;br /&gt;
# Rev the engines a little with your throttle and check your tachometers and/or visually to be sure all engines are running.&lt;br /&gt;
&lt;br /&gt;
If the engines won't start, make sure you have fuel. Some aircraft have switches to control which fuel tanks feed which engines, so check these. Make sure each engine you want to start is connected to a tank that has fuel. Check fuel tanks in the menu &amp;lt;tt&amp;gt;Equipment &amp;gt; Fuel and Payload&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
These instructions may not work for jet aircraft, helicopters, or other types of aircraft with complex start procedures.  Check the instructions in the aircraft help menu (Press &amp;quot;?&amp;quot;) and/or at [[Aircraft|the aircraft's wiki]].&lt;br /&gt;
&lt;br /&gt;
=== Where can I learn about instrument flying and navigation? ===&lt;br /&gt;
{{Main article|Understanding Navigation}}&lt;br /&gt;
* http://www.navfltsm.addr.com/ is a very good site for learning techniques for navigation.&lt;br /&gt;
* [http://www.av8n.com/how/ See How It Flies] a very nice book by John S. Denker, freely accessible online&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between Aileron and Rudder? ===&lt;br /&gt;
There is a bit of info on aileron vs. rudder in the very same book...&lt;br /&gt;
&lt;br /&gt;
=== Is there support for multi-player flying? ===&lt;br /&gt;
{{Main article|Howto: Multiplayer}}&lt;br /&gt;
Yes. Both the Windows and *nix versions of FlightGear are capable of multi-player flying on FlightGear servers.&lt;br /&gt;
&lt;br /&gt;
A map showing players aircraft online in real time is available as [[MPmap]].&lt;br /&gt;
&lt;br /&gt;
=== Where are the best places to fly in FlightGear? ===&lt;br /&gt;
FlightGear scenery covers the whole world, but thanks to the FlightGear user community, certain airports and areas are more detailed than others. For a full list of airports with buildings available in the default scenery, visit the forum's [http://flightgear.org/forums/viewtopic.php?f=5&amp;amp;t=4700&amp;amp;st=0&amp;amp;sk=t&amp;amp;sd=a|list of improved airports].&lt;br /&gt;
&lt;br /&gt;
* There are a lot of high-quality scenery models around Paris, France.&lt;br /&gt;
* EHAM Amsterdam Schiphol, EGKK London Gatwick and LFPG Paris Charles de Gaulle are some of the highest quality airports in FlightGear.&lt;br /&gt;
* TNCM St. Maarten is a popular destination, and the surrounding islands (Anguilla, St. Eustatius, Saba, St. Barthélemy, St. Kitts, and Nevis) are all well-modeled.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is a special wiki page with a list and preview of good [[Places to fly]].&lt;br /&gt;
&lt;br /&gt;
=== Where can I find airport info and aeronautical charts online? ===&lt;br /&gt;
{{Main article|Getting aeronautical charts}}&lt;br /&gt;
A world-wide database of airports and [[navaids]] can be found at [http://worldaerodata.com World Aero Data].&lt;br /&gt;
&lt;br /&gt;
Two very good US-only sources are&lt;br /&gt;
* Airports:&lt;br /&gt;
** [http://www.airnav.com/airports/ AirNav.com]&lt;br /&gt;
* Charts:&lt;br /&gt;
** [http://skyvector.com/ SkyVector.com]&lt;br /&gt;
&lt;br /&gt;
=== Is there support for any military scenarios like dog fighting or bomb dropping? ===&lt;br /&gt;
Most of our developers are primarily interested and focused on civilian aviation. We aren't explicitly excluding these features — 	we just haven't had anyone who has done much development in these areas until recently. Now there are third-party bombing scenarios for the [[A-10]] and other aircraft with armament, like the [[North American OV-10A Bronco]], [[General Dynamics F-16]] and [[F-117 Nighthawk]].&lt;br /&gt;
&lt;br /&gt;
[http://flightgear.org/forums/viewtopic.php?f=2&amp;amp;t=5742 A new add-on (9/2009)] adds support for dogfighting (including multiplayer dogfighting) and bombing scenarios.&lt;br /&gt;
&lt;br /&gt;
=== Why are my controls returning to a particular position? ===&lt;br /&gt;
There are several possibilities that can lead to this:&lt;br /&gt;
* If your aircraft's [[autopilot]] is enabled, it will take over (some of) your controls. Switch the autopilot off to regain control.&lt;br /&gt;
* Some laptops have an onboard gravity sensor, that might be detected by FlightGear as a [[joystick]]. You can set FlightGear to ignore this fake-joystick:&lt;br /&gt;
*# Get your accelerometer's name via the in-sim &amp;lt;tt&amp;gt;Help &amp;gt; Joystick Information&amp;lt;/tt&amp;gt; dialog.&lt;br /&gt;
*# Add this name to your &amp;lt;tt&amp;gt;[[$FG_ROOT]]/Input/Joysticks/Accelerometers/accelerometers.xml&amp;lt;/tt&amp;gt; file, enclosed by &amp;lt;tt&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/tt&amp;gt; tags..&lt;br /&gt;
*# Report your device name to #flightgear at [[IRC|irc.flightgear.org]], so it can be included in the &amp;quot;official&amp;quot; accelerometer.xml file.&lt;br /&gt;
&lt;br /&gt;
=== Why does my panel disappear when looking around? ===&lt;br /&gt;
2D panels are often only visible while looking in a fixed direction. At FlightGear, we prefer 3D cockpits, so most aircraft have those. The Cessna C172P is an example of an aircraft that has various variants, including a 2D and 3D one. Make sure you pick the 3D one (&amp;lt;tt&amp;gt;--aircraft=c172p&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Hacking ==&lt;br /&gt;
=== What language is FlightGear written in? ===&lt;br /&gt;
Mostly C++ with some supporting C code that's primarily contained within SimGear.&lt;br /&gt;
&lt;br /&gt;
See the [https://www.ohloh.net/p/flightgear/analyses/latest code analyses at Ohloh] for more details on the used languages:&lt;br /&gt;
* [https://www.ohloh.net/p/flightgear/analyses/latest FlightGear programm]&lt;br /&gt;
* [https://www.ohloh.net/p/flightgeardata/analyses/latest FlightGear data] (aircraft, sounds etc.)&lt;br /&gt;
&lt;br /&gt;
=== How do I design a flight dynamics model for a new aircraft? ===&lt;br /&gt;
FlightGear supports various [[flight dynamics model]]s (FDMs), but just two of them are commonly used:&lt;br /&gt;
* [[JSBSim]]: see http://jsbsim.sf.net/.&lt;br /&gt;
* [[YASim]]: if you want a simpler FDM to work with, try your hand at YASim. For a guide on creating YASim aircraft, look in the FlightGear base package for &amp;lt;tt&amp;gt;[[$FG_ROOT]]/Docs/README.yasim&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[UIUC]] is also available, but the main and most used ones are [[JSBSim]] and [[YASim]].&lt;br /&gt;
&lt;br /&gt;
=== How do I import planes from Microsoft Flight Simulator? ===&lt;br /&gt;
You can import planes by using the 3D Convert utility which will convert the MSFS 3d model to a format used by FlightGear. You have to add the animations and parts. &lt;br /&gt;
&lt;br /&gt;
Also, although you can import the 3D model and textures, the flight dynamics (the .AIR file) must be completely redone for FlightGear.&lt;br /&gt;
&lt;br /&gt;
If you wish to import a model made with gmax, you will need to convert it to .MDL format using Microsoft's MakeMDL SDK which is available at http://zone.msn.com/flightsim/FS02DevDeskSDK08.asp.&lt;br /&gt;
&lt;br /&gt;
=== How do I design or modify a panel? ===&lt;br /&gt;
See the README.xmlpanel file located in the FlightGear/docs-mini/ directory of the source distribution. &lt;br /&gt;
&lt;br /&gt;
=== How do I place objects, like buildings, into FlightGear? ===&lt;br /&gt;
{{Main article|Portal:Developer/Scenery}}&lt;br /&gt;
First, ensure that you have v0.7.7 or later, the scenery files where you plan to place the object, the actual model, and the longitude and latitude where you plan to place the object.&lt;br /&gt;
&lt;br /&gt;
Now get the altitude for your point. If you don't want to calculate this yourself, start FlightGear at your location and take note of the altitude. Here's an example command:&lt;br /&gt;
&lt;br /&gt;
 fgfs --lat=45.50 --lon=-75.73 2&amp;gt;&amp;amp;1 | tee fgfs.log&lt;br /&gt;
&lt;br /&gt;
The altitude is probably in feet, so divide the starting altitude by 3.28.&lt;br /&gt;
&lt;br /&gt;
Search the output log file for the first occurrence of the string &amp;quot;Loading tile&amp;quot; and take note of the filename. In the above example, the output line looks like:&lt;br /&gt;
&lt;br /&gt;
Loading tile /usr/local/Scenery/w080n40/w076n45/1712601&lt;br /&gt;
&lt;br /&gt;
Copy a 3D model in a format that Plib understands to the same directory as the tile file. Edit the text file in that directory consisting of the tile name with the extension &amp;quot;.stg&amp;quot;. The file will already exist if there is an airport on the tile; otherwise, you can create it from scratch. In our example, the filename is:&lt;br /&gt;
&lt;br /&gt;
 /usr/local/Scenery/w080n40/w076n45/1712601.stg&lt;br /&gt;
&lt;br /&gt;
At the end of the file, add a new entry for your object, consisting of the word &amp;quot;OBJECT_STATIC&amp;quot; followed by the model name, the longitude in degrees, the latitude in degrees, the altitude in meters, and the heading in degrees. In our example the line looks like:&lt;br /&gt;
&lt;br /&gt;
 OBJECT_STATIC Towerax.ac -75.73 45.40 60 0&lt;br /&gt;
&lt;br /&gt;
Save the changes to the .stg file, restart FlightGear, and enjoy.&lt;br /&gt;
&lt;br /&gt;
NOTE: The above information was taken from the following mailing list post: http://www.geocrawler.com/archives/3/11854/2001/6/0/5991409/. See that page if this one doesn't make sense.&lt;br /&gt;
&lt;br /&gt;
An alternative approach using PPE is described at http://mail.flightgear.org/pipermail/flightgear-devel/2001-December/002239.html by Norman Vine.&lt;br /&gt;
&lt;br /&gt;
Since Flightgear 0.9.10 there is an easy way for [[Placing 3D Objects with the UFO]].&lt;br /&gt;
&lt;br /&gt;
=== Where can I learn 3D programming and how do I get involved? ===&lt;br /&gt;
Contributing to the 2D panel doesn't require any coding at all, just a minimal knowledge of [[XML]] syntax (i.e. five minutes' worth) and good skills with drawing and/or paint programs. Every instrument on the current panel, with the partial exception of the magnetic compass, is defined entirely in XML with no custom C++ code. If you want to get started, take a look at John Check's excellent intro at &amp;lt;tt&amp;gt;[[$FG_ROOT]]/Docs/README.xmlpanel.html&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Likewise, if you want to create a 3D cockpit for FlightGear, or to create buildings, external aircraft models, etc., your help is *desperately* needed. The only rule is to go easy on the triangles -- a model with 50,000 triangles probably won't be usable in FlightGear, and one with 5,000 triangles, only marginally. If you can design a nice 3D cockpit interior for in a 3D design program such as [[AC3D]], [[Blender]] or [[PPE]] and you can write some XML code, it will be much appreciatted.&lt;br /&gt;
&lt;br /&gt;
If, on the other hand, you really want to get your hands dirty with C++ coding, you'll have to buy a good [[OpenGL]] book eventually. However, FlightGear uses [[OSG]], a high performance 3D graphics toolkit. To get started with 3D C++ coding, you can take a look at the OSG documentation and learn only as much OpenGL as you need, when you need it.&lt;br /&gt;
&lt;br /&gt;
=== How do I add an airport? ===&lt;br /&gt;
You can add your airport to the &amp;lt;tt&amp;gt;[[$FG ROOT]]/Airports/default.apt.gz&amp;lt;/tt&amp;gt; file, but to get the airport to show up visually, you will have to [[Frequently asked questions#Can I generate my own scenery?|rebuild the scenery]] around the airport. The format of the default.apt file is documented at http://www.flightgear.org/Docs/AirNav/AptNavFAQ.FlightGear.html.&lt;br /&gt;
&lt;br /&gt;
=== Can I generate my own scenery? ===&lt;br /&gt;
{{Main article|TerraGear}}&lt;br /&gt;
Yes, though it can be a difficult task. FlightGear's scenery generation is handled by a sister project, [[TerraGear]].&lt;br /&gt;
&lt;br /&gt;
[[Category:FlightGear]]&lt;br /&gt;
&lt;br /&gt;
[[de:FAQ]]&lt;br /&gt;
[[es:Preguntas frecuentes]]&lt;br /&gt;
[[fr:Foire aux questions]]&lt;br /&gt;
[[pl:FAQ]]&lt;br /&gt;
[[pt-br:Perguntas frequentes]]&lt;/div&gt;</summary>
		<author><name>AndersM</name></author>
	</entry>
</feed>