<?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=Slawekmikula</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=Slawekmikula"/>
	<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/Special:Contributions/Slawekmikula"/>
	<updated>2026-04-04T08:16:44Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Translate_FlightGear&amp;diff=130210</id>
		<title>Howto:Translate FlightGear</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Translate_FlightGear&amp;diff=130210"/>
		<updated>2021-02-09T14:21:07Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: added qt liguist image to the description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FlightGear supports localization, that is, showing the user interface in the user's native language rather than in English. &lt;br /&gt;
&lt;br /&gt;
This page will help you translate FlightGear to a new language or improve the existing translations.&lt;br /&gt;
&lt;br /&gt;
== What can be translated ==&lt;br /&gt;
The following parts of the simulator can be translated:&lt;br /&gt;
* the menus, splash screens, startup tips and the text shown when the &amp;lt;code&amp;gt;--help&amp;lt;/code&amp;gt; command-line option is used (FlightGear 2.7.0 and later)&lt;br /&gt;
* the shortcut file on Linux systems (FlightGear 2017.1 and later)&lt;br /&gt;
* the man pages (FlightGear 2017.3 and later)&lt;br /&gt;
* the built-in launcher (FlightGear 2018.3 and later)&lt;br /&gt;
&lt;br /&gt;
== How to translate ==&lt;br /&gt;
# Determine the two letter ISO 639-1 language code for the language you want to translate FlightGear to. A list can be found on the [https://www.loc.gov/standards/iso639-2/php/code_list.php Library of Congress Web site].&lt;br /&gt;
# Check whether your language already has a subdirectory below [{{fgdata url|path=Translations}} the Translations directory]. If it does not, ask on the development mailing for the empty translation files to be created for you. (It's better to do this than copying an existing translation, because of data that will be accidentally included otherwise)&lt;br /&gt;
# Open the .XLF files in the subdirectory of your language and translate the English strings in them. You can edit the .XLF files in a text editor (such as Notepad++ or GEdit) but you can also use translation tools such as Qt Linguist or any XLIFF editor. Using a structured tool is recommended because it can track the translation state (flagging untranslated strings) and most tools include helpers to partially automate the translation process. &lt;br /&gt;
# Start FlightGear to test your translation. By default, the simulator will select the locale of your operating system as the language to use; you can explicitly select a language using the command-line option &amp;lt;code&amp;gt;--language=&amp;lt;i&amp;gt;language code&amp;lt;/i&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Submit your updated .XLF files for inclusion via the development mailing list or a SourceForge merge request&lt;br /&gt;
&lt;br /&gt;
There are two XLF files in each language subdirectory : one for the core simulator strings (startup messages, command line arg help, hints) and one for the launcher. &lt;br /&gt;
&lt;br /&gt;
Note that the user interface might have not full Unicode support (some special/accented characters might not be shown): should you encounter such a location, please write to the flightgear-devel mailing list at {{Mailing list e-mail address|flightgear-devel}}.&lt;br /&gt;
&lt;br /&gt;
== How to translate the shortcut file ==&lt;br /&gt;
Open [{{flightgear url|path=package/org.flightgear.FlightGear.desktop}} the FlightGear &amp;lt;code&amp;gt;.desktop&amp;lt;/code&amp;gt; file] and translate the ''GenericName'', ''Comment'' and ''Keywords'' keys (add the ''GenericName[xx]'', ''Comment[xx]'' and ''Keywords[xx]'' keys, where ''xx'' is the two letter ISO 639-1 code of the language).&lt;br /&gt;
&lt;br /&gt;
== How to translate the man pages ==&lt;br /&gt;
# Determine the two letter ISO 639-1 language code for the language you want to translate the man pages to.&lt;br /&gt;
# Check whether your language already has a subdirectory below [{{flightgear url|path=man}} the man pages directory]. If it does not, create an empty directory in it named after the language code, then copy &amp;lt;code&amp;gt;man1&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;man5&amp;lt;/code&amp;gt; from the man pages directory to the directory of your language.&lt;br /&gt;
# Edit [{{flightgear url|path=man/CMakeLists.txt}} man/CMakeLists.txt] and add the instruction &amp;lt;code&amp;gt;add_subdirectory(xx)&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;if(NOT WIN32)&amp;lt;/code&amp;gt; block (where ''xx'' is the language code).&lt;br /&gt;
# Edit &amp;lt;code&amp;gt;man/xx/man1/CMakeLists.txt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;man/xx/man5/CMakeLists.txt&amp;lt;/code&amp;gt;: on the last row, set the installation directory (&amp;lt;code&amp;gt;DESTINATION&amp;lt;/code&amp;gt;), respectively, to &amp;lt;code&amp;gt;${CMAKE_INSTALL_MANDIR}/xx/man1&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;${CMAKE_INSTALL_MANDIR}/xx/man5&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Open the man pages in the subdirectory of your language and translate them.&lt;br /&gt;
&lt;br /&gt;
== Using QtLinguist to translate XLF Files ==&lt;br /&gt;
&lt;br /&gt;
One can use QtLinguist (application from the QT package) to translate XLIFF files. Install QT package from the Qt home page (https://www.qt.io/download). Opening QtLinguist will show default translation environment. Open XLF file and start translating. The interface is divided into four main sections:&lt;br /&gt;
&lt;br /&gt;
* Context - this is a grouping of the strings to translate. Defined by the developer. Icon beside the group show translation status. Everything should be in the end with the green check sign.&lt;br /&gt;
* Strings - strings in the selected group. Select string to translate it&lt;br /&gt;
* Sources and Forms - additional information about location of the translated string in the source code (not always visible and with correct information)&lt;br /&gt;
* Source text - the main place where translation occurs. Translate here selected strings.&lt;br /&gt;
&lt;br /&gt;
One have to translate the original strings into the target language. Icon beside the original text in the 'Strings' section will show status. Green check mark when everything is correct. Yellow question mark, when the translation is in place but it it not marked as &amp;quot;verified&amp;quot;. Untranslated strings are marked with the grey question mark. Sometimes QtLinguist displays exclamation mark - this shows that the translated text does not conform to the original text e.g. original text ends with the punctuation but the translated text not. Buttons (and keyboard shortcuts) on the main toolbar area helps with the strings matching. When the text is translated and you're comfortable with the style/meaning etc. you select green check mark button. It marks the translation as translated-verified. So this is the expected end state for this.&lt;br /&gt;
&lt;br /&gt;
[[File:Qt Linquist.png|700px|frameless]]&lt;br /&gt;
&lt;br /&gt;
Reference:&lt;br /&gt;
* [https://doc.qt.io/qt-5/qtlinguist-index.html Qt Linguist manual]&lt;br /&gt;
* [https://doc.qt.io/qt-5/linguist-translators.html Qt Linguist for translators guide] &lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
* [[Howto: Translate FlightGear Launch Control‎‎]]&lt;br /&gt;
* [[Translation requests]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|Translate FlightGear]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Qt_Linquist.png&amp;diff=130209</id>
		<title>File:Qt Linquist.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Qt_Linquist.png&amp;diff=130209"/>
		<updated>2021-02-09T14:16:32Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: Uploaded own work with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=QT Linguist main window - translating FlightGear}}&lt;br /&gt;
|date=2021-02-09&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Slawekmikula|Slawekmikula]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-4.0}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Translate_FlightGear&amp;diff=130208</id>
		<title>Howto:Translate FlightGear</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Translate_FlightGear&amp;diff=130208"/>
		<updated>2021-02-09T14:14:59Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: added information about Qt Linguist for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FlightGear supports localization, that is, showing the user interface in the user's native language rather than in English. &lt;br /&gt;
&lt;br /&gt;
This page will help you translate FlightGear to a new language or improve the existing translations.&lt;br /&gt;
&lt;br /&gt;
== What can be translated ==&lt;br /&gt;
The following parts of the simulator can be translated:&lt;br /&gt;
* the menus, splash screens, startup tips and the text shown when the &amp;lt;code&amp;gt;--help&amp;lt;/code&amp;gt; command-line option is used (FlightGear 2.7.0 and later)&lt;br /&gt;
* the shortcut file on Linux systems (FlightGear 2017.1 and later)&lt;br /&gt;
* the man pages (FlightGear 2017.3 and later)&lt;br /&gt;
* the built-in launcher (FlightGear 2018.3 and later)&lt;br /&gt;
&lt;br /&gt;
== How to translate ==&lt;br /&gt;
# Determine the two letter ISO 639-1 language code for the language you want to translate FlightGear to. A list can be found on the [https://www.loc.gov/standards/iso639-2/php/code_list.php Library of Congress Web site].&lt;br /&gt;
# Check whether your language already has a subdirectory below [{{fgdata url|path=Translations}} the Translations directory]. If it does not, ask on the development mailing for the empty translation files to be created for you. (It's better to do this than copying an existing translation, because of data that will be accidentally included otherwise)&lt;br /&gt;
# Open the .XLF files in the subdirectory of your language and translate the English strings in them. You can edit the .XLF files in a text editor (such as Notepad++ or GEdit) but you can also use translation tools such as Qt Linguist or any XLIFF editor. Using a structured tool is recommended because it can track the translation state (flagging untranslated strings) and most tools include helpers to partially automate the translation process. &lt;br /&gt;
# Start FlightGear to test your translation. By default, the simulator will select the locale of your operating system as the language to use; you can explicitly select a language using the command-line option &amp;lt;code&amp;gt;--language=&amp;lt;i&amp;gt;language code&amp;lt;/i&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Submit your updated .XLF files for inclusion via the development mailing list or a SourceForge merge request&lt;br /&gt;
&lt;br /&gt;
There are two XLF files in each language subdirectory : one for the core simulator strings (startup messages, command line arg help, hints) and one for the launcher. &lt;br /&gt;
&lt;br /&gt;
Note that the user interface might have not full Unicode support (some special/accented characters might not be shown): should you encounter such a location, please write to the flightgear-devel mailing list at {{Mailing list e-mail address|flightgear-devel}}.&lt;br /&gt;
&lt;br /&gt;
== How to translate the shortcut file ==&lt;br /&gt;
Open [{{flightgear url|path=package/org.flightgear.FlightGear.desktop}} the FlightGear &amp;lt;code&amp;gt;.desktop&amp;lt;/code&amp;gt; file] and translate the ''GenericName'', ''Comment'' and ''Keywords'' keys (add the ''GenericName[xx]'', ''Comment[xx]'' and ''Keywords[xx]'' keys, where ''xx'' is the two letter ISO 639-1 code of the language).&lt;br /&gt;
&lt;br /&gt;
== How to translate the man pages ==&lt;br /&gt;
# Determine the two letter ISO 639-1 language code for the language you want to translate the man pages to.&lt;br /&gt;
# Check whether your language already has a subdirectory below [{{flightgear url|path=man}} the man pages directory]. If it does not, create an empty directory in it named after the language code, then copy &amp;lt;code&amp;gt;man1&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;man5&amp;lt;/code&amp;gt; from the man pages directory to the directory of your language.&lt;br /&gt;
# Edit [{{flightgear url|path=man/CMakeLists.txt}} man/CMakeLists.txt] and add the instruction &amp;lt;code&amp;gt;add_subdirectory(xx)&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;if(NOT WIN32)&amp;lt;/code&amp;gt; block (where ''xx'' is the language code).&lt;br /&gt;
# Edit &amp;lt;code&amp;gt;man/xx/man1/CMakeLists.txt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;man/xx/man5/CMakeLists.txt&amp;lt;/code&amp;gt;: on the last row, set the installation directory (&amp;lt;code&amp;gt;DESTINATION&amp;lt;/code&amp;gt;), respectively, to &amp;lt;code&amp;gt;${CMAKE_INSTALL_MANDIR}/xx/man1&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;${CMAKE_INSTALL_MANDIR}/xx/man5&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Open the man pages in the subdirectory of your language and translate them.&lt;br /&gt;
&lt;br /&gt;
== Using QtLinguist to translate XLF Files ==&lt;br /&gt;
&lt;br /&gt;
One can use QtLinguist (application from the QT package) to translate XLIFF files. Install QT package from the Qt home page (https://www.qt.io/download). Opening QtLinguist will show default translation environment. Open XLF file and start translating. The interface is divided into four main sections:&lt;br /&gt;
&lt;br /&gt;
* Context - this is a grouping of the strings to translate. Defined by the developer. Icon beside the group show translation status. Everything should be in the end with the green check sign.&lt;br /&gt;
* Strings - strings in the selected group. Select string to translate it&lt;br /&gt;
* Sources and Forms - additional information about location of the translated string in the source code (not always visible and with correct information)&lt;br /&gt;
* Source text - the main place where translation occurs. Translate here selected strings.&lt;br /&gt;
&lt;br /&gt;
One have to translate the original strings into the target language. Icon beside the original text in the 'Strings' section will show status. Green check mark when everything is correct. Yellow question mark, when the translation is in place but it it not marked as &amp;quot;verified&amp;quot;. Untranslated strings are marked with the grey question mark. Sometimes QtLinguist displays exclamation mark - this shows that the translated text does not conform to the original text e.g. original text ends with the punctuation but the translated text not. Buttons (and keyboard shortcuts) on the main toolbar area helps with the strings matching. When the text is translated and you're comfortable with the style/meaning etc. you select green check mark button. It marks the translation as translated-verified. So this is the expected end state for this.&lt;br /&gt;
&lt;br /&gt;
Reference:&lt;br /&gt;
* [https://doc.qt.io/qt-5/qtlinguist-index.html Qt Linguist manual]&lt;br /&gt;
* [https://doc.qt.io/qt-5/linguist-translators.html Qt Linguist for translators guide] &lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
* [[Howto: Translate FlightGear Launch Control‎‎]]&lt;br /&gt;
* [[Translation requests]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|Translate FlightGear]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=FlightGear_as_Bluetooth_NMEA_GPS_provider&amp;diff=129775</id>
		<title>FlightGear as Bluetooth NMEA GPS provider</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=FlightGear_as_Bluetooth_NMEA_GPS_provider&amp;diff=129775"/>
		<updated>2021-01-02T22:26:07Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: added screens &amp;amp; explanation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== FlightGear as GPS position provider to other devices via Bluetooth ==&lt;br /&gt;
&lt;br /&gt;
FlightGear can act as a GPS current aircraft location provider for other software/devices via GPS/NMEA protocol. In order to do this one have to configure FlightGear to send this information and to configure host computer as a Bluetooth NMEA provider via virtual COM (rfcomm). This recipe is provided for Linux boxes.&lt;br /&gt;
&lt;br /&gt;
== Linux on the PC, Android on the mobile device ==&lt;br /&gt;
&lt;br /&gt;
This guide uses Debian Linux. Other distributions such as Ubuntu should be similar.&lt;br /&gt;
&lt;br /&gt;
Note: at the end of the guide, your Android device will believe that your PC is an external GPS unit. Hence, you can use any map application of your choice. You can also try Android software such as [https://play.google.com/store/apps/details?id=net.osmand OSMAnd], [https://play.google.com/store/apps/details?id=com.orux.oruxmaps OruxMaps] or Google Maps/Earth. Screens comes from the Avia Maps Android software [https://play.google.com/store/apps/details?id=com.mytowntonight.aviamap].&lt;br /&gt;
&lt;br /&gt;
=== Preparations (only once) ===&lt;br /&gt;
&lt;br /&gt;
* Install Air Navigation on the mobile device. This guide will use Air Navigation Pro (the paid version of Air Navigation)&lt;br /&gt;
* Install bluez on your PC, and a suitable GUI for your window manager (bluedevil for KDE, gnome-bluetooth for Gnome)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install bluez-tools bluedevil&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Switch on Bluetooth communications on your mobile device and your PC&lt;br /&gt;
* Pair your mobile and your PC, if they are not paired yet. In Android: Configuration-&amp;gt;Wireless-&amp;gt;Bluetooth settings-&amp;gt;Make device discoverable. In your PC, use a GUI such as BlueDevil (KDE) or gnome-bluetooth (Gnome) to locate and pair your device. You probably have to enter a PIN number on both devices.&lt;br /&gt;
* Install a Bluetooth GPS on your mobile device, such as [https://play.google.com/store/apps/details?id=googoo.android.btgps Bluetooth GPS] or [https://play.google.com/store/apps/details?id=com.turboirc.bgp.v1 Bluetooth GPS Provider]. Screens comes from Bluetooth GPS software.&lt;br /&gt;
* Allow mock locations in your phone: Settings-&amp;gt;Applications-&amp;gt;Development-&amp;gt;Allow mock locations. Note: for security reasons, you probably want to switch mock locations off while not using FlighGear.&lt;br /&gt;
&lt;br /&gt;
=== Setup (every time) ===&lt;br /&gt;
&lt;br /&gt;
* Switch on Bluetooth communications on your mobile device and your PC. In the Android device, switch mock locations on if they are not active (Settings-&amp;gt;Applications-&amp;gt;Development-&amp;gt;Allow mock locations)&lt;br /&gt;
* Register the PC as a GPS provider and listen to incoming communications. From the command line (the port number can be any port not in use. In this example port 23 is used, and this is usually a safe value):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sdptool add --channel 23 SP&lt;br /&gt;
sudo rfcomm listen rfcomm0 23&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Establish a connection from your mobile device to your PC: open the Bluetooth GPS application in your mobile device and connect to your PC. In the console, a &amp;quot;connection established&amp;quot; message must appear. If the mobile fails with a message similar to &amp;quot;Service Discovery failed&amp;quot;, try to reboot your mobile device. If the PC fails with a message similar to &amp;quot;not authorized&amp;quot;, check that you are running rfcomm as root (using sudo) Check if your Bluetooh GPS application sends mock locations to the system.&lt;br /&gt;
* If the connection is established, check permissions in /dev/rfcomm0 Usually, members of the group dialup are allowed to write /dev/rfcomm0. If the user running FlighGear is not in the dialup group, either add the user to the group or change the permissions of /dev/rfcomm0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo chmod 766 /dev/rfcomm0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: if necessary, the group of /dev/rfcomm0 can be set using udev rules: https://bugs.launchpad.net/ubuntu/+source/udev/+bug/374782&lt;br /&gt;
&lt;br /&gt;
* Run FlightGear using this option. If you run FlightGear from the [[FlightGear Launch Control|launcher FGRun]], you can set this option in the Advanced tabs, section &amp;quot;Input/Output&amp;quot; (Protocol: nmea, Medium: file, Direction: out, Hz: 5, File: /dev/rfcomm0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;--nmea=file,out,5,/dev/rfcomm0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Open Android navigation software or any other map application supporting mock locations and enjoy.&lt;br /&gt;
&lt;br /&gt;
Avia Maps&lt;br /&gt;
&lt;br /&gt;
[[File:Avia maps with location simulation.jpg|250px|Avia maps screen]]&lt;br /&gt;
&lt;br /&gt;
Bluetooth GPS main screen&lt;br /&gt;
&lt;br /&gt;
[[File:Bluetooth gps - main screen.jpg|250px|Bluetooth GPS main screen]]&lt;br /&gt;
&lt;br /&gt;
Bluetooth GPS configuration&lt;br /&gt;
&lt;br /&gt;
[[File:Bluetooth gps configuration (channel).jpg|250px|Bluetooth GPS configuration]]&lt;br /&gt;
&lt;br /&gt;
Bluetooth GPS channel config&lt;br /&gt;
&lt;br /&gt;
[[File:Bluetooth gps channel config.jpg|250px|Bluetooth GPS channel config]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FIXME]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Bluetooth_gps_-_main_screen.jpg&amp;diff=129774</id>
		<title>File:Bluetooth gps - main screen.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Bluetooth_gps_-_main_screen.jpg&amp;diff=129774"/>
		<updated>2021-01-02T22:23:09Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=Bluetooth GPS main screen}}&lt;br /&gt;
|date=2021-01-02 23:11:16&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Slawekmikula|Slawekmikula]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-4.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Bluetooth_gps_configuration_(channel).jpg&amp;diff=129773</id>
		<title>File:Bluetooth gps configuration (channel).jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Bluetooth_gps_configuration_(channel).jpg&amp;diff=129773"/>
		<updated>2021-01-02T22:23:09Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=Bluetooth GPS configuration}}&lt;br /&gt;
|date=2021-01-02 23:12:39&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Slawekmikula|Slawekmikula]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-4.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Bluetooth_gps_channel_config.jpg&amp;diff=129772</id>
		<title>File:Bluetooth gps channel config.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Bluetooth_gps_channel_config.jpg&amp;diff=129772"/>
		<updated>2021-01-02T22:23:08Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=Bluetooth GPS channel config}}&lt;br /&gt;
|date=2021-01-02 23:12:43&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Slawekmikula|Slawekmikula]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-4.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Avia_maps_with_location_simulation.jpg&amp;diff=129771</id>
		<title>File:Avia maps with location simulation.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Avia_maps_with_location_simulation.jpg&amp;diff=129771"/>
		<updated>2021-01-02T22:23:08Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=Avia maps screen}}&lt;br /&gt;
|date=2021-01-02 23:12:01&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Slawekmikula|Slawekmikula]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-4.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Air_Navigation_(Software)&amp;diff=129770</id>
		<title>Air Navigation (Software)</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Air_Navigation_(Software)&amp;diff=129770"/>
		<updated>2021-01-02T22:15:11Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: Slawekmikula moved page Air Navigation (Software) to FlightGear as Bluetooth NMEA GPS provider: Navigation software does not exists but the recipe for connecting FG as GPS provider is OK. Will extend it later with screens.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[FlightGear as Bluetooth NMEA GPS provider]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=FlightGear_as_Bluetooth_NMEA_GPS_provider&amp;diff=129769</id>
		<title>FlightGear as Bluetooth NMEA GPS provider</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=FlightGear_as_Bluetooth_NMEA_GPS_provider&amp;diff=129769"/>
		<updated>2021-01-02T22:15:11Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: Slawekmikula moved page Air Navigation (Software) to FlightGear as Bluetooth NMEA GPS provider: Navigation software does not exists but the recipe for connecting FG as GPS provider is OK. Will extend it later with screens.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[http://www.dixdouze.com/xample/index.php/airnavigation Air Navigation]''' is a real-time [[aircraft]] moving map navigation application for iPhone, iPad and Android by Xample. It contains free maps of the entire world as well as official IFR and VFR charts for many countries for an extra fee. It includes thousands of airports and waypoints, elevation information and features route planning and DIRECT-TO orders.&lt;br /&gt;
&lt;br /&gt;
Air Navigation was developed to be used as a support instrument for general aviation in the real world. Nevertheless, it can be linked to flight simulators. As the authors say, &amp;quot;this is a great feature for training at home when bad weather prevents real flying! Also, simulator enthusiasts can add a full moving map system to their Sim setup.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Xample provides plug-ins to connect X-Plane and Microsoft Flight Simulator to Air Navigation. This article explains how connect [[FlightGear]] to Air Navigation Pro using Bluetooth.&lt;br /&gt;
&lt;br /&gt;
== Linux on the PC, Android on the mobile device ==&lt;br /&gt;
&lt;br /&gt;
This guide uses Debian Linux. Other distributions such as Ubuntu should be similar.&lt;br /&gt;
&lt;br /&gt;
Note: at the end of the guide, your Android device will believe that your PC is an external GPS unit. Hence, you can use any map application of your choice. Air Navigation is especially focused on aircrafts during real trips so it is exactly the real thing, but you can also try cheaper alternatives such as [https://play.google.com/store/apps/details?id=net.osmand OSMAnd], [https://play.google.com/store/apps/details?id=com.orux.oruxmaps OruxMaps] or Google Maps/Earth.&lt;br /&gt;
&lt;br /&gt;
=== Preparations (only once) ===&lt;br /&gt;
&lt;br /&gt;
* Install Air Navigation on the mobile device. This guide will use Air Navigation Pro (the paid version of Air Navigation)&lt;br /&gt;
* Install bluez on your PC, and a suitable GUI for your window manager (bluedevil for KDE, gnome-bluetooth for Gnome)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install bluez-tools bluedevil&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Switch on Bluetooth communications on your mobile device and your PC&lt;br /&gt;
* Pair your mobile and your PC, if they are not paired yet. In Android: Configuration-&amp;gt;Wireless-&amp;gt;Bluetooth settings-&amp;gt;Make device discoverable. In your PC, use a GUI such as BlueDevil (KDE) or gnome-bluetooth (Gnome) to locate and pair your device. You probably have to enter a PIN number on both devices.&lt;br /&gt;
* Install a Bluetooth GPS on your mobile device, such as [https://play.google.com/store/apps/details?id=googoo.android.btgps Bluetooth GPS] or [https://play.google.com/store/apps/details?id=com.turboirc.bgp.v1 Bluetooth GPS Provider]&lt;br /&gt;
* Allow mock locations in your phone: Settings-&amp;gt;Applications-&amp;gt;Development-&amp;gt;Allow mock locations. Note: for security reasons, you probably want to switch mock locations off while not using FlighGear.&lt;br /&gt;
&lt;br /&gt;
=== Setup (every time) ===&lt;br /&gt;
&lt;br /&gt;
* Switch on Bluetooth communications on your mobile device and your PC. In the Android device, switch mock locations on if they are not active (Settings-&amp;gt;Applications-&amp;gt;Development-&amp;gt;Allow mock locations)&lt;br /&gt;
* Register the PC as a GPS provider and listen to incoming communications. From the command line (the port number can be any port not in use. In this example port 23 is used, and this is usally a safe value):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sdptool add --channel 23 SP&lt;br /&gt;
sudo rfcomm listen rfcomm0 23&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Establish a connection from your mobile device to your PC: open the Bluetooth GPS application in your mobile device and connect to your PC. In the console, a &amp;quot;connection established&amp;quot; message must appear. If the mobile fails with a message similar to &amp;quot;Service Discovery failed&amp;quot;, try to reboot your mobile device. If the PC fails with a message similar to &amp;quot;not authorized&amp;quot;, check that you are running rfcomm as root (using sudo) Check if your Bluetooh GPS application sends mock locations to the system.&lt;br /&gt;
* If the connection is established, check permissions in /dev/rfcomm0 Usually, members of the group dialup are allowed to write /dev/rfcomm0. If the user running FlighGear is not in the dialup group, either add the user to the group or change the permissions of /dev/rfcomm0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo chmod 766 /dev/rfcomm0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: if necessary, the group of /dev/rfcomm0 can be set using udev rules: https://bugs.launchpad.net/ubuntu/+source/udev/+bug/374782&lt;br /&gt;
&lt;br /&gt;
* Run FlightGear using this option. If you run FlightGear from the [[FlightGear Launch Control|launcher FGRun]], you can set this option in the Advanced tabs, section &amp;quot;Input/Output&amp;quot; (Protocol: nmea, Medium: file, Direction: out, Hz: 5, File: /dev/rfcomm0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;--nmea=file,out,5,/dev/rfcomm0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Open Air Navigation or any other map application supporting mock locations and enjoy.&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Addon&amp;diff=129758</id>
		<title>Addon</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Addon&amp;diff=129758"/>
		<updated>2021-01-02T15:53:38Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: LittleNavMap addon from experimental to working one&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Fgaddonslogo202x89.png|right]] &lt;br /&gt;
To make it easier to create '''addons''' there is since FlightGear 2017.3 a new way to create addons.  In essence FlightGear will load an overlay XML into the property tree and start a well known Nasal function.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=314620#p314620 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: New Feature: Addon - &amp;quot;API&amp;quot; &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Torsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 19th, 2017 &lt;br /&gt;
  |added  =  Jul 19th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We now have a simple way to add addons to FlightGear without the need to mess around with &amp;lt;code&amp;gt;FGData/Nasal&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;FGHome/Nasal&amp;lt;/code&amp;gt; directories.&amp;lt;ref name=&amp;quot;Forum_announcement&amp;quot;&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=314563#p314563 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; New Feature: Addon - &amp;quot;API&amp;quot; &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Torsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 18th, 2017 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{TOC limit|3}}&lt;br /&gt;
&lt;br /&gt;
== Installing and using an addon ==&lt;br /&gt;
Download and copy the addon to a directory on your computer.&lt;br /&gt;
&lt;br /&gt;
Use the command line switch &amp;lt;code&amp;gt;--addon=/path/to/some/addon&amp;lt;/code&amp;gt;.&amp;lt;ref name=&amp;quot;Forum_announcement&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an addon ==&lt;br /&gt;
There is a very simple Skeleton addon available in FGAddon to be used as a template.&amp;lt;ref name=&amp;quot;Forum_announcement&amp;quot;/&amp;gt; See {{fgaddon source|path=Addons/Skeleton}}.&lt;br /&gt;
&lt;br /&gt;
A leading slash (&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;) in this section indicates the base directory of the directory structure of the addon.&lt;br /&gt;
&lt;br /&gt;
=== Minimum configuration ===&lt;br /&gt;
An addon may be installed in a directory anywhere on your hard disk and need at least two files:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/addon-config.xml&amp;lt;/code&amp;gt; - A standard [[PropertyList XML files|PropertyList XML file]] to be used to populate or modify the [[property tree]]. (Same as to be used in &amp;lt;code&amp;gt;--config=foo.xml&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;/addon-main.nas&amp;lt;/code&amp;gt; - The Nasal hook for the logic. This file needs a function called &amp;lt;code&amp;gt;main()&amp;lt;/code&amp;gt; which will be called from the global addon initializer (&amp;lt;code&amp;gt;addons.nas&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Additional common files ===&lt;br /&gt;
* &amp;lt;code&amp;gt;/addon-metadata.xml&amp;lt;/code&amp;gt; - A PropertyList XML file with metadata about the addon it.&lt;br /&gt;
* &amp;lt;code&amp;gt;/addon-menubar-items.xml&amp;lt;/code&amp;gt; - A PropertyList XML file describing menus to be added to the FlightGear menu bar.&lt;br /&gt;
* &amp;lt;code&amp;gt;/gui/dialogs/&amp;amp;lt;my-foobar-dialog&amp;amp;gt;.xml&amp;lt;/code&amp;gt; - PropertyList XML files to create custom dialogs.&lt;br /&gt;
&lt;br /&gt;
=== Good to know ===&lt;br /&gt;
The new addon mechanism lets you add a &amp;lt;code&amp;gt;addon-config.xml&amp;lt;/code&amp;gt; to override the settings in &amp;lt;code&amp;gt;defaults.xml&amp;lt;/code&amp;gt; and other files.&lt;br /&gt;
&lt;br /&gt;
That will allow an addon to&lt;br /&gt;
*  Override key bindings (as in the spoken ATC addon)&lt;br /&gt;
*  Add or override autopilots and property rules&lt;br /&gt;
*  Introduce XML state machines&lt;br /&gt;
&lt;br /&gt;
Unless your really want to add/change/remove those at runtime, this should cater for most use cases.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=314902#p314902 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Spoken  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Torsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 23rd, 2017 &lt;br /&gt;
  |added  =  Jul 23rd, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We have some instructions how to use SVN [[FGAddon|in our wiki]]. It covers mostly aircraft development but the workflow is pretty much the same for addons.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=314647#p314647 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Spoken ATC &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Torsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 19th, 2017 &lt;br /&gt;
  |added  =  Jul 19th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Addon initialization ==&lt;br /&gt;
On initialization fgfs takes care of:&lt;br /&gt;
* Through {{flightgear source|path=src/Main/options.cxx|text=&amp;lt;code&amp;gt;options.cxx&amp;lt;/code&amp;gt;}}:&amp;lt;ref name=&amp;quot;Forum_announcement&amp;quot;/&amp;gt;&lt;br /&gt;
** Creating a property under &amp;lt;code&amp;gt;/addons/addon[n]/path=/path/to/some/addon&amp;lt;/code&amp;gt;&lt;br /&gt;
** Loading &amp;lt;code&amp;gt;/path/to/some/addon/addon-config.xml&amp;lt;/code&amp;gt; into the property tree (same as &amp;lt;code&amp;gt;--config=/path/to/some/addon/addon-config.xml&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Adding &amp;lt;code&amp;gt;/path/to/some/addon&amp;lt;/code&amp;gt; to the list of allowed directories (same as &amp;lt;code&amp;gt;--fg-aircraft=/path/to/some/addon&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Through {{fgdata source|path=Nasal/addons.nas|text=&amp;lt;code&amp;gt;addons.nas&amp;lt;/code&amp;gt;}}:&lt;br /&gt;
** Loading &amp;lt;code&amp;gt;/foo/bar/baz/addon-main.nas&amp;lt;/code&amp;gt; into namespace &amp;lt;code&amp;gt;__addon[ADDON_ID]__&amp;lt;/code&amp;gt;&lt;br /&gt;
** Calling &amp;lt;code&amp;gt;main(addonGhost)&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;/foo/bar/baz/addon-main.nas&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== APIs ==&lt;br /&gt;
{{hatnote|For more details about these APIs, see the readme file, {{readme file|add-ons}}.}}&lt;br /&gt;
=== C++ API ===&lt;br /&gt;
There is a C++ API on FlightGear's side that handle some on the addon related tasks manly through the &amp;lt;code&amp;gt;AddonManager()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Addon()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;AddonVersion()&amp;lt;/code&amp;gt; classes.&lt;br /&gt;
&lt;br /&gt;
=== Nasal API ===&lt;br /&gt;
The Nasal add-on API lives in the 'addons' namespace and can for example do queries to &amp;lt;code&amp;gt;AddonManager()&amp;lt;/code&amp;gt; and read data from &amp;lt;code&amp;gt;addons.Addon&amp;lt;/code&amp;gt; objects.  It can for example compare addon versions if there is dependencies.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
{{See also|Howto:Creating a simple modding framework}}&lt;br /&gt;
&lt;br /&gt;
ATC chatter was removed in 2015, see fgdata commit: [https://sourceforge.net/p/flightgear/fgdata/ci/81607f734e13add9be02816ddaec305d05bc4e47/ 81607f734e13add9be02816ddaec305d05bc4e47]&lt;br /&gt;
&lt;br /&gt;
And the devel list messages referenced in the commit log.&lt;br /&gt;
the other relevant commit is this: b60736ba7add2a7cd39af3d8a974d5be3ea46e8b&lt;br /&gt;
It would not be very difficult to restore this functionality, or even generalize/improve it significantly (which was the scope of the original discussion on the devel list)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=288388#p288388 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Whatever happened to radom radio  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Hooray &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jun 11th, 2016 &lt;br /&gt;
  |added  =  Jun 11th, 2016 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The restored functionality could be distributed as a tarball that is extracted into $FG_ROOT - alternatively, into $FG_HOME, because Nasal files there are treated as overlays, which basically means that you can install user-specific extensions there without having to tamper with $FG_ROOT, it would only take  very minor changes to turn the chatter feature into a corresponding &amp;quot;addon&amp;quot; - not unlike fgcamera ...&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=288392#p288392 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Whatever happened to radom radio  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Hooray &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jun 11th, 2016 &lt;br /&gt;
  |added  =  Jun 11th, 2016 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We should absolutely stop telling anyone to edit preferences.xml in FG_ROOT; any documentation or advice which says to should be changes ASAP. &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=192632#p192632 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: NavCache:init failed:Sqlite error:Sqlite API abuse &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; zakalawe &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Oct 26th, 2013 &lt;br /&gt;
  |added  =  Oct 26th, 2013 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As of 12/2017, the addon API is in the process of being significantly updated &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/36146017/&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/36150159/&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/36150444/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== List of Addons ==&lt;br /&gt;
You can find the official repository at {{fgaddon source|path=Addons}}&lt;br /&gt;
&lt;br /&gt;
* ATC Chatter (ported by Torsten) {{progressbar|100}}&lt;br /&gt;
* [[Cargo Towing Addon]] &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?t=36824&lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Cargo Towing Addon &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Wayne Bragg (wlbragg) &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  &lt;br /&gt;
  |added  =  &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* cockpit-view (work in progress by wkitty42)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=316498#p316498 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re:  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; wkitty42 &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 13th, 2017 &lt;br /&gt;
  |added  =  Aug 13th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Earthview#Customization]] - High resolution customization&lt;br /&gt;
* [[FaceTrackNoIR]] (ported by HHS)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/36454826/&lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re:  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Unknown, HHS&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  |date   =  Nov 1th, 2018 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt; - An addon to interface this [[Head tracking|head tracker]] with FlightGear&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-fgcamera FGCamera] - ([https://github.com/slawekmikula/flightgear-addon-fgcamera/blob/master/Docs/manual.md manual]) - [[FGCamera | Wiki Page]]&lt;br /&gt;
* [[FGPlot]]&lt;br /&gt;
* [[Ground Services]] (ported by ThomasS)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=316400#p316400 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re:  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; ThomasS &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 12th, 2017 &lt;br /&gt;
  |added  =  Aug 12th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Landing Rate addon]] [https://forum.flightgear.org/viewtopic.php?f=6&amp;amp;t=33101&amp;amp;p=327787#p327787]&lt;br /&gt;
* [https://gitlab.com/mdanil/flightgear-hax mdanilov hax!]: landing evaluation and aircraft development tools, TerraSync toggler&lt;br /&gt;
* [[Model Cockpit View]] &lt;br /&gt;
* [[Oscilloscope addon]] - Allows displaying a property of Nasal function over time&lt;br /&gt;
* [[PAR instrument]] - Precision Approach Radar and Ground Controlled Approach&lt;br /&gt;
* [[Red Griffin ATC]] - Speaking Air Traffic Controller&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?f=6&amp;amp;t=36755 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re:  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; RedGriffin &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jan 6th, 2020 &lt;br /&gt;
  |added  =  Jan 6th, 2020 &lt;br /&gt;
  |script_version = 1.0.0 RC2 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Spoken ATC]] (ported by Torsten)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=314095#p314095 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re:  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Torsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 10th, 2017 &lt;br /&gt;
  |added  =  Jul 10th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Spoken GCA]] - An offline ground controlled approach (GCA) addon&lt;br /&gt;
* [[YASim Development Tools]] (by jsb)&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-vfrflight VFRFlight integration] - ([https://github.com/slawekmikula/flightgear-addon-vfrflight/blob/master/doc/manual.md manual])&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-protocolkml KML Exporter (Google Earth)] - ([https://github.com/slawekmikula/flightgear-addon-protocolkml/blob/master/doc/manual.md manual])&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-vfrnavigator VFR Flying Helper] - ([https://github.com/slawekmikula/flightgear-addon-vfrnavigator/blob/master/doc/usage.md manual])&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-linuxtrack LinuxTrack Head Tracker integration] - ([https://github.com/slawekmikula/flightgear-addon-linuxtrack/blob/master/doc/manual.md manual])&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-hudheli Additional Heli HUD's] - ([https://github.com/slawekmikula/flightgear-addon-hudheli/blob/master/doc/manual.md manual]) - encapsulation of HeliHUD package as an addon&lt;br /&gt;
* [https://gitlab.com/mdanil/flightgear-mickey Tiny HUD for mouse flying in FlightGear] - Visual feedback for mouse flying, to make up for mouse's lack of self-centering&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-littlenavmap LittleNavMap integration] - ([https://github.com/slawekmikula/flightgear-addon-littlenavmap/blob/master/doc/manual.md manual])&lt;br /&gt;
&lt;br /&gt;
== Experimental Addons ==&lt;br /&gt;
&lt;br /&gt;
Addons which are in the development stage/unfinished but can be used as a quick view of addon functionality&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-missions FlightGear Missions addon] - Add-on for missions/adventures code&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
=== Hooking into features using legacy OpenGL code ===&lt;br /&gt;
{{See also|Unifying the 2D rendering backend via canvas}}&lt;br /&gt;
In 09/2018, James suggested that legacy features using raw OpenGL calls (e.g. HUD/2D panels) could be easily replaced via scripted Canvas/Nasal solutions at the mere cost of providing a mechanism to hook into the legacy code implementing these features (namely, the HUD/instrumentation subsystems) &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/36399261/&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/36399261/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Catalog &amp;amp; Package Manager support ===&lt;br /&gt;
if this works with more complex, pre-existing addons such as [[Bombable]], where the file layout is a replica of the old FGData layout, these types of mature addons might be better as SourceForge FlightGear sub-projects rather than being copied into FGAddon. Maybe the config file and nasal script could be used to automate the installation process ?&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35953179/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] Simple API for creating FlightGear&lt;br /&gt;
 addons/plugins &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Edward d'Auvergne &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 19th, 2017 &lt;br /&gt;
  |added  =  Jul 19th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
The [[Bombable]] addon is one of the most popular addons out there, and a large number of aircraft in FGAddon have bombable support, so it is worth not forgetting about. Especially if the addon system one day becomes automated through a [[Catalog metadata|catalog.xml type system]]&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35953650/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] Simple API for creating FlightGear&lt;br /&gt;
 addons/plugins &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Edward d'Auvergne &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 19th, 2017 &lt;br /&gt;
  |added  =  Jul 19th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{Appendix}}&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
=== Wiki articles ===&lt;br /&gt;
* [[FlightGear configuration via XML]]&lt;br /&gt;
* [[FlightGear configuration via XML#preferences.xml]]&lt;br /&gt;
* [[Nasal]]&lt;br /&gt;
* [[Property tree]]&lt;br /&gt;
* [[Properties persistent between sessions]]&lt;br /&gt;
* [[PropertyList XML File]]&lt;br /&gt;
&lt;br /&gt;
=== Forum topics ===&lt;br /&gt;
* {{forum link|t=32561|title=New Feature: Addon - &amp;quot;API&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== Readme files ===&lt;br /&gt;
* {{readme file|add-ons}}&lt;br /&gt;
* {{readme file|gui}} - Details on how to add menus and custom dialogs.&lt;br /&gt;
&lt;br /&gt;
=== Source code ===&lt;br /&gt;
==== FGAddon ====&lt;br /&gt;
* {{fgaddon source|path=Addons/Skeleton}} - Skeleton addon to be used as a template.&lt;br /&gt;
&lt;br /&gt;
==== FGData ====&lt;br /&gt;
* {{fgdata source|path=Nasal/addons.nas}}&lt;br /&gt;
&lt;br /&gt;
==== FlightGear ====&lt;br /&gt;
* {{flightgear source|path=src/Main/options.cxx}}&lt;br /&gt;
* {{flightgear source|path=src/Add-ons/}}&lt;br /&gt;
&lt;br /&gt;
[[Category:FlightGear addons| ]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Addon&amp;diff=129715</id>
		<title>Addon</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Addon&amp;diff=129715"/>
		<updated>2020-12-29T18:15:51Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: /* List of Addons */ added flightgear-mickey addon to the list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Fgaddonslogo202x89.png|right]] &lt;br /&gt;
To make it easier to create '''addons''' there is since FlightGear 2017.3 a new way to create addons.  In essence FlightGear will load an overlay XML into the property tree and start a well known Nasal function.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=314620#p314620 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: New Feature: Addon - &amp;quot;API&amp;quot; &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Torsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 19th, 2017 &lt;br /&gt;
  |added  =  Jul 19th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We now have a simple way to add addons to FlightGear without the need to mess around with &amp;lt;code&amp;gt;FGData/Nasal&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;FGHome/Nasal&amp;lt;/code&amp;gt; directories.&amp;lt;ref name=&amp;quot;Forum_announcement&amp;quot;&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=314563#p314563 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; New Feature: Addon - &amp;quot;API&amp;quot; &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Torsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 18th, 2017 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{TOC limit|3}}&lt;br /&gt;
&lt;br /&gt;
== Installing and using an addon ==&lt;br /&gt;
Download and copy the addon to a directory on your computer.&lt;br /&gt;
&lt;br /&gt;
Use the command line switch &amp;lt;code&amp;gt;--addon=/path/to/some/addon&amp;lt;/code&amp;gt;.&amp;lt;ref name=&amp;quot;Forum_announcement&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an addon ==&lt;br /&gt;
There is a very simple Skeleton addon available in FGAddon to be used as a template.&amp;lt;ref name=&amp;quot;Forum_announcement&amp;quot;/&amp;gt; See {{fgaddon source|path=Addons/Skeleton}}.&lt;br /&gt;
&lt;br /&gt;
A leading slash (&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;) in this section indicates the base directory of the directory structure of the addon.&lt;br /&gt;
&lt;br /&gt;
=== Minimum configuration ===&lt;br /&gt;
An addon may be installed in a directory anywhere on your hard disk and need at least two files:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/addon-config.xml&amp;lt;/code&amp;gt; - A standard [[PropertyList XML files|PropertyList XML file]] to be used to populate or modify the [[property tree]]. (Same as to be used in &amp;lt;code&amp;gt;--config=foo.xml&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;/addon-main.nas&amp;lt;/code&amp;gt; - The Nasal hook for the logic. This file needs a function called &amp;lt;code&amp;gt;main()&amp;lt;/code&amp;gt; which will be called from the global addon initializer (&amp;lt;code&amp;gt;addons.nas&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Additional common files ===&lt;br /&gt;
* &amp;lt;code&amp;gt;/addon-metadata.xml&amp;lt;/code&amp;gt; - A PropertyList XML file with metadata about the addon it.&lt;br /&gt;
* &amp;lt;code&amp;gt;/addon-menubar-items.xml&amp;lt;/code&amp;gt; - A PropertyList XML file describing menus to be added to the FlightGear menu bar.&lt;br /&gt;
* &amp;lt;code&amp;gt;/gui/dialogs/&amp;amp;lt;my-foobar-dialog&amp;amp;gt;.xml&amp;lt;/code&amp;gt; - PropertyList XML files to create custom dialogs.&lt;br /&gt;
&lt;br /&gt;
=== Good to know ===&lt;br /&gt;
The new addon mechanism lets you add a &amp;lt;code&amp;gt;addon-config.xml&amp;lt;/code&amp;gt; to override the settings in &amp;lt;code&amp;gt;defaults.xml&amp;lt;/code&amp;gt; and other files.&lt;br /&gt;
&lt;br /&gt;
That will allow an addon to&lt;br /&gt;
*  Override key bindings (as in the spoken ATC addon)&lt;br /&gt;
*  Add or override autopilots and property rules&lt;br /&gt;
*  Introduce XML state machines&lt;br /&gt;
&lt;br /&gt;
Unless your really want to add/change/remove those at runtime, this should cater for most use cases.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=314902#p314902 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Spoken  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Torsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 23rd, 2017 &lt;br /&gt;
  |added  =  Jul 23rd, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We have some instructions how to use SVN [[FGAddon|in our wiki]]. It covers mostly aircraft development but the workflow is pretty much the same for addons.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=314647#p314647 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Spoken ATC &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Torsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 19th, 2017 &lt;br /&gt;
  |added  =  Jul 19th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Addon initialization ==&lt;br /&gt;
On initialization fgfs takes care of:&lt;br /&gt;
* Through {{flightgear source|path=src/Main/options.cxx|text=&amp;lt;code&amp;gt;options.cxx&amp;lt;/code&amp;gt;}}:&amp;lt;ref name=&amp;quot;Forum_announcement&amp;quot;/&amp;gt;&lt;br /&gt;
** Creating a property under &amp;lt;code&amp;gt;/addons/addon[n]/path=/path/to/some/addon&amp;lt;/code&amp;gt;&lt;br /&gt;
** Loading &amp;lt;code&amp;gt;/path/to/some/addon/addon-config.xml&amp;lt;/code&amp;gt; into the property tree (same as &amp;lt;code&amp;gt;--config=/path/to/some/addon/addon-config.xml&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Adding &amp;lt;code&amp;gt;/path/to/some/addon&amp;lt;/code&amp;gt; to the list of allowed directories (same as &amp;lt;code&amp;gt;--fg-aircraft=/path/to/some/addon&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Through {{fgdata source|path=Nasal/addons.nas|text=&amp;lt;code&amp;gt;addons.nas&amp;lt;/code&amp;gt;}}:&lt;br /&gt;
** Loading &amp;lt;code&amp;gt;/foo/bar/baz/addon-main.nas&amp;lt;/code&amp;gt; into namespace &amp;lt;code&amp;gt;__addon[ADDON_ID]__&amp;lt;/code&amp;gt;&lt;br /&gt;
** Calling &amp;lt;code&amp;gt;main(addonGhost)&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;/foo/bar/baz/addon-main.nas&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== APIs ==&lt;br /&gt;
{{hatnote|For more details about these APIs, see the readme file, {{readme file|add-ons}}.}}&lt;br /&gt;
=== C++ API ===&lt;br /&gt;
There is a C++ API on FlightGear's side that handle some on the addon related tasks manly through the &amp;lt;code&amp;gt;AddonManager()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Addon()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;AddonVersion()&amp;lt;/code&amp;gt; classes.&lt;br /&gt;
&lt;br /&gt;
=== Nasal API ===&lt;br /&gt;
The Nasal add-on API lives in the 'addons' namespace and can for example do queries to &amp;lt;code&amp;gt;AddonManager()&amp;lt;/code&amp;gt; and read data from &amp;lt;code&amp;gt;addons.Addon&amp;lt;/code&amp;gt; objects.  It can for example compare addon versions if there is dependencies.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
{{See also|Howto:Creating a simple modding framework}}&lt;br /&gt;
&lt;br /&gt;
ATC chatter was removed in 2015, see fgdata commit: [https://sourceforge.net/p/flightgear/fgdata/ci/81607f734e13add9be02816ddaec305d05bc4e47/ 81607f734e13add9be02816ddaec305d05bc4e47]&lt;br /&gt;
&lt;br /&gt;
And the devel list messages referenced in the commit log.&lt;br /&gt;
the other relevant commit is this: b60736ba7add2a7cd39af3d8a974d5be3ea46e8b&lt;br /&gt;
It would not be very difficult to restore this functionality, or even generalize/improve it significantly (which was the scope of the original discussion on the devel list)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=288388#p288388 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Whatever happened to radom radio  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Hooray &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jun 11th, 2016 &lt;br /&gt;
  |added  =  Jun 11th, 2016 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The restored functionality could be distributed as a tarball that is extracted into $FG_ROOT - alternatively, into $FG_HOME, because Nasal files there are treated as overlays, which basically means that you can install user-specific extensions there without having to tamper with $FG_ROOT, it would only take  very minor changes to turn the chatter feature into a corresponding &amp;quot;addon&amp;quot; - not unlike fgcamera ...&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=288392#p288392 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Whatever happened to radom radio  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Hooray &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jun 11th, 2016 &lt;br /&gt;
  |added  =  Jun 11th, 2016 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We should absolutely stop telling anyone to edit preferences.xml in FG_ROOT; any documentation or advice which says to should be changes ASAP. &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=192632#p192632 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: NavCache:init failed:Sqlite error:Sqlite API abuse &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; zakalawe &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Oct 26th, 2013 &lt;br /&gt;
  |added  =  Oct 26th, 2013 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As of 12/2017, the addon API is in the process of being significantly updated &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/36146017/&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/36150159/&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/36150444/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== List of Addons ==&lt;br /&gt;
You can find the official repository at {{fgaddon source|path=Addons}}&lt;br /&gt;
&lt;br /&gt;
* ATC Chatter (ported by Torsten) {{progressbar|100}}&lt;br /&gt;
* [[Cargo Towing Addon]] &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?t=36824&lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Cargo Towing Addon &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Wayne Bragg (wlbragg) &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  &lt;br /&gt;
  |added  =  &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* cockpit-view (work in progress by wkitty42)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=316498#p316498 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re:  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; wkitty42 &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 13th, 2017 &lt;br /&gt;
  |added  =  Aug 13th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Earthview#Customization]] - High resolution customization&lt;br /&gt;
* [[FaceTrackNoIR]] (ported by HHS)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/36454826/&lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re:  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Unknown, HHS&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  |date   =  Nov 1th, 2018 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt; - An addon to interface this [[Head tracking|head tracker]] with FlightGear&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-fgcamera FGCamera] - ([https://github.com/slawekmikula/flightgear-addon-fgcamera/blob/master/Docs/manual.md manual]) - [[FGCamera | Wiki Page]]&lt;br /&gt;
* [[FGPlot]]&lt;br /&gt;
* [[Ground Services]] (ported by ThomasS)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=316400#p316400 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re:  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; ThomasS &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 12th, 2017 &lt;br /&gt;
  |added  =  Aug 12th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Landing Rate addon]] [https://forum.flightgear.org/viewtopic.php?f=6&amp;amp;t=33101&amp;amp;p=327787#p327787]&lt;br /&gt;
* [https://gitlab.com/mdanil/flightgear-hax mdanilov hax!]: landing evaluation and aircraft development tools, TerraSync toggler&lt;br /&gt;
* [[Model Cockpit View]] &lt;br /&gt;
* [[Oscilloscope addon]] - Allows displaying a property of Nasal function over time&lt;br /&gt;
* [[PAR instrument]] - Precision Approach Radar and Ground Controlled Approach&lt;br /&gt;
* [[Red Griffin ATC]] - Speaking Air Traffic Controller&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?f=6&amp;amp;t=36755 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re:  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; RedGriffin &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jan 6th, 2020 &lt;br /&gt;
  |added  =  Jan 6th, 2020 &lt;br /&gt;
  |script_version = 1.0.0 RC2 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Spoken ATC]] (ported by Torsten)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=314095#p314095 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re:  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Torsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 10th, 2017 &lt;br /&gt;
  |added  =  Jul 10th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Spoken GCA]] - An offline ground controlled approach (GCA) addon&lt;br /&gt;
* [[YASim Development Tools]] (by jsb)&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-vfrflight VFRFlight integration] - ([https://github.com/slawekmikula/flightgear-addon-vfrflight/blob/master/doc/manual.md manual])&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-protocolkml KML Exporter (Google Earth)] - ([https://github.com/slawekmikula/flightgear-addon-protocolkml/blob/master/doc/manual.md manual])&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-vfrnavigator VFR Flying Helper] - ([https://github.com/slawekmikula/flightgear-addon-vfrnavigator/blob/master/doc/usage.md manual])&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-linuxtrack LinuxTrack Head Tracker integration] - ([https://github.com/slawekmikula/flightgear-addon-linuxtrack/blob/master/doc/manual.md manual])&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-hudheli Additional Heli HUD's] - ([https://github.com/slawekmikula/flightgear-addon-hudheli/blob/master/doc/manual.md manual]) - encapsulation of HeliHUD package as an addon&lt;br /&gt;
* [https://gitlab.com/mdanil/flightgear-mickey Tiny HUD for mouse flying in FlightGear] - Visual feedback for mouse flying, to make up for mouse's lack of self-centering&lt;br /&gt;
&lt;br /&gt;
== Experimental Addons ==&lt;br /&gt;
&lt;br /&gt;
Addons which are in the development stage/unfinished but can be used as a quick view of addon functionality&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-littlenavmap LittleNavMap integration] - ([https://github.com/slawekmikula/flightgear-addon-littlenavmap/blob/master/doc/manual.md manual])&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-missions FlightGear Missions addon] - Add-on for missions/adventures code&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
=== Hooking into features using legacy OpenGL code ===&lt;br /&gt;
{{See also|Unifying the 2D rendering backend via canvas}}&lt;br /&gt;
In 09/2018, James suggested that legacy features using raw OpenGL calls (e.g. HUD/2D panels) could be easily replaced via scripted Canvas/Nasal solutions at the mere cost of providing a mechanism to hook into the legacy code implementing these features (namely, the HUD/instrumentation subsystems) &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/36399261/&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/36399261/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Catalog &amp;amp; Package Manager support ===&lt;br /&gt;
if this works with more complex, pre-existing addons such as [[Bombable]], where the file layout is a replica of the old FGData layout, these types of mature addons might be better as SourceForge FlightGear sub-projects rather than being copied into FGAddon. Maybe the config file and nasal script could be used to automate the installation process ?&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35953179/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] Simple API for creating FlightGear&lt;br /&gt;
 addons/plugins &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Edward d'Auvergne &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 19th, 2017 &lt;br /&gt;
  |added  =  Jul 19th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
The [[Bombable]] addon is one of the most popular addons out there, and a large number of aircraft in FGAddon have bombable support, so it is worth not forgetting about. Especially if the addon system one day becomes automated through a [[Catalog metadata|catalog.xml type system]]&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35953650/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] Simple API for creating FlightGear&lt;br /&gt;
 addons/plugins &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Edward d'Auvergne &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 19th, 2017 &lt;br /&gt;
  |added  =  Jul 19th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{Appendix}}&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
=== Wiki articles ===&lt;br /&gt;
* [[FlightGear configuration via XML]]&lt;br /&gt;
* [[FlightGear configuration via XML#preferences.xml]]&lt;br /&gt;
* [[Nasal]]&lt;br /&gt;
* [[Property tree]]&lt;br /&gt;
* [[Properties persistent between sessions]]&lt;br /&gt;
* [[PropertyList XML File]]&lt;br /&gt;
&lt;br /&gt;
=== Forum topics ===&lt;br /&gt;
* {{forum link|t=32561|title=New Feature: Addon - &amp;quot;API&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== Readme files ===&lt;br /&gt;
* {{readme file|add-ons}}&lt;br /&gt;
* {{readme file|gui}} - Details on how to add menus and custom dialogs.&lt;br /&gt;
&lt;br /&gt;
=== Source code ===&lt;br /&gt;
==== FGAddon ====&lt;br /&gt;
* {{fgaddon source|path=Addons/Skeleton}} - Skeleton addon to be used as a template.&lt;br /&gt;
&lt;br /&gt;
==== FGData ====&lt;br /&gt;
* {{fgdata source|path=Nasal/addons.nas}}&lt;br /&gt;
&lt;br /&gt;
==== FlightGear ====&lt;br /&gt;
* {{flightgear source|path=src/Main/options.cxx}}&lt;br /&gt;
* {{flightgear source|path=src/Add-ons/}}&lt;br /&gt;
&lt;br /&gt;
[[Category:FlightGear addons| ]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Addon&amp;diff=129590</id>
		<title>Addon</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Addon&amp;diff=129590"/>
		<updated>2020-12-28T00:07:41Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: /* List of Addons */  updated information about FGCamera addon (current link, manual link and preserve FGCamera Wiki page)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Fgaddonslogo202x89.png|right]] &lt;br /&gt;
To make it easier to create '''addons''' there is since FlightGear 2017.3 a new way to create addons.  In essence FlightGear will load an overlay XML into the property tree and start a well known Nasal function.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=314620#p314620 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: New Feature: Addon - &amp;quot;API&amp;quot; &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Torsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 19th, 2017 &lt;br /&gt;
  |added  =  Jul 19th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We now have a simple way to add addons to FlightGear without the need to mess around with &amp;lt;code&amp;gt;FGData/Nasal&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;FGHome/Nasal&amp;lt;/code&amp;gt; directories.&amp;lt;ref name=&amp;quot;Forum_announcement&amp;quot;&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=314563#p314563 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; New Feature: Addon - &amp;quot;API&amp;quot; &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Torsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 18th, 2017 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{TOC limit|3}}&lt;br /&gt;
&lt;br /&gt;
== Installing and using an addon ==&lt;br /&gt;
Download and copy the addon to a directory on your computer.&lt;br /&gt;
&lt;br /&gt;
Use the command line switch &amp;lt;code&amp;gt;--addon=/path/to/some/addon&amp;lt;/code&amp;gt;.&amp;lt;ref name=&amp;quot;Forum_announcement&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an addon ==&lt;br /&gt;
There is a very simple Skeleton addon available in FGAddon to be used as a template.&amp;lt;ref name=&amp;quot;Forum_announcement&amp;quot;/&amp;gt; See {{fgaddon source|path=Addons/Skeleton}}.&lt;br /&gt;
&lt;br /&gt;
A leading slash (&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;) in this section indicates the base directory of the directory structure of the addon.&lt;br /&gt;
&lt;br /&gt;
=== Minimum configuration ===&lt;br /&gt;
An addon may be installed in a directory anywhere on your hard disk and need at least two files:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/addon-config.xml&amp;lt;/code&amp;gt; - A standard [[PropertyList XML files|PropertyList XML file]] to be used to populate or modify the [[property tree]]. (Same as to be used in &amp;lt;code&amp;gt;--config=foo.xml&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;/addon-main.nas&amp;lt;/code&amp;gt; - The Nasal hook for the logic. This file needs a function called &amp;lt;code&amp;gt;main()&amp;lt;/code&amp;gt; which will be called from the global addon initializer (&amp;lt;code&amp;gt;addons.nas&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Additional common files ===&lt;br /&gt;
* &amp;lt;code&amp;gt;/addon-metadata.xml&amp;lt;/code&amp;gt; - A PropertyList XML file with metadata about the addon it.&lt;br /&gt;
* &amp;lt;code&amp;gt;/addon-menubar-items.xml&amp;lt;/code&amp;gt; - A PropertyList XML file describing menus to be added to the FlightGear menu bar.&lt;br /&gt;
* &amp;lt;code&amp;gt;/gui/dialogs/&amp;amp;lt;my-foobar-dialog&amp;amp;gt;.xml&amp;lt;/code&amp;gt; - PropertyList XML files to create custom dialogs.&lt;br /&gt;
&lt;br /&gt;
=== Good to know ===&lt;br /&gt;
The new addon mechanism lets you add a &amp;lt;code&amp;gt;addon-config.xml&amp;lt;/code&amp;gt; to override the settings in &amp;lt;code&amp;gt;defaults.xml&amp;lt;/code&amp;gt; and other files.&lt;br /&gt;
&lt;br /&gt;
That will allow an addon to&lt;br /&gt;
*  Override key bindings (as in the spoken ATC addon)&lt;br /&gt;
*  Add or override autopilots and property rules&lt;br /&gt;
*  Introduce XML state machines&lt;br /&gt;
&lt;br /&gt;
Unless your really want to add/change/remove those at runtime, this should cater for most use cases.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=314902#p314902 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Spoken  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Torsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 23rd, 2017 &lt;br /&gt;
  |added  =  Jul 23rd, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We have some instructions how to use SVN [[FGAddon|in our wiki]]. It covers mostly aircraft development but the workflow is pretty much the same for addons.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=314647#p314647 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Spoken ATC &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Torsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 19th, 2017 &lt;br /&gt;
  |added  =  Jul 19th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Addon initialization ==&lt;br /&gt;
On initialization fgfs takes care of:&lt;br /&gt;
* Through {{flightgear source|path=src/Main/options.cxx|text=&amp;lt;code&amp;gt;options.cxx&amp;lt;/code&amp;gt;}}:&amp;lt;ref name=&amp;quot;Forum_announcement&amp;quot;/&amp;gt;&lt;br /&gt;
** Creating a property under &amp;lt;code&amp;gt;/addons/addon[n]/path=/path/to/some/addon&amp;lt;/code&amp;gt;&lt;br /&gt;
** Loading &amp;lt;code&amp;gt;/path/to/some/addon/addon-config.xml&amp;lt;/code&amp;gt; into the property tree (same as &amp;lt;code&amp;gt;--config=/path/to/some/addon/addon-config.xml&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Adding &amp;lt;code&amp;gt;/path/to/some/addon&amp;lt;/code&amp;gt; to the list of allowed directories (same as &amp;lt;code&amp;gt;--fg-aircraft=/path/to/some/addon&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Through {{fgdata source|path=Nasal/addons.nas|text=&amp;lt;code&amp;gt;addons.nas&amp;lt;/code&amp;gt;}}:&lt;br /&gt;
** Loading &amp;lt;code&amp;gt;/foo/bar/baz/addon-main.nas&amp;lt;/code&amp;gt; into namespace &amp;lt;code&amp;gt;__addon[ADDON_ID]__&amp;lt;/code&amp;gt;&lt;br /&gt;
** Calling &amp;lt;code&amp;gt;main(addonGhost)&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;/foo/bar/baz/addon-main.nas&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== APIs ==&lt;br /&gt;
{{hatnote|For more details about these APIs, see the readme file, {{readme file|add-ons}}.}}&lt;br /&gt;
=== C++ API ===&lt;br /&gt;
There is a C++ API on FlightGear's side that handle some on the addon related tasks manly through the &amp;lt;code&amp;gt;AddonManager()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Addon()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;AddonVersion()&amp;lt;/code&amp;gt; classes.&lt;br /&gt;
&lt;br /&gt;
=== Nasal API ===&lt;br /&gt;
The Nasal add-on API lives in the 'addons' namespace and can for example do queries to &amp;lt;code&amp;gt;AddonManager()&amp;lt;/code&amp;gt; and read data from &amp;lt;code&amp;gt;addons.Addon&amp;lt;/code&amp;gt; objects.  It can for example compare addon versions if there is dependencies.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
{{See also|Howto:Creating a simple modding framework}}&lt;br /&gt;
&lt;br /&gt;
ATC chatter was removed in 2015, see fgdata commit: [https://sourceforge.net/p/flightgear/fgdata/ci/81607f734e13add9be02816ddaec305d05bc4e47/ 81607f734e13add9be02816ddaec305d05bc4e47]&lt;br /&gt;
&lt;br /&gt;
And the devel list messages referenced in the commit log.&lt;br /&gt;
the other relevant commit is this: b60736ba7add2a7cd39af3d8a974d5be3ea46e8b&lt;br /&gt;
It would not be very difficult to restore this functionality, or even generalize/improve it significantly (which was the scope of the original discussion on the devel list)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=288388#p288388 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Whatever happened to radom radio  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Hooray &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jun 11th, 2016 &lt;br /&gt;
  |added  =  Jun 11th, 2016 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The restored functionality could be distributed as a tarball that is extracted into $FG_ROOT - alternatively, into $FG_HOME, because Nasal files there are treated as overlays, which basically means that you can install user-specific extensions there without having to tamper with $FG_ROOT, it would only take  very minor changes to turn the chatter feature into a corresponding &amp;quot;addon&amp;quot; - not unlike fgcamera ...&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=288392#p288392 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Whatever happened to radom radio  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Hooray &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jun 11th, 2016 &lt;br /&gt;
  |added  =  Jun 11th, 2016 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We should absolutely stop telling anyone to edit preferences.xml in FG_ROOT; any documentation or advice which says to should be changes ASAP. &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=192632#p192632 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: NavCache:init failed:Sqlite error:Sqlite API abuse &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; zakalawe &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Oct 26th, 2013 &lt;br /&gt;
  |added  =  Oct 26th, 2013 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As of 12/2017, the addon API is in the process of being significantly updated &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/36146017/&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/36150159/&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/36150444/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== List of Addons ==&lt;br /&gt;
You can find the official repository at {{fgaddon source|path=Addons}}&lt;br /&gt;
&lt;br /&gt;
* ATC Chatter (ported by Torsten) {{progressbar|100}}&lt;br /&gt;
* [[Cargo Towing Addon]] &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?t=36824&lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Cargo Towing Addon &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Wayne Bragg (wlbragg) &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  &lt;br /&gt;
  |added  =  &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* cockpit-view (work in progress by wkitty42)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=316498#p316498 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re:  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; wkitty42 &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 13th, 2017 &lt;br /&gt;
  |added  =  Aug 13th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Earthview#Customization]] - High resolution customization&lt;br /&gt;
* [[FaceTrackNoIR]] (ported by HHS)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/36454826/&lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re:  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Unknown, HHS&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  |date   =  Nov 1th, 2018 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt; - An addon to interface this [[Head tracking|head tracker]] with FlightGear&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-fgcamera FGCamera] - ([https://github.com/slawekmikula/flightgear-addon-fgcamera/blob/master/Docs/manual.md manual]) - [[FGCamera | Wiki Page]]&lt;br /&gt;
* [[FGPlot]]&lt;br /&gt;
* [[Ground Services]] (ported by ThomasS)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=316400#p316400 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re:  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; ThomasS &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 12th, 2017 &lt;br /&gt;
  |added  =  Aug 12th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Landing Rate addon]] [https://forum.flightgear.org/viewtopic.php?f=6&amp;amp;t=33101&amp;amp;p=327787#p327787]&lt;br /&gt;
* [https://gitlab.com/mdanil/flightgear-hax mdanilov hax!]: landing evaluation and aircraft development tools, TerraSync toggler&lt;br /&gt;
* [[Model Cockpit View]] &lt;br /&gt;
* [[Oscilloscope addon]] - Allows displaying a property of Nasal function over time&lt;br /&gt;
* [[PAR instrument]] - Precision Approach Radar and Ground Controlled Approach&lt;br /&gt;
* [[Red Griffin ATC]] - Speaking Air Traffic Controller&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?f=6&amp;amp;t=36755 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re:  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; RedGriffin &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jan 6th, 2020 &lt;br /&gt;
  |added  =  Jan 6th, 2020 &lt;br /&gt;
  |script_version = 1.0.0 RC2 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Spoken ATC]] (ported by Torsten)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=314095#p314095 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re:  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Torsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 10th, 2017 &lt;br /&gt;
  |added  =  Jul 10th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Spoken GCA]] - An offline ground controlled approach (GCA) addon&lt;br /&gt;
* [[YASim Development Tools]] (by jsb)&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-vfrflight VFRFlight integration] - ([https://github.com/slawekmikula/flightgear-addon-vfrflight/blob/master/doc/manual.md manual])&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-protocolkml KML Exporter (Google Earth)] - ([https://github.com/slawekmikula/flightgear-addon-protocolkml/blob/master/doc/manual.md manual])&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-vfrnavigator VFR Flying Helper] - ([https://github.com/slawekmikula/flightgear-addon-vfrnavigator/blob/master/doc/usage.md manual])&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-linuxtrack LinuxTrack Head Tracker integration] - ([https://github.com/slawekmikula/flightgear-addon-linuxtrack/blob/master/doc/manual.md manual])&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-hudheli Additional Heli HUD's] - ([https://github.com/slawekmikula/flightgear-addon-hudheli/blob/master/doc/manual.md manual])&lt;br /&gt;
&lt;br /&gt;
== Experimental Addons ==&lt;br /&gt;
&lt;br /&gt;
Addons which are in the development stage/unfinished but can be used as a quick view of addon functionality&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-littlenavmap LittleNavMap integration] - ([https://github.com/slawekmikula/flightgear-addon-littlenavmap/blob/master/doc/manual.md manual])&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-missions FlightGear Missions addon] - Add-on for missions/adventures code&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
=== Hooking into features using legacy OpenGL code ===&lt;br /&gt;
{{See also|Unifying the 2D rendering backend via canvas}}&lt;br /&gt;
In 09/2018, James suggested that legacy features using raw OpenGL calls (e.g. HUD/2D panels) could be easily replaced via scripted Canvas/Nasal solutions at the mere cost of providing a mechanism to hook into the legacy code implementing these features (namely, the HUD/instrumentation subsystems) &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/36399261/&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/36399261/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Catalog &amp;amp; Package Manager support ===&lt;br /&gt;
if this works with more complex, pre-existing addons such as [[Bombable]], where the file layout is a replica of the old FGData layout, these types of mature addons might be better as SourceForge FlightGear sub-projects rather than being copied into FGAddon. Maybe the config file and nasal script could be used to automate the installation process ?&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35953179/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] Simple API for creating FlightGear&lt;br /&gt;
 addons/plugins &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Edward d'Auvergne &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 19th, 2017 &lt;br /&gt;
  |added  =  Jul 19th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
The [[Bombable]] addon is one of the most popular addons out there, and a large number of aircraft in FGAddon have bombable support, so it is worth not forgetting about. Especially if the addon system one day becomes automated through a [[Catalog metadata|catalog.xml type system]]&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35953650/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] Simple API for creating FlightGear&lt;br /&gt;
 addons/plugins &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Edward d'Auvergne &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 19th, 2017 &lt;br /&gt;
  |added  =  Jul 19th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{Appendix}}&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
=== Wiki articles ===&lt;br /&gt;
* [[FlightGear configuration via XML]]&lt;br /&gt;
* [[FlightGear configuration via XML#preferences.xml]]&lt;br /&gt;
* [[Nasal]]&lt;br /&gt;
* [[Property tree]]&lt;br /&gt;
* [[Properties persistent between sessions]]&lt;br /&gt;
* [[PropertyList XML File]]&lt;br /&gt;
&lt;br /&gt;
=== Forum topics ===&lt;br /&gt;
* {{forum link|t=32561|title=New Feature: Addon - &amp;quot;API&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== Readme files ===&lt;br /&gt;
* {{readme file|add-ons}}&lt;br /&gt;
* {{readme file|gui}} - Details on how to add menus and custom dialogs.&lt;br /&gt;
&lt;br /&gt;
=== Source code ===&lt;br /&gt;
==== FGAddon ====&lt;br /&gt;
* {{fgaddon source|path=Addons/Skeleton}} - Skeleton addon to be used as a template.&lt;br /&gt;
&lt;br /&gt;
==== FGData ====&lt;br /&gt;
* {{fgdata source|path=Nasal/addons.nas}}&lt;br /&gt;
&lt;br /&gt;
==== FlightGear ====&lt;br /&gt;
* {{flightgear source|path=src/Main/options.cxx}}&lt;br /&gt;
* {{flightgear source|path=src/Add-ons/}}&lt;br /&gt;
&lt;br /&gt;
[[Category:FlightGear addons| ]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Building_FlightGear&amp;diff=129589</id>
		<title>Building FlightGear</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Building_FlightGear&amp;diff=129589"/>
		<updated>2020-12-27T22:55:48Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: explicit info about IDE integration&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
The [[FlightGear]] developers generally release a stable packaged version of FlightGear, with an easy install wizard, about once or twice a year. For convenience, most FlightGear users download and install these packages.&lt;br /&gt;
&lt;br /&gt;
However, the source files used to '''build the whole FlightGear package''' are continuously being developed by dozens of contributors, who collaborate using the source code management system [[Git]] to create a new &amp;quot;unstable&amp;quot; version every few days. If you want to use one of these unstable versions, or tinker with the source files to create your own custom version, the pages below describe how to compile the FlightGear package from the Git source files (repository at [http://sourceforge.net/projects/flightgear http://sourceforge.net]).&lt;br /&gt;
&lt;br /&gt;
If you'd like to use an integrated development environment, illustrated instructions for building FlightGear and its dependencies can be found in [[Howto:Build FlightGear with NetBeans using CMake]], this should work on both, Windows and Linux systems (NetBeans being a cross-platform IDE).&lt;br /&gt;
&lt;br /&gt;
Another option to run the latest code without having to compile everything yourself, is using a precompiled binary provided by the [[FlightGear Build Server]] which is based on Jenkins.&lt;br /&gt;
&lt;br /&gt;
'''Building FlightGear''' may refer to:&lt;br /&gt;
* [[Superbuild|Using CMake Superbuilds]]&lt;br /&gt;
* [[Superbuild on Windows|Using CMake Superbuild - Windows]]&lt;br /&gt;
* [[Building using CMake]]&lt;br /&gt;
* [[Building using CMake - Windows]]&lt;br /&gt;
* [[Building FlightGear - Linux]]&lt;br /&gt;
* [[Scripted Compilation on Linux Debian/Ubuntu|Building on Linux using the download_and_compile.sh bash script]] &lt;br /&gt;
&lt;br /&gt;
'''IDE Integration''' may refer to:&lt;br /&gt;
* [[Howto:Build FlightGear with NetBeans using CMake | Build FlightGear with NetBeans using CMake and Run/Debug inside IDE]]&lt;br /&gt;
&lt;br /&gt;
'''Old pages''' :&lt;br /&gt;
* [http://macflightgear.sourceforge.net/home/documents/how-to-build-flightgear-cvs-on-mac-os-x/ Building FlightGear - Mac OS X]&lt;br /&gt;
* [[Updating FlightGear on Windows]] - get a recently updated version without compiling&lt;br /&gt;
&lt;br /&gt;
{{Building}}&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Build_FlightGear_with_NetBeans_using_CMake&amp;diff=129588</id>
		<title>Howto:Build FlightGear with NetBeans using CMake</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Build_FlightGear_with_NetBeans_using_CMake&amp;diff=129588"/>
		<updated>2020-12-27T22:53:36Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: Finishing modification of IDE debug/run example using NetBeans&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Important ==&lt;br /&gt;
&lt;br /&gt;
The latest CMake-specific build instructions can be found in $FG_SRC/README.cmake: {{Flightgear file|README.cmake}}. If you encounter any CMake-related bugs while trying to build SimGear and/or FlightGear, please consider filing a bug report here: {{Tickets}}. If you think the instructions are lacking some details, you are invited to add them as required. Also, if you think that some more specific screen shots would help, please do feel free to upload new screen shots here: [[Special:UploadWizard]]. Don't worry if you don't know how to embed these images, you can simply leave a comment on the article's talk page, so that we can update the article accordingly. Thanks!&lt;br /&gt;
&lt;br /&gt;
== Download and install NetBeans ==&lt;br /&gt;
&lt;br /&gt;
NetBeans is a multi-platform IDE (integrated development environment) that supports a number of programming languages, C and C++ among them. NetBeans is a highly modular and very powerful IDE with a huge range of features. Go to https://netbeans.apache.org/ in order to download the latest version of NetBeans for your OS/platform. After downloading NetBeans, you'll need to install it.&lt;br /&gt;
&lt;br /&gt;
{{Note| According to the latest release notes [https://netbeans.apache.org/download/nb120/index.html#_c_c release notes 12.0] the C++ plugin is not ported to the new Apache infrastructure. You have to enable Netbeans 8.2 plugin center and install C/C++ plugin from it. It will be available in the future releases in the NetBeans core.}}&lt;br /&gt;
&lt;br /&gt;
== Linux: getting &amp;amp; compiling ==&lt;br /&gt;
&lt;br /&gt;
Please take a look at generic page: [[Building_FlightGear]] or [[Scripted Compilation on Linux Debian/Ubuntu|Building on Linux using the download_and_compile.sh bash script]] &lt;br /&gt;
&lt;br /&gt;
== Windows: getting &amp;amp; compiling ==&lt;br /&gt;
&lt;br /&gt;
Please take a look at the generic page regarding Windows compilation: [[Building using CMake - Windows]]&lt;br /&gt;
&lt;br /&gt;
== Folder Structure ==&lt;br /&gt;
&lt;br /&gt;
You need separate folders in which the project build outputs will be created. If you download and create folders according to the build environment in Windows/Linux OS there is nothing new. &lt;br /&gt;
&lt;br /&gt;
== Netbeans project import ==&lt;br /&gt;
&lt;br /&gt;
After checking out the repository, you'll want to use the NetBeans project wizard to CREATE A NEW PROJECT FROM EXISTING SOURCES for each dependency: &lt;br /&gt;
&lt;br /&gt;
[[File:NetBeans New Project.png]]&lt;br /&gt;
&lt;br /&gt;
Next, pick &amp;quot;...from existing sources&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[File:NetBeans New Project Existing.png]]&lt;br /&gt;
&lt;br /&gt;
Specify the folder where the checked out sources can be found:&lt;br /&gt;
&lt;br /&gt;
[[File:NetBeans New Project Automatic.png]]&lt;br /&gt;
&lt;br /&gt;
Click Finish. NetBeans will attempt to build the project, which will fail, as no dependencies have been set. Ignore it, the project will still be set-up. Repeat above steps for the simgear code. Finally, you should see all projects neatly structured in NetBeans:&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans-projects.png|NetBeans project listing]]&lt;br /&gt;
&lt;br /&gt;
== Disable code indexing ==&lt;br /&gt;
&lt;br /&gt;
By default, NetBeans will keep on trying and index all your sources, this may slow down the IDE considerably, so it's a good idea to disable this feature if you don't need it (CONTEXT MENU/RIGHT CLICK on project, go to CODE ASSISTANCE and then uncheck the marked entry):&lt;br /&gt;
&lt;br /&gt;
[[File:NetBeans Code Assistance.png]]&lt;br /&gt;
&lt;br /&gt;
== Debugging using Gdb/Netbeans as a IDE ==&lt;br /&gt;
&lt;br /&gt;
Examplary configuration for easy debugging FlightGear source code inside IDE using GDB as a backend can be configured in various ways. This screens shows how to configure two projects 'simgear' and 'flightgear' to compile with the debug flags inside the IDE and be able to execute it or debug directly inside IDE. This is a great way to extend FlightGear and help fixing bugs for people not very experienced with the GDB commandline interface. It has all features of the debug inside IDE as graphical watches, breakpoints etc.&lt;br /&gt;
&lt;br /&gt;
{{Note| Following settings are set according to one user directory structure and his compile/debug options. Please refer to the latest compile/debug options in SimGear/FlightGear in order to set them correctly. }}&lt;br /&gt;
&lt;br /&gt;
In order to configure it, this settings has to be set in one user environment in order to successfully compile it and debug.&lt;br /&gt;
&lt;br /&gt;
* Simgear&lt;br /&gt;
&lt;br /&gt;
SimGear source configuration&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans-simgear src.png|NetBeans config - simgear source configuration]]&lt;br /&gt;
&lt;br /&gt;
Simgear prebuild (CMAKE) options&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans-simgear prebuild.png|NetBeans config - simgear prebuild (CMAKE) options]]&lt;br /&gt;
&lt;br /&gt;
Simgear build options&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans-simgear build.png|NetBeans config - simgear build options]]&lt;br /&gt;
&lt;br /&gt;
Simgear compile options&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans-simgear compile.png|NetBeans config - simgear compile options]]&lt;br /&gt;
&lt;br /&gt;
Simgear make options&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans-simgear make.png|NetBeans config - simgear make options]]&lt;br /&gt;
&lt;br /&gt;
* FlightGear&lt;br /&gt;
&lt;br /&gt;
FlightGear source configuration&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans-fg config src.png|NetBeans config - flightgear source configuration]]&lt;br /&gt;
&lt;br /&gt;
FlightGear prebuild (CMAKE) options&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans-fg config prebuild.png|NetBeans config - flightgear prebuild (CMAKE) options]]&lt;br /&gt;
&lt;br /&gt;
FlightGear build options&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans-fg config build.png|NetBeans config - flightgear build options ]]&lt;br /&gt;
&lt;br /&gt;
FlightGear make options&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans-fg config make.png|NetBeans config - flightgear make options]]&lt;br /&gt;
&lt;br /&gt;
FlightGear compile options&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans-fg config compile.png|NetBeans config - flightgear compile options ]]&lt;br /&gt;
&lt;br /&gt;
And setting regarding debug and run sessions:&lt;br /&gt;
&lt;br /&gt;
FlightGear debug options&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans-fg config debug.png|NetBeans config - flightgear debug options]]&lt;br /&gt;
&lt;br /&gt;
FlightGear run options&lt;br /&gt;
&lt;br /&gt;
[[File:Netbeans-fg config run.png|NetBeans config - flightgear run options]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After this settings one can run/debug FlightGear source code inside the IDE :)&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|Build FlightGear with NetBeans using CMake]]&lt;br /&gt;
[[Category:Development|Build FlightGear with NetBeans using CMake]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Netbeans-simgear_src.png&amp;diff=129587</id>
		<title>File:Netbeans-simgear src.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Netbeans-simgear_src.png&amp;diff=129587"/>
		<updated>2020-12-27T22:38:44Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=NetBeans config screen}}&lt;br /&gt;
|date=2020-12-27&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Slawekmikula|Slawekmikula]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-4.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:IDE]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Netbeans-simgear_prebuild.png&amp;diff=129586</id>
		<title>File:Netbeans-simgear prebuild.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Netbeans-simgear_prebuild.png&amp;diff=129586"/>
		<updated>2020-12-27T22:38:44Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=NetBeans config screen}}&lt;br /&gt;
|date=2020-12-27&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Slawekmikula|Slawekmikula]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-4.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:IDE]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Netbeans-simgear_make.png&amp;diff=129585</id>
		<title>File:Netbeans-simgear make.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Netbeans-simgear_make.png&amp;diff=129585"/>
		<updated>2020-12-27T22:38:44Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=NetBeans config screen}}&lt;br /&gt;
|date=2020-12-27&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Slawekmikula|Slawekmikula]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-4.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:IDE]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Netbeans-simgear_compile.png&amp;diff=129584</id>
		<title>File:Netbeans-simgear compile.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Netbeans-simgear_compile.png&amp;diff=129584"/>
		<updated>2020-12-27T22:38:44Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=NetBeans config screen}}&lt;br /&gt;
|date=2020-12-27&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Slawekmikula|Slawekmikula]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-4.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:IDE]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Netbeans-simgear_build.png&amp;diff=129583</id>
		<title>File:Netbeans-simgear build.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Netbeans-simgear_build.png&amp;diff=129583"/>
		<updated>2020-12-27T22:38:44Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=NetBeans config screen}}&lt;br /&gt;
|date=2020-12-27&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Slawekmikula|Slawekmikula]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-4.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:IDE]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Netbeans-projects.png&amp;diff=129582</id>
		<title>File:Netbeans-projects.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Netbeans-projects.png&amp;diff=129582"/>
		<updated>2020-12-27T22:38:44Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=NetBeans project listing}}&lt;br /&gt;
|date=2020-12-27&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Slawekmikula|Slawekmikula]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-4.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:IDE]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Netbeans-fg_config_src.png&amp;diff=129581</id>
		<title>File:Netbeans-fg config src.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Netbeans-fg_config_src.png&amp;diff=129581"/>
		<updated>2020-12-27T22:38:44Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=NetBeans config screen}}&lt;br /&gt;
|date=2020-12-27&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Slawekmikula|Slawekmikula]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-4.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:IDE]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Netbeans-fg_config_run.png&amp;diff=129580</id>
		<title>File:Netbeans-fg config run.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Netbeans-fg_config_run.png&amp;diff=129580"/>
		<updated>2020-12-27T22:38:43Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=NetBeans config screen}}&lt;br /&gt;
|date=2020-12-27&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Slawekmikula|Slawekmikula]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-4.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:IDE]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Netbeans-fg_config_prebuild.png&amp;diff=129579</id>
		<title>File:Netbeans-fg config prebuild.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Netbeans-fg_config_prebuild.png&amp;diff=129579"/>
		<updated>2020-12-27T22:38:43Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=NetBeans config screen}}&lt;br /&gt;
|date=2020-12-27&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Slawekmikula|Slawekmikula]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-4.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:IDE]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Netbeans-fg_config_debug.png&amp;diff=129578</id>
		<title>File:Netbeans-fg config debug.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Netbeans-fg_config_debug.png&amp;diff=129578"/>
		<updated>2020-12-27T22:38:43Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=NetBeans config screen}}&lt;br /&gt;
|date=2020-12-27&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Slawekmikula|Slawekmikula]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-4.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:IDE]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Netbeans-fg_config_make.png&amp;diff=129577</id>
		<title>File:Netbeans-fg config make.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Netbeans-fg_config_make.png&amp;diff=129577"/>
		<updated>2020-12-27T22:38:43Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=NetBeans config screen}}&lt;br /&gt;
|date=2020-12-27&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Slawekmikula|Slawekmikula]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-4.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:IDE]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Netbeans-fg_config_compile.png&amp;diff=129576</id>
		<title>File:Netbeans-fg config compile.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Netbeans-fg_config_compile.png&amp;diff=129576"/>
		<updated>2020-12-27T22:38:43Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=NetBeans config screen}}&lt;br /&gt;
|date=2020-12-27&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Slawekmikula|Slawekmikula]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-4.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:IDE]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Netbeans-fg_config_build.png&amp;diff=129575</id>
		<title>File:Netbeans-fg config build.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Netbeans-fg_config_build.png&amp;diff=129575"/>
		<updated>2020-12-27T22:38:42Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=NetBeans config screen}}&lt;br /&gt;
|date=2020-12-27&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Slawekmikula|Slawekmikula]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-4.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:IDE]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Build_FlightGear_with_NetBeans_using_CMake&amp;diff=129574</id>
		<title>Howto:Build FlightGear with NetBeans using CMake</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Build_FlightGear_with_NetBeans_using_CMake&amp;diff=129574"/>
		<updated>2020-12-27T22:35:53Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: start changing NetBeans building/editing page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Important ==&lt;br /&gt;
&lt;br /&gt;
The latest CMake-specific build instructions can be found in $FG_SRC/README.cmake: {{Flightgear file|README.cmake}}. If you encounter any CMake-related bugs while trying to build SimGear and/or FlightGear, please consider filing a bug report here: {{Tickets}}. If you think the instructions are lacking some details, you are invited to add them as required. Also, if you think that some more specific screen shots would help, please do feel free to upload new screen shots here: [[Special:UploadWizard]]. Don't worry if you don't know how to embed these images, you can simply leave a comment on the article's talk page, so that we can update the article accordingly. Thanks!&lt;br /&gt;
&lt;br /&gt;
== Download and install NetBeans ==&lt;br /&gt;
&lt;br /&gt;
NetBeans is a multi-platform IDE (integrated development environment) that supports a number of programming languages, C and C++ among them. NetBeans is a highly modular and very powerful IDE with a huge range of features. Go to https://netbeans.apache.org/ in order to download the latest version of NetBeans for your OS/platform. After downloading NetBeans, you'll need to install it.&lt;br /&gt;
&lt;br /&gt;
{{Note| According to the latest release notes [https://netbeans.apache.org/download/nb120/index.html#_c_c release notes 12.0] the C++ plugin is not ported to the new Apache infrastructure. You have to enable Netbeans 8.2 plugin center and install C/C++ plugin from it. It will be available in the future releases in the NetBeans core.}}&lt;br /&gt;
&lt;br /&gt;
== Linux: getting &amp;amp; compiling ==&lt;br /&gt;
&lt;br /&gt;
Please take a look at generic page: [[Building_FlightGear]] or [[Scripted Compilation on Linux Debian/Ubuntu|Building on Linux using the download_and_compile.sh bash script]] &lt;br /&gt;
&lt;br /&gt;
== Windows: getting &amp;amp; compiling ==&lt;br /&gt;
&lt;br /&gt;
Please take a look at the generic page regarding Windows compilation: [[Building using CMake - Windows]]&lt;br /&gt;
&lt;br /&gt;
== Folder Structure ==&lt;br /&gt;
&lt;br /&gt;
You need separate folders in which the project build outputs will be created. If you download and create folders according to the build environment in Windows/Linux OS there is nothing new. &lt;br /&gt;
&lt;br /&gt;
== Netbeans project import ==&lt;br /&gt;
&lt;br /&gt;
After checking out the repository, you'll want to use the NetBeans project wizard to CREATE A NEW PROJECT FROM EXISTING SOURCES for each dependency: &lt;br /&gt;
&lt;br /&gt;
[[File:NetBeans New Project.png]]&lt;br /&gt;
&lt;br /&gt;
Next, pick &amp;quot;...from existing sources&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[File:NetBeans New Project Existing.png]]&lt;br /&gt;
&lt;br /&gt;
Specify the folder where the checked out sources can be found:&lt;br /&gt;
&lt;br /&gt;
[[File:NetBeans New Project Automatic.png]]&lt;br /&gt;
&lt;br /&gt;
Click Finish. NetBeans will attempt to build the project, which will fail, as no dependencies have been set. Ignore it, the project will still be set-up. Repeat above steps for the simgear code. Finally, you should see all projects neatly structured in NetBeans:&lt;br /&gt;
&lt;br /&gt;
[[File:NetBeans Current Projects.png]]&lt;br /&gt;
&lt;br /&gt;
== Disable code indexing ==&lt;br /&gt;
&lt;br /&gt;
By default, NetBeans will keep on trying and index all your sources, this may slow down the IDE considerably, so it's a good idea to disable this feature if you don't need it (CONTEXT MENU/RIGHT CLICK on project, go to CODE ASSISTANCE and then uncheck the marked entry):&lt;br /&gt;
&lt;br /&gt;
[[File:NetBeans Code Assistance.png]]&lt;br /&gt;
&lt;br /&gt;
== Debugging using Gdb/Netbeans as a IDE ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|Build FlightGear with NetBeans using CMake]]&lt;br /&gt;
[[Category:Development|Build FlightGear with NetBeans using CMake]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Head_tracking&amp;diff=129573</id>
		<title>Head tracking</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Head_tracking&amp;diff=129573"/>
		<updated>2020-12-27T16:29:37Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: /* Wiki articles */  added linuxtrack addon reference&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Head tracking''' allows a user to use the movement of their head to control the direction of their view in a hands-free manner within FlightGear. Instead of directly implementing support for head tracking protocols and devices,  FlightGear instead exposes an [[Interfacing FlightGear|interface]] to recieve input data from an arbitrary source, which head tracking software can then utilize.  &lt;br /&gt;
&lt;br /&gt;
== Degrees of freedom ==&lt;br /&gt;
Degrees of freedom (DoF) are very common measure of the capability of a head tracking solution.  It is the number of axis the view can be rotated or translated around or along.&lt;br /&gt;
&lt;br /&gt;
For example would simple horizontal panning be 1 DoF (in essence rotation around the Z axis), while all translations and rotations would be 6 DoF (rotation around x, y and z + translation along x, y and z).&lt;br /&gt;
&lt;br /&gt;
== Screen view vs. VR view panning ==&lt;br /&gt;
While you obviously would like a VR goggle view to precisely follow your head movements, you can not do that if you want to have the view on a screen in front of you.  To be able to still see the screen when you are panning the view to directly behind, the translations usually are scaled down when head tracking is used for panning the view on a screen.&lt;br /&gt;
&lt;br /&gt;
While one or two DoF may be satisfactory when you are using head tracking to pan a screen view, three or sometimes six DoF is usually wanted when using VR goggles.  Having six DoF with goggles usually requires requires external head tracking to capture the head movements as accelerometers are too noisy and will drift.&lt;br /&gt;
&lt;br /&gt;
== Head tracking solutions ==&lt;br /&gt;
There are many ways to do head tracking.  The solutions cheapest to implement will use your web camera and will follow your face or some markers to figure out where your head is and how it is rotated.&lt;br /&gt;
&lt;br /&gt;
The more expensive ones use IR cameras, either using a group of LED light markers or IR lights at the camera and reflective markers.   The last method is used by some of the more popular commercial products.  Often there is three or four markers grouped together with fixed relative positions that is attached to headwear or headphones.&lt;br /&gt;
&lt;br /&gt;
== Using head tracking in FlightGear ==&lt;br /&gt;
As FlightGear is very flexible there are many ways head tracking can be implemented.  Often some external head tracking software will [[Interfacing FlightGear|interface with FlightGear]] for example using a [[generic protocol]] such that the rotations and translations is read into [[Property tree|properties]] that in turn are used for panning and moving the view.&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
=== Wiki articles ===&lt;br /&gt;
* [[FaceTrackNoIR]]&lt;br /&gt;
* [[Input device]]&lt;br /&gt;
* [[Interfacing FlightGear]]&lt;br /&gt;
* [[opentrack]]&lt;br /&gt;
* [[Howto:Wii Remote Head Tracking]]&lt;br /&gt;
* [[Addon#List_of_Addons]] - LinuxTrack addon for head tracking&lt;br /&gt;
&lt;br /&gt;
=== Forum topics ===&lt;br /&gt;
* {{forum link|t=37904|title=Opentrack}} (August 2020)&lt;br /&gt;
* {{forum link|t=29560|title=Setting up my flight gear?}} (May 2016)&lt;br /&gt;
* {{forum link|t=28718|title=How-to: motion tracking controller using vJoy and FreePIE}} (February 2016)&lt;br /&gt;
* {{forum link|t=31757|title=TrackIR, EDTracker, vJoy, FreePIE, OpenTrack - headtracking}} (February 2017-August 2020)&lt;br /&gt;
* {{forum link|t=10664|title=Headtrack}} (January 2011–January 2017)&lt;br /&gt;
* {{forum link|t=19848|title=FaceTracking: which views are movable ?}} (May–June 2013)&lt;br /&gt;
* {{forum link|t=16052|title=Offset problem with infra-red headtracker}} (April 2012)&lt;br /&gt;
* {{forum link|t=12412|title=Something for your sim pit? (Eye-following projector)}} (June 2011)&lt;br /&gt;
* {{forum link|t=11345|title=linux-track and FlightGear}} (March 2011–March 2014)&lt;br /&gt;
* {{forum link|t=11296|title=Typhoon+Grand Canyon+FaceTrackNoIR=AwEsOmE}} (March 2011)&lt;br /&gt;
* {{forum link|t=8499|title=First update FaceTrackNoIR}} (June 2010–March 2011)&lt;br /&gt;
* {{forum link|t=4763|title=Anything new related to FreeTrack/TrackIR?}} (April 2009–July 2010)&lt;br /&gt;
* {{forum link|t=212|title=Integration with OpenCV}} (February 2007)&lt;br /&gt;
&lt;br /&gt;
=== Developer mailing list threads ===&lt;br /&gt;
* [https://sourceforge.net/p/flightgear/mailman/message/34768232/ &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;Flightgear-devel&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; SteamVR ] (January 2016)&lt;br /&gt;
* [https://sourceforge.net/p/flightgear/mailman/message/30602798/ &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;Flightgear-devel&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Kinect for pc for head tracking?] (March 2013)&lt;br /&gt;
* [https://sourceforge.net/p/flightgear/mailman/message/27944122/ &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;Flightgear-devel&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; FG Input though socket or anyway? ] (August 2011)&lt;br /&gt;
* [https://sourceforge.net/p/flightgear/mailman/message/25067844/ &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;Flightgear-devel&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Enable headtracking in FlightGear?] (April 2010)&lt;br /&gt;
* [https://sourceforge.net/p/flightgear/mailman/flightgear-devel/thread/20080131170535.58250%40gmx.net/#msg18464396 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;Flightgear-devel&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Depth percepted cockpit] (January–February 2008)&lt;br /&gt;
* [https://sourceforge.net/p/flightgear/mailman/message/15602328/ &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;Flightgear-devel&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Extending generic protocol for binary input streams.] (September 2007–March 2009)&lt;br /&gt;
* [https://sourceforge.net/p/flightgear/mailman/flightgear-devel/thread/76d708440605102214i67cc8305sf6abbb28b8418223%40mail.gmail.com/#msg13176413 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;Flightgear-devel&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Formation Flying] (May 2006)&lt;br /&gt;
&lt;br /&gt;
=== Source code ===&lt;br /&gt;
* {{fgdata source|Nasal/view.nas}} – ''[[Nasal]] module that handles the view panning and translation, and related properties.''&lt;br /&gt;
&lt;br /&gt;
[[Category:Head tracking| ]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Addon&amp;diff=129572</id>
		<title>Addon</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Addon&amp;diff=129572"/>
		<updated>2020-12-27T16:27:21Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: /* List of Addons */  added new addons to the list, add new section Experimental Addon (unfinished, but can be taken as a source for addon development)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Fgaddonslogo202x89.png|right]] &lt;br /&gt;
To make it easier to create '''addons''' there is since FlightGear 2017.3 a new way to create addons.  In essence FlightGear will load an overlay XML into the property tree and start a well known Nasal function.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=314620#p314620 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: New Feature: Addon - &amp;quot;API&amp;quot; &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Torsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 19th, 2017 &lt;br /&gt;
  |added  =  Jul 19th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We now have a simple way to add addons to FlightGear without the need to mess around with &amp;lt;code&amp;gt;FGData/Nasal&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;FGHome/Nasal&amp;lt;/code&amp;gt; directories.&amp;lt;ref name=&amp;quot;Forum_announcement&amp;quot;&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=314563#p314563 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; New Feature: Addon - &amp;quot;API&amp;quot; &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Torsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 18th, 2017 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{TOC limit|3}}&lt;br /&gt;
&lt;br /&gt;
== Installing and using an addon ==&lt;br /&gt;
Download and copy the addon to a directory on your computer.&lt;br /&gt;
&lt;br /&gt;
Use the command line switch &amp;lt;code&amp;gt;--addon=/path/to/some/addon&amp;lt;/code&amp;gt;.&amp;lt;ref name=&amp;quot;Forum_announcement&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating an addon ==&lt;br /&gt;
There is a very simple Skeleton addon available in FGAddon to be used as a template.&amp;lt;ref name=&amp;quot;Forum_announcement&amp;quot;/&amp;gt; See {{fgaddon source|path=Addons/Skeleton}}.&lt;br /&gt;
&lt;br /&gt;
A leading slash (&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;) in this section indicates the base directory of the directory structure of the addon.&lt;br /&gt;
&lt;br /&gt;
=== Minimum configuration ===&lt;br /&gt;
An addon may be installed in a directory anywhere on your hard disk and need at least two files:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/addon-config.xml&amp;lt;/code&amp;gt; - A standard [[PropertyList XML files|PropertyList XML file]] to be used to populate or modify the [[property tree]]. (Same as to be used in &amp;lt;code&amp;gt;--config=foo.xml&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;/addon-main.nas&amp;lt;/code&amp;gt; - The Nasal hook for the logic. This file needs a function called &amp;lt;code&amp;gt;main()&amp;lt;/code&amp;gt; which will be called from the global addon initializer (&amp;lt;code&amp;gt;addons.nas&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Additional common files ===&lt;br /&gt;
* &amp;lt;code&amp;gt;/addon-metadata.xml&amp;lt;/code&amp;gt; - A PropertyList XML file with metadata about the addon it.&lt;br /&gt;
* &amp;lt;code&amp;gt;/addon-menubar-items.xml&amp;lt;/code&amp;gt; - A PropertyList XML file describing menus to be added to the FlightGear menu bar.&lt;br /&gt;
* &amp;lt;code&amp;gt;/gui/dialogs/&amp;amp;lt;my-foobar-dialog&amp;amp;gt;.xml&amp;lt;/code&amp;gt; - PropertyList XML files to create custom dialogs.&lt;br /&gt;
&lt;br /&gt;
=== Good to know ===&lt;br /&gt;
The new addon mechanism lets you add a &amp;lt;code&amp;gt;addon-config.xml&amp;lt;/code&amp;gt; to override the settings in &amp;lt;code&amp;gt;defaults.xml&amp;lt;/code&amp;gt; and other files.&lt;br /&gt;
&lt;br /&gt;
That will allow an addon to&lt;br /&gt;
*  Override key bindings (as in the spoken ATC addon)&lt;br /&gt;
*  Add or override autopilots and property rules&lt;br /&gt;
*  Introduce XML state machines&lt;br /&gt;
&lt;br /&gt;
Unless your really want to add/change/remove those at runtime, this should cater for most use cases.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=314902#p314902 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Spoken  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Torsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 23rd, 2017 &lt;br /&gt;
  |added  =  Jul 23rd, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We have some instructions how to use SVN [[FGAddon|in our wiki]]. It covers mostly aircraft development but the workflow is pretty much the same for addons.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=314647#p314647 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Spoken ATC &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Torsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 19th, 2017 &lt;br /&gt;
  |added  =  Jul 19th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Addon initialization ==&lt;br /&gt;
On initialization fgfs takes care of:&lt;br /&gt;
* Through {{flightgear source|path=src/Main/options.cxx|text=&amp;lt;code&amp;gt;options.cxx&amp;lt;/code&amp;gt;}}:&amp;lt;ref name=&amp;quot;Forum_announcement&amp;quot;/&amp;gt;&lt;br /&gt;
** Creating a property under &amp;lt;code&amp;gt;/addons/addon[n]/path=/path/to/some/addon&amp;lt;/code&amp;gt;&lt;br /&gt;
** Loading &amp;lt;code&amp;gt;/path/to/some/addon/addon-config.xml&amp;lt;/code&amp;gt; into the property tree (same as &amp;lt;code&amp;gt;--config=/path/to/some/addon/addon-config.xml&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Adding &amp;lt;code&amp;gt;/path/to/some/addon&amp;lt;/code&amp;gt; to the list of allowed directories (same as &amp;lt;code&amp;gt;--fg-aircraft=/path/to/some/addon&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Through {{fgdata source|path=Nasal/addons.nas|text=&amp;lt;code&amp;gt;addons.nas&amp;lt;/code&amp;gt;}}:&lt;br /&gt;
** Loading &amp;lt;code&amp;gt;/foo/bar/baz/addon-main.nas&amp;lt;/code&amp;gt; into namespace &amp;lt;code&amp;gt;__addon[ADDON_ID]__&amp;lt;/code&amp;gt;&lt;br /&gt;
** Calling &amp;lt;code&amp;gt;main(addonGhost)&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;/foo/bar/baz/addon-main.nas&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== APIs ==&lt;br /&gt;
{{hatnote|For more details about these APIs, see the readme file, {{readme file|add-ons}}.}}&lt;br /&gt;
=== C++ API ===&lt;br /&gt;
There is a C++ API on FlightGear's side that handle some on the addon related tasks manly through the &amp;lt;code&amp;gt;AddonManager()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Addon()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;AddonVersion()&amp;lt;/code&amp;gt; classes.&lt;br /&gt;
&lt;br /&gt;
=== Nasal API ===&lt;br /&gt;
The Nasal add-on API lives in the 'addons' namespace and can for example do queries to &amp;lt;code&amp;gt;AddonManager()&amp;lt;/code&amp;gt; and read data from &amp;lt;code&amp;gt;addons.Addon&amp;lt;/code&amp;gt; objects.  It can for example compare addon versions if there is dependencies.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
{{See also|Howto:Creating a simple modding framework}}&lt;br /&gt;
&lt;br /&gt;
ATC chatter was removed in 2015, see fgdata commit: [https://sourceforge.net/p/flightgear/fgdata/ci/81607f734e13add9be02816ddaec305d05bc4e47/ 81607f734e13add9be02816ddaec305d05bc4e47]&lt;br /&gt;
&lt;br /&gt;
And the devel list messages referenced in the commit log.&lt;br /&gt;
the other relevant commit is this: b60736ba7add2a7cd39af3d8a974d5be3ea46e8b&lt;br /&gt;
It would not be very difficult to restore this functionality, or even generalize/improve it significantly (which was the scope of the original discussion on the devel list)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=288388#p288388 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Whatever happened to radom radio  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Hooray &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jun 11th, 2016 &lt;br /&gt;
  |added  =  Jun 11th, 2016 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The restored functionality could be distributed as a tarball that is extracted into $FG_ROOT - alternatively, into $FG_HOME, because Nasal files there are treated as overlays, which basically means that you can install user-specific extensions there without having to tamper with $FG_ROOT, it would only take  very minor changes to turn the chatter feature into a corresponding &amp;quot;addon&amp;quot; - not unlike fgcamera ...&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=288392#p288392 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Whatever happened to radom radio  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Hooray &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jun 11th, 2016 &lt;br /&gt;
  |added  =  Jun 11th, 2016 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We should absolutely stop telling anyone to edit preferences.xml in FG_ROOT; any documentation or advice which says to should be changes ASAP. &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=192632#p192632 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: NavCache:init failed:Sqlite error:Sqlite API abuse &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; zakalawe &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Oct 26th, 2013 &lt;br /&gt;
  |added  =  Oct 26th, 2013 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As of 12/2017, the addon API is in the process of being significantly updated &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/36146017/&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/36150159/&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/36150444/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== List of Addons ==&lt;br /&gt;
You can find the official repository at {{fgaddon source|path=Addons}}&lt;br /&gt;
&lt;br /&gt;
* ATC Chatter (ported by Torsten) {{progressbar|100}}&lt;br /&gt;
* [[Cargo Towing Addon]] &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?t=36824&lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Cargo Towing Addon &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Wayne Bragg (wlbragg) &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  &lt;br /&gt;
  |added  =  &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* cockpit-view (work in progress by wkitty42)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=316498#p316498 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re:  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; wkitty42 &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 13th, 2017 &lt;br /&gt;
  |added  =  Aug 13th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Earthview#Customization]] - High resolution customization&lt;br /&gt;
* [[FaceTrackNoIR]] (ported by HHS)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/36454826/&lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re:  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Unknown, HHS&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  |date   =  Nov 1th, 2018 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt; - An addon to interface this [[Head tracking|head tracker]] with FlightGear&lt;br /&gt;
* [[FGCamera]] (work in progress by Torsten)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=314650#p314650 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: Alternative camera control &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Torsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 19th, 2017 &lt;br /&gt;
  |added  =  Jul 19th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=319804#p319804 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: New Feature: Addon - &amp;quot;API&amp;quot; &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; slawekmikula &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Oct 2nd, 2017 &lt;br /&gt;
  |added  =  Oct 2nd, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[FGPlot]]&lt;br /&gt;
* [[Ground Services]] (ported by ThomasS)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=316400#p316400 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re:  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; ThomasS &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Aug 12th, 2017 &lt;br /&gt;
  |added  =  Aug 12th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Landing Rate addon]] [https://forum.flightgear.org/viewtopic.php?f=6&amp;amp;t=33101&amp;amp;p=327787#p327787]&lt;br /&gt;
* [https://gitlab.com/mdanil/flightgear-hax mdanilov hax!]: landing evaluation and aircraft development tools, TerraSync toggler&lt;br /&gt;
* [[Model Cockpit View]] &lt;br /&gt;
* [[Oscilloscope addon]] - Allows displaying a property of Nasal function over time&lt;br /&gt;
* [[PAR instrument]] - Precision Approach Radar and Ground Controlled Approach&lt;br /&gt;
* [[Red Griffin ATC]] - Speaking Air Traffic Controller&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?f=6&amp;amp;t=36755 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re:  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; RedGriffin &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jan 6th, 2020 &lt;br /&gt;
  |added  =  Jan 6th, 2020 &lt;br /&gt;
  |script_version = 1.0.0 RC2 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Spoken ATC]] (ported by Torsten)&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://forum.flightgear.org/viewtopic.php?p=314095#p314095 &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re:  &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Torsten &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 10th, 2017 &lt;br /&gt;
  |added  =  Jul 10th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Spoken GCA]] - An offline ground controlled approach (GCA) addon&lt;br /&gt;
* [[YASim Development Tools]] (by jsb)&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-vfrflight VFRFlight integration] - ([https://github.com/slawekmikula/flightgear-addon-vfrflight/blob/master/doc/manual.md manual])&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-protocolkml KML Exporter (Google Earth)] - ([https://github.com/slawekmikula/flightgear-addon-protocolkml/blob/master/doc/manual.md manual])&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-vfrnavigator VFR Flying Helper] - ([https://github.com/slawekmikula/flightgear-addon-vfrnavigator/blob/master/doc/usage.md manual])&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-linuxtrack LinuxTrack Head Tracker integration] - ([https://github.com/slawekmikula/flightgear-addon-linuxtrack/blob/master/doc/manual.md manual])&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-hudheli Additional Heli HUD's] - ([https://github.com/slawekmikula/flightgear-addon-hudheli/blob/master/doc/manual.md manual])&lt;br /&gt;
&lt;br /&gt;
== Experimental Addons ==&lt;br /&gt;
&lt;br /&gt;
Addons which are in the development stage/unfinished but can be used as a quick view of addon functionality&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-littlenavmap LittleNavMap integration] - ([https://github.com/slawekmikula/flightgear-addon-littlenavmap/blob/master/doc/manual.md manual])&lt;br /&gt;
* [https://github.com/slawekmikula/flightgear-addon-missions FlightGear Missions addon] - Add-on for missions/adventures code&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
=== Hooking into features using legacy OpenGL code ===&lt;br /&gt;
{{See also|Unifying the 2D rendering backend via canvas}}&lt;br /&gt;
In 09/2018, James suggested that legacy features using raw OpenGL calls (e.g. HUD/2D panels) could be easily replaced via scripted Canvas/Nasal solutions at the mere cost of providing a mechanism to hook into the legacy code implementing these features (namely, the HUD/instrumentation subsystems) &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/36399261/&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/mailman/message/36399261/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Catalog &amp;amp; Package Manager support ===&lt;br /&gt;
if this works with more complex, pre-existing addons such as [[Bombable]], where the file layout is a replica of the old FGData layout, these types of mature addons might be better as SourceForge FlightGear sub-projects rather than being copied into FGAddon. Maybe the config file and nasal script could be used to automate the installation process ?&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35953179/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] Simple API for creating FlightGear&lt;br /&gt;
 addons/plugins &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Edward d'Auvergne &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 19th, 2017 &lt;br /&gt;
  |added  =  Jul 19th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
The [[Bombable]] addon is one of the most popular addons out there, and a large number of aircraft in FGAddon have bombable support, so it is worth not forgetting about. Especially if the addon system one day becomes automated through a [[Catalog metadata|catalog.xml type system]]&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/35953650/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] Simple API for creating FlightGear&lt;br /&gt;
 addons/plugins &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Edward d'Auvergne &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Jul 19th, 2017 &lt;br /&gt;
  |added  =  Jul 19th, 2017 &lt;br /&gt;
  |script_version = 0.40 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{Appendix}}&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
=== Wiki articles ===&lt;br /&gt;
* [[FlightGear configuration via XML]]&lt;br /&gt;
* [[FlightGear configuration via XML#preferences.xml]]&lt;br /&gt;
* [[Nasal]]&lt;br /&gt;
* [[Property tree]]&lt;br /&gt;
* [[Properties persistent between sessions]]&lt;br /&gt;
* [[PropertyList XML File]]&lt;br /&gt;
&lt;br /&gt;
=== Forum topics ===&lt;br /&gt;
* {{forum link|t=32561|title=New Feature: Addon - &amp;quot;API&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== Readme files ===&lt;br /&gt;
* {{readme file|add-ons}}&lt;br /&gt;
* {{readme file|gui}} - Details on how to add menus and custom dialogs.&lt;br /&gt;
&lt;br /&gt;
=== Source code ===&lt;br /&gt;
==== FGAddon ====&lt;br /&gt;
* {{fgaddon source|path=Addons/Skeleton}} - Skeleton addon to be used as a template.&lt;br /&gt;
&lt;br /&gt;
==== FGData ====&lt;br /&gt;
* {{fgdata source|path=Nasal/addons.nas}}&lt;br /&gt;
&lt;br /&gt;
==== FlightGear ====&lt;br /&gt;
* {{flightgear source|path=src/Main/options.cxx}}&lt;br /&gt;
* {{flightgear source|path=src/Add-ons/}}&lt;br /&gt;
&lt;br /&gt;
[[Category:FlightGear addons| ]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Slawekmikula&amp;diff=121233</id>
		<title>User:Slawekmikula</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Slawekmikula&amp;diff=121233"/>
		<updated>2019-12-15T07:36:20Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: added welcome template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Welcome to the wiki}}&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Compositor&amp;diff=121185</id>
		<title>Compositor</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Compositor&amp;diff=121185"/>
		<updated>2019-12-01T08:01:29Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: /* How to enable the Compositor */  added information how to enable shadows from the commandline&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Non-stable|version=2019.2|build_flags=-DENABLE_COMPOSITOR=ON|progress=100}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{forum|47|Effects &amp;amp; Shaders}}&lt;br /&gt;
&lt;br /&gt;
{{infobox subsystem&lt;br /&gt;
|image       = ALS Compositor pipeline.jpg&lt;br /&gt;
|name        = Compositor Framework&lt;br /&gt;
|started     = 01/2018 (Available since FlightGear 2019.2)&lt;br /&gt;
|description = Dynamic rendering pipeline configured via the property tree and XML&lt;br /&gt;
|status      = Stable&lt;br /&gt;
|developers  = Fernando García Liñán&lt;br /&gt;
|folders = &lt;br /&gt;
* {{flightgear file|src/Viewer}}&lt;br /&gt;
* {{simgear file|simgear/scene/viewer}}&lt;br /&gt;
* {{fgdata file|Compositor}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The '''Compositor''' aims to bring multi-pass rendering to FlightGear. It encapsulates a rendering pipeline and exposes its parameters to a [[Property Tree]] interface. At startup, FlightGear reads the pipeline definition file for each physical viewport defined on the [[Howto:Configure camera view windows|CameraGroup settings]]. If no Compositor file is specified for a physical camera, the one given by the &amp;lt;code&amp;gt;--compositor=&amp;lt;/code&amp;gt; startup command will be used. If such startup option is not used either, FlightGear will look for a valid Compositor file in $FG_ROOT/Compositor/default.xml&lt;br /&gt;
&lt;br /&gt;
The Compositor introduces a new dedicated fgdata directory for new/custom rendering pipelines: {{Fgdata file|Compositor}}.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
{{See also|Supporting multiple renderers|Howto:Canvas View Camera Element}}&lt;br /&gt;
&lt;br /&gt;
First discussed in 03/2012 during the early [[Rembrandt]] days, Zan (Lauri Peltonen) came up with a set of patches demonstrating how to create an XML-configurable rendering pipeline.&lt;br /&gt;
&lt;br /&gt;
Back then, this work was considered to look pretty promising &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/28946515/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] [Rembrandt] the plan &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Mathias Fröhlich &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Mar 7th, 2012 &lt;br /&gt;
  |added  =  Mar 7th, 2012 &lt;br /&gt;
  |script_version = 0.36 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt; and at the time plans were discussed to unify this with the ongoing Rembrandt implementation (no longer maintained).&lt;br /&gt;
&lt;br /&gt;
Adopting Zan's approach would have meant that efforts like [[Rembrandt]] (deferred rendering) could have been implemented without requiring C++ space modifications, i.e. purely in [[Base package]] space.&lt;br /&gt;
&lt;br /&gt;
Rembrandt's developer (FredB) suggested to extend the format to avoid duplicating the stages when you have more than one viewport, i.e.  specifying a pipeline as a template, with conditions like in effects, and have the current camera layout refer the pipeline that would be duplicated, resized and positioned for each declared viewport &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/28944773/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] [Rembrandt] the plan &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Frederic Bouvier &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Mar 7th, 2012 &lt;br /&gt;
  |added  =  Mar 7th, 2012 &lt;br /&gt;
  |script_version = 0.36 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zan's original patches can still be found in his newcameras branches which allow the user to define the rendering pipeline in preferences.xml: {{gitorious source|proj=fg|repo=zans-flightgear|branch=newcameras|text=FlightGear}}, {{gitorious source|proj=fg|repo=zans-simgear|branch=newcameras|text=SimGear}}.&lt;br /&gt;
&lt;br /&gt;
At that point, it didn't have everything Rembrandt's pipeline needs, but most likely could be easily enhanced to support those things. &lt;br /&gt;
&lt;br /&gt;
Basically, the original version added support for multiple camera passes, texture targets, texture formats, passing textures from one pass to another etc, while preserving the standard rendering line if user wants that. &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/28944733/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; [Flightgear-devel] [Rembrandt] the plan &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Lauri Peltonen &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Mar 7th, 2012 &lt;br /&gt;
  |added  =  Mar 7th, 2012 &lt;br /&gt;
  |script_version = 0.36 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since the early days of Zan's groundwork, providing the (hooks) infrastructure to enable base package developers to prototype, test and develop distinct rendering pipelines without requiring C++ space modifications has been a long-standing idea, especially after the [[Canvas]] system became available in early 2012, which demonstrated how RTT-rendering buffers (FBOs) could be set up, created and manipulated procedurally (i.e. at run-time) using XML, the property tree and [[Nasal]] scripting. &amp;lt;ref&amp;gt;{{forum link|type=search|title=Zan's Rembrandt and Canvas work|keywords=zan+rembrandt+canvas}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The new '''Compositor''' is an improved re-implementation of Zan's original work using not just XML, but also [[Property Tree|properties]] and a handful of [[Canvas]] concepts.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* Completely independent of other parts of the simulator, i.e. it's part of [[SimGear]] and can be used in a standalone fashion if needed, ala Canvas.&lt;br /&gt;
* Although independent, its aim is to be fully compatible with the current rendering framework in FG. This includes the [[Effects]] system, [[Howto:Configure camera view windows|CameraGroup]], [[Rembrandt]] and [[ALS]] (and obviously the [[Canvas]]).&lt;br /&gt;
* Its functionality overlaps Rembrandt: what can be done with Rembrandt can be done with the Compositor, but not vice versa.&lt;br /&gt;
* Fully configurable via an XML interface without compromising performance (ala Effects, using [[PropertyList XML File|PropertyList files]]).&lt;br /&gt;
* Flexible, expandable and compatible with modern graphics.&lt;br /&gt;
* It doesn't increase the hardware requirements, it expands the hardware range FG can run on. People with integrated GPUs (Intel HD etc) can run a Compositor with a single pass that renders directly to the screen like before, while people with more powerful cards can run a Compositor that implements deferred rendering, for example.&lt;br /&gt;
* Static branching support. Every pipeline element can be enabled/disabled at startup via a [[Conditions|&amp;lt;condition&amp;gt; block]].&lt;br /&gt;
&lt;br /&gt;
== How to enable the Compositor ==&lt;br /&gt;
&lt;br /&gt;
Currently the Compositor can only be enabled at compile time via the &amp;lt;code&amp;gt;-DENABLE_COMPOSITOR=ON&amp;lt;/code&amp;gt; CMake flag in FlightGear. SimGear doesn't require any extra parameters. Once you have a binary with the Compositor enabled and you run it, you will be presented with the default rendering pipeline. At the time of writing, this is the low spec rendering pipeline. If you want to try the ALS pipeline, start FlightGear with the command line argument: &amp;lt;code&amp;gt;--compositor=Compositor/ALS/als&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to enable shadows on all objects in the ALS pipeline use these options as a startup parameters (in QT GUI or in the commandline) &amp;lt;code&amp;gt;--prop:bool:/sim/rendering/als/shadows/enabled=true&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--prop:int:/sim/rendering/als/shadows/sun-atlas-size=2048&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes for aircraft developers ==&lt;br /&gt;
&lt;br /&gt;
=== Lights ===&lt;br /&gt;
&lt;br /&gt;
The Compositor introduces a new way of defining lights that is renderer agnostic, so every rendering pipeline will be able to access the lights that have been implemented like this. As of 2019/11, the only pipeline that supports dynamic lights is the ALS pipeline. The resulting light volumes can be visualized for debugging purposes by setting the property &amp;lt;tt&amp;gt;/sim/debug/show-light-volumes&amp;lt;/tt&amp;gt; to true.&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=10|&lt;br /&gt;
|valign=top style=&amp;quot;width: 20%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;light&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;my-spotlight&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;type&amp;gt;spot&amp;lt;/type&amp;gt;&lt;br /&gt;
  &amp;lt;position&amp;gt;&lt;br /&gt;
    &amp;lt;x-m&amp;gt;-7.7476&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;-1.7990&amp;lt;/z-m&amp;gt;&lt;br /&gt;
  &amp;lt;/position&amp;gt;&lt;br /&gt;
  &amp;lt;direction&amp;gt;&lt;br /&gt;
    &amp;lt;x&amp;gt;-1.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;-0.013&amp;lt;/z&amp;gt;&lt;br /&gt;
  &amp;lt;/direction&amp;gt;&lt;br /&gt;
  &amp;lt;ambient&amp;gt;&lt;br /&gt;
    &amp;lt;r&amp;gt;0.03&amp;lt;/r&amp;gt;&lt;br /&gt;
    &amp;lt;g&amp;gt;0.03&amp;lt;/g&amp;gt;&lt;br /&gt;
    &amp;lt;b&amp;gt;0.03&amp;lt;/b&amp;gt;&lt;br /&gt;
    &amp;lt;a&amp;gt;1&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;/ambient&amp;gt;&lt;br /&gt;
  &amp;lt;diffuse&amp;gt;&lt;br /&gt;
    &amp;lt;r&amp;gt;0.95&amp;lt;/r&amp;gt;&lt;br /&gt;
    &amp;lt;g&amp;gt;0.9&amp;lt;/g&amp;gt;&lt;br /&gt;
    &amp;lt;b&amp;gt;0.9&amp;lt;/b&amp;gt;&lt;br /&gt;
    &amp;lt;a&amp;gt;1&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;/diffuse&amp;gt;&lt;br /&gt;
  &amp;lt;specular&amp;gt;&lt;br /&gt;
    &amp;lt;r&amp;gt;0.95&amp;lt;/r&amp;gt;&lt;br /&gt;
    &amp;lt;g&amp;gt;0.9&amp;lt;/g&amp;gt;&lt;br /&gt;
    &amp;lt;b&amp;gt;0.9&amp;lt;/b&amp;gt;&lt;br /&gt;
    &amp;lt;a&amp;gt;1&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;/specular&amp;gt;&lt;br /&gt;
  &amp;lt;attenuation&amp;gt;&lt;br /&gt;
    &amp;lt;c&amp;gt;1.0&amp;lt;/c&amp;gt;&lt;br /&gt;
    &amp;lt;l&amp;gt;0.09&amp;lt;/l&amp;gt;&lt;br /&gt;
    &amp;lt;q&amp;gt;0.032&amp;lt;/q&amp;gt;&lt;br /&gt;
  &amp;lt;/attenuation&amp;gt;&lt;br /&gt;
  &amp;lt;spot-exponent&amp;gt;5&amp;lt;/spot-exponent&amp;gt;&lt;br /&gt;
  &amp;lt;spot-cutoff&amp;gt;40&amp;lt;/spot-cutoff&amp;gt;&lt;br /&gt;
  &amp;lt;range-m&amp;gt;50&amp;lt;/range-m&amp;gt;&lt;br /&gt;
&amp;lt;/light&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|valign=top style=&amp;quot;width: 80%;&amp;quot;|&lt;br /&gt;
* &amp;lt;tt&amp;gt;'''name'''&amp;lt;/tt&amp;gt;. An {{tag|animation}} will be able to reference the light by this name. Most animations will work as expected (rotate, translate, spin etc).&lt;br /&gt;
* &amp;lt;tt&amp;gt;'''type'''&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;spot&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;point&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;'''position'''&amp;lt;/tt&amp;gt;. The position of the light source in model space and in meters.&lt;br /&gt;
* &amp;lt;tt&amp;gt;'''direction'''&amp;lt;/tt&amp;gt;. Only available in &amp;lt;tt&amp;gt;spot&amp;lt;/tt&amp;gt; lights. It indicates the direction of the spotlight. This parameter can be specified in three different ways:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:33%;&amp;quot; |Direction vector&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:33%;&amp;quot; |Look-at point&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:33%;&amp;quot; |Rotation angles&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 10px&amp;quot; | A vector in model space that specifies the direction. Doesn't have to be normalized.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x&amp;gt;-1.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;-0.013&amp;lt;/z&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding: 10px&amp;quot; | The spotlight will calculate its direction by looking at this position from the light position. The point is in model space and in meters.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;lookat-x-m&amp;gt;-8.031&amp;lt;/lookat-x-m&amp;gt;&lt;br /&gt;
&amp;lt;lookat-y-m&amp;gt;0&amp;lt;/lookat-y-m&amp;gt;&lt;br /&gt;
&amp;lt;lookat-z-m&amp;gt;-2&amp;lt;/lookat-z-m&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding: 10px&amp;quot; | A three angle rotation in degrees that rotates the spotlight around the three axes. A 0 degree angle in all axes makes the spotlight point downwards (negative Z).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pitch-deg&amp;gt;90&amp;lt;/pitch-deg&amp;gt;&lt;br /&gt;
&amp;lt;roll-deg&amp;gt;0&amp;lt;/roll-deg&amp;gt;&lt;br /&gt;
&amp;lt;heading-deg&amp;gt;0&amp;lt;/heading-deg&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
* &amp;lt;tt&amp;gt;'''ambient'''&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;'''diffuse'''&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;'''specular'''&amp;lt;/tt&amp;gt;. Four-component vectors that specify the light color.&lt;br /&gt;
* &amp;lt;tt&amp;gt;'''attenuation'''&amp;lt;/tt&amp;gt;. Three-component vector where &amp;lt;code&amp;gt;&amp;lt;c&amp;gt;&amp;lt;/code&amp;gt; specifies the constant factor, &amp;lt;code&amp;gt;&amp;lt;l&amp;gt;&amp;lt;/code&amp;gt; specifies the linear factor and &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;q&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; specifies the quadratic factor. These factors are plugged into the OpenGL light attenuation formula [[File:Spotlight_attenuation.png]] where d is the distance of the fragment to the light source. See this [http://wiki.ogre3d.org/tiki-index.php?page=-Point+Light+Attenuation table] for a list of attenuation values based on the range of the light.&lt;br /&gt;
* &amp;lt;tt&amp;gt;'''range-m'''&amp;lt;/tt&amp;gt;. Maximum range from the light source position in meters. This value will be used by the renderers to determine if a fragment is illuminated by this source. Every fragment outside this range isn't guaranteed to be affected by the light, even if the attenuation factor isn't 0 in that particular fragment.&lt;br /&gt;
* &amp;lt;tt&amp;gt;'''cutoff'''&amp;lt;/tt&amp;gt;. Only available in &amp;lt;tt&amp;gt;spot&amp;lt;/tt&amp;gt; lights. It specifies the maximum spread angle of a light source. Only values in the range 0 90 are accepted. If the angle between the direction of the light and the direction from the light to the fragment being lighted is greater than the spot cutoff angle, it won't be lit.&lt;br /&gt;
* &amp;lt;tt&amp;gt;'''exponent'''&amp;lt;/tt&amp;gt;. Only available in &amp;lt;tt&amp;gt;spot&amp;lt;/tt&amp;gt; lights. Higher spot exponents result in a more focused light source, regardless of the spot cutoff angle.&lt;br /&gt;
* &amp;lt;tt&amp;gt;'''debug-color'''&amp;lt;/tt&amp;gt; ('''Optional'''). Sets the color of the debug light volume. By default it's red.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shadows ===&lt;br /&gt;
&lt;br /&gt;
The shadow mapping algorithm can be customized entirely by the rendering pipeline. This means that each one will have its own requirements when it comes to shadows. Here are some general recommendations:&lt;br /&gt;
&lt;br /&gt;
* Use the &amp;lt;code&amp;gt;&amp;lt;noshadow&amp;gt;&amp;lt;/code&amp;gt; animation to disable shadows on objects that don't need them. An example would be billboarded lights or really small cockpit elements that don't need shadows and would cause degraded performance.&lt;br /&gt;
* Try to mark as many cockpit objects as possible as &amp;lt;tt&amp;gt;interior&amp;lt;/tt&amp;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;name&amp;gt;interior&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;usage&amp;gt;interior&amp;lt;/usage&amp;gt;&lt;br /&gt;
  &amp;lt;path&amp;gt;Aircraft/JA37/Models/ja37-interior.xml&amp;lt;/path&amp;gt; &amp;lt;!-- All the objects that should only be seen when inside the cockpit are in this file --&amp;gt;&lt;br /&gt;
&amp;lt;/model&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Unlike in Rembrandt, polygons facing the Sun are the ones used to generate the shadow map, so single sided surfaces and non-closed objects should be rendered correctly.&lt;br /&gt;
&lt;br /&gt;
== Pipelines ==&lt;br /&gt;
&lt;br /&gt;
=== Low-Spec pipeline ===&lt;br /&gt;
&lt;br /&gt;
A fixed function forward rendering pipeline mainly targeted to low spec systems. It imitates the classic forward pipeline used before multi-pass rendering was introduced by using two near/far cameras rendering directly to the screen.&lt;br /&gt;
&lt;br /&gt;
[[File:Low-spec Compositor pipeline.png|thumb|Screenshot showing OSG stats of the Compositor-based low-spec rendering pipeline.]]&lt;br /&gt;
&lt;br /&gt;
=== ALS ===&lt;br /&gt;
&lt;br /&gt;
The ALS pipeline tries to bring multipass rendering to the current ALS framework, effectively combining the best from ALS and Project Rembrandt.&lt;br /&gt;
&lt;br /&gt;
==== Cascaded shadow mapping ====&lt;br /&gt;
&lt;br /&gt;
The main issue with shadow mapping in FlightGear is the complexity of the scene graph. Culling times can become huge if we don't carefully select which parts of the scene graph we want to render in the shadow maps. Some possible optimizations:&lt;br /&gt;
* Study the minimum shadow map distance we can get without noticeable light leaking. Select an appropiate amount of cascades (more cascades = more passes over all geometry, and in general we want to keep the amount of forward passes to a minimum). We should have at least three cascades: the first just for cockpit/internal shadows, the second for the whole aircraft and the third for the rest of the scenery geometry. A fourth can be added if the transition between the second and the third is too harsh.&lt;br /&gt;
* Improve the culling masks (simgear/scene/util/RenderConstants.hxx). The CASTSHADOW_BIT flag is present in almost every object in the scene graph. Turning this flag off for trees, random buildings and other geometry intensive objects improves framerates by a very considerable amount. Should the user be able to select which objects cast shadows?&lt;br /&gt;
* Should the terrain cast shadows? The terrain is rarely steep enough to cast shadows. Apart from that, the terrain in FlightGear messes with automatic near/far computations for the shadow passes since the geometry is not tessellated enough. Also, the terrain LOD is not good enough to have decent cull times at far cascades.&lt;br /&gt;
* Adding a &amp;quot;internal only&amp;quot; shadow flag for aircraft developers. This allows farther shadow cascades to cull complex objects that are only visible in the nearest cascades. (Very important optimization for aircrafts with complex cockpit geometry).&lt;br /&gt;
* Vegetation shadows will be done by the &amp;quot;legacy&amp;quot; method currently in use. Shadow mapping on vegetation is much more expensive in terms of performance and the current algorithm does the job well enough. &amp;lt;ref&amp;gt;https://forum.flightgear.org/viewtopic.php?f=47&amp;amp;p=357606&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Post-processing ====&lt;br /&gt;
&lt;br /&gt;
Gamma correction, night vision and other ALS filters should happen in a quad pass. The current filter_combined() should be left for post-processing that requires as much precision as possible - e.g. dithering to prevent banding). HDR is not a planned feature for now so ALS will be using rgba8 buffers for most of its features.&lt;br /&gt;
&lt;br /&gt;
==== Real-time dynamic reflections ====&lt;br /&gt;
&lt;br /&gt;
Rendering dynamically to a cubemap is possible. As with shadow mapping, minimizing the object count and number of forward passes is vital to get good performance in FlightGear. Rendering to six cubemap faces requires six forward passes, but we can render to a dual paraboloid map instead, reducing this number to two.&lt;br /&gt;
&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
&lt;br /&gt;
When shadows (and multipass rendering in general) come into play, transparent objects have to be treated differently, even when we are dealing with a forward renderer. In OSG there are two ways to separate transparent surfaces:&lt;br /&gt;
&lt;br /&gt;
* Using RenderBins. After a single scene cull traversal, surfaces which belong to a special RenderBin type (DepthSortedBin) are removed or moved to another camera. This is how Rembrandt does it and it is the most backwards compatible approach since RenderBins can be changed directly inside Effects.&lt;br /&gt;
* Using cull masks. Two separate traversals are done: one for opaque objects and another for translucent objects. This requires offering aircraft developers another way of tagging a surface as transparent. A trivial approach would be to add a new &amp;lt;animation&amp;gt; type called 'transparent', but that wouldn't be backwards compatible. Maybe we can add some kind of system where we can change cull masks inside Effects? Would that be too hacky or out of place?&lt;br /&gt;
&lt;br /&gt;
== Creating a custom rendering pipeline ==&lt;br /&gt;
&lt;br /&gt;
Since the Compositor is completely data-driven, new rendering pipelines can be created by writing a custom XML pipeline definition. This section tries to document most of the available parameters, but the best and most up-to-date resource is the Compositor parsing code in SimGear ({{simgear file|simgear/scene/viewer}}). See existing pipelines in {{fgdata file|Compositor}} for practical examples on how to use these parameters.&lt;br /&gt;
&lt;br /&gt;
=== Buffers ===&lt;br /&gt;
&lt;br /&gt;
A buffer represents a texture or, more generically, a region of GPU memory.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; font-size: 85%; width: auto; table-layout: fixed;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Parameter Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Optional&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Value&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Default Value&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{No}}&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
| Passes will be able to address the buffer by this name&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;type&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{No}}&lt;br /&gt;
| &amp;lt;tt&amp;gt;1d, 2d, 2d-array, 2d-multisample, 3d, rect, cubemap&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| Any texture type allowed by OpenGL&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;width&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Any unsigned integer or &amp;lt;tt&amp;gt;screen&amp;lt;/tt&amp;gt; to use the physical viewport width. The &amp;lt;code&amp;gt;&amp;lt;property&amp;gt;&amp;lt;/code&amp;gt; tag can also be used to use a property value&lt;br /&gt;
|&lt;br /&gt;
| Texture width&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;screen-width-scale&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| float&lt;br /&gt;
| &amp;lt;tt&amp;gt;1.0&amp;lt;/tt&amp;gt;&lt;br /&gt;
| If &amp;lt;tt&amp;gt;screen&amp;lt;/tt&amp;gt; was used, this controls the width scaling factor&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;height&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Any unsigned integer or &amp;lt;tt&amp;gt;screen&amp;lt;/tt&amp;gt; to use the physical viewport height. The &amp;lt;code&amp;gt;&amp;lt;property&amp;gt;&amp;lt;/code&amp;gt; tag can also be used to use a property value&lt;br /&gt;
|&lt;br /&gt;
| Texture height&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;screen-height-scale&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| float&lt;br /&gt;
| &amp;lt;tt&amp;gt;1.0&amp;lt;/tt&amp;gt;&lt;br /&gt;
| If &amp;lt;tt&amp;gt;screen&amp;lt;/tt&amp;gt; was used, this controls the height scaling factor&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;depth&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Any unsigned integer. The &amp;lt;code&amp;gt;&amp;lt;property&amp;gt;&amp;lt;/code&amp;gt; tag can also be used to use a property value&lt;br /&gt;
|&lt;br /&gt;
| Texture depth&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;format&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| See {{simgear file|simgear/scene/viewer/CompositorBuffer.cxx}} for the latest available values&lt;br /&gt;
| &amp;lt;tt&amp;gt;rgba8&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Specifies the texture format. It corresponds to the ''internalformat'', ''format'' and ''type'' arguments of the OpenGL function ''glTexImage2D''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;min-filter, mag-filter&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| &amp;lt;tt&amp;gt;linear, linear-mipmap-linear, linear-mipmap-nearest, nearest, nearest-mipmap-linear, nearest-mipmap-nearest&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;linear&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Change the minification and magnification filtering respectively&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;wrap-s, wrap-t, wrap-r&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| &amp;lt;tt&amp;gt;clamp, clamp-to-edge, clamp-to-border, repeat, mirror&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;clamp-to-border&amp;lt;/tt&amp;gt;&lt;br /&gt;
| They change the wrap mode for each coordinate&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;anisotropy&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| float&lt;br /&gt;
| &amp;lt;tt&amp;gt;1.0&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;border-color&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| vec4&lt;br /&gt;
| &amp;lt;tt&amp;gt;(0.0f, 0.0f, 0.0f, 0.0f)&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;shadow-comparison&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| bool&lt;br /&gt;
| &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;shadow-texture-mode&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| &amp;lt;tt&amp;gt;luminance, intensity, alpha&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;luminance&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;shadow-compare-func&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| &amp;lt;tt&amp;gt;never, less, equal, lequal, greater, notequal, gequal, always&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;lequal&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Passes ===&lt;br /&gt;
&lt;br /&gt;
A pass wraps around an [http://public.vrac.iastate.edu/vancegroup/docs/OpenSceneGraphReferenceDocs-3.0/a00089.html osg::Camera]. Passes all have some common parameters:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; font-size: 85%; width: auto; table-layout: fixed;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Parameter Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Optional&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Value&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Default Value&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;clear-color, clear-accum, clear-depth and clear-stencil&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| vec4&lt;br /&gt;
| black, black, &amp;lt;tt&amp;gt;1.0&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt; respectively&lt;br /&gt;
| Pass clear colors&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;clear-mask&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| &amp;lt;tt&amp;gt;color, stencil, depth, accum&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;color depth&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Pass clear mask&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;effect-scheme&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| Valid effect scheme name&lt;br /&gt;
| None&lt;br /&gt;
| The pass will try to use the specified effect scheme to draw every object.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Passes can render to a buffer (Render to Texture), to several buffers (Multiple Render Targets) or directly to the framebuffer. This is accomplished by the &amp;lt;code&amp;gt;&amp;lt;attachment&amp;gt;&amp;lt;/code&amp;gt; tag. Possible parameters of an attachment are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; font-size: 85%; width: auto; table-layout: fixed;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Parameter Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Optional&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Value&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Default Value&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;buffer&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Valid buffer name&lt;br /&gt;
| &lt;br /&gt;
| The name of the buffer to output to&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;component&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{No}}&lt;br /&gt;
| &amp;lt;tt&amp;gt;color, color0&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;color15, depth, stencil, depth-stencil&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| FBO attachment point&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;level&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| int&lt;br /&gt;
| &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Mipmap level of the texture that is attached&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;face&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| int&lt;br /&gt;
| &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Face of cube map texture or z-level of 3d texture&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;mipmap-generation&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| bool&lt;br /&gt;
| &amp;lt;tt&amp;gt;false&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Whether mipmap generation should be done for texture&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;multisample-samples&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| int&lt;br /&gt;
| &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Multisample anti-aliasing (MSAA) samples&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;multisample-color-samples&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| int&lt;br /&gt;
| &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Multisample anti-aliasing (MSAA) color samples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Passes can also receive buffers as input and use them in their shaders. This is accomplished by the &amp;lt;code&amp;gt;&amp;lt;binding&amp;gt;&amp;lt;/code&amp;gt; tag, which has the following parameters:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; font-size: 85%; width: auto; table-layout: fixed;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Parameter Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Optional&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Value&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Default Value&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;buffer&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Valid buffer name&lt;br /&gt;
| &lt;br /&gt;
| The name of the buffer to bind&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;unit&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{No}}&lt;br /&gt;
| int&lt;br /&gt;
| &lt;br /&gt;
| The texture unit to place the texture on. Effects will be able to access the buffer on this texture unit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are specific pass types, each with their own set of custom parameters.&lt;br /&gt;
&lt;br /&gt;
==== scene ====&lt;br /&gt;
Renders the scene from the point of view given by the CameraGroup.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; font-size: 85%; width: auto; table-layout: fixed;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Parameter Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Optional&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Value&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Default Value&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;cull-mask&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| A 32 bit number. See {{simgear file|simgear/scene/util/RenderConstants.hxx}} to know which bits enable what&lt;br /&gt;
| &amp;lt;tt&amp;gt;0xffffffff&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Specifies the cull mask to be used in the underlying &amp;lt;tt&amp;gt;osg::Camera&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;z-near, z-far&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| int&lt;br /&gt;
| Default Z range in the CameraGroup&lt;br /&gt;
| They change the depth range to be used&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;cubemap-face&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| int&lt;br /&gt;
| &amp;lt;tt&amp;gt;-1&amp;lt;/tt&amp;gt; (don't use cubemap)&lt;br /&gt;
| Ignores the given view and projection matrices and uses a custom one that renders the scene as if it was seen from inside a cubemap looking towards the specified face&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== quad ====&lt;br /&gt;
Renders a fullscreen quad with an optional [[Effects|effect]] applied. Useful for screen space shaders (like SSAO, Screen Space Reflections or bloom) and deferred rendering.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; font-size: 85%; width: auto; table-layout: fixed;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Parameter Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Optional&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Value&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Default Value&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;geometry&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| float values for &amp;lt;code&amp;gt;&amp;lt;x&amp;gt;, &amp;lt;y&amp;gt;, &amp;lt;width&amp;gt;, &amp;lt;height&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;0.0, 0.0, 1.0, 1.0&amp;lt;/tt&amp;gt; respectively&lt;br /&gt;
| Size of the fullscreen quad inside the viewport using normalized coordinates.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;effect&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| Valid Effect file&lt;br /&gt;
| None&lt;br /&gt;
| This Effect will be applied to the quad geometry&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== shadow-map ====&lt;br /&gt;
Renders the scene from a light's point of view.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; font-size: 85%; width: auto; table-layout: fixed;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Parameter Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Optional&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Value&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Default Value&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;light-name&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Valid light name that exists in the scene graph&lt;br /&gt;
|&lt;br /&gt;
| The name of the &amp;lt;tt&amp;gt;osg::LightSource&amp;lt;/tt&amp;gt; to use for this shadow map&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| &amp;lt;tt&amp;gt;near-m, far-m&amp;lt;/tt&amp;gt;&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Valid Effect file&lt;br /&gt;
|&lt;br /&gt;
| They specify the depth range of the shadow map&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
* Bring back distortion correction.&lt;br /&gt;
* Some kind of versioning system to be able to make breaking changes in the future if/when the compositor is updated in any significant way, without people having to manually update their configs.&lt;br /&gt;
* Bring back [[Howto:Canvas View Camera Element|Canvas integration]] so aircraft devs have access to the rendering pipeline. This allows to render exterior views in cockpit displays etc.&lt;br /&gt;
* Automatically calculate light source attenuation based on radius and radius based on attenuation.&lt;br /&gt;
* Add 1-bit transparency to shadow mapping (maybe even full blown transparency with multiple depth buffers?).&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Setting a buffer scale factor different from 1.0 and rendering to it might not scale the splash screen correctly.&lt;br /&gt;
* Clustered shading crashes FG if compiled under OSG 3.6. This is related to osg::TextureBuffer changing definition from OSG 3.4 to OSG 3.6 (Images vs BufferData).&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{Appendix}}&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
=== Wiki articles ===&lt;br /&gt;
* [[Uniform Buffer Objects]]&lt;br /&gt;
* [[CompositeViewer Support]]&lt;br /&gt;
* [[FlightGear CIGI Support (Common Image Generator Interface)]]&lt;br /&gt;
&lt;br /&gt;
=== Forum topics ===&lt;br /&gt;
* {{forum link|t=36269|text=The Compositor}}&lt;br /&gt;
* {{forum link|t=35095|text=Clustered Forward Rendering}} (12/2018)&lt;br /&gt;
* {{forum link|t=33045|text=Getting started with RTT}}&lt;br /&gt;
* {{forum link|t=32846|text=Canvas::View Development}}&lt;br /&gt;
* {{forum link|t=23929|text=Gear View in Cockpit}}&lt;br /&gt;
* {{forum link|t=20057|text=Rear-View mirror}}&lt;br /&gt;
* {{forum link|t=18905|text=Progress on synthetic terrain}}&lt;br /&gt;
* {{forum link|t=17184|text=Instruments with heightmaps}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Core development projects]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Compositor&amp;diff=120796</id>
		<title>Compositor</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Compositor&amp;diff=120796"/>
		<updated>2019-11-04T00:04:42Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: corrected compositor compile flag format. There was needed =ON for value definition&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Non-stable|version=2019.2|build_flags=-DENABLE_COMPOSITOR=ON|progress=100}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{forum|47|Effects &amp;amp; Shaders}}&lt;br /&gt;
&lt;br /&gt;
{{infobox subsystem&lt;br /&gt;
|image       = ALS Compositor pipeline.jpg&lt;br /&gt;
|name        = Compositor Subsystem&lt;br /&gt;
|started     = 01/2018 (Available since FlightGear 2019.2)&lt;br /&gt;
|description = Dynamic rendering pipeline configured via the property tree and XML&lt;br /&gt;
|status      = Stable&lt;br /&gt;
|developers  = Fernando García Liñán&lt;br /&gt;
|folders = &lt;br /&gt;
* {{flightgear file|src/Viewer}}&lt;br /&gt;
* {{simgear file|simgear/scene/viewer}}&lt;br /&gt;
* {{fgdata file|Compositor}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The '''Compositor''' aims to bring multi-pass rendering to FlightGear. It encapsulates a rendering pipeline and exposes its parameters to a [[Property Tree]] interface. At startup, FlightGear reads the pipeline definition file for each physical viewport defined on the [[Howto:Configure camera view windows|CameraGroup settings]]. If no Compositor file is specified for a physical camera, the one given by the &amp;lt;code&amp;gt;--compositor=&amp;lt;/code&amp;gt; startup command will be used. If such startup option is not used either, FlightGear will look for a valid Compositor file in $FG_ROOT/Compositor/default.xml&lt;br /&gt;
&lt;br /&gt;
The Compositor introduces a new dedicated fgdata directory for new/custom rendering pipelines: {{Fgdata file|Compositor}}.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
{{See also|Supporting multiple renderers|Howto:Canvas View Camera Element}}&lt;br /&gt;
&lt;br /&gt;
First discussed in 03/2012 during the early [[Rembrandt]] days, Zan (Lauri Peltonen) came up with a set of patches demonstrating how to create an XML-configurable rendering pipeline.&lt;br /&gt;
&lt;br /&gt;
Back then, this work was considered to look pretty promising &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/28946515/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] [Rembrandt] the plan &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Mathias Fröhlich &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Mar 7th, 2012 &lt;br /&gt;
  |added  =  Mar 7th, 2012 &lt;br /&gt;
  |script_version = 0.36 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt; and at the time plans were discussed to unify this with the ongoing Rembrandt implementation (no longer maintained).&lt;br /&gt;
&lt;br /&gt;
Adopting Zan's approach would have meant that efforts like [[Rembrandt]] (deferred rendering) could have been implemented without requiring C++ space modifications, i.e. purely in [[Base package]] space.&lt;br /&gt;
&lt;br /&gt;
Rembrandt's developer (FredB) suggested to extend the format to avoid duplicating the stages when you have more than one viewport, i.e.  specifying a pipeline as a template, with conditions like in effects, and have the current camera layout refer the pipeline that would be duplicated, resized and positioned for each declared viewport &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/28944773/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; Re: [Flightgear-devel] [Rembrandt] the plan &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Frederic Bouvier &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Mar 7th, 2012 &lt;br /&gt;
  |added  =  Mar 7th, 2012 &lt;br /&gt;
  |script_version = 0.36 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zan's original patches can still be found in his newcameras branches which allow the user to define the rendering pipeline in preferences.xml:&lt;br /&gt;
&lt;br /&gt;
* [https://gitorious.org/fg/zans-flightgear?p=fg:zans-flightgear.git;a=shortlog;h=refs/heads/newcameras FlightGear]&lt;br /&gt;
* [https://gitorious.org/fg/zans-simgear?p=fg:zans-simgear.git;a=log;h=refs/heads/newcameras SimGear]&lt;br /&gt;
&lt;br /&gt;
At that point, it didn't have everything Rembrandt's pipeline needs, but most likely could be easily enhanced to support those things. &lt;br /&gt;
&lt;br /&gt;
Basically, the original version added support for multiple camera passes, texture targets, texture formats, passing textures from one pass to another etc, while preserving the standard rendering line if user wants that. &amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
  |url    =  https://sourceforge.net/p/flightgear/mailman/message/28944733/ &lt;br /&gt;
  |title  =  &amp;lt;nowiki&amp;gt; [Flightgear-devel] [Rembrandt] the plan &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |author =  &amp;lt;nowiki&amp;gt; Lauri Peltonen &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
  |date   =  Mar 7th, 2012 &lt;br /&gt;
  |added  =  Mar 7th, 2012 &lt;br /&gt;
  |script_version = 0.36 &lt;br /&gt;
  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since the early days of Zan's groundwork, providing the (hooks) infrastructure to enable base package developers to prototype, test and develop distinct rendering pipelines without requiring C++ space modifications has been a long-standing idea, especially after the [[Canvas]] system became available in early 2012, which demonstrated how RTT-rendering buffers (FBOs) could be set up, created and manipulated procedurally (i.e. at run-time) using XML, the property tree and [[Nasal]] scripting. &amp;lt;ref&amp;gt;https://forum.flightgear.org/search.php?st=0&amp;amp;sk=t&amp;amp;sd=d&amp;amp;sr=posts&amp;amp;keywords=zan++rembrandt+canvas&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The new '''Compositor''' is an improved re-implementation of Zan's original work using not just XML, but also [[Property Tree|properties]] and a handful of [[Canvas]] concepts.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
'''06/2019'''&lt;br /&gt;
&lt;br /&gt;
The Compositor core is complete and stable. Effects and shaders still need to be adapted to the Compositor.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* Completely independent of other parts of the simulator, i.e. it's part of SimGear and can be used in a standalone fashion if needed, ala Canvas.&lt;br /&gt;
* Although independent, its aim is to be fully compatible with the current rendering framework in FG. This includes the Effects system, CameraGroup, Rembrandt and ALS (and obviously the Canvas).&lt;br /&gt;
* Its functionality overlaps Rembrandt: what can be done with Rembrandt can be done with the Compositor, but not vice versa.&lt;br /&gt;
* Fully configurable via an XML interface without compromising performance (ala Effects, using PropertyList files).&lt;br /&gt;
* Flexible, expandable and compatible with modern graphics.&lt;br /&gt;
* It doesn't increase the hardware requirements, it expands the hardware range FG can run on. People with integrated GPUs (Intel HD etc) can run a Compositor with a single pass that renders directly to the screen like before, while people with more powerful cards can run a Compositor that implements deferred rendering, for example.&lt;br /&gt;
* Static branching support. Every pipeline element can be enabled/disabled at startup via a &amp;lt;condition&amp;gt; block.&lt;br /&gt;
&lt;br /&gt;
== Elements ==&lt;br /&gt;
&lt;br /&gt;
=== Buffers ===&lt;br /&gt;
&lt;br /&gt;
A buffer represents a texture or, more generically, a region of GPU memory. It can have the following parameters:&lt;br /&gt;
&lt;br /&gt;
; name&lt;br /&gt;
: Passes will be able to address the buffer by this name.&lt;br /&gt;
; type&lt;br /&gt;
: Any texture type allowed by OpenGL: 1d, 2d, 2d-array, 2d-multisample, 3d, rect or cubemap.&lt;br /&gt;
; width&lt;br /&gt;
: Texture width. It's possible to write 'screen' to use the physical viewport width.&lt;br /&gt;
; screen-width-scale&lt;br /&gt;
: If 'screen' was used, this controls the width scaling factor.&lt;br /&gt;
; height&lt;br /&gt;
: Texture height. It's possible to write 'screen' to use the physical viewport height.&lt;br /&gt;
; screen-height-scale&lt;br /&gt;
: If 'screen' was used, this controls the height scaling factor.&lt;br /&gt;
; depth&lt;br /&gt;
: Texture depth.&lt;br /&gt;
; internal-format, source-format and source-type&lt;br /&gt;
: They specify the texture format. They correspond to the arguments ''internalformat'', ''format'' and ''type'' respectively of the OpenGL function ''glTexImage2D''.&lt;br /&gt;
; min-filter and mag-filter (Optional)&lt;br /&gt;
: They change the minification and magnification filtering respectively. Possible values are: linear, linear-mipmap-linear, linear-mipmap-nearest, nearest, nearest-mipmap-linear and nearest-mipmap-nearest. The default value for both filters is linear.&lt;br /&gt;
; wrap-s, wrap-t and wrap-r (Optional)&lt;br /&gt;
: They change the wrap mode for each coordinate. Possible values are: clamp, clamp-to-edge, clamp-to-border, repeat and mirror. The default value for every coordinate is clamp-to-border.&lt;br /&gt;
; condition&lt;br /&gt;
: A valid boolean condition to enable the buffer at startup (doesn't work at runtime).&lt;br /&gt;
&lt;br /&gt;
A typical [[PropertyList XML File|property tree structure]] describing a buffer may be as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;buffer&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;color&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;type&amp;gt;2d&amp;lt;/type&amp;gt;&lt;br /&gt;
  &amp;lt;width&amp;gt;screen&amp;lt;/width&amp;gt;&lt;br /&gt;
  &amp;lt;height&amp;gt;screen&amp;lt;/height&amp;gt;&lt;br /&gt;
  &amp;lt;screen-width-scale&amp;gt;1.5&amp;lt;/screen-width-scale&amp;gt;&lt;br /&gt;
  &amp;lt;screen-height-scale&amp;gt;1.5&amp;lt;/screen-height-scale&amp;gt;&lt;br /&gt;
  &amp;lt;internal-format&amp;gt;rgba8&amp;lt;/internal-format&amp;gt;&lt;br /&gt;
  &amp;lt;source-format&amp;gt;rgba&amp;lt;/source-format&amp;gt;&lt;br /&gt;
  &amp;lt;source-type&amp;gt;ubyte&amp;lt;/source-type&amp;gt;&lt;br /&gt;
  &amp;lt;min-filter&amp;gt;nearest-mipmap-nearest&amp;lt;/min-filter&amp;gt;&lt;br /&gt;
  &amp;lt;mag-filter&amp;gt;nearest-mipmap-nearest&amp;lt;/mag-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;/buffer&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Passes ===&lt;br /&gt;
&lt;br /&gt;
A pass wraps around an [http://public.vrac.iastate.edu/vancegroup/docs/OpenSceneGraphReferenceDocs-3.0/a00089.html osg::Camera]. Passes all have some common parameters:&lt;br /&gt;
&lt;br /&gt;
; clear-color, clear-accum, clear-depth and clear-stencil&lt;br /&gt;
: Default values are black, black, 1.0 and 0 respectively.&lt;br /&gt;
; clear-color-bit, clear-accum-bit, clear-depth-bit and clear-stencil-bit&lt;br /&gt;
: Default values are true, false, true, false, respectively.&lt;br /&gt;
; effect-scheme&lt;br /&gt;
: The pass will try to use the specified effect scheme to draw every object.&lt;br /&gt;
; condition&lt;br /&gt;
: A valid boolean condition to enable the pass at startup (doesn't work at runtime).&lt;br /&gt;
&lt;br /&gt;
Passes can render to a buffer (Render to Texture), to several buffers (Multiple Render Targets) or directly to the framebuffer. This is accomplished by the &amp;lt;code&amp;gt;&amp;lt;attachment/&amp;gt;&amp;lt;/code&amp;gt; tag. Possible parameters of an attachment are:&lt;br /&gt;
&lt;br /&gt;
; buffer&lt;br /&gt;
: The name of the buffer to output to.&lt;br /&gt;
; component&lt;br /&gt;
: FBO attachment point. Possible values are color0 to color15, depth, stencil and depth-stencil.&lt;br /&gt;
; level (Optional)&lt;br /&gt;
: Controls the mip map level of the texture that is attached. Default value is 0.&lt;br /&gt;
; face (Optional)&lt;br /&gt;
: Controls the face of texture cube map or z level of 3d texture. Default value is 0.&lt;br /&gt;
; mipmap-generation (Optional)&lt;br /&gt;
: Controls whether mipmap generation should be done for texture. Default value is false.&lt;br /&gt;
; multisample-samples (Optional)&lt;br /&gt;
: MSAA samples. Default value is 0.&lt;br /&gt;
; multisample-color-samples (Optional)&lt;br /&gt;
: MSAA color samples. Default value is 0.&lt;br /&gt;
; condition&lt;br /&gt;
: A valid boolean condition to enable the attachment at startup (doesn't work at runtime).&lt;br /&gt;
&lt;br /&gt;
Passes can also receive buffers as input and use them in their shaders. This is accomplished by the &amp;lt;code&amp;gt;&amp;lt;binding/&amp;gt;&amp;lt;/code&amp;gt; tag, which has the following parameters:&lt;br /&gt;
&lt;br /&gt;
; buffer&lt;br /&gt;
: The name of the buffer to bind.&lt;br /&gt;
; unit&lt;br /&gt;
: The texture unit to place the texture on. Effects will be able to access the buffer on this texture unit.&lt;br /&gt;
; condition&lt;br /&gt;
: A valid boolean condition to enable the binding at startup (doesn't work at runtime).&lt;br /&gt;
&lt;br /&gt;
There are specific pass types, each with their own set of custom parameters:&lt;br /&gt;
&lt;br /&gt;
==== scene ====&lt;br /&gt;
Renders the scene from the point of view given by the CameraGroup.&lt;br /&gt;
; cull-mask&lt;br /&gt;
: A 32 bit number that specifies the cull mask to be used. See &amp;lt;tt&amp;gt;simgear/scene/util/RenderConstants.hxx&amp;lt;/tt&amp;gt; to know which bits enable what.&lt;br /&gt;
; z-near and z-far&lt;br /&gt;
: They change the depth range to be used. If both of them are zero, the default Z range in the CameraGroup is used.&lt;br /&gt;
; clustered-forward&lt;br /&gt;
: Enables the use of clustered forward rendering for this pass.&lt;br /&gt;
; cubemap-face&lt;br /&gt;
: Ignores the given view and projection matrices and uses a custom one that renders the scene as if it was seen from inside a cubemap looking towards the specified face.&lt;br /&gt;
&lt;br /&gt;
==== quad ====&lt;br /&gt;
Renders a fullscreen quad with an optional [[Effects|effect]] applied. Useful for screen space shaders (like SSAO, Screen Space Reflections or bloom) and deferred rendering.&lt;br /&gt;
; geometry&lt;br /&gt;
: Specifies the x, y, width and height of the fullscreen quad inside the viewport using normalized coordinates.&lt;br /&gt;
; effect&lt;br /&gt;
: The quad will use this effect.&lt;br /&gt;
&lt;br /&gt;
==== shadow-map ====&lt;br /&gt;
Renders the scene from a light's point of view.&lt;br /&gt;
; light-num&lt;br /&gt;
: The OpenGL light number to use for this shadow map.&lt;br /&gt;
; near-m and far-m&lt;br /&gt;
: They specify the range of the shadow map.&lt;br /&gt;
&lt;br /&gt;
Example XML for a ''scene'' type pass:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pass&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;forward-lighting&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;type&amp;gt;scene&amp;lt;/type&amp;gt;&lt;br /&gt;
  &amp;lt;clear-color type=&amp;quot;vec4d&amp;quot;&amp;gt;0 0 0 0&amp;lt;/clear-color&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;clustered-forward/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;binding&amp;gt;&lt;br /&gt;
    &amp;lt;buffer&amp;gt;shadowmap&amp;lt;/buffer&amp;gt;&lt;br /&gt;
    &amp;lt;unit&amp;gt;10&amp;lt;/unit&amp;gt;&lt;br /&gt;
  &amp;lt;/binding&amp;gt;&lt;br /&gt;
  &amp;lt;attachment&amp;gt;&lt;br /&gt;
    &amp;lt;buffer&amp;gt;color&amp;lt;/buffer&amp;gt;&lt;br /&gt;
    &amp;lt;component&amp;gt;color0&amp;lt;/component&amp;gt;&lt;br /&gt;
    &amp;lt;multisample-samples&amp;gt;4&amp;lt;/multisample-samples&amp;gt;&lt;br /&gt;
    &amp;lt;multisample-color-samples&amp;gt;4&amp;lt;/multisample-color-samples&amp;gt;&lt;br /&gt;
  &amp;lt;/attachment&amp;gt;&lt;br /&gt;
  &amp;lt;attachment&amp;gt;&lt;br /&gt;
    &amp;lt;buffer&amp;gt;depth&amp;lt;/buffer&amp;gt;&lt;br /&gt;
    &amp;lt;component&amp;gt;depth&amp;lt;/component&amp;gt;&lt;br /&gt;
  &amp;lt;/attachment&amp;gt;&lt;br /&gt;
&amp;lt;/pass&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pipelines ==&lt;br /&gt;
&lt;br /&gt;
=== Low-Spec pipeline ===&lt;br /&gt;
&lt;br /&gt;
A fixed function forward rendering pipeline mainly targeted to low spec systems. It imitates the classic forward pipeline used before multi-pass rendering was introduced by using two near/far cameras rendering directly to the screen.&lt;br /&gt;
&lt;br /&gt;
[[File:Low-spec Compositor pipeline.png|thumb|Screenshot showing OSG stats of the Compositor-based low-spec rendering pipeline.]]&lt;br /&gt;
&lt;br /&gt;
=== ALS ===&lt;br /&gt;
&lt;br /&gt;
The ALS pipeline tries to bring multipass rendering to the current ALS framework, effectively combining the best from ALS and Project Rembrandt.&lt;br /&gt;
&lt;br /&gt;
==== Cascaded shadow mapping ====&lt;br /&gt;
&lt;br /&gt;
The main issue with shadow mapping in FlightGear is the complexity of the scene graph. Culling times can become huge if we don't carefully select which parts of the scene graph we want to render in the shadow maps. Some possible optimizations:&lt;br /&gt;
* Study the minimum shadow map distance we can get without noticeable light leaking. Select an appropiate amount of cascades (more cascades = more passes over all geometry, and in general we want to keep the amount of forward passes to a minimum). We should have at least three cascades: the first just for cockpit/internal shadows, the second for the whole aircraft and the third for the rest of the scenery geometry. A fourth can be added if the transition between the second and the third is too harsh.&lt;br /&gt;
* Improve the culling masks (simgear/scene/util/RenderConstants.hxx). The CASTSHADOW_BIT flag is present in almost every object in the scene graph. Turning this flag off for trees, random buildings and other geometry intensive objects improves framerates by a very considerable amount. Should the user be able to select which objects cast shadows?&lt;br /&gt;
* Should the terrain cast shadows? The terrain is rarely steep enough to cast shadows. Apart from that, the terrain in FlightGear messes with automatic near/far computations for the shadow passes since the geometry is not tessellated enough. Also, the terrain LOD is not good enough to have decent cull times at far cascades.&lt;br /&gt;
* Adding a &amp;quot;internal only&amp;quot; shadow flag for aircraft developers. This allows farther shadow cascades to cull complex objects that are only visible in the nearest cascades. (Very important optimization for aircrafts with complex cockpit geometry).&lt;br /&gt;
&lt;br /&gt;
==== Post-processing ====&lt;br /&gt;
&lt;br /&gt;
Gamma correction, night vision and other ALS filters should happen in a quad pass. The current filter_combined() should be left for post-processing that requires as much precision as possible - e.g. dithering to prevent banding). HDR is not a planned feature for now so ALS will be using rgba8 buffers for most of its features.&lt;br /&gt;
&lt;br /&gt;
==== Real-time dynamic reflections ====&lt;br /&gt;
&lt;br /&gt;
Rendering dynamically to a cubemap is possible. As with shadow mapping, minimizing the object count and number of forward passes is vital to get good performance in FlightGear. Rendering to six cubemap faces requires six forward passes, but we can render to a dual paraboloid map instead, reducing this number to two.&lt;br /&gt;
&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
&lt;br /&gt;
When shadows (and multipass rendering in general) come into play, transparent objects have to be treated differently, even when we are dealing with a forward renderer. In OSG there are two ways to separate transparent surfaces:&lt;br /&gt;
&lt;br /&gt;
* Using RenderBins. After a single scene cull traversal, surfaces which belong to a special RenderBin type (DepthSortedBin) are removed or moved to another camera. This is how Rembrandt does it and it is the most backwards compatible approach since RenderBins can be changed directly inside Effects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void removeTransparentBins(simgear::EffectCullVisitor *cv,&lt;br /&gt;
                           osgUtil::RenderBin::RenderBinList &amp;amp;transparent_bins)&lt;br /&gt;
{&lt;br /&gt;
    osgUtil::RenderStage *stage = cv-&amp;gt;getRenderStage();&lt;br /&gt;
    osgUtil::RenderBin::RenderBinList &amp;amp;rbl = stage-&amp;gt;getRenderBinList();&lt;br /&gt;
    for (auto rbi = rbl.begin(); rbi != rbl.end(); ) {&lt;br /&gt;
        if (rbi-&amp;gt;second-&amp;gt;getSortMode() == osgUtil::RenderBin::SORT_BACK_TO_FRONT) {&lt;br /&gt;
            transparent_bins.insert(std::make_pair(rbi-&amp;gt;first, rbi-&amp;gt;second));&lt;br /&gt;
            rbl.erase(rbi++);&lt;br /&gt;
        } else {&lt;br /&gt;
            ++rbi;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Using cull masks. Two separate traversals are done: one for opaque objects and another for translucent objects. This requires offering aircraft developers another way of tagging a surface as transparent. A trivial approach would be to add a new &amp;lt;animation&amp;gt; type called 'transparent', but that wouldn't be backwards compatible. Maybe we can add some kind of system where we can change cull masks inside Effects? Would that be too hacky or out of place?&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
* Bring back distortion correction.&lt;br /&gt;
* Add spotlight support to clustered shading.&lt;br /&gt;
* Some kind of versioning system to be able to make breaking changes in the future if/when the compositor is updated in any significant way, without people having to manually update their configs.&lt;br /&gt;
* Bring back Canvas integration so aircraft devs have access to the rendering pipeline. This allows to render exterior views in cockpit displays etc.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
&lt;br /&gt;
* Setting a buffer scale factor different from 1.0 and rendering to it might not scale the splash screen correctly.&lt;br /&gt;
&lt;br /&gt;
== Related ==&lt;br /&gt;
=== Articles ===&lt;br /&gt;
* [[Uniform Buffer Objects]]&lt;br /&gt;
* [[CompositeViewer Support]]&lt;br /&gt;
* [[FlightGear CIGI Support (Common Image Generator Interface)]]&lt;br /&gt;
=== Discussions ===&lt;br /&gt;
* [https://forum.flightgear.org/viewtopic.php?f=47&amp;amp;t=35095 Clustered Forward Rendering] (12/2018)&lt;br /&gt;
* [https://forum.flightgear.org/viewtopic.php?f=47&amp;amp;t=33045 Getting started with RTT]&lt;br /&gt;
* [https://forum.flightgear.org/viewtopic.php?f=47&amp;amp;t=32846 Canvas::View Development]&lt;br /&gt;
* [https://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=23929 Gear View in Cockpit]&lt;br /&gt;
* [https://forum.flightgear.org/viewtopic.php?f=37&amp;amp;t=20057 Rear-View mirror]&lt;br /&gt;
* [https://forum.flightgear.org/viewtopic.php?f=30&amp;amp;t=18905 Progress on synthetic terrain]&lt;br /&gt;
* [https://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=17184 Instruments with heightmaps]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Appendix}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Core development projects]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Ubuntu&amp;diff=111509</id>
		<title>Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Ubuntu&amp;diff=111509"/>
		<updated>2017-10-31T16:26:20Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: added troubleshooting info for ubuntu 14.04 with latest simgear source (C++11 strict)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Following steps walk through downloading the FlightGear source code, compile and run on Ubuntu 13.04 (x86_64) &lt;br /&gt;
&lt;br /&gt;
== Required Packages ==&lt;br /&gt;
&lt;br /&gt;
Install the following packages and libraries to be able to compile FlightGear: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install git subversion build-essential cmake cmake-curses-gui libpng12-dev libfreetype6-dev&lt;br /&gt;
libjpeg-dev libgif-dev libtiff5-dev libxmu-dev libxi-dev freeglut3-dev libalut-dev libxft-dev libxinerama-dev&lt;br /&gt;
libboost-dev libplib-dev libopenscenegraph-dev libsvn-dev libudev-dev libfontconfig1-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download source == &lt;br /&gt;
&lt;br /&gt;
Create a fgsrc directory and get the source code with git: &lt;br /&gt;
&amp;lt;pre&amp;gt;mkdir ~/fgsrc &lt;br /&gt;
cd ~/fgsrc&lt;br /&gt;
git clone git://git.code.sf.net/p/flightgear/simgear simgear&lt;br /&gt;
git clone git://git.code.sf.net/p/flightgear/flightgear&lt;br /&gt;
git clone git://git.code.sf.net/p/flightgear/fgdata&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Compile == &lt;br /&gt;
&lt;br /&gt;
Create directory to install FlightGear in and create environment variable: &lt;br /&gt;
&amp;lt;pre&amp;gt;export prefix=$HOME/FG-install &amp;amp;&amp;amp; mkdir $prefix&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Create a build directory for each package and run cmake from there: &lt;br /&gt;
&lt;br /&gt;
SimGear: &lt;br /&gt;
&amp;lt;pre&amp;gt;cd ~/fgsrc&lt;br /&gt;
mkdir build-sg&lt;br /&gt;
cd build-sg &lt;br /&gt;
cmake -D CMAKE_INSTALL_PREFIX:PATH=&amp;quot;$prefix&amp;quot; ~/fgsrc/simgear &lt;br /&gt;
make -j2 install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FlightGear: &lt;br /&gt;
&amp;lt;pre&amp;gt;cd ~/fgsrc&lt;br /&gt;
mkdir build-fg&lt;br /&gt;
cd build-fg &lt;br /&gt;
cmake -D CMAKE_INSTALL_PREFIX:PATH=&amp;quot;$prefix&amp;quot; ~/fgsrc/flightgear &lt;br /&gt;
make -j2 install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Run == &lt;br /&gt;
&lt;br /&gt;
Link fgdata to the data directory in FG-install &lt;br /&gt;
&amp;lt;pre&amp;gt;cd $prefix&lt;br /&gt;
ln -s ~/fgsrc/fgdata data&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Run executable: &lt;br /&gt;
&amp;lt;pre&amp;gt;$prefix/bin/fgfs --fg-root=$prefix/data&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
; Link error undefined reference to symbol 'dlopen@@GLIBC_2.2.5&lt;br /&gt;
: Uninstall fltk 1.3 library &amp;lt;pre&amp;gt;sudo apt-get remove libfltk1.3-dev&amp;lt;/pre&amp;gt; See the [http://forum.flightgear.org/viewtopic.php?f=45&amp;amp;t=20164 forum] &lt;br /&gt;
&lt;br /&gt;
; Only-a-black-screen problem:&lt;br /&gt;
: If you are a nvidia user and only get a black screen at startup, you might suffer from Ubuntu bug [https://bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers/+bug/982485 982485]. Have a look at comment [https://bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers/+bug/982485/comments/24 #24] for a possible workaround.&lt;br /&gt;
&lt;br /&gt;
; Ubuntu 14.04 LTS could not compile simgear (error with codecvt include)&lt;br /&gt;
: As of 2017-10-29 C++11 is enforced in simgear ([https://sourceforge.net/p/flightgear/simgear/ci/2642299d772a3b88264d5fb05086817d0742ced7/ commit log]). Ubuntu 14.04 shipped with GCC 4.8 could not handle full C++11 compatibility. In order to change GCC to newer version use ubuntu-toolchain PPA repository like:&lt;br /&gt;
: &amp;lt;pre&amp;gt;sudo add-apt-repository ppa:ubuntu-toolchain-r/test&amp;lt;/pre&amp;gt;&lt;br /&gt;
: &amp;lt;pre&amp;gt;sudo apt-get update&amp;lt;/pre&amp;gt;&lt;br /&gt;
: &amp;lt;pre&amp;gt;sudo apt-get install gcc-5 g++-5&amp;lt;/pre&amp;gt;&lt;br /&gt;
: &amp;lt;pre&amp;gt;sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 60 --slave /usr/bin/g++ g++ /usr/bin/g++-5&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Poland&amp;diff=107802</id>
		<title>Poland</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Poland&amp;diff=107802"/>
		<updated>2017-05-10T10:18:46Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: added link to OSM2CITY generated scenery with forum link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Poland''' (Polish: '''Polska'''), officially the '''Republic of Poland''' (Polish: '''Rzeczpospolita Polska'''), is a country in Central Europe, bordered by Germany to the west; the Czech Republic and Slovakia to the south; Ukraine, Belarus and Lithuania to the east; and the Baltic Sea and Kaliningrad Oblast, a Russian exclave, to the north. The total area of Poland is 312,679 square kilometres (120,726 sq mi), making it  the 9th largest in Europe. Poland has a population of over 38 million people.&lt;br /&gt;
&lt;br /&gt;
== FlightGear community ==&lt;br /&gt;
Polish FlightGear community has own Facebook site [http://www.facebook.com/pages/FlightGear-Polska/184032164996361]&lt;br /&gt;
&lt;br /&gt;
Forums:&lt;br /&gt;
&lt;br /&gt;
== List of developed airports in Poland ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#efefef&amp;quot; | ICAO-Code !! style=&amp;quot;background:#efefef&amp;quot; | Name of Airfield/Town !! style=&amp;quot;background:#efefef&amp;quot; | Status (published) !! style=&amp;quot;background:#efefef&amp;quot; | Status (development) !! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;background:#efefef&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| EPWA || [[Warsaw Chopin Airport]], Warsaw || custom layout, 3d models, airport service || stalled || Part of [https://github.com/marimigu/custom-scenery-polish/ Poland Custom Scenery] &lt;br /&gt;
|-&lt;br /&gt;
| EPSC || [[Goleniow Airport]], Goleniów/Sczecin || custom layout, 3d models, airport service || stalled || Part of [https://github.com/marimigu/custom-scenery-polish/ Poland Custom Scenery] &lt;br /&gt;
|-&lt;br /&gt;
| EPDE || [[Deblin Airport]], Dęblin || custom layout, 3d models || stalled || Part of [https://github.com/marimigu/custom-scenery-polish/ Poland Custom Scenery] Military/civil airport &lt;br /&gt;
|-&lt;br /&gt;
| EPZG || [[Zielona Góra Airport]], Zielona Góra || custom layout, 3d models || stalled || Part of [https://github.com/marimigu/custom-scenery-polish/ Poland Custom Scenery] Civil airport&lt;br /&gt;
|-&lt;br /&gt;
| EPLL || [[Łodź Airport]], Lublinek || custom layout, 3d models || stalled || Part of [https://github.com/marimigu/custom-scenery-polish/ Poland Custom Scenery] Civil airport &lt;br /&gt;
|-&lt;br /&gt;
| EPLB || [[Lublin Airport]], Lublin || v1000 layout, 3d models || stalled || Part of [https://github.com/marimigu/custom-scenery-polish/ Poland Custom Scenery] Civil airport&lt;br /&gt;
|-&lt;br /&gt;
| EPLR || [[Aeroclub of Lublin]] Radawiec || v850 layout, 3d models || stalled || Part of [https://github.com/marimigu/custom-scenery-polish/ Poland Custom Scenery] Grass&lt;br /&gt;
|-&lt;br /&gt;
| EPSW || [[Aeroclub of Swidnik]] Świdnik || v850 layout, 3d models || stalled || Part of [https://github.com/marimigu/custom-scenery-polish/ Poland Custom Scenery] Grass&lt;br /&gt;
|-&lt;br /&gt;
| EPWK || [[Wloclawek-Kruszyn]] || v1000 layout, 3d models || stalled || Part of [https://github.com/marimigu/custom-scenery-polish/ Poland Custom Scenery] Grass&lt;br /&gt;
|-&lt;br /&gt;
| EPPL || [[Plock-Kostrogaj]] || v1000 layout, 3d models, Rembrandt || stalled || Part of [https://github.com/marimigu/custom-scenery-polish/ Poland Custom Scenery] Grass&lt;br /&gt;
|-&lt;br /&gt;
| EP70 || [[Rzepin]] || v850 layout, 3d models || stalled || Part of [https://github.com/marimigu/custom-scenery-polish/ Poland Custom Scenery] Grass, forest landing &lt;br /&gt;
|-&lt;br /&gt;
| EPGD || [[Gdansk Airport ]] || v850 layout, 3d models || stalled || Part of [http://code.google.com/p/sceneria-epzg-babimost/downloads/detail?name=EPGDver.1.0.rar&amp;amp;can=2&amp;amp;q= Poland Custom Scenery] Civil airport&lt;br /&gt;
|-&lt;br /&gt;
| EPBC || [[Warszawa Babice ]] || v850 layout, 3d models || stalled || Part of [https://github.com/marimigu/custom-scenery-polish/ Poland Custom Scenery] Concrete, Warsaw Aeroclub airport&lt;br /&gt;
|-&lt;br /&gt;
| EPRZ || [[Rzeszów Jasionka ]] || layout ver.1000, OKL 3d models || in progress || Part of [https://github.com/marimigu/custom-scenery-polish/ Poland Custom Scenery] Civil airport, OKL Rzeszów, aeroclub&lt;br /&gt;
|-&lt;br /&gt;
| EP65 || [[Smolnik ]] || layout ver.1000, 3d models || in progress || Part of [https://github.com/marimigu/custom-scenery-polish/ Poland Custom Scenery] Grassy airstrip,&lt;br /&gt;
|-&lt;br /&gt;
| EPZA || [[Aeroklub Ziemi Zamojskiej]] || layout ver.1000, 3d models || stalled || Part of [https://github.com/marimigu/custom-scenery-polish/ Poland Custom Scenery] Grassy airstrip,&lt;br /&gt;
|-&lt;br /&gt;
| EPST || [[Aeroklub Stalowowolski]] || layout ver.1000, 3d models || stalled || Part of [https://github.com/marimigu/custom-scenery-polish/ Poland Custom Scenery] Grassy airstrip,&lt;br /&gt;
|-&lt;br /&gt;
| EPKA || [[Kielce Masłów]] || layout ver.1000, 3d models || stalled || Part of [https://github.com/marimigu/custom-scenery-polish/ Poland Custom Scenery] Civil airport, Aeroclub,&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom Scenery of Poland ==&lt;br /&gt;
[[File:Warsaw Skyline.png|thumb|Warsaw skycrapers.]]&lt;br /&gt;
[[File:Hel Peninsula.png|thumb|Hel Peninsula]]&lt;br /&gt;
[[File:Czorsztynskie Lake.png|thumb|Czorsztyńskie Lake]]&lt;br /&gt;
[[File:Warsaw area with OSMcity buildings.png|thumb|Area populated with OSM2CITY buildings, roads and pylons]]&lt;br /&gt;
&lt;br /&gt;
=== Terrain ===&lt;br /&gt;
Custom Scenery of Poland includes whole Poland territory and border areas of surrounding countries. Terrain was generated using CORINE 2006 and OSM data for roads and railways.&lt;br /&gt;
&lt;br /&gt;
=== Objects &amp;amp; airports ===&lt;br /&gt;
Currently we have objects on following airports:&lt;br /&gt;
&lt;br /&gt;
International&lt;br /&gt;
* [[Warsaw Chopin Airport|EPWA  Warsaw-Okęcie]]&lt;br /&gt;
* EPGD Gdańsk-Rębiechowo&lt;br /&gt;
* EPSC Szczecin-Goleniów&lt;br /&gt;
* [[Zielona Góra Airport|EPZG Zielona Góra-Babimost]] &lt;br /&gt;
* EPLL Łódź-Lublinek &lt;br /&gt;
* [[Lublin Airport|EPLB Lublin]]&lt;br /&gt;
* EPRZ Rzeszów Jasionka&lt;br /&gt;
&lt;br /&gt;
Regional&lt;br /&gt;
* EPBC Warsaw-Babice&lt;br /&gt;
* [[Wloclawek-Kruszyn|EPWK Włocławek-Kruszyn]]&lt;br /&gt;
* [[Plock-Kostrogaj|EPPL Płock-Kostrogaj]]&lt;br /&gt;
* EP70 Rzepin&lt;br /&gt;
* [[Smolnik|EP65 Smolnik]]&lt;br /&gt;
&lt;br /&gt;
Aeroclub&lt;br /&gt;
* [[Aeroklub Ziemi Zamojskiej|EPZA Zamość-Mokre]]&lt;br /&gt;
* [[Aeroclub of Lublin|EPLR Lublin-Radawiec]]&lt;br /&gt;
* [[Aeroklub Stalowowolski|EPST Stalowa-Wola-Turbia]]&lt;br /&gt;
&lt;br /&gt;
Military&lt;br /&gt;
* EPDE Dęblin&lt;br /&gt;
&lt;br /&gt;
Foreign&lt;br /&gt;
* EKRN Bornholm-Rønne&lt;br /&gt;
* LZTT Poprad-Tatry&lt;br /&gt;
&lt;br /&gt;
See [http://wiki.flightgear.org/Category:Airports_in_Poland Category:Airports in Poland]&lt;br /&gt;
&lt;br /&gt;
And some VFR landmarks including Warsaw skyline.&lt;br /&gt;
&lt;br /&gt;
Most airports uses v.1000 layout. See full list here: [http://code.google.com/p/custom-scenery-polish/w/list]&lt;br /&gt;
&lt;br /&gt;
=== Volunteer ===&lt;br /&gt;
Feel free to help us! This scenery still needs objects and v.1000 layouts. You can take some pictures of nearby airports or VFR landmarks and send them to us. We also appreciate new 3d models. If You'd like to contribute contact us by [https://www.facebook.com/pages/FlightGear-Polska/184032164996361 Facebook] or [https://plus.google.com/112579708746822167956/posts?hl=pl Google +].&lt;br /&gt;
&lt;br /&gt;
=== Credits ===&lt;br /&gt;
* SP-DAM objects, layouts&lt;br /&gt;
* SP-MMA objects, layouts, terrain&lt;br /&gt;
* SP-MAKA objects&lt;br /&gt;
* SP-R22 objects&lt;br /&gt;
* Zbyszek objects, layouts &lt;br /&gt;
&lt;br /&gt;
=== Download ===&lt;br /&gt;
You can download custom scenery from:&lt;br /&gt;
   '''git'''  https://github.com/marimigu/custom-scenery-polish&lt;br /&gt;
&lt;br /&gt;
=== OSM Scenery (Buildings, Roads, Pylons) ===&lt;br /&gt;
&lt;br /&gt;
* Detailed scenery for Poland area can be fetched from [[Areas populated with osm2city scenery]]&lt;br /&gt;
* More information can be reached on the FlightGear forum: https://forum.flightgear.org/viewtopic.php?f=5&amp;amp;t=32172&lt;br /&gt;
&lt;br /&gt;
[[Category:Places]]&lt;br /&gt;
[[Category:Poland]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Warsaw_area_with_OSMcity_buildings.png&amp;diff=107801</id>
		<title>File:Warsaw area with OSMcity buildings.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Warsaw_area_with_OSMcity_buildings.png&amp;diff=107801"/>
		<updated>2017-05-10T10:16:39Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=Area populated with OSM2CITY buildings, roads and pylons}}&lt;br /&gt;
|date=2017-05-10&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Slawekmikula|Slawekmikula]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-4.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OSM2City]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Areas_populated_with_osm2city_scenery&amp;diff=107800</id>
		<title>Areas populated with osm2city scenery</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Areas_populated_with_osm2city_scenery&amp;diff=107800"/>
		<updated>2017-05-10T10:10:46Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: added eastern/central europe areas&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of '''areas populated with [[osm2city.py|osm2city]] scenery''' available for download.&lt;br /&gt;
&lt;br /&gt;
== Available areas ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Download link !! Area !! Status !! Forum thread !! Remarks&lt;br /&gt;
|-&lt;br /&gt;
| [https://onedrive.live.com/redir?resid=7d366cbd5efb21e2!1642&amp;amp;authkey=!APsD2Zn-Jq3m5OA&amp;amp;ithint=folder%2czip The Netherlands]&lt;br /&gt;
| [[File:EHoutline.png|thumb|150px]] || {{done}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://onedrive.live.com/redir?resid=7d366cbd5efb21e2!1645&amp;amp;authkey=!AAx41T78jYrL4KI&amp;amp;ithint=file%2czip Southern UK]&lt;br /&gt;
| [[File:EGOutline.png|thumb|150px]] || {{done}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://onedrive.live.com/redir?resid=7d366cbd5efb21e2!1646&amp;amp;authkey=!AFAFUx-rFpUiRPk&amp;amp;ithint=file%2czip Ireland]&lt;br /&gt;
| [[File:EIOutline.png|thumb|150px]] || {{done}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://onedrive.live.com/redir?resid=7D366CBD5EFB21E2!1651&amp;amp;authkey=!APsD2Zn-Jq3m5OA&amp;amp;ithint=file%2czip Switzerland]&lt;br /&gt;
| [[File:LSOutline.png|thumb|150px]] || {{done}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://drive.google.com/open?id=0B2CN49kDuXHgZ3U0LUFnU2ZJREE Phuket]&lt;br /&gt;
| || {{done}} || https://forum.flightgear.org/viewtopic.php?f=5&amp;amp;t=30113 ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://dl.dropboxusercontent.com/u/24846517/fg/osm2city/LOWI_OSM_buildings_20140928.tgz LOWI]&lt;br /&gt;
| || {{done}} || https://forum.flightgear.org/viewtopic.php?f=5&amp;amp;t=19625 ||&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| [https://drive.google.com/file/d/0B5TeZxXfefn3Q2F5ejFfVHBRTlE/view?usp=sharing Europe/Spain]&lt;br /&gt;
| || {{done}} || https://forum.flightgear.org/viewtopic.php?f=5&amp;amp;t=19625 ||&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| [https://drive.google.com/open?id=0B5TeZxXfefn3NUp4NkM2b1hPVDQ African/Canary islands]&lt;br /&gt;
| || {{done}} || https://forum.flightgear.org/viewtopic.php?f=5&amp;amp;t=19625 ||&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| [https://drive.google.com/open?id=0B5TeZxXfefn3Vll5cGVEcndZMTg Europe/Portugal]&lt;br /&gt;
| || {{done}} || https://forum.flightgear.org/viewtopic.php?f=5&amp;amp;t=19625 ||&lt;br /&gt;
|-&lt;br /&gt;
| [http://zorba-osm2city.s3-website.eu-central-1.amazonaws.com/ Europe/Poland]&lt;br /&gt;
| || {{done}} || https://forum.flightgear.org/viewtopic.php?f=5&amp;amp;t=32172 || FG 2017.1 and up&lt;br /&gt;
|-&lt;br /&gt;
| [http://zorba-osm2city.s3-website.eu-central-1.amazonaws.com/ Europe/Slovakia]&lt;br /&gt;
| || {{done}} || https://forum.flightgear.org/viewtopic.php?f=5&amp;amp;t=32172 || FG 2017.1 and up&lt;br /&gt;
|-&lt;br /&gt;
| [http://zorba-osm2city.s3-website.eu-central-1.amazonaws.com/ Europe/Lithuania]&lt;br /&gt;
| || {{done}} || https://forum.flightgear.org/viewtopic.php?f=5&amp;amp;t=32172 || FG 2017.1 and up&lt;br /&gt;
|-&lt;br /&gt;
| [http://zorba-osm2city.s3-website.eu-central-1.amazonaws.com/ Europe/Latvia]&lt;br /&gt;
| || {{done}} || https://forum.flightgear.org/viewtopic.php?f=5&amp;amp;t=32172 || FG 2017.1 and up&lt;br /&gt;
|-&lt;br /&gt;
| [http://zorba-osm2city.s3-website.eu-central-1.amazonaws.com/ Europe/Estonia]&lt;br /&gt;
| || {{done}} || https://forum.flightgear.org/viewtopic.php?f=5&amp;amp;t=32172 || FG 2017.1 and up&lt;br /&gt;
|-&lt;br /&gt;
| [http://zorba-osm2city.s3-website.eu-central-1.amazonaws.com/ Europe/Bulgaria]&lt;br /&gt;
| || {{done}} || https://forum.flightgear.org/viewtopic.php?f=5&amp;amp;t=32172 || FG 2017.1 and up&lt;br /&gt;
|-&lt;br /&gt;
| [http://zorba-osm2city.s3-website.eu-central-1.amazonaws.com/ Europe/Hungary]&lt;br /&gt;
| || {{done}} || https://forum.flightgear.org/viewtopic.php?f=5&amp;amp;t=32172 || FG 2017.1 and up&lt;br /&gt;
|-&lt;br /&gt;
| [http://zorba-osm2city.s3-website.eu-central-1.amazonaws.com/ Europe/Romania]&lt;br /&gt;
| || {{done}} || https://forum.flightgear.org/viewtopic.php?f=5&amp;amp;t=32172 || FG 2017.1 and up&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
* [[osm2city.py]] – Script used to generate this scenery.&lt;br /&gt;
&lt;br /&gt;
[[Category:Scenery]]&lt;br /&gt;
[[Category:Lists]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Areas_populated_with_osm2city_scenery&amp;diff=107277</id>
		<title>Areas populated with osm2city scenery</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Areas_populated_with_osm2city_scenery&amp;diff=107277"/>
		<updated>2017-03-05T09:22:15Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: added compatiblity note for Poland area&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of '''areas populated with [[osm2city.py|osm2city]] scenery''' available for download.&lt;br /&gt;
&lt;br /&gt;
== Available areas ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Download link !! Area !! Status !! Forum thread !! Remarks&lt;br /&gt;
|-&lt;br /&gt;
| [https://onedrive.live.com/redir?resid=7d366cbd5efb21e2!1642&amp;amp;authkey=!APsD2Zn-Jq3m5OA&amp;amp;ithint=folder%2czip The Netherlands]&lt;br /&gt;
| [[File:EHoutline.png|thumb|150px]] || {{done}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://onedrive.live.com/redir?resid=7d366cbd5efb21e2!1645&amp;amp;authkey=!AAx41T78jYrL4KI&amp;amp;ithint=file%2czip Southern UK]&lt;br /&gt;
| [[File:EGOutline.png|thumb|150px]] || {{done}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://onedrive.live.com/redir?resid=7d366cbd5efb21e2!1646&amp;amp;authkey=!AFAFUx-rFpUiRPk&amp;amp;ithint=file%2czip Ireland]&lt;br /&gt;
| [[File:EIOutline.png|thumb|150px]] || {{done}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://onedrive.live.com/redir?resid=7D366CBD5EFB21E2!1651&amp;amp;authkey=!APsD2Zn-Jq3m5OA&amp;amp;ithint=file%2czip Switzerland]&lt;br /&gt;
| [[File:LSOutline.png|thumb|150px]] || {{done}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://drive.google.com/open?id=0B2CN49kDuXHgZ3U0LUFnU2ZJREE Phuket]&lt;br /&gt;
| || {{done}} || https://forum.flightgear.org/viewtopic.php?f=5&amp;amp;t=30113 ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://dl.dropboxusercontent.com/u/24846517/fg/osm2city/LOWI_OSM_buildings_20140928.tgz LOWI]&lt;br /&gt;
| || {{done}} || https://forum.flightgear.org/viewtopic.php?f=5&amp;amp;t=19625 ||&lt;br /&gt;
|-&lt;br /&gt;
| [http://zorba-osm2city.s3-website.eu-central-1.amazonaws.com/ Europe/Poland]&lt;br /&gt;
| || {{done}} ||  || FG 2017.1 and up&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
* [[osm2city.py]] – Script used to generate this scenery.&lt;br /&gt;
&lt;br /&gt;
[[Category:Scenery]]&lt;br /&gt;
[[Category:Lists]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Areas_populated_with_osm2city_scenery&amp;diff=107263</id>
		<title>Areas populated with osm2city scenery</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Areas_populated_with_osm2city_scenery&amp;diff=107263"/>
		<updated>2017-03-03T18:35:51Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: added europe/poland location&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of '''areas populated with [[osm2city.py|osm2city]] scenery''' available for download.&lt;br /&gt;
&lt;br /&gt;
== Available areas ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Download link !! Area !! Status !! Forum thread !! Remarks&lt;br /&gt;
|-&lt;br /&gt;
| [https://onedrive.live.com/redir?resid=7d366cbd5efb21e2!1642&amp;amp;authkey=!APsD2Zn-Jq3m5OA&amp;amp;ithint=folder%2czip The Netherlands]&lt;br /&gt;
| [[File:EHoutline.png|thumb|150px]] || {{done}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://onedrive.live.com/redir?resid=7d366cbd5efb21e2!1645&amp;amp;authkey=!AAx41T78jYrL4KI&amp;amp;ithint=file%2czip Southern UK]&lt;br /&gt;
| [[File:EGOutline.png|thumb|150px]] || {{done}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://onedrive.live.com/redir?resid=7d366cbd5efb21e2!1646&amp;amp;authkey=!AFAFUx-rFpUiRPk&amp;amp;ithint=file%2czip Ireland]&lt;br /&gt;
| [[File:EIOutline.png|thumb|150px]] || {{done}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://onedrive.live.com/redir?resid=7D366CBD5EFB21E2!1651&amp;amp;authkey=!APsD2Zn-Jq3m5OA&amp;amp;ithint=file%2czip Switzerland]&lt;br /&gt;
| [[File:LSOutline.png|thumb|150px]] || {{done}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://drive.google.com/open?id=0B2CN49kDuXHgZ3U0LUFnU2ZJREE Phuket]&lt;br /&gt;
| || {{done}} || https://forum.flightgear.org/viewtopic.php?f=5&amp;amp;t=30113 ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://dl.dropboxusercontent.com/u/24846517/fg/osm2city/LOWI_OSM_buildings_20140928.tgz LOWI]&lt;br /&gt;
| || {{done}} || https://forum.flightgear.org/viewtopic.php?f=5&amp;amp;t=19625 ||&lt;br /&gt;
|-&lt;br /&gt;
| [http://zorba-osm2city.s3-website.eu-central-1.amazonaws.com/ Europe/Poland]&lt;br /&gt;
| || {{done}} ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
* [[osm2city.py]] – Script used to generate this scenery.&lt;br /&gt;
&lt;br /&gt;
[[Category:Scenery]]&lt;br /&gt;
[[Category:Lists]]&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Template:OSM_Navigation&amp;diff=107206</id>
		<title>Template:OSM Navigation</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Template:OSM_Navigation&amp;diff=107206"/>
		<updated>2017-02-26T16:05:04Z</updated>

		<summary type="html">&lt;p&gt;Slawekmikula: correct repository addresses&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox subsystem&lt;br /&gt;
|name         = Autogen Scenery&lt;br /&gt;
|started      = 11/2013 &lt;br /&gt;
|description  = Improved autogen support for FlightGear using OSM data&lt;br /&gt;
|status       = Under active development as of 02/2016&lt;br /&gt;
|developers   = radi, vanosten, Soitanen, portreekid&lt;br /&gt;
|topic-fg     = https://gitlab.com/fg-radi/osm2city/&lt;br /&gt;
|topic-fgdata = https://gitlab.com/fg-radi/osm2city-data/&lt;br /&gt;
}}&lt;br /&gt;
{{sidebar&lt;br /&gt;
|name  = OSM Navigation&lt;br /&gt;
|title = OpenStreetMap use in FlightGear&lt;br /&gt;
|contentstyle = text-align: left;&lt;br /&gt;
&lt;br /&gt;
| content1 = &lt;br /&gt;
* [[OpenStreetMap]]&lt;br /&gt;
* [[Using OSM Vector Data in FlightGear]]&lt;br /&gt;
* [[Canvas Scenery Overlays]]&lt;br /&gt;
* [[Traffic Shader]]&lt;br /&gt;
* [[AutoGen Scenery for FlightGear]]&lt;br /&gt;
* [[OpenStreetMap buildings]]&lt;br /&gt;
* [[Osm2city.py]]&lt;br /&gt;
** [[Osm2city.py Textures]]&lt;br /&gt;
* [[Random Buildings]]&lt;br /&gt;
* [[OpenStreetMap import]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
TODO:&lt;br /&gt;
* add discussions&lt;br /&gt;
* add repos&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}{{main other|&lt;br /&gt;
[[Category:OpenStreetMap]]&lt;br /&gt;
[[Category:Core development projects]]}}&lt;br /&gt;
[[Category:OSM2City]]&lt;br /&gt;
[[Category:Python Software]]&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Informative template|1=&lt;br /&gt;
== Goal ==&lt;br /&gt;
This template can be used at the top of articles related to using OpenStreetMap with FlightGear or the scenery tools.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Put this at the top of the article:&lt;br /&gt;
 {{obr}}'''OSM Navigation'''{{cbr}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Navigation templates]]&lt;br /&gt;
[[Category:OpenStreetMap|OSM Navigation]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Slawekmikula</name></author>
	</entry>
</feed>