<?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=5H1N0B1</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=5H1N0B1"/>
	<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/Special:Contributions/5H1N0B1"/>
	<updated>2026-04-15T22:29:44Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5&amp;diff=140935</id>
		<title>Dassault Mirage 2000-5</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5&amp;diff=140935"/>
		<updated>2024-11-10T16:06:10Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: Undo revision 140934 by 5H1N0B1 (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Distinguish|Dassault Mirage 2000}}&lt;br /&gt;
{{Note|The new JSBsim version is now in master.}}&lt;br /&gt;
{{:{{PAGENAME}}/info}}&lt;br /&gt;
The '''Dassault Mirage 2000-5''' is a French multirole, single-engine fourth-generation jet fighter manufactured by Dassault Aviation. An improvement of the [[Mirage 2000]], it was improved by Thomson-CSF (now Thales Group) in the early 1990s in response to the Mirage 2000's ageing compared to the latest [[F-16]] fighter models.&lt;br /&gt;
&lt;br /&gt;
Improvements over the Mirage 2000 include the capability to carry a laser designator pod, new pulse-doppler multi-target radar, new defensive systems, and updated avionics, including a night vision-compatible glass cockpit, wide-angle [[HUD]], and {{Abbr|HOTAS|Hands On Throttle And Stick}} controls.&lt;br /&gt;
&lt;br /&gt;
Coming into service with the French Air Force (''Armée de l'Air''), and exported to several countries, Dassault further improved it by creating the {{Wikipedia|Dassault Mirage 2000#Mirage 2000-5 Mark 2|Mirage 2000-5 Mark 2}}, the most advanced of all Mirage 2000s.&lt;br /&gt;
&lt;br /&gt;
== Keyboard Controls ==&lt;br /&gt;
{| class=&amp;quot;keytable&amp;quot;&lt;br /&gt;
! Key&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|d}} || Open/close canopy (3 positions : opened, closed and half-opened)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|e}} || Fire weapon&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|e}} || Parachute (landing)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|j}} || Jettison tank&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|t}} || Toggle ECM &amp;amp; RWR&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|t}} || Change radar distances (10, 20 50, 100, 150)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|r}} || Activate/deactivate targeting the nearest in the HUD (the target has to be bellow radar range)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|h}} || Toggle armament circles&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;}} || On/off Engines (autostart)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|l}} || Flare out&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|l}} || Landing lights&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|n}} || Next target&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|n}} || Previous target&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|b}} || Air brake&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|w}} || Cycle stick weapon mode selector&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
[[File:Mirage 2000-5's colored afturburner.png|thumb|mirage 2000-5's colored afturburner at night]]&lt;br /&gt;
=== General characteristics ===&lt;br /&gt;
* Crew: 1&lt;br /&gt;
* Length: 14.36 m (47 ft 1 in)&lt;br /&gt;
* Wingspan: 9.13 m (29 ft)&lt;br /&gt;
* Height: 5.20 m (17 ft)&lt;br /&gt;
* Wing area: 41 m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; (441.3 ft&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Weight ===&lt;br /&gt;
* Empty weight: 7,500 kg (16,350 lb)&lt;br /&gt;
* Loaded weight: 13,800 kg (30,420 lb)&lt;br /&gt;
* Max. takeoff weight: 17,000 kg (37,500 lb)&lt;br /&gt;
&lt;br /&gt;
=== Engine ===&lt;br /&gt;
* Powerplant: 1 x SNECMA M53-P2 afterburning turbofan &lt;br /&gt;
** Dry thrust: 64.3 kN (14,500 lbf)&lt;br /&gt;
** Thrust with afterburner: 95.1 kN (21,400 lbf)&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
* Maximum speed: &lt;br /&gt;
** High altitude: Mach 2.2 (2,530+ km/h, 1,500+ mph)&lt;br /&gt;
** Low altitude: 1,110 km/h (690 mph)&lt;br /&gt;
* Range: 1,550 km (837 nmi, 963 mi) with drop tanks&lt;br /&gt;
* Ferry range: 3,335 km (1,800 nmi, 2,073 mi) with auxiliary fuel&lt;br /&gt;
* Service ceiling: 17,060 m (59,000 ft)&lt;br /&gt;
* Rate of climb: 285 m/s (56,000 ft/min)&lt;br /&gt;
* Wing loading: 337 kg/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; (69 lb/ft&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;)&lt;br /&gt;
* Thrust/weight: 0.91&lt;br /&gt;
* Roll Rate: 270 deg/sec &lt;br /&gt;
* G limits: +9.0 g / -3.2 g (override mode: 11 g, structural limit: 12 g)&lt;br /&gt;
&lt;br /&gt;
== Help ==&lt;br /&gt;
=== Weapons ===&lt;br /&gt;
[[File:Mirage 2000-5's weapons.png|thumb|some mirage 2000-5's air-air weapons]]&lt;br /&gt;
Available weapons for FlightGear's Mirage 2000-5 are as follows:&lt;br /&gt;
&lt;br /&gt;
* Guns: 2 x 30 mm (1.18 in) DEFA 554 revolver cannon, 125 rounds per gun&lt;br /&gt;
&lt;br /&gt;
* Missiles:&lt;br /&gt;
** Air-to-air missiles: {{Wikipedia|MBDA MICA}}, {{Wikipedia|R.550 Magic|Matra R.550 Magic 2}}, {{Wikipedia|Super 530|Matra Super 530}} {{clarify}}, {{Wikipedia|AIM-120 AMRAAM}}, {{Wikipedia|AIM-9 Sidewinder}}, {{Wikipedia|AIM-54 Phoenix}}, and the {{Wikipedia|R-73 (missile)#Variants|Vympel R-74}}.&lt;br /&gt;
** Air-to-ground missiles: {{Wikipedia|Storm Shadow}} (''SCALP'' in French service), {{Wikipedia|Sea Eagle (missile)|Sea Eagle}}, {{Wikipedia|AGM-65 Maverick}}, {{Wikipedia|GBU-16}}, and the {{Wikipedia|GBU-12}}.&lt;br /&gt;
&lt;br /&gt;
==== How to fire a guided missile ==== &lt;br /&gt;
# Select your missile on the graphical MFD, with the top button of the left series button.&lt;br /&gt;
# Then, select your weapon mode with {{key press|w}} (cycles through nothing, guns, missiles)&lt;br /&gt;
# Press {{key press|Shift|r}} to activate radar illumination.&lt;br /&gt;
# Acquire your target.&lt;br /&gt;
# Fire with {{key press|e}}.&lt;br /&gt;
&lt;br /&gt;
{{Note|Due to the generic missile script, FlightGear's Mirage 2000-5 can carry missiles not carried on the aircraft in real life.  For a list of weapons available to the aircraft in real life, please see {{Wikipedia|Dassault Mirage 2000#Specifications (Mirage 2000C)}}.}}&lt;br /&gt;
{{Caution|It is a bad idea to fire a missile while under negative G.}}&lt;br /&gt;
&lt;br /&gt;
=== Refueling ===&lt;br /&gt;
The Mirage is capable of [[mid-air refueling]].  You can enter the desired [[TACAN]] code into the right MFD (see second video), and then use both radar and the TACAN to guide you in.&lt;br /&gt;
&lt;br /&gt;
=== Radar ===&lt;br /&gt;
The radar has 5 ranges (10, 20, 50, 100, and 150 nm) which can be switched with {{key press|t}}. It can identify multiple targets and show some information about them.  &lt;br /&gt;
&lt;br /&gt;
=== HUD ===&lt;br /&gt;
The HUD shows both potential targets and the locked target.  It also shows if the undercarriage is extended, the distance to the ground if the altitude is below 5,000 feet, and the Mach speed if the aircraft is going faster than Mach 0.8.&lt;br /&gt;
=== Dual seat in Multiplayer Mode ===&lt;br /&gt;
You can flight in the back seat as a passenger in [[Multiplayer]] mode&lt;br /&gt;
This is under development, the goal is to make the mirage 2000 [[Dual Control]] ready !&lt;br /&gt;
&lt;br /&gt;
how to test multiplayer on same PC ?&lt;br /&gt;
* run flightgear with parameters :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--aircraft=m2000-5B          --multiplay=out,10,127.0.0.1,5000 --multiplay=in,10,127.0.0.1,5001 --callsign=&amp;quot;PILOT&amp;quot; --prop:/sim/remote/pilot-callsign=&amp;quot;NOSA&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* run another instance with parameters :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--aircraft=m2000-5B-backseat --multiplay=out,10,127.0.0.1,5001 --multiplay=in,10,127.0.0.1,5000 --callsign=&amp;quot;NOSA&amp;quot;  --prop:/sim/remote/pilot-callsign=&amp;quot;PILOT&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[File:Mirage2000-5 multiplayer dual seat.png|thumb|mirage 2000-5 multiplayer dual seat]]&lt;br /&gt;
&lt;br /&gt;
FYI : NOSA (Navigateur Officier Systèmes d'Armes) mean Weapons Systems Officer Navigator.&lt;br /&gt;
&lt;br /&gt;
=== Sky Knights Squadron textbook ===&lt;br /&gt;
&lt;br /&gt;
==== I. Weapons use ====&lt;br /&gt;
FOX-3:&lt;br /&gt;
MICA-EM: under 40 NM, choose the radar range just above your enemy's distance. Comparable to AIM-120, but better at a shorter distance. Extremely maneuverable due to thrust vectoring.&lt;br /&gt;
&lt;br /&gt;
FOX-1:&lt;br /&gt;
Super 530D: under 25 NM, rather precise at close range too. Slightly better than the AIM-7.&lt;br /&gt;
&lt;br /&gt;
FOX-2:&lt;br /&gt;
MICA-IR: use under 20 NM, target must be locked with radar. Very useful in dogfights because of its superiority towards the AIM-9. Extremely maneuverable due to thrust vectoring.&lt;br /&gt;
Magic II: under 7 NM, target must be locked with radar. Corrects trajectory every 2/10th of second, rather precise, but inferior to AIM-9.&lt;br /&gt;
&lt;br /&gt;
Guns: 125 rounds, don't waste them by shooting above 1000 meters, shoot at close range only when you have a solution. In a fight against several enemies, you can't be winchester.&lt;br /&gt;
&lt;br /&gt;
WARNING against aircraft like the F-15, the Mirage has a slight disadvantage (less missiles) and it's better if you can go nearer and engage dogfight, in which the Mirage outturns many fighters.&lt;br /&gt;
&lt;br /&gt;
==== II. ACM ====&lt;br /&gt;
The Mirage has a very good turn rate, which means you can keep on with full reheat for several minutes in a high-G turn. Against a fighter like the JA-37 or the F-15, it is recommended to enter a two-circle fight. Against better turning aircraft such as the F-16, it is recommended to choose a one-circle fight.&lt;br /&gt;
When merging with your opponent, it is suggested to throttle up 1 or 2 nautical miles before crossing your enemy, as the engine is a bit slow in response time. Also, the Mirage tends to lose lots of speed when turning: since it is a delta wing, it is basically a flying airbrake.&lt;br /&gt;
Don't waste energy by climbing high, because you lose speed and offer a still target for your enemy. &lt;br /&gt;
The Mirage 's turn rate is best around 250-350kts, and you should have full reheat to keep on turning.&lt;br /&gt;
If you stay close to the ground (where the Mirage is very manoeuverable), the other pursuing you might crash, but pay attention to your speed, if you stall, there’s no way you can regain your speed before crashing at low altitude. Although against other good aircraft at low level, such as the Viggen, it is better to push them to the stall in a one circle fight, as it is slightly under-powered and a formidable opponent at low altitude.&lt;br /&gt;
&lt;br /&gt;
==== III. Checklist for a dogfight ====&lt;br /&gt;
Start-up: &lt;br /&gt;
* Check fuel&lt;br /&gt;
* Switch the battery on&lt;br /&gt;
* Turn on both alternators&lt;br /&gt;
* Turn on the transformator&lt;br /&gt;
* Switch the cut-off and secure it&lt;br /&gt;
* Switch the left and right (G and D) pumps to “M” &lt;br /&gt;
* Switch the “VENT ON” &lt;br /&gt;
* Open the protection of the starter&lt;br /&gt;
* Check that the BP button has been switched&lt;br /&gt;
* Press the starter during 1 second&lt;br /&gt;
* Press the fuel P button&lt;br /&gt;
* Wait about 30 seconds for the fuel pumps to reach the correct level&lt;br /&gt;
* Open the guard and switch the start selector to ON, the engines will spool up&lt;br /&gt;
* Deselect the Fuel P&lt;br /&gt;
The engines are now idle, you can go on to the next part of the tutorial.&lt;br /&gt;
&lt;br /&gt;
Pre-flight:&lt;br /&gt;
* Close the canopy&lt;br /&gt;
* Turn on A/C and set it to 16.9 – 18°C by turning the knob (WARNING: F=froid=cold and C=chaud=hot)&lt;br /&gt;
* Select flight mode to TO&lt;br /&gt;
* Set transponder according to your mission &lt;br /&gt;
* Set the right MFD according to your mission (compass; radio; RWR; engine dialog; map)&lt;br /&gt;
* Set the navigation dialog according to your mission&lt;br /&gt;
* Reload flares and guns&lt;br /&gt;
* Toggle multiplayer shot report&lt;br /&gt;
* Remove automatic missile view &lt;br /&gt;
* Select payload&lt;br /&gt;
&lt;br /&gt;
Engaging:&lt;br /&gt;
* Set link16 accordingly if you have wingmen&lt;br /&gt;
* Master arm on&lt;br /&gt;
* Set the right MFD to RWR&lt;br /&gt;
* Radar active set at the correct distance &lt;br /&gt;
* MICA-EM selected for BVR, guns for WVR&lt;br /&gt;
* FOV 100-120°, looking up a bit so that you keep eye contact with your opponent in dogfight, but keep sight of your RWR&lt;br /&gt;
* Turn the pilot cam view slightly up and decrease FOV so you have a wide angle&lt;br /&gt;
* If incoming missile, launch a few flares/chaffs and push nose down so the missile, anticipating your movements, will crash to the ground. Other missile evading techniques also valid.&lt;br /&gt;
* Try to engage dogfight, as the Mirage is one of the best in this category&lt;br /&gt;
* Try to break off the fight before the bingo. A fight is won when you are back at your base, safe on ground, and the other is down. It’s no use winning if you crash to the ground after this.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
{{#ev:youtube|uAhXLSO1tt4|||{{en|Video showing the new features of the Mirage 2000-5 (Feb 2015 version)}}|frame}}&lt;br /&gt;
{{#ev:youtube|i9FXj03IDfs|||{{en|Video explaining how to navigate and use the [[autopilot]] &amp;amp; MFD}}|frame}}&lt;br /&gt;
{{#ev:youtube|clKk-Zb2Okw|||{{en|Little demo to explain how work the sniping pod for GBU}}|frame}}&lt;br /&gt;
&lt;br /&gt;
=== Miscelleanous ===&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
Mirage 2000-5's flight in formation lights.png|mirage 2000-5's flight in formation lights&lt;br /&gt;
Mirage 2000-5 flying over France.png|mirage 2000-5 over France&lt;br /&gt;
Mirage 2000-5's mini-hud and logo &amp;quot;2000-5&amp;quot;.png|mirage 2000-5's mini-hud and logo &amp;quot;2000-5&amp;quot;&lt;br /&gt;
Mirage2000-5 2seats with ground equipment.png|mirage 2000-5 2 seats with ground equipment&lt;br /&gt;
Mirage2000-5 2seats with some stores.png|mirage 2000-5 2 seats with some stores&lt;br /&gt;
Mirage2000-5 2seats landing nellis.png|mirage 2000-5 2 seats landing nellis&lt;br /&gt;
Mirage2000-5 2seats ready to start.png|mirage 2000-5 2 seats ready to start&lt;br /&gt;
Mirage2000-5 2seats takeoff under rain.png|mirage 2000-5 2 seats takeoff under rain&lt;br /&gt;
Mirage2000-5 raindrops1.png|mirage 2000-5 raindrops1&lt;br /&gt;
Mirage2000-5 raindrops2.png|mirage 2000-5 raindrops2&lt;br /&gt;
Mirage2000-5 basse altitude with pod.png|mirage 2000-5 flying low altitude with pod &amp;quot;PDLCT&amp;quot;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Refueling ===&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
M2000-5 Refueling.png|[[Mid-air refueling]] with an A330-MRTT&lt;br /&gt;
Refueling using RADAR TACAN.png|Refuelling using [[TACAN]] and radar&lt;br /&gt;
Mirage-2000-5weapons managment.png|Graphical weapon selection&lt;br /&gt;
M2000-5 EICAS.png|EICAS for engine mamagement&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Liveries and logos ===&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
Mirage 2000-5's green-blue ardennes.png|mirage 2000-5's green/blue camo (squadron &amp;quot;Ardennes&amp;quot;)&lt;br /&gt;
Mirage 2000-5's blue-grey camo chimere.png|mirage 2000-5's blue/grey camo (squadron &amp;quot;Chimère d'argent&amp;quot;)&lt;br /&gt;
Mirage 2000-5's desert camo lafayette.png|mirage 2000-5's desert camo (squadron &amp;quot;Lafayette&amp;quot;)&lt;br /&gt;
Mirage2000-5 one seat grey livery.png|mirage 2000-5's grey livery (squadron &amp;quot;Alsace&amp;quot;)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
=== May 2017 version ===&lt;br /&gt;
==== 3D model ====&lt;br /&gt;
* a new two seats version (the mirage 2000B, N and D)&lt;br /&gt;
* new HD (high definition) liveries&lt;br /&gt;
* specific liveries : green digital, snow, black, etc&lt;br /&gt;
* a lot of corrections on littles details (antennas, refueling pole, gears doors, intakes shades, cockpit, wheels, reddish engine) for both versions (one and two seats)&lt;br /&gt;
* ground equipment&lt;br /&gt;
==== effects ====&lt;br /&gt;
* rain effects (sound, raindrops, effects on the fuselage)&lt;br /&gt;
* shakes on high gload, mach 1&lt;br /&gt;
* realistic blackout/redout&lt;br /&gt;
==== Systems ====&lt;br /&gt;
* new improvments on fly by wire systems (the purpose is to obtain maximum realism when flying : pitch limitations on high gload or high angle of attack, pitch and roll limitations when airbrakes are active)&lt;br /&gt;
* more stability with an &amp;quot;auto-trim system&amp;quot;&lt;br /&gt;
* new realistic radar with ground and doppler effects&lt;br /&gt;
* new instruments&lt;br /&gt;
* canvas nav-display&lt;br /&gt;
* partial canvas hud : radar detected targets are designed on the hud&lt;br /&gt;
==== Weapons and stores ====&lt;br /&gt;
* more realistic weapons to dogfight [http://opredflag.com/ OPRF team] : realistic damages, counter measures, missile trajectory&lt;br /&gt;
* new weapons or 3d improvment for : matra mica IR, mica EM, magic, exocet&lt;br /&gt;
* liveries on external tanks&lt;br /&gt;
* inert pod : PDLCT (pod de designation laser - camera thermique)&lt;br /&gt;
&lt;br /&gt;
=== Feb 2015 version ===&lt;br /&gt;
==== 3D model ====&lt;br /&gt;
* Several more instrument in the cockpit, including startup instrument, and light variator instruments.&lt;br /&gt;
* New, more realistic gun explosion.&lt;br /&gt;
* New, more realistic missile explosion.&lt;br /&gt;
* New afterburner flames that take differents colors, depending on the sun position.&lt;br /&gt;
* New [[Rembrandt]] light effects in the cockpit.&lt;br /&gt;
* New rule about each instrument's light effects&lt;br /&gt;
* Possibility to hide the pilot model when in the cockpit.&lt;br /&gt;
* Deactivate the temporary non-Rembrandt shadow, because it had a big MP issue and did not allow a correct dogfight.&lt;br /&gt;
* New exhaust.&lt;br /&gt;
* Separated livery &amp;amp; logos.  Logos are now independent of the livery.&lt;br /&gt;
==== Systems ====&lt;br /&gt;
* Center MFD can switch between old version and Canvas [[NavDisplay]] version. &lt;br /&gt;
* Working startup procedure.&lt;br /&gt;
* Working cockpit light variator.&lt;br /&gt;
* Utilisation of the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;usage&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; tag.&lt;br /&gt;
==== Weapons ====&lt;br /&gt;
* You can now create a ground target, by clicking on the ground and then clicking &amp;quot;Create a Target&amp;quot; in the &amp;quot;Mirage 2000 &amp;gt; Fast Config&amp;quot; menu.&lt;br /&gt;
==== Nasal ====&lt;br /&gt;
* Centralised function launch and update instead of multiple separate loops/listeners.&lt;br /&gt;
* Loads are now visible over MP.&lt;br /&gt;
&lt;br /&gt;
=== August 2013 version ===&lt;br /&gt;
* Much better autopilot (see video).&lt;br /&gt;
* Multi-page MFDs.&lt;br /&gt;
* Radio management on the right MFD.&lt;br /&gt;
* An EICAS page.&lt;br /&gt;
* Cockpit general graphics are improved.&lt;br /&gt;
* A weapons selection page on the left MFD.&lt;br /&gt;
* Better sound and missile script improved.&lt;br /&gt;
* Working alert panel.&lt;br /&gt;
* New clock&lt;br /&gt;
* And lots of other stuff not listed here...&lt;br /&gt;
&lt;br /&gt;
== Todo ==&lt;br /&gt;
=== Models ===&lt;br /&gt;
* High-resolution liveries. {{done}}&lt;br /&gt;
* Throttle stick, gear green/red light, jettison all button. {{Done}}&lt;br /&gt;
* Add some &amp;quot;ground&amp;quot; feature (equipment, external power). {{done}}&lt;br /&gt;
* Modify exterior pylons shade. {{done}}&lt;br /&gt;
* Modelize stick. {{done}}&lt;br /&gt;
* Modelize rudder pedals {{not done}}&lt;br /&gt;
* Modify cockpit 3d model (single and dual seat). {{done}}&lt;br /&gt;
* Homogenize instruments texture and materials. {{done}}&lt;br /&gt;
* Smooth canopy arch. {{done}}&lt;br /&gt;
* Create crashed models. {{not done}}&lt;br /&gt;
&lt;br /&gt;
=== MultiPlayer ===&lt;br /&gt;
* Make the loads visibles in MP. {{done}}&lt;br /&gt;
* Dual control.  {{not done}}&lt;br /&gt;
=== Instruments ===&lt;br /&gt;
* Add more clickable instruments and complete tooltips. {{progressbar|90}}&lt;br /&gt;
* Complete the alert panel. {{progressbar|60}}&lt;br /&gt;
* Canvas HUD. {{progressbar|60}}&lt;br /&gt;
* Move flight in formation lights. {{not done}}&lt;br /&gt;
* Make the RWR work. {{not done}}&lt;br /&gt;
* Modelize the Inertial measurement unit {{not done}}&lt;br /&gt;
&lt;br /&gt;
=== Systems ===&lt;br /&gt;
* Make the start procedure more realistic. {{Done}}&lt;br /&gt;
* Correct the radar issue due to the generic function radardist and multiplayer ATC. {{done}}&lt;br /&gt;
* Improve FDM. {{done}}&lt;br /&gt;
=== Weapons ===&lt;br /&gt;
* Put missiles in a generic folder. {{done}}&lt;br /&gt;
* Improve missile models. {{done}}&lt;br /&gt;
* Improve the missile script. {{done}}&lt;br /&gt;
* Put sound on the missiles. {{done}}&lt;br /&gt;
* Make a working ECM (missiles have to be reworked first). {{not done}}&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
* Checklist. {{not done}}&lt;br /&gt;
* update help : landing, takeoff. '''On going'''&lt;br /&gt;
&lt;br /&gt;
== Thanks ==&lt;br /&gt;
'''Helijah''' (for the 3D model), '''Buckaroo''' (for the FDM), '''5HIN0B1''' (for the working weapons and systems), '''Koubi''' (for the engine script), '''FG-TUX''' (for testing), '''Ray''' (for helping on the MFD), '''Anusil''' (for testing), '''F-Sig''', '''Xiii''' (for fox2.nas, the initial missile script), '''the F-16 team''' (for the radar and HUD), '''the Citation X team''' (for the middle MFD), all those who created missile models, '''Niko''' (for the wiki page and the original ask for the project), '''Thomas''' (for the liveries), '''Gijs''' (for the wiki page), '''Hardball''' (for the two seats 3d model, the liveries, minihud and some other stuff), '''Leto''', '''Richard''', '''Swamp''', '''FB''', '''onox''', '''Octal450''', '''legoboyvdlp''', '''Domokos Jüttner (Rudolf)''' (All '''OPRF''' team) and all those forgotten here ('''Nicolas de Lemos''')… &lt;br /&gt;
&lt;br /&gt;
'''''Thanks to all.'''''&lt;br /&gt;
&lt;br /&gt;
== External link ==&lt;br /&gt;
* {{Wikipedia|Dassault_Mirage_2000#Mirage_2000-5|Dassault Mirage 2000-5}} (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
{{Dassault}}&lt;br /&gt;
{{air-to-air refueling}}&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5&amp;diff=140934</id>
		<title>Dassault Mirage 2000-5</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5&amp;diff=140934"/>
		<updated>2024-11-10T16:03:17Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: adding the development hangar on github.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Distinguish|Dassault Mirage 2000}}&lt;br /&gt;
{{Note|The new JSBsim version is now in master.}}&lt;br /&gt;
{{:{{PAGENAME}}/info|developpement=https://github.com/NikolaiVChr/flightgear-saab-ja-37-viggen}}&lt;br /&gt;
The '''Dassault Mirage 2000-5''' is a French multirole, single-engine fourth-generation jet fighter manufactured by Dassault Aviation. An improvement of the [[Mirage 2000]], it was improved by Thomson-CSF (now Thales Group) in the early 1990s in response to the Mirage 2000's ageing compared to the latest [[F-16]] fighter models.&lt;br /&gt;
&lt;br /&gt;
Improvements over the Mirage 2000 include the capability to carry a laser designator pod, new pulse-doppler multi-target radar, new defensive systems, and updated avionics, including a night vision-compatible glass cockpit, wide-angle [[HUD]], and {{Abbr|HOTAS|Hands On Throttle And Stick}} controls.&lt;br /&gt;
&lt;br /&gt;
Coming into service with the French Air Force (''Armée de l'Air''), and exported to several countries, Dassault further improved it by creating the {{Wikipedia|Dassault Mirage 2000#Mirage 2000-5 Mark 2|Mirage 2000-5 Mark 2}}, the most advanced of all Mirage 2000s.&lt;br /&gt;
&lt;br /&gt;
== Keyboard Controls ==&lt;br /&gt;
{| class=&amp;quot;keytable&amp;quot;&lt;br /&gt;
! Key&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|d}} || Open/close canopy (3 positions : opened, closed and half-opened)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|e}} || Fire weapon&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|e}} || Parachute (landing)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|j}} || Jettison tank&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|t}} || Toggle ECM &amp;amp; RWR&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|t}} || Change radar distances (10, 20 50, 100, 150)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|r}} || Activate/deactivate targeting the nearest in the HUD (the target has to be bellow radar range)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|h}} || Toggle armament circles&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;}} || On/off Engines (autostart)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|l}} || Flare out&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|l}} || Landing lights&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|n}} || Next target&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|n}} || Previous target&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|b}} || Air brake&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|w}} || Cycle stick weapon mode selector&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
[[File:Mirage 2000-5's colored afturburner.png|thumb|mirage 2000-5's colored afturburner at night]]&lt;br /&gt;
=== General characteristics ===&lt;br /&gt;
* Crew: 1&lt;br /&gt;
* Length: 14.36 m (47 ft 1 in)&lt;br /&gt;
* Wingspan: 9.13 m (29 ft)&lt;br /&gt;
* Height: 5.20 m (17 ft)&lt;br /&gt;
* Wing area: 41 m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; (441.3 ft&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Weight ===&lt;br /&gt;
* Empty weight: 7,500 kg (16,350 lb)&lt;br /&gt;
* Loaded weight: 13,800 kg (30,420 lb)&lt;br /&gt;
* Max. takeoff weight: 17,000 kg (37,500 lb)&lt;br /&gt;
&lt;br /&gt;
=== Engine ===&lt;br /&gt;
* Powerplant: 1 x SNECMA M53-P2 afterburning turbofan &lt;br /&gt;
** Dry thrust: 64.3 kN (14,500 lbf)&lt;br /&gt;
** Thrust with afterburner: 95.1 kN (21,400 lbf)&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
* Maximum speed: &lt;br /&gt;
** High altitude: Mach 2.2 (2,530+ km/h, 1,500+ mph)&lt;br /&gt;
** Low altitude: 1,110 km/h (690 mph)&lt;br /&gt;
* Range: 1,550 km (837 nmi, 963 mi) with drop tanks&lt;br /&gt;
* Ferry range: 3,335 km (1,800 nmi, 2,073 mi) with auxiliary fuel&lt;br /&gt;
* Service ceiling: 17,060 m (59,000 ft)&lt;br /&gt;
* Rate of climb: 285 m/s (56,000 ft/min)&lt;br /&gt;
* Wing loading: 337 kg/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; (69 lb/ft&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;)&lt;br /&gt;
* Thrust/weight: 0.91&lt;br /&gt;
* Roll Rate: 270 deg/sec &lt;br /&gt;
* G limits: +9.0 g / -3.2 g (override mode: 11 g, structural limit: 12 g)&lt;br /&gt;
&lt;br /&gt;
== Help ==&lt;br /&gt;
=== Weapons ===&lt;br /&gt;
[[File:Mirage 2000-5's weapons.png|thumb|some mirage 2000-5's air-air weapons]]&lt;br /&gt;
Available weapons for FlightGear's Mirage 2000-5 are as follows:&lt;br /&gt;
&lt;br /&gt;
* Guns: 2 x 30 mm (1.18 in) DEFA 554 revolver cannon, 125 rounds per gun&lt;br /&gt;
&lt;br /&gt;
* Missiles:&lt;br /&gt;
** Air-to-air missiles: {{Wikipedia|MBDA MICA}}, {{Wikipedia|R.550 Magic|Matra R.550 Magic 2}}, {{Wikipedia|Super 530|Matra Super 530}} {{clarify}}, {{Wikipedia|AIM-120 AMRAAM}}, {{Wikipedia|AIM-9 Sidewinder}}, {{Wikipedia|AIM-54 Phoenix}}, and the {{Wikipedia|R-73 (missile)#Variants|Vympel R-74}}.&lt;br /&gt;
** Air-to-ground missiles: {{Wikipedia|Storm Shadow}} (''SCALP'' in French service), {{Wikipedia|Sea Eagle (missile)|Sea Eagle}}, {{Wikipedia|AGM-65 Maverick}}, {{Wikipedia|GBU-16}}, and the {{Wikipedia|GBU-12}}.&lt;br /&gt;
&lt;br /&gt;
==== How to fire a guided missile ==== &lt;br /&gt;
# Select your missile on the graphical MFD, with the top button of the left series button.&lt;br /&gt;
# Then, select your weapon mode with {{key press|w}} (cycles through nothing, guns, missiles)&lt;br /&gt;
# Press {{key press|Shift|r}} to activate radar illumination.&lt;br /&gt;
# Acquire your target.&lt;br /&gt;
# Fire with {{key press|e}}.&lt;br /&gt;
&lt;br /&gt;
{{Note|Due to the generic missile script, FlightGear's Mirage 2000-5 can carry missiles not carried on the aircraft in real life.  For a list of weapons available to the aircraft in real life, please see {{Wikipedia|Dassault Mirage 2000#Specifications (Mirage 2000C)}}.}}&lt;br /&gt;
{{Caution|It is a bad idea to fire a missile while under negative G.}}&lt;br /&gt;
&lt;br /&gt;
=== Refueling ===&lt;br /&gt;
The Mirage is capable of [[mid-air refueling]].  You can enter the desired [[TACAN]] code into the right MFD (see second video), and then use both radar and the TACAN to guide you in.&lt;br /&gt;
&lt;br /&gt;
=== Radar ===&lt;br /&gt;
The radar has 5 ranges (10, 20, 50, 100, and 150 nm) which can be switched with {{key press|t}}. It can identify multiple targets and show some information about them.  &lt;br /&gt;
&lt;br /&gt;
=== HUD ===&lt;br /&gt;
The HUD shows both potential targets and the locked target.  It also shows if the undercarriage is extended, the distance to the ground if the altitude is below 5,000 feet, and the Mach speed if the aircraft is going faster than Mach 0.8.&lt;br /&gt;
=== Dual seat in Multiplayer Mode ===&lt;br /&gt;
You can flight in the back seat as a passenger in [[Multiplayer]] mode&lt;br /&gt;
This is under development, the goal is to make the mirage 2000 [[Dual Control]] ready !&lt;br /&gt;
&lt;br /&gt;
how to test multiplayer on same PC ?&lt;br /&gt;
* run flightgear with parameters :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--aircraft=m2000-5B          --multiplay=out,10,127.0.0.1,5000 --multiplay=in,10,127.0.0.1,5001 --callsign=&amp;quot;PILOT&amp;quot; --prop:/sim/remote/pilot-callsign=&amp;quot;NOSA&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* run another instance with parameters :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--aircraft=m2000-5B-backseat --multiplay=out,10,127.0.0.1,5001 --multiplay=in,10,127.0.0.1,5000 --callsign=&amp;quot;NOSA&amp;quot;  --prop:/sim/remote/pilot-callsign=&amp;quot;PILOT&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[File:Mirage2000-5 multiplayer dual seat.png|thumb|mirage 2000-5 multiplayer dual seat]]&lt;br /&gt;
&lt;br /&gt;
FYI : NOSA (Navigateur Officier Systèmes d'Armes) mean Weapons Systems Officer Navigator.&lt;br /&gt;
&lt;br /&gt;
=== Sky Knights Squadron textbook ===&lt;br /&gt;
&lt;br /&gt;
==== I. Weapons use ====&lt;br /&gt;
FOX-3:&lt;br /&gt;
MICA-EM: under 40 NM, choose the radar range just above your enemy's distance. Comparable to AIM-120, but better at a shorter distance. Extremely maneuverable due to thrust vectoring.&lt;br /&gt;
&lt;br /&gt;
FOX-1:&lt;br /&gt;
Super 530D: under 25 NM, rather precise at close range too. Slightly better than the AIM-7.&lt;br /&gt;
&lt;br /&gt;
FOX-2:&lt;br /&gt;
MICA-IR: use under 20 NM, target must be locked with radar. Very useful in dogfights because of its superiority towards the AIM-9. Extremely maneuverable due to thrust vectoring.&lt;br /&gt;
Magic II: under 7 NM, target must be locked with radar. Corrects trajectory every 2/10th of second, rather precise, but inferior to AIM-9.&lt;br /&gt;
&lt;br /&gt;
Guns: 125 rounds, don't waste them by shooting above 1000 meters, shoot at close range only when you have a solution. In a fight against several enemies, you can't be winchester.&lt;br /&gt;
&lt;br /&gt;
WARNING against aircraft like the F-15, the Mirage has a slight disadvantage (less missiles) and it's better if you can go nearer and engage dogfight, in which the Mirage outturns many fighters.&lt;br /&gt;
&lt;br /&gt;
==== II. ACM ====&lt;br /&gt;
The Mirage has a very good turn rate, which means you can keep on with full reheat for several minutes in a high-G turn. Against a fighter like the JA-37 or the F-15, it is recommended to enter a two-circle fight. Against better turning aircraft such as the F-16, it is recommended to choose a one-circle fight.&lt;br /&gt;
When merging with your opponent, it is suggested to throttle up 1 or 2 nautical miles before crossing your enemy, as the engine is a bit slow in response time. Also, the Mirage tends to lose lots of speed when turning: since it is a delta wing, it is basically a flying airbrake.&lt;br /&gt;
Don't waste energy by climbing high, because you lose speed and offer a still target for your enemy. &lt;br /&gt;
The Mirage 's turn rate is best around 250-350kts, and you should have full reheat to keep on turning.&lt;br /&gt;
If you stay close to the ground (where the Mirage is very manoeuverable), the other pursuing you might crash, but pay attention to your speed, if you stall, there’s no way you can regain your speed before crashing at low altitude. Although against other good aircraft at low level, such as the Viggen, it is better to push them to the stall in a one circle fight, as it is slightly under-powered and a formidable opponent at low altitude.&lt;br /&gt;
&lt;br /&gt;
==== III. Checklist for a dogfight ====&lt;br /&gt;
Start-up: &lt;br /&gt;
* Check fuel&lt;br /&gt;
* Switch the battery on&lt;br /&gt;
* Turn on both alternators&lt;br /&gt;
* Turn on the transformator&lt;br /&gt;
* Switch the cut-off and secure it&lt;br /&gt;
* Switch the left and right (G and D) pumps to “M” &lt;br /&gt;
* Switch the “VENT ON” &lt;br /&gt;
* Open the protection of the starter&lt;br /&gt;
* Check that the BP button has been switched&lt;br /&gt;
* Press the starter during 1 second&lt;br /&gt;
* Press the fuel P button&lt;br /&gt;
* Wait about 30 seconds for the fuel pumps to reach the correct level&lt;br /&gt;
* Open the guard and switch the start selector to ON, the engines will spool up&lt;br /&gt;
* Deselect the Fuel P&lt;br /&gt;
The engines are now idle, you can go on to the next part of the tutorial.&lt;br /&gt;
&lt;br /&gt;
Pre-flight:&lt;br /&gt;
* Close the canopy&lt;br /&gt;
* Turn on A/C and set it to 16.9 – 18°C by turning the knob (WARNING: F=froid=cold and C=chaud=hot)&lt;br /&gt;
* Select flight mode to TO&lt;br /&gt;
* Set transponder according to your mission &lt;br /&gt;
* Set the right MFD according to your mission (compass; radio; RWR; engine dialog; map)&lt;br /&gt;
* Set the navigation dialog according to your mission&lt;br /&gt;
* Reload flares and guns&lt;br /&gt;
* Toggle multiplayer shot report&lt;br /&gt;
* Remove automatic missile view &lt;br /&gt;
* Select payload&lt;br /&gt;
&lt;br /&gt;
Engaging:&lt;br /&gt;
* Set link16 accordingly if you have wingmen&lt;br /&gt;
* Master arm on&lt;br /&gt;
* Set the right MFD to RWR&lt;br /&gt;
* Radar active set at the correct distance &lt;br /&gt;
* MICA-EM selected for BVR, guns for WVR&lt;br /&gt;
* FOV 100-120°, looking up a bit so that you keep eye contact with your opponent in dogfight, but keep sight of your RWR&lt;br /&gt;
* Turn the pilot cam view slightly up and decrease FOV so you have a wide angle&lt;br /&gt;
* If incoming missile, launch a few flares/chaffs and push nose down so the missile, anticipating your movements, will crash to the ground. Other missile evading techniques also valid.&lt;br /&gt;
* Try to engage dogfight, as the Mirage is one of the best in this category&lt;br /&gt;
* Try to break off the fight before the bingo. A fight is won when you are back at your base, safe on ground, and the other is down. It’s no use winning if you crash to the ground after this.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
{{#ev:youtube|uAhXLSO1tt4|||{{en|Video showing the new features of the Mirage 2000-5 (Feb 2015 version)}}|frame}}&lt;br /&gt;
{{#ev:youtube|i9FXj03IDfs|||{{en|Video explaining how to navigate and use the [[autopilot]] &amp;amp; MFD}}|frame}}&lt;br /&gt;
{{#ev:youtube|clKk-Zb2Okw|||{{en|Little demo to explain how work the sniping pod for GBU}}|frame}}&lt;br /&gt;
&lt;br /&gt;
=== Miscelleanous ===&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
Mirage 2000-5's flight in formation lights.png|mirage 2000-5's flight in formation lights&lt;br /&gt;
Mirage 2000-5 flying over France.png|mirage 2000-5 over France&lt;br /&gt;
Mirage 2000-5's mini-hud and logo &amp;quot;2000-5&amp;quot;.png|mirage 2000-5's mini-hud and logo &amp;quot;2000-5&amp;quot;&lt;br /&gt;
Mirage2000-5 2seats with ground equipment.png|mirage 2000-5 2 seats with ground equipment&lt;br /&gt;
Mirage2000-5 2seats with some stores.png|mirage 2000-5 2 seats with some stores&lt;br /&gt;
Mirage2000-5 2seats landing nellis.png|mirage 2000-5 2 seats landing nellis&lt;br /&gt;
Mirage2000-5 2seats ready to start.png|mirage 2000-5 2 seats ready to start&lt;br /&gt;
Mirage2000-5 2seats takeoff under rain.png|mirage 2000-5 2 seats takeoff under rain&lt;br /&gt;
Mirage2000-5 raindrops1.png|mirage 2000-5 raindrops1&lt;br /&gt;
Mirage2000-5 raindrops2.png|mirage 2000-5 raindrops2&lt;br /&gt;
Mirage2000-5 basse altitude with pod.png|mirage 2000-5 flying low altitude with pod &amp;quot;PDLCT&amp;quot;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Refueling ===&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
M2000-5 Refueling.png|[[Mid-air refueling]] with an A330-MRTT&lt;br /&gt;
Refueling using RADAR TACAN.png|Refuelling using [[TACAN]] and radar&lt;br /&gt;
Mirage-2000-5weapons managment.png|Graphical weapon selection&lt;br /&gt;
M2000-5 EICAS.png|EICAS for engine mamagement&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Liveries and logos ===&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
Mirage 2000-5's green-blue ardennes.png|mirage 2000-5's green/blue camo (squadron &amp;quot;Ardennes&amp;quot;)&lt;br /&gt;
Mirage 2000-5's blue-grey camo chimere.png|mirage 2000-5's blue/grey camo (squadron &amp;quot;Chimère d'argent&amp;quot;)&lt;br /&gt;
Mirage 2000-5's desert camo lafayette.png|mirage 2000-5's desert camo (squadron &amp;quot;Lafayette&amp;quot;)&lt;br /&gt;
Mirage2000-5 one seat grey livery.png|mirage 2000-5's grey livery (squadron &amp;quot;Alsace&amp;quot;)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
=== May 2017 version ===&lt;br /&gt;
==== 3D model ====&lt;br /&gt;
* a new two seats version (the mirage 2000B, N and D)&lt;br /&gt;
* new HD (high definition) liveries&lt;br /&gt;
* specific liveries : green digital, snow, black, etc&lt;br /&gt;
* a lot of corrections on littles details (antennas, refueling pole, gears doors, intakes shades, cockpit, wheels, reddish engine) for both versions (one and two seats)&lt;br /&gt;
* ground equipment&lt;br /&gt;
==== effects ====&lt;br /&gt;
* rain effects (sound, raindrops, effects on the fuselage)&lt;br /&gt;
* shakes on high gload, mach 1&lt;br /&gt;
* realistic blackout/redout&lt;br /&gt;
==== Systems ====&lt;br /&gt;
* new improvments on fly by wire systems (the purpose is to obtain maximum realism when flying : pitch limitations on high gload or high angle of attack, pitch and roll limitations when airbrakes are active)&lt;br /&gt;
* more stability with an &amp;quot;auto-trim system&amp;quot;&lt;br /&gt;
* new realistic radar with ground and doppler effects&lt;br /&gt;
* new instruments&lt;br /&gt;
* canvas nav-display&lt;br /&gt;
* partial canvas hud : radar detected targets are designed on the hud&lt;br /&gt;
==== Weapons and stores ====&lt;br /&gt;
* more realistic weapons to dogfight [http://opredflag.com/ OPRF team] : realistic damages, counter measures, missile trajectory&lt;br /&gt;
* new weapons or 3d improvment for : matra mica IR, mica EM, magic, exocet&lt;br /&gt;
* liveries on external tanks&lt;br /&gt;
* inert pod : PDLCT (pod de designation laser - camera thermique)&lt;br /&gt;
&lt;br /&gt;
=== Feb 2015 version ===&lt;br /&gt;
==== 3D model ====&lt;br /&gt;
* Several more instrument in the cockpit, including startup instrument, and light variator instruments.&lt;br /&gt;
* New, more realistic gun explosion.&lt;br /&gt;
* New, more realistic missile explosion.&lt;br /&gt;
* New afterburner flames that take differents colors, depending on the sun position.&lt;br /&gt;
* New [[Rembrandt]] light effects in the cockpit.&lt;br /&gt;
* New rule about each instrument's light effects&lt;br /&gt;
* Possibility to hide the pilot model when in the cockpit.&lt;br /&gt;
* Deactivate the temporary non-Rembrandt shadow, because it had a big MP issue and did not allow a correct dogfight.&lt;br /&gt;
* New exhaust.&lt;br /&gt;
* Separated livery &amp;amp; logos.  Logos are now independent of the livery.&lt;br /&gt;
==== Systems ====&lt;br /&gt;
* Center MFD can switch between old version and Canvas [[NavDisplay]] version. &lt;br /&gt;
* Working startup procedure.&lt;br /&gt;
* Working cockpit light variator.&lt;br /&gt;
* Utilisation of the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;usage&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; tag.&lt;br /&gt;
==== Weapons ====&lt;br /&gt;
* You can now create a ground target, by clicking on the ground and then clicking &amp;quot;Create a Target&amp;quot; in the &amp;quot;Mirage 2000 &amp;gt; Fast Config&amp;quot; menu.&lt;br /&gt;
==== Nasal ====&lt;br /&gt;
* Centralised function launch and update instead of multiple separate loops/listeners.&lt;br /&gt;
* Loads are now visible over MP.&lt;br /&gt;
&lt;br /&gt;
=== August 2013 version ===&lt;br /&gt;
* Much better autopilot (see video).&lt;br /&gt;
* Multi-page MFDs.&lt;br /&gt;
* Radio management on the right MFD.&lt;br /&gt;
* An EICAS page.&lt;br /&gt;
* Cockpit general graphics are improved.&lt;br /&gt;
* A weapons selection page on the left MFD.&lt;br /&gt;
* Better sound and missile script improved.&lt;br /&gt;
* Working alert panel.&lt;br /&gt;
* New clock&lt;br /&gt;
* And lots of other stuff not listed here...&lt;br /&gt;
&lt;br /&gt;
== Todo ==&lt;br /&gt;
=== Models ===&lt;br /&gt;
* High-resolution liveries. {{done}}&lt;br /&gt;
* Throttle stick, gear green/red light, jettison all button. {{Done}}&lt;br /&gt;
* Add some &amp;quot;ground&amp;quot; feature (equipment, external power). {{done}}&lt;br /&gt;
* Modify exterior pylons shade. {{done}}&lt;br /&gt;
* Modelize stick. {{done}}&lt;br /&gt;
* Modelize rudder pedals {{not done}}&lt;br /&gt;
* Modify cockpit 3d model (single and dual seat). {{done}}&lt;br /&gt;
* Homogenize instruments texture and materials. {{done}}&lt;br /&gt;
* Smooth canopy arch. {{done}}&lt;br /&gt;
* Create crashed models. {{not done}}&lt;br /&gt;
&lt;br /&gt;
=== MultiPlayer ===&lt;br /&gt;
* Make the loads visibles in MP. {{done}}&lt;br /&gt;
* Dual control.  {{not done}}&lt;br /&gt;
=== Instruments ===&lt;br /&gt;
* Add more clickable instruments and complete tooltips. {{progressbar|90}}&lt;br /&gt;
* Complete the alert panel. {{progressbar|60}}&lt;br /&gt;
* Canvas HUD. {{progressbar|60}}&lt;br /&gt;
* Move flight in formation lights. {{not done}}&lt;br /&gt;
* Make the RWR work. {{not done}}&lt;br /&gt;
* Modelize the Inertial measurement unit {{not done}}&lt;br /&gt;
&lt;br /&gt;
=== Systems ===&lt;br /&gt;
* Make the start procedure more realistic. {{Done}}&lt;br /&gt;
* Correct the radar issue due to the generic function radardist and multiplayer ATC. {{done}}&lt;br /&gt;
* Improve FDM. {{done}}&lt;br /&gt;
=== Weapons ===&lt;br /&gt;
* Put missiles in a generic folder. {{done}}&lt;br /&gt;
* Improve missile models. {{done}}&lt;br /&gt;
* Improve the missile script. {{done}}&lt;br /&gt;
* Put sound on the missiles. {{done}}&lt;br /&gt;
* Make a working ECM (missiles have to be reworked first). {{not done}}&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
* Checklist. {{not done}}&lt;br /&gt;
* update help : landing, takeoff. '''On going'''&lt;br /&gt;
&lt;br /&gt;
== Thanks ==&lt;br /&gt;
'''Helijah''' (for the 3D model), '''Buckaroo''' (for the FDM), '''5HIN0B1''' (for the working weapons and systems), '''Koubi''' (for the engine script), '''FG-TUX''' (for testing), '''Ray''' (for helping on the MFD), '''Anusil''' (for testing), '''F-Sig''', '''Xiii''' (for fox2.nas, the initial missile script), '''the F-16 team''' (for the radar and HUD), '''the Citation X team''' (for the middle MFD), all those who created missile models, '''Niko''' (for the wiki page and the original ask for the project), '''Thomas''' (for the liveries), '''Gijs''' (for the wiki page), '''Hardball''' (for the two seats 3d model, the liveries, minihud and some other stuff), '''Leto''', '''Richard''', '''Swamp''', '''FB''', '''onox''', '''Octal450''', '''legoboyvdlp''', '''Domokos Jüttner (Rudolf)''' (All '''OPRF''' team) and all those forgotten here ('''Nicolas de Lemos''')… &lt;br /&gt;
&lt;br /&gt;
'''''Thanks to all.'''''&lt;br /&gt;
&lt;br /&gt;
== External link ==&lt;br /&gt;
* {{Wikipedia|Dassault_Mirage_2000#Mirage_2000-5|Dassault Mirage 2000-5}} (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
{{Dassault}}&lt;br /&gt;
{{air-to-air refueling}}&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5/info&amp;diff=140933</id>
		<title>Dassault Mirage 2000-5/info</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5/info&amp;diff=140933"/>
		<updated>2024-11-10T15:50:07Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{infobox aircraft&lt;br /&gt;
| name           = Mirage 2000-5&lt;br /&gt;
| hangar         = fgaddon&lt;br /&gt;
| aircraft       = Mirage-2000&lt;br /&gt;
| image          = Mirage2000-5 one seat grey livery.png&lt;br /&gt;
| image2         = Mirage2000-5 cockpit.png&lt;br /&gt;
| type           = Fighter aircraft/Interceptor aircraft/Military aircraft&lt;br /&gt;
| config         = Delta-wing aircraft&lt;br /&gt;
| propulsion     = Jet aircraft/Single-engine aircraft&lt;br /&gt;
| manufacturer   = Dassault&lt;br /&gt;
| authors        = Emmanuel Baranger (3D model/F-Sig (3D model, systems)/5H1N0B1 (Weapons, systems)/Richard Harrison (FDM)/hardball (3D model)/Josh Davidson (FCS, FBW, Autopilot)/&lt;br /&gt;
| fdm            = JSBsim&lt;br /&gt;
| fgname         = m2000-5&lt;br /&gt;
| status-fdm     = 4&lt;br /&gt;
| status-systems = 4&lt;br /&gt;
| status-cockpit = 4&lt;br /&gt;
| status-model   = 4&lt;br /&gt;
| navbar         = 1&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This is the aircraft infobox subpage of the [[Dassault Mirage 2000-5]].&lt;br /&gt;
[[Category:Aircraft infobox documentation]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5/info&amp;diff=140932</id>
		<title>Dassault Mirage 2000-5/info</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5/info&amp;diff=140932"/>
		<updated>2024-11-10T15:49:35Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{infobox aircraft&lt;br /&gt;
| name           = Mirage 2000-5&lt;br /&gt;
| hangar         = https://github.com/5H1N0B11/flightgear-mirage2000&lt;br /&gt;
| aircraft       = Mirage-2000&lt;br /&gt;
| image          = Mirage2000-5 one seat grey livery.png&lt;br /&gt;
| image2         = Mirage2000-5 cockpit.png&lt;br /&gt;
| type           = Fighter aircraft/Interceptor aircraft/Military aircraft&lt;br /&gt;
| config         = Delta-wing aircraft&lt;br /&gt;
| propulsion     = Jet aircraft/Single-engine aircraft&lt;br /&gt;
| manufacturer   = Dassault&lt;br /&gt;
| authors        = Emmanuel Baranger (3D model/F-Sig (3D model, systems)/5H1N0B1 (Weapons, systems)/Richard Harrison (FDM)/hardball (3D model)/Josh Davidson (FCS, FBW, Autopilot)/&lt;br /&gt;
| fdm            = JSBsim&lt;br /&gt;
| fgname         = m2000-5&lt;br /&gt;
| status-fdm     = 4&lt;br /&gt;
| status-systems = 4&lt;br /&gt;
| status-cockpit = 4&lt;br /&gt;
| status-model   = 4&lt;br /&gt;
| navbar         = 1&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This is the aircraft infobox subpage of the [[Dassault Mirage 2000-5]].&lt;br /&gt;
[[Category:Aircraft infobox documentation]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5/info&amp;diff=140931</id>
		<title>Dassault Mirage 2000-5/info</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5/info&amp;diff=140931"/>
		<updated>2024-11-10T15:46:54Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{infobox aircraft&lt;br /&gt;
| name           = Mirage 2000-5&lt;br /&gt;
| hangar         = fgaddon&lt;br /&gt;
| aircraft       = Mirage-2000&lt;br /&gt;
| image          = Mirage2000-5 one seat grey livery.png&lt;br /&gt;
| image2         = Mirage2000-5 cockpit.png&lt;br /&gt;
| type           = Fighter aircraft/Interceptor aircraft/Military aircraft&lt;br /&gt;
| config         = Delta-wing aircraft&lt;br /&gt;
| propulsion     = Jet aircraft/Single-engine aircraft&lt;br /&gt;
| manufacturer   = Dassault&lt;br /&gt;
| authors        = Emmanuel Baranger (3D model/F-Sig (3D model, systems)/5H1N0B1 (Weapons, systems)/Richard Harrison (FDM)/hardball (3D model)/Josh Davidson (FCS, FBW, Autopilot)/&lt;br /&gt;
| fdm            = JSBsim&lt;br /&gt;
| fgname         = m2000-5&lt;br /&gt;
| status-fdm     = 4&lt;br /&gt;
| status-systems = 4&lt;br /&gt;
| status-cockpit = 4&lt;br /&gt;
| status-model   = 4&lt;br /&gt;
| navbar         = 1&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This is the aircraft infobox subpage of the [[Dassault Mirage 2000-5]].&lt;br /&gt;
[[Category:Aircraft infobox documentation]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5/info&amp;diff=140930</id>
		<title>Dassault Mirage 2000-5/info</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5/info&amp;diff=140930"/>
		<updated>2024-11-10T15:46:05Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{infobox aircraft&lt;br /&gt;
| name           = Mirage 2000-5&lt;br /&gt;
| hangar         = fgaddon&lt;br /&gt;
| hangar         = https://github.com/5H1N0B11/flightgear-mirage2000&lt;br /&gt;
| aircraft       = Mirage-2000&lt;br /&gt;
| image          = Mirage2000-5 one seat grey livery.png&lt;br /&gt;
| image2         = Mirage2000-5 cockpit.png&lt;br /&gt;
| type           = Fighter aircraft/Interceptor aircraft/Military aircraft&lt;br /&gt;
| config         = Delta-wing aircraft&lt;br /&gt;
| propulsion     = Jet aircraft/Single-engine aircraft&lt;br /&gt;
| manufacturer   = Dassault&lt;br /&gt;
| authors        = Emmanuel Baranger (3D model/F-Sig (3D model, systems)/5H1N0B1 (Weapons, systems)/Richard Harrison (FDM)/hardball (3D model)/Josh Davidson (FCS, FBW, Autopilot)/&lt;br /&gt;
| fdm            = JSBsim&lt;br /&gt;
| fgname         = m2000-5&lt;br /&gt;
| status-fdm     = 4&lt;br /&gt;
| status-systems = 4&lt;br /&gt;
| status-cockpit = 4&lt;br /&gt;
| status-model   = 4&lt;br /&gt;
| navbar         = 1&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This is the aircraft infobox subpage of the [[Dassault Mirage 2000-5]].&lt;br /&gt;
[[Category:Aircraft infobox documentation]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5&amp;diff=116273</id>
		<title>Dassault Mirage 2000-5</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5&amp;diff=116273"/>
		<updated>2018-10-05T21:09:39Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: /* Weapons */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Distinguish|Dassault Mirage 2000}}&lt;br /&gt;
{{Note|A new JSBsim version is in progress.}}&lt;br /&gt;
{{:{{PAGENAME}}/info}}&lt;br /&gt;
The '''Dassault Mirage 2000-5''' is a French multirole, single-engine fourth-generation jet fighter manufactured by Dassault Aviation. An improvement of the [[Mirage 2000]], it was improved by Thomson-CSF (now Thales Group) in the early 1990s in response to the Mirage 2000's ageing compared to the latest [[F-16]] fighter models.&lt;br /&gt;
&lt;br /&gt;
Improvements over the Mirage 2000 include the capability to carry a laser designator pod, new pulse-doppler multi-target radar, new defensive systems, and updated avionics, including a night vision-compatible glass cockpit, wide-angle [[HUD]], and {{Abbr|HOTAS|Hands On Throttle And Stick}} controls.&lt;br /&gt;
&lt;br /&gt;
Coming into service with the French Air Force (''Armée de l'Air''), and exported to several countries, Dassault further improved it by creating the {{Wikipedia|Dassault Mirage 2000#Mirage 2000-5 Mark 2|Mirage 2000-5 Mark 2}}, the most advanced of all Mirage 2000s.&lt;br /&gt;
&lt;br /&gt;
== Keyboard Controls ==&lt;br /&gt;
{| class=&amp;quot;keytable&amp;quot;&lt;br /&gt;
! Key&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|d}} || Open/close canopy (3 positions : opened, closed and half-opened)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|e}} || Fire weapon&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|e}} || Parachute (landing)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|j}} || Jettison tank&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|t}} || Toggle ECM &amp;amp; RWR&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|t}} || Change radar distances (10, 20 50, 100, 150)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|r}} || Activate/deactivate targeting the nearest in the HUD (the target has to be bellow radar range)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|h}} || Toggle armament circles&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;}} || On/off Engines (autostart)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|l}} || Flare out&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|l}} || Landing lights&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|n}} || Next target&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|n}} || Previous target&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|b}} || Air brake&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|w}} || Cycle stick weapon mode selector&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
[[File:Mirage 2000-5's colored afturburner.png|thumb|mirage 2000-5's colored afturburner at night]]&lt;br /&gt;
=== General characteristics ===&lt;br /&gt;
* Crew: 1&lt;br /&gt;
* Length: 14.36 m (47 ft 1 in)&lt;br /&gt;
* Wingspan: 9.13 m (29 ft)&lt;br /&gt;
* Height: 5.20 m (17 ft)&lt;br /&gt;
* Wing area: 41 m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; (441.3 ft&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Weight ===&lt;br /&gt;
* Empty weight: 7,500 kg (16,350 lb)&lt;br /&gt;
* Loaded weight: 13,800 kg (30,420 lb)&lt;br /&gt;
* Max. takeoff weight: 17,000 kg (37,500 lb)&lt;br /&gt;
&lt;br /&gt;
=== Engine ===&lt;br /&gt;
* Powerplant: 1 x SNECMA M53-P2 afterburning turbofan &lt;br /&gt;
** Dry thrust: 64.3 kN (14,500 lbf)&lt;br /&gt;
** Thrust with afterburner: 95.1 kN (21,400 lbf)&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
* Maximum speed: &lt;br /&gt;
** High altitude: Mach 2.2 (2,530+ km/h, 1,500+ mph)&lt;br /&gt;
** Low altitude: 1,110 km/h (690 mph)&lt;br /&gt;
* Range: 1,550 km (837 nmi, 963 mi) with drop tanks&lt;br /&gt;
* Ferry range: 3,335 km (1,800 nmi, 2,073 mi) with auxiliary fuel&lt;br /&gt;
* Service ceiling: 17,060 m (59,000 ft)&lt;br /&gt;
* Rate of climb: 285 m/s (56,000 ft/min)&lt;br /&gt;
* Wing loading: 337 kg/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; (69 lb/ft&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;)&lt;br /&gt;
* Thrust/weight: 0.91&lt;br /&gt;
* Roll Rate: 270 deg/sec &lt;br /&gt;
* G limits: +9.0 g / -3.2 g (override mode: 11 g, structural limit: 12 g)&lt;br /&gt;
&lt;br /&gt;
== Help ==&lt;br /&gt;
=== Weapons ===&lt;br /&gt;
[[File:Mirage 2000-5's weapons.png|thumb|some mirage 2000-5's air-air weapons]]&lt;br /&gt;
Available weapons for FlightGear's Mirage 2000-5 are as follows:&lt;br /&gt;
&lt;br /&gt;
* Guns: 2 x 30 mm (1.18 in) DEFA 554 revolver cannon, 125 rounds per gun&lt;br /&gt;
&lt;br /&gt;
* Missiles:&lt;br /&gt;
** Air-to-air missiles: {{Wikipedia|MBDA MICA}}, {{Wikipedia|R.550 Magic|Matra R.550 Magic 2}}, {{Wikipedia|Super 530|Matra Super 530}} {{clarify}}, {{Wikipedia|AIM-120 AMRAAM}}, {{Wikipedia|AIM-9 Sidewinder}}, {{Wikipedia|AIM-54 Phoenix}}, and the {{Wikipedia|R-73 (missile)#Variants|Vympel R-74}}.&lt;br /&gt;
** Air-to-ground missiles: {{Wikipedia|Storm Shadow}} (''SCALP'' in French service), {{Wikipedia|Sea Eagle (missile)|Sea Eagle}}, {{Wikipedia|AGM-65 Maverick}}, {{Wikipedia|GBU-16}}, and the {{Wikipedia|GBU-12}}.&lt;br /&gt;
&lt;br /&gt;
==== How to fire a guided missile ==== &lt;br /&gt;
# Select your missile on the graphical MFD, with the top button of the left series button.&lt;br /&gt;
# Then, select your weapon mode with {{key press|w}} (cycles through nothing, guns, missiles)&lt;br /&gt;
# Press {{key press|Shift|r}} to activate radar illumination.&lt;br /&gt;
# Acquire your target.&lt;br /&gt;
# Fire with {{key press|e}}.&lt;br /&gt;
&lt;br /&gt;
{{Note|Due to the generic missile script, FlightGear's Mirage 2000-5 can carry missiles not carried on the aircraft in real life.  For a list of weapons available to the aircraft in real life, please see {{Wikipedia|Dassault Mirage 2000#Specifications (Mirage 2000C)}}.}}&lt;br /&gt;
{{Caution|It is a bad idea to fire a missile while under negative G.}}&lt;br /&gt;
&lt;br /&gt;
=== Refueling ===&lt;br /&gt;
The Mirage is capable of [[mid-air refueling]].  You can enter the desired [[TACAN]] code into the right MFD (see second video), and then use both radar and the TACAN to guide you in.&lt;br /&gt;
&lt;br /&gt;
=== Radar ===&lt;br /&gt;
The radar has 5 ranges (10, 20, 50, 100, and 150 nm) which can be switched with {{key press|t}}. It can identify multiple targets and show some information about them.  &lt;br /&gt;
&lt;br /&gt;
=== HUD ===&lt;br /&gt;
The HUD shows both potential targets and the locked target.  It also shows if the undercarriage is extended, the distance to the ground if the altitude is below 5,000 feet, and the Mach speed if the aircraft is going faster than Mach 0.8.&lt;br /&gt;
=== Dual seat in Multiplayer Mode ===&lt;br /&gt;
You can flight in the back seat as a passenger in [[Multiplayer]] mode&lt;br /&gt;
This is under development, the goal is to make the mirage 2000 [[Dual Control]] ready !&lt;br /&gt;
&lt;br /&gt;
how to test multiplayer on same PC ?&lt;br /&gt;
* run flightgear with parameters :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--aircraft=m2000-5B          --multiplay=out,10,127.0.0.1,5000 --multiplay=in,10,127.0.0.1,5001 --callsign=&amp;quot;PILOT&amp;quot; --prop:/sim/remote/pilot-callsign=&amp;quot;NOSA&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* run another instance with parameters :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--aircraft=m2000-5B-backseat --multiplay=out,10,127.0.0.1,5001 --multiplay=in,10,127.0.0.1,5000 --callsign=&amp;quot;NOSA&amp;quot;  --prop:/sim/remote/pilot-callsign=&amp;quot;PILOT&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[File:Mirage2000-5 multiplayer dual seat.png|thumb|mirage 2000-5 multiplayer dual seat]]&lt;br /&gt;
&lt;br /&gt;
FYI : NOSA (Navigateur Officier Systèmes d'Armes) mean Weapons Systems Officer Navigator.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
{{#ev:youtube|uAhXLSO1tt4|||{{en|Video showing the new features of the Mirage 2000-5 (Feb 2015 version)}}|frame}}&lt;br /&gt;
{{#ev:youtube|i9FXj03IDfs|||{{en|Video explaining how to navigate and use the [[autopilot]] &amp;amp; MFD}}|frame}}&lt;br /&gt;
{{#ev:youtube|clKk-Zb2Okw|||{{en|Little demo to explain how work the sniping pod for GBU}}|frame}}&lt;br /&gt;
&lt;br /&gt;
=== Miscelleanous ===&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
Mirage 2000-5's flight in formation lights.png|mirage 2000-5's flight in formation lights&lt;br /&gt;
Mirage 2000-5 flying over France.png|mirage 2000-5 over France&lt;br /&gt;
Mirage 2000-5's mini-hud and logo &amp;quot;2000-5&amp;quot;.png|mirage 2000-5's mini-hud and logo &amp;quot;2000-5&amp;quot;&lt;br /&gt;
Mirage2000-5 2seats with ground equipment.png|mirage 2000-5 2 seats with ground equipment&lt;br /&gt;
Mirage2000-5 2seats with some stores.png|mirage 2000-5 2 seats with some stores&lt;br /&gt;
Mirage2000-5 2seats landing nellis.png|mirage 2000-5 2 seats landing nellis&lt;br /&gt;
Mirage2000-5 2seats ready to start.png|mirage 2000-5 2 seats ready to start&lt;br /&gt;
Mirage2000-5 2seats takeoff under rain.png|mirage 2000-5 2 seats takeoff under rain&lt;br /&gt;
Mirage2000-5 raindrops1.png|mirage 2000-5 raindrops1&lt;br /&gt;
Mirage2000-5 raindrops2.png|mirage 2000-5 raindrops2&lt;br /&gt;
Mirage2000-5 basse altitude with pod.png|mirage 2000-5 flying low altitude with pod &amp;quot;PDLCT&amp;quot;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Refueling ===&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
M2000-5 Refueling.png|[[Mid-air refueling]] with an A330-MRTT&lt;br /&gt;
Refueling using RADAR TACAN.png|Refuelling using [[TACAN]] and radar&lt;br /&gt;
Mirage-2000-5weapons managment.png|Graphical weapon selection&lt;br /&gt;
M2000-5 EICAS.png|EICAS for engine mamagement&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Liveries and logos ===&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
Mirage 2000-5's green-blue ardennes.png|mirage 2000-5's green/blue camo (squadron &amp;quot;Ardennes&amp;quot;)&lt;br /&gt;
Mirage 2000-5's blue-grey camo chimere.png|mirage 2000-5's blue/grey camo (squadron &amp;quot;Chimère d'argent&amp;quot;)&lt;br /&gt;
Mirage 2000-5's desert camo lafayette.png|mirage 2000-5's desert camo (squadron &amp;quot;Lafayette&amp;quot;)&lt;br /&gt;
Mirage2000-5 one seat grey livery.png|mirage 2000-5's grey livery (squadron &amp;quot;Alsace&amp;quot;)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
=== May 2017 version ===&lt;br /&gt;
==== 3D model ====&lt;br /&gt;
* a new two seats version (the mirage 2000B, N and D)&lt;br /&gt;
* new HD (high definition) liveries&lt;br /&gt;
* specific liveries : green digital, snow, black, etc&lt;br /&gt;
* a lot of corrections on littles details (antennas, refueling pole, gears doors, intakes shades, cockpit, wheels, reddish engine) for both versions (one and two seats)&lt;br /&gt;
* ground equipment&lt;br /&gt;
==== effects ====&lt;br /&gt;
* rain effects (sound, raindrops, effects on the fuselage)&lt;br /&gt;
* shakes on high gload, mach 1&lt;br /&gt;
* realistic blackout/redout&lt;br /&gt;
==== Systems ====&lt;br /&gt;
* new improvments on fly by wire systems (the purpose is to obtain maximum realism when flying : pitch limitations on high gload or high angle of attack, pitch and roll limitations when airbrakes are active)&lt;br /&gt;
* more stability with an &amp;quot;auto-trim system&amp;quot;&lt;br /&gt;
* new realistic radar with ground and doppler effects&lt;br /&gt;
* new instruments&lt;br /&gt;
* canvas nav-display&lt;br /&gt;
* partial canvas hud : radar detected targets are designed on the hud&lt;br /&gt;
==== Weapons and stores ====&lt;br /&gt;
* more realistic weapons to dogfight [http://opredflag.shivtr.com/ OPRF team] : realistic damages, counter measures, missile trajectory&lt;br /&gt;
* new weapons or 3d improvment for : matra mica IR, mica EM, magic, exocet&lt;br /&gt;
* liveries on external tanks&lt;br /&gt;
* inert pod : PDLCT (pod de designation laser - camera thermique)&lt;br /&gt;
&lt;br /&gt;
=== Feb 2015 version ===&lt;br /&gt;
==== 3D model ====&lt;br /&gt;
* Several more instrument in the cockpit, including startup instrument, and light variator instruments.&lt;br /&gt;
* New, more realistic gun explosion.&lt;br /&gt;
* New, more realistic missile explosion.&lt;br /&gt;
* New afterburner flames that take differents colors, depending on the sun position.&lt;br /&gt;
* New [[Rembrandt]] light effects in the cockpit.&lt;br /&gt;
* New rule about each instrument's light effects&lt;br /&gt;
* Possibility to hide the pilot model when in the cockpit.&lt;br /&gt;
* Deactivate the temporary non-Rembrandt shadow, because it had a big MP issue and did not allow a correct dogfight.&lt;br /&gt;
* New exhaust.&lt;br /&gt;
* Separated livery &amp;amp; logos.  Logos are now independent of the livery.&lt;br /&gt;
==== Systems ====&lt;br /&gt;
* Center MFD can switch between old version and Canvas [[NavDisplay]] version. &lt;br /&gt;
* Working startup procedure.&lt;br /&gt;
* Working cockpit light variator.&lt;br /&gt;
* Utilisation of the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;usage&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; tag.&lt;br /&gt;
==== Weapons ====&lt;br /&gt;
* You can now create a ground target, by clicking on the ground and then clicking &amp;quot;Create a Target&amp;quot; in the &amp;quot;Mirage 2000 &amp;gt; Fast Config&amp;quot; menu.&lt;br /&gt;
==== Nasal ====&lt;br /&gt;
* Centralised function launch and update instead of multiple separate loops/listeners.&lt;br /&gt;
* Loads are now visible over MP.&lt;br /&gt;
&lt;br /&gt;
=== August 2013 version ===&lt;br /&gt;
* Much better autopilot (see video).&lt;br /&gt;
* Multi-page MFDs.&lt;br /&gt;
* Radio management on the right MFD.&lt;br /&gt;
* An EICAS page.&lt;br /&gt;
* Cockpit general graphics are improved.&lt;br /&gt;
* A weapons selection page on the left MFD.&lt;br /&gt;
* Better sound and missile script improved.&lt;br /&gt;
* Working alert panel.&lt;br /&gt;
* New clock&lt;br /&gt;
* And lots of other stuff not listed here...&lt;br /&gt;
&lt;br /&gt;
== Todo ==&lt;br /&gt;
=== Models ===&lt;br /&gt;
* High-resolution liveries. {{done}}&lt;br /&gt;
* Throttle stick, gear green/red light, jettison all button. {{Done}}&lt;br /&gt;
* Add some &amp;quot;ground&amp;quot; feature (equipment, external power). {{done}}&lt;br /&gt;
* Modify exterior pylons shade. {{done}}&lt;br /&gt;
* Modelize rudder pedals and stick. {{progressbar|30}}&lt;br /&gt;
* Modify cockpit 3d model (single and dual seat). {{not done}}&lt;br /&gt;
* Homogenize instruments texture and materials. {{not done}}&lt;br /&gt;
* Smooth canopy arch. {{not done}}&lt;br /&gt;
* Create crashed models. {{not done}}&lt;br /&gt;
=== MultiPlayer ===&lt;br /&gt;
* Make the loads visibles in MP. {{done}}&lt;br /&gt;
* Dual control.  {{not done}}&lt;br /&gt;
=== Instruments ===&lt;br /&gt;
* Add more clickable instruments and complete tooltips. {{progressbar|90}}&lt;br /&gt;
* Complete the alert panel. {{progressbar|60}}&lt;br /&gt;
* Canvas HUD. {{progressbar|50}}&lt;br /&gt;
* Move flight in formation lights. {{not done}}&lt;br /&gt;
* Make the RWR work. {{not done}}&lt;br /&gt;
* Modelize the Inertial measurement unit {{not done}}&lt;br /&gt;
&lt;br /&gt;
=== Systems ===&lt;br /&gt;
* Make the start procedure more realistic. {{Done}}&lt;br /&gt;
* Correct the radar issue due to the generic function radardist and multiplayer ATC. {{done}}&lt;br /&gt;
* Improve FDM. {{done}}&lt;br /&gt;
=== Weapons ===&lt;br /&gt;
* Put missiles in a generic folder. {{done}}&lt;br /&gt;
* Improve missile models. {{done}}&lt;br /&gt;
* Improve the missile script. {{done}}&lt;br /&gt;
* Put sound on the missiles. {{done}}&lt;br /&gt;
* Make a working ECM (missiles have to be reworked first). {{not done}}&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
* Checklist. {{not done}}&lt;br /&gt;
* update help : landing, takeoff. '''On going'''&lt;br /&gt;
&lt;br /&gt;
== Thanks ==&lt;br /&gt;
'''Helijah''' (for the 3D model), '''Buckaroo''' (for the FDM), '''5HIN0B1''' (for the working weapons and systems), '''Koubi''' (for the engine script), '''FG-TUX''' (for testing), '''Ray''' (for helping on the MFD), '''Anusil''' (for testing), '''F-Sig''', '''Xiii''' (for fox2.nas, the initial missile script), '''the F-16 team''' (for the radar and HUD), '''the Citation X team''' (for the middle MFD), all those who created missile models, '''Niko''' (for the wiki page and the original ask for the project), '''Thomas''' (for the liveries), '''Gijs''' (for the wiki page), '''Hardball''' (for the two seats 3d model, the liveries, minihud and some other stuff), '''Leto''', '''Richard''', '''Swamp''', '''FB''', '''onox''', '''it0uchpods''', '''legoboyvdlp''', '''Domokos Jüttner (Rudolf)''' (All '''OPRF''' team) and all those forgotten here ('''Nicolas de Lemos''')… &lt;br /&gt;
&lt;br /&gt;
'''''Thanks to all.'''''&lt;br /&gt;
&lt;br /&gt;
== External link ==&lt;br /&gt;
* {{Wikipedia|Dassault_Mirage_2000#Mirage_2000-5|Dassault Mirage 2000-5}} (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
{{Dassault}}&lt;br /&gt;
{{air-to-air refueling}}&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5&amp;diff=116272</id>
		<title>Dassault Mirage 2000-5</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5&amp;diff=116272"/>
		<updated>2018-10-05T21:08:55Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: /* Thanks */Adding more author. thanks to everybody. If I forget somebody who actually worked on the mirage, it is not bad will from me. Just add your name :)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Distinguish|Dassault Mirage 2000}}&lt;br /&gt;
{{Note|A new JSBsim version is in progress.}}&lt;br /&gt;
{{:{{PAGENAME}}/info}}&lt;br /&gt;
The '''Dassault Mirage 2000-5''' is a French multirole, single-engine fourth-generation jet fighter manufactured by Dassault Aviation. An improvement of the [[Mirage 2000]], it was improved by Thomson-CSF (now Thales Group) in the early 1990s in response to the Mirage 2000's ageing compared to the latest [[F-16]] fighter models.&lt;br /&gt;
&lt;br /&gt;
Improvements over the Mirage 2000 include the capability to carry a laser designator pod, new pulse-doppler multi-target radar, new defensive systems, and updated avionics, including a night vision-compatible glass cockpit, wide-angle [[HUD]], and {{Abbr|HOTAS|Hands On Throttle And Stick}} controls.&lt;br /&gt;
&lt;br /&gt;
Coming into service with the French Air Force (''Armée de l'Air''), and exported to several countries, Dassault further improved it by creating the {{Wikipedia|Dassault Mirage 2000#Mirage 2000-5 Mark 2|Mirage 2000-5 Mark 2}}, the most advanced of all Mirage 2000s.&lt;br /&gt;
&lt;br /&gt;
== Keyboard Controls ==&lt;br /&gt;
{| class=&amp;quot;keytable&amp;quot;&lt;br /&gt;
! Key&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|d}} || Open/close canopy (3 positions : opened, closed and half-opened)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|e}} || Fire weapon&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|e}} || Parachute (landing)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|j}} || Jettison tank&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|t}} || Toggle ECM &amp;amp; RWR&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|t}} || Change radar distances (10, 20 50, 100, 150)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|r}} || Activate/deactivate targeting the nearest in the HUD (the target has to be bellow radar range)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|h}} || Toggle armament circles&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;}} || On/off Engines (autostart)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|l}} || Flare out&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|l}} || Landing lights&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|n}} || Next target&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|n}} || Previous target&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|b}} || Air brake&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|w}} || Cycle stick weapon mode selector&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
[[File:Mirage 2000-5's colored afturburner.png|thumb|mirage 2000-5's colored afturburner at night]]&lt;br /&gt;
=== General characteristics ===&lt;br /&gt;
* Crew: 1&lt;br /&gt;
* Length: 14.36 m (47 ft 1 in)&lt;br /&gt;
* Wingspan: 9.13 m (29 ft)&lt;br /&gt;
* Height: 5.20 m (17 ft)&lt;br /&gt;
* Wing area: 41 m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; (441.3 ft&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Weight ===&lt;br /&gt;
* Empty weight: 7,500 kg (16,350 lb)&lt;br /&gt;
* Loaded weight: 13,800 kg (30,420 lb)&lt;br /&gt;
* Max. takeoff weight: 17,000 kg (37,500 lb)&lt;br /&gt;
&lt;br /&gt;
=== Engine ===&lt;br /&gt;
* Powerplant: 1 x SNECMA M53-P2 afterburning turbofan &lt;br /&gt;
** Dry thrust: 64.3 kN (14,500 lbf)&lt;br /&gt;
** Thrust with afterburner: 95.1 kN (21,400 lbf)&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
* Maximum speed: &lt;br /&gt;
** High altitude: Mach 2.2 (2,530+ km/h, 1,500+ mph)&lt;br /&gt;
** Low altitude: 1,110 km/h (690 mph)&lt;br /&gt;
* Range: 1,550 km (837 nmi, 963 mi) with drop tanks&lt;br /&gt;
* Ferry range: 3,335 km (1,800 nmi, 2,073 mi) with auxiliary fuel&lt;br /&gt;
* Service ceiling: 17,060 m (59,000 ft)&lt;br /&gt;
* Rate of climb: 285 m/s (56,000 ft/min)&lt;br /&gt;
* Wing loading: 337 kg/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; (69 lb/ft&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;)&lt;br /&gt;
* Thrust/weight: 0.91&lt;br /&gt;
* Roll Rate: 270 deg/sec &lt;br /&gt;
* G limits: +9.0 g / -3.2 g (override mode: 11 g, structural limit: 12 g)&lt;br /&gt;
&lt;br /&gt;
== Help ==&lt;br /&gt;
=== Weapons ===&lt;br /&gt;
[[File:Mirage 2000-5's weapons.png|thumb|some mirage 2000-5's air-air weapons]]&lt;br /&gt;
Available weapons for FlightGear's Mirage 2000-5 are as follows:&lt;br /&gt;
&lt;br /&gt;
* Guns: 2 x 30 mm (1.18 in) DEFA 554 revolver cannon, 125 rounds per gun&lt;br /&gt;
&lt;br /&gt;
* Missiles:&lt;br /&gt;
** Air-to-air missiles: {{Wikipedia|MBDA MICA}}, {{Wikipedia|R.550 Magic|Matra R.550 Magic 2}}, {{Wikipedia|Super 530|Matra Super 530}} {{clarify}}, {{Wikipedia|AIM-120 AMRAAM}}, {{Wikipedia|AIM-9 Sidewinder}}, {{Wikipedia|AIM-54 Phoenix}}, and the {{Wikipedia|R-73 (missile)#Variants|Vympel R-74}}.&lt;br /&gt;
** Air-to-ground missiles: {{Wikipedia|Storm Shadow}} (''SCALP'' in French service), {{Wikipedia|Sea Eagle (missile)|Sea Eagle}}, {{Wikipedia|AGM-65 Maverick}}, {{Wikipedia|GBU-16}}, and the {{Wikipedia|GBU-12}}.&lt;br /&gt;
&lt;br /&gt;
==== How to fire a guided missile ==== &lt;br /&gt;
# Select your missile on the graphical MFD, with the top button of the left series button.&lt;br /&gt;
# Then, select your weapon mode with {{key press|w}} (cycles through nothing, guns, missiles)&lt;br /&gt;
# Press {{key press|Shift|r}} to activate radar illumination.&lt;br /&gt;
# Acquire your target.&lt;br /&gt;
# Fire with {{key press|e}}.&lt;br /&gt;
&lt;br /&gt;
{{Note|Due to the generic missile script, FlightGear's Mirage 2000-5 can carry missiles not carried on the aircraft in real life.  For a list of weapons available to the aircraft in real life, please see {{Wikipedia|Dassault Mirage 2000#Specifications (Mirage 2000C)}}.}}&lt;br /&gt;
{{Caution|It is a bad idea to fire a missile while under negative G.}}&lt;br /&gt;
&lt;br /&gt;
=== Refueling ===&lt;br /&gt;
The Mirage is capable of [[mid-air refueling]].  You can enter the desired [[TACAN]] code into the right MFD (see second video), and then use both radar and the TACAN to guide you in.&lt;br /&gt;
&lt;br /&gt;
=== Radar ===&lt;br /&gt;
The radar has 5 ranges (10, 20, 50, 100, and 150 nm) which can be switched with {{key press|t}}. It can identify multiple targets and show some information about them.  &lt;br /&gt;
&lt;br /&gt;
=== HUD ===&lt;br /&gt;
The HUD shows both potential targets and the locked target.  It also shows if the undercarriage is extended, the distance to the ground if the altitude is below 5,000 feet, and the Mach speed if the aircraft is going faster than Mach 0.8.&lt;br /&gt;
=== Dual seat in Multiplayer Mode ===&lt;br /&gt;
You can flight in the back seat as a passenger in [[Multiplayer]] mode&lt;br /&gt;
This is under development, the goal is to make the mirage 2000 [[Dual Control]] ready !&lt;br /&gt;
&lt;br /&gt;
how to test multiplayer on same PC ?&lt;br /&gt;
* run flightgear with parameters :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--aircraft=m2000-5B          --multiplay=out,10,127.0.0.1,5000 --multiplay=in,10,127.0.0.1,5001 --callsign=&amp;quot;PILOT&amp;quot; --prop:/sim/remote/pilot-callsign=&amp;quot;NOSA&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* run another instance with parameters :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--aircraft=m2000-5B-backseat --multiplay=out,10,127.0.0.1,5001 --multiplay=in,10,127.0.0.1,5000 --callsign=&amp;quot;NOSA&amp;quot;  --prop:/sim/remote/pilot-callsign=&amp;quot;PILOT&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[File:Mirage2000-5 multiplayer dual seat.png|thumb|mirage 2000-5 multiplayer dual seat]]&lt;br /&gt;
&lt;br /&gt;
FYI : NOSA (Navigateur Officier Systèmes d'Armes) mean Weapons Systems Officer Navigator.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
{{#ev:youtube|uAhXLSO1tt4|||{{en|Video showing the new features of the Mirage 2000-5 (Feb 2015 version)}}|frame}}&lt;br /&gt;
{{#ev:youtube|i9FXj03IDfs|||{{en|Video explaining how to navigate and use the [[autopilot]] &amp;amp; MFD}}|frame}}&lt;br /&gt;
{{#ev:youtube|clKk-Zb2Okw|||{{en|Little demo to explain how work the sniping pod for GBU}}|frame}}&lt;br /&gt;
&lt;br /&gt;
=== Miscelleanous ===&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
Mirage 2000-5's flight in formation lights.png|mirage 2000-5's flight in formation lights&lt;br /&gt;
Mirage 2000-5 flying over France.png|mirage 2000-5 over France&lt;br /&gt;
Mirage 2000-5's mini-hud and logo &amp;quot;2000-5&amp;quot;.png|mirage 2000-5's mini-hud and logo &amp;quot;2000-5&amp;quot;&lt;br /&gt;
Mirage2000-5 2seats with ground equipment.png|mirage 2000-5 2 seats with ground equipment&lt;br /&gt;
Mirage2000-5 2seats with some stores.png|mirage 2000-5 2 seats with some stores&lt;br /&gt;
Mirage2000-5 2seats landing nellis.png|mirage 2000-5 2 seats landing nellis&lt;br /&gt;
Mirage2000-5 2seats ready to start.png|mirage 2000-5 2 seats ready to start&lt;br /&gt;
Mirage2000-5 2seats takeoff under rain.png|mirage 2000-5 2 seats takeoff under rain&lt;br /&gt;
Mirage2000-5 raindrops1.png|mirage 2000-5 raindrops1&lt;br /&gt;
Mirage2000-5 raindrops2.png|mirage 2000-5 raindrops2&lt;br /&gt;
Mirage2000-5 basse altitude with pod.png|mirage 2000-5 flying low altitude with pod &amp;quot;PDLCT&amp;quot;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Refueling ===&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
M2000-5 Refueling.png|[[Mid-air refueling]] with an A330-MRTT&lt;br /&gt;
Refueling using RADAR TACAN.png|Refuelling using [[TACAN]] and radar&lt;br /&gt;
Mirage-2000-5weapons managment.png|Graphical weapon selection&lt;br /&gt;
M2000-5 EICAS.png|EICAS for engine mamagement&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Liveries and logos ===&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
Mirage 2000-5's green-blue ardennes.png|mirage 2000-5's green/blue camo (squadron &amp;quot;Ardennes&amp;quot;)&lt;br /&gt;
Mirage 2000-5's blue-grey camo chimere.png|mirage 2000-5's blue/grey camo (squadron &amp;quot;Chimère d'argent&amp;quot;)&lt;br /&gt;
Mirage 2000-5's desert camo lafayette.png|mirage 2000-5's desert camo (squadron &amp;quot;Lafayette&amp;quot;)&lt;br /&gt;
Mirage2000-5 one seat grey livery.png|mirage 2000-5's grey livery (squadron &amp;quot;Alsace&amp;quot;)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
=== May 2017 version ===&lt;br /&gt;
==== 3D model ====&lt;br /&gt;
* a new two seats version (the mirage 2000B, N and D)&lt;br /&gt;
* new HD (high definition) liveries&lt;br /&gt;
* specific liveries : green digital, snow, black, etc&lt;br /&gt;
* a lot of corrections on littles details (antennas, refueling pole, gears doors, intakes shades, cockpit, wheels, reddish engine) for both versions (one and two seats)&lt;br /&gt;
* ground equipment&lt;br /&gt;
==== effects ====&lt;br /&gt;
* rain effects (sound, raindrops, effects on the fuselage)&lt;br /&gt;
* shakes on high gload, mach 1&lt;br /&gt;
* realistic blackout/redout&lt;br /&gt;
==== Systems ====&lt;br /&gt;
* new improvments on fly by wire systems (the purpose is to obtain maximum realism when flying : pitch limitations on high gload or high angle of attack, pitch and roll limitations when airbrakes are active)&lt;br /&gt;
* more stability with an &amp;quot;auto-trim system&amp;quot;&lt;br /&gt;
* new realistic radar with ground and doppler effects&lt;br /&gt;
* new instruments&lt;br /&gt;
* canvas nav-display&lt;br /&gt;
* partial canvas hud : radar detected targets are designed on the hud&lt;br /&gt;
==== Weapons and stores ====&lt;br /&gt;
* more realistic weapons to dogfight [http://opredflag.shivtr.com/ OPRF team] : realistic damages, counter measures, missile trajectory&lt;br /&gt;
* new weapons or 3d improvment for : matra mica IR, mica EM, magic, exocet&lt;br /&gt;
* liveries on external tanks&lt;br /&gt;
* inert pod : PDLCT (pod de designation laser - camera thermique)&lt;br /&gt;
&lt;br /&gt;
=== Feb 2015 version ===&lt;br /&gt;
==== 3D model ====&lt;br /&gt;
* Several more instrument in the cockpit, including startup instrument, and light variator instruments.&lt;br /&gt;
* New, more realistic gun explosion.&lt;br /&gt;
* New, more realistic missile explosion.&lt;br /&gt;
* New afterburner flames that take differents colors, depending on the sun position.&lt;br /&gt;
* New [[Rembrandt]] light effects in the cockpit.&lt;br /&gt;
* New rule about each instrument's light effects&lt;br /&gt;
* Possibility to hide the pilot model when in the cockpit.&lt;br /&gt;
* Deactivate the temporary non-Rembrandt shadow, because it had a big MP issue and did not allow a correct dogfight.&lt;br /&gt;
* New exhaust.&lt;br /&gt;
* Separated livery &amp;amp; logos.  Logos are now independent of the livery.&lt;br /&gt;
==== Systems ====&lt;br /&gt;
* Center MFD can switch between old version and Canvas [[NavDisplay]] version. &lt;br /&gt;
* Working startup procedure.&lt;br /&gt;
* Working cockpit light variator.&lt;br /&gt;
* Utilisation of the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;usage&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; tag.&lt;br /&gt;
==== Weapons ====&lt;br /&gt;
* You can now create a ground target, by clicking on the ground and then clicking &amp;quot;Create a Target&amp;quot; in the &amp;quot;Mirage 2000 &amp;gt; Fast Config&amp;quot; menu.&lt;br /&gt;
==== Nasal ====&lt;br /&gt;
* Centralised function launch and update instead of multiple separate loops/listeners.&lt;br /&gt;
* Loads are now visible over MP.&lt;br /&gt;
&lt;br /&gt;
=== August 2013 version ===&lt;br /&gt;
* Much better autopilot (see video).&lt;br /&gt;
* Multi-page MFDs.&lt;br /&gt;
* Radio management on the right MFD.&lt;br /&gt;
* An EICAS page.&lt;br /&gt;
* Cockpit general graphics are improved.&lt;br /&gt;
* A weapons selection page on the left MFD.&lt;br /&gt;
* Better sound and missile script improved.&lt;br /&gt;
* Working alert panel.&lt;br /&gt;
* New clock&lt;br /&gt;
* And lots of other stuff not listed here...&lt;br /&gt;
&lt;br /&gt;
== Todo ==&lt;br /&gt;
=== Models ===&lt;br /&gt;
* High-resolution liveries. {{done}}&lt;br /&gt;
* Throttle stick, gear green/red light, jettison all button. {{Done}}&lt;br /&gt;
* Add some &amp;quot;ground&amp;quot; feature (equipment, external power). {{done}}&lt;br /&gt;
* Modify exterior pylons shade. {{done}}&lt;br /&gt;
* Modelize rudder pedals and stick. {{progressbar|30}}&lt;br /&gt;
* Modify cockpit 3d model (single and dual seat). {{not done}}&lt;br /&gt;
* Homogenize instruments texture and materials. {{not done}}&lt;br /&gt;
* Smooth canopy arch. {{not done}}&lt;br /&gt;
* Create crashed models. {{not done}}&lt;br /&gt;
=== MultiPlayer ===&lt;br /&gt;
* Make the loads visibles in MP. {{done}}&lt;br /&gt;
* Dual control.  {{not done}}&lt;br /&gt;
=== Instruments ===&lt;br /&gt;
* Add more clickable instruments and complete tooltips. {{progressbar|90}}&lt;br /&gt;
* Complete the alert panel. {{progressbar|60}}&lt;br /&gt;
* Canvas HUD. {{progressbar|50}}&lt;br /&gt;
* Move flight in formation lights. {{not done}}&lt;br /&gt;
* Make the RWR work. {{not done}}&lt;br /&gt;
* Modelize the Inertial measurement unit {{not done}}&lt;br /&gt;
&lt;br /&gt;
=== Systems ===&lt;br /&gt;
* Make the start procedure more realistic. {{Done}}&lt;br /&gt;
* Correct the radar issue due to the generic function radardist and multiplayer ATC. {{done}}&lt;br /&gt;
* Improve FDM. {{done}}&lt;br /&gt;
=== Weapons ===&lt;br /&gt;
* Put missiles in a generic folder. {{done}}&lt;br /&gt;
* Improve missile models. {{progressbar|80}}&lt;br /&gt;
* Improve the missile script. '''On going'''&lt;br /&gt;
* Put sound on the missiles. {{not done}}&lt;br /&gt;
* Make a working ECM (missiles have to be reworked first). {{not done}}&lt;br /&gt;
=== Other ===&lt;br /&gt;
* Checklist. {{not done}}&lt;br /&gt;
* update help : landing, takeoff. '''On going'''&lt;br /&gt;
&lt;br /&gt;
== Thanks ==&lt;br /&gt;
'''Helijah''' (for the 3D model), '''Buckaroo''' (for the FDM), '''5HIN0B1''' (for the working weapons and systems), '''Koubi''' (for the engine script), '''FG-TUX''' (for testing), '''Ray''' (for helping on the MFD), '''Anusil''' (for testing), '''F-Sig''', '''Xiii''' (for fox2.nas, the initial missile script), '''the F-16 team''' (for the radar and HUD), '''the Citation X team''' (for the middle MFD), all those who created missile models, '''Niko''' (for the wiki page and the original ask for the project), '''Thomas''' (for the liveries), '''Gijs''' (for the wiki page), '''Hardball''' (for the two seats 3d model, the liveries, minihud and some other stuff), '''Leto''', '''Richard''', '''Swamp''', '''FB''', '''onox''', '''it0uchpods''', '''legoboyvdlp''', '''Domokos Jüttner (Rudolf)''' (All '''OPRF''' team) and all those forgotten here ('''Nicolas de Lemos''')… &lt;br /&gt;
&lt;br /&gt;
'''''Thanks to all.'''''&lt;br /&gt;
&lt;br /&gt;
== External link ==&lt;br /&gt;
* {{Wikipedia|Dassault_Mirage_2000#Mirage_2000-5|Dassault Mirage 2000-5}} (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
{{Dassault}}&lt;br /&gt;
{{air-to-air refueling}}&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Talk:YASim_Development_Tools&amp;diff=114441</id>
		<title>Talk:YASim Development Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Talk:YASim_Development_Tools&amp;diff=114441"/>
		<updated>2018-02-13T21:49:48Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: Created page with &amp;quot;The sourceforge link doesn't work. seems to be dead&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The sourceforge link doesn't work. seems to be dead&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5&amp;diff=111541</id>
		<title>Dassault Mirage 2000-5</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5&amp;diff=111541"/>
		<updated>2017-11-01T21:04:20Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: /* Thanks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:{{PAGENAME}}/info}}&lt;br /&gt;
{{Distinguish|Dassault Mirage 2000}}&lt;br /&gt;
The '''Dassault Mirage 2000-5''' is a French multirole, single-engine fourth-generation jet fighter manufactured by Dassault Aviation. An improvement of the [[Mirage 2000]], it was improved by Thomson-CSF (now Thales Group) in the early 1990s in response to the Mirage 2000's ageing compared to the latest [[F-16]] fighter models.&lt;br /&gt;
&lt;br /&gt;
Improvements over the Mirage 2000 include the capability to carry a laser designator pod, new pulse-doppler multi-target radar, new defensive systems, and updated avionics, including a night vision-compatible glass cockpit, wide-angle [[HUD]], and {{Abbr|HOTAS|Hands On Throttle And Stick}} controls.&lt;br /&gt;
&lt;br /&gt;
Coming into service with the French Air Force (''Armée de l'Air''), and exported to several countries, Dassault further improved it by creating the {{Wikipedia|Dassault Mirage 2000#Mirage 2000-5 Mark 2|Mirage 2000-5 Mark 2}}, the most advanced of all Mirage 2000s.&lt;br /&gt;
&lt;br /&gt;
== Keyboard Controls ==&lt;br /&gt;
{| class=&amp;quot;keytable&amp;quot;&lt;br /&gt;
! Key&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|d}} || Open/close canopy (3 positions : opened, closed and half-opened)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|e}} || Fire weapon&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|e}} || Parachute (landing)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|j}} || Jettison tank&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|t}} || Toggle ECM &amp;amp; RWR&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|t}} || Change radar distances (10, 20 50, 100, 150)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|r}} || Activate/deactivate targeting the nearest in the HUD (the target has to be bellow radar range)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|h}} || Toggle armament circles&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;}} || On/off Engines (autostart)&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|l}} || Flare out&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Shift|l}} || Landing lights&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|n}} || Next target&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|n}} || Previous target&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|Ctrl|b}} || Air brake&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|w}} || Cycle stick weapon mode selector&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
[[File:Mirage 2000-5's colored afturburner.png|thumb|mirage 2000-5's colored afturburner at night]]&lt;br /&gt;
=== General characteristics ===&lt;br /&gt;
* Crew: 1&lt;br /&gt;
* Length: 14.36 m (47 ft 1 in)&lt;br /&gt;
* Wingspan: 9.13 m (29 ft)&lt;br /&gt;
* Height: 5.20 m (17 ft)&lt;br /&gt;
* Wing area: 41 m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; (441.3 ft&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Weight ===&lt;br /&gt;
* Empty weight: 7,500 kg (16,350 lb)&lt;br /&gt;
* Loaded weight: 13,800 kg (30,420 lb)&lt;br /&gt;
* Max. takeoff weight: 17,000 kg (37,500 lb)&lt;br /&gt;
&lt;br /&gt;
=== Engine ===&lt;br /&gt;
* Powerplant: 1 x SNECMA M53-P2 afterburning turbofan &lt;br /&gt;
** Dry thrust: 64.3 kN (14,500 lbf)&lt;br /&gt;
** Thrust with afterburner: 95.1 kN (21,400 lbf)&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
* Maximum speed: &lt;br /&gt;
** High altitude: Mach 2.2 (2,530+ km/h, 1,500+ mph)&lt;br /&gt;
** Low altitude: 1,110 km/h (690 mph)&lt;br /&gt;
* Range: 1,550 km (837 nmi, 963 mi) with drop tanks&lt;br /&gt;
* Ferry range: 3,335 km (1,800 nmi, 2,073 mi) with auxiliary fuel&lt;br /&gt;
* Service ceiling: 17,060 m (59,000 ft)&lt;br /&gt;
* Rate of climb: 285 m/s (56,000 ft/min)&lt;br /&gt;
* Wing loading: 337 kg/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; (69 lb/ft&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;)&lt;br /&gt;
* Thrust/weight: 0.91&lt;br /&gt;
* Roll Rate: 270 deg/sec &lt;br /&gt;
* G limits: +9.0 g / -3.2 g (override mode: 11 g, structural limit: 12 g)&lt;br /&gt;
&lt;br /&gt;
== Help ==&lt;br /&gt;
=== Weapons ===&lt;br /&gt;
[[File:Mirage 2000-5's weapons.png|thumb|some mirage 2000-5's air-air weapons]]&lt;br /&gt;
Available weapons for FlightGear's Mirage 2000-5 are as follows:&lt;br /&gt;
&lt;br /&gt;
* Guns: 2 x 30 mm (1.18 in) DEFA 554 revolver cannon, 125 rounds per gun&lt;br /&gt;
&lt;br /&gt;
* Missiles:&lt;br /&gt;
** Air-to-air missiles: {{Wikipedia|MBDA MICA}}, {{Wikipedia|R.550 Magic|Matra R.550 Magic 2}}, {{Wikipedia|Super 530|Matra Super 530}} {{clarify}}, {{Wikipedia|AIM-120 AMRAAM}}, {{Wikipedia|AIM-9 Sidewinder}}, {{Wikipedia|AIM-54 Phoenix}}, and the {{Wikipedia|R-73 (missile)#Variants|Vympel R-74}}.&lt;br /&gt;
** Air-to-ground missiles: {{Wikipedia|Storm Shadow}} (''SCALP'' in French service), {{Wikipedia|Sea Eagle (missile)|Sea Eagle}}, {{Wikipedia|AGM-65 Maverick}}, {{Wikipedia|GBU-16}}, and the {{Wikipedia|GBU-12}}.&lt;br /&gt;
&lt;br /&gt;
==== How to fire a guided missile ==== &lt;br /&gt;
# Select your missile on the graphical MFD, with the top button of the left series button.&lt;br /&gt;
# Then, select your weapon mode with {{key press|w}} (cycles through nothing, guns, missiles)&lt;br /&gt;
# Press {{key press|Shift|r}} to activate radar illumination.&lt;br /&gt;
# Acquire your target.&lt;br /&gt;
# Fire with {{key press|e}}.&lt;br /&gt;
&lt;br /&gt;
{{Note|Due to the generic missile script, FlightGear's Mirage 2000-5 can carry missiles not carried on the aircraft in real life.  For a list of weapons available to the aircraft in real life, please see {{Wikipedia|Dassault Mirage 2000#Specifications (Mirage 2000C)}}.}}&lt;br /&gt;
{{Caution|It is a bad idea to fire a missile while under negative G.}}&lt;br /&gt;
&lt;br /&gt;
=== Refueling ===&lt;br /&gt;
The Mirage is capable of [[mid-air refueling]].  You can enter the desired [[TACAN]] code into the right MFD (see second video), and then use both radar and the TACAN to guide you in.&lt;br /&gt;
&lt;br /&gt;
=== Radar ===&lt;br /&gt;
The radar has 5 ranges (10, 20, 50, 100, and 150 nm) which can be switched with {{key press|t}}. It can identify multiple targets and show some information about them.  &lt;br /&gt;
&lt;br /&gt;
=== HUD ===&lt;br /&gt;
The HUD shows both potential targets and the locked target.  It also shows if the undercarriage is extended, the distance to the ground if the altitude is below 5,000 feet, and the Mach speed if the aircraft is going faster than Mach 0.8.&lt;br /&gt;
=== Dual seat in Multiplayer Mode ===&lt;br /&gt;
You can flight in the back seat as a passenger in [[Multiplayer]] mode&lt;br /&gt;
This is under development, the goal is to make the mirage 2000 [[Dual Control]] ready !&lt;br /&gt;
&lt;br /&gt;
how to test multiplayer on same PC ?&lt;br /&gt;
* run flightgear with parameters :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--aircraft=m2000-5B          --multiplay=out,10,127.0.0.1,5000 --multiplay=in,10,127.0.0.1,5001 --callsign=&amp;quot;PILOT&amp;quot; --prop:/sim/remote/pilot-callsign=&amp;quot;NOSA&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* run another instance with parameters :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--aircraft=m2000-5B-backseat --multiplay=out,10,127.0.0.1,5001 --multiplay=in,10,127.0.0.1,5000 --callsign=&amp;quot;NOSA&amp;quot;  --prop:/sim/remote/pilot-callsign=&amp;quot;PILOT&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[File:Mirage2000-5 multiplayer dual seat.png|thumb|mirage 2000-5 multiplayer dual seat]]&lt;br /&gt;
&lt;br /&gt;
FYI : NOSA (Navigateur Officier Systèmes d'Armes) mean Weapons Systems Officer Navigator.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
{{#ev:youtube|uAhXLSO1tt4|||{{en|Video showing the new features of the Mirage 2000-5 (Feb 2015 version)}}|frame}}&lt;br /&gt;
{{#ev:youtube|i9FXj03IDfs|||{{en|Video explaining how to navigate and use the [[autopilot]] &amp;amp; MFD}}|frame}}&lt;br /&gt;
&lt;br /&gt;
=== Miscelleanous ===&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
Mirage 2000-5's flight in formation lights.png|mirage 2000-5's flight in formation lights&lt;br /&gt;
Mirage 2000-5 flying over France.png|mirage 2000-5 over France&lt;br /&gt;
Mirage 2000-5's mini-hud and logo &amp;quot;2000-5&amp;quot;.png|mirage 2000-5's mini-hud and logo &amp;quot;2000-5&amp;quot;&lt;br /&gt;
Mirage2000-5 2seats with ground equipment.png|mirage 2000-5 2 seats with ground equipment&lt;br /&gt;
Mirage2000-5 2seats with some stores.png|mirage 2000-5 2 seats with some stores&lt;br /&gt;
Mirage2000-5 2seats landing nellis.png|mirage 2000-5 2 seats landing nellis&lt;br /&gt;
Mirage2000-5 2seats ready to start.png|mirage 2000-5 2 seats ready to start&lt;br /&gt;
Mirage2000-5 2seats takeoff under rain.png|mirage 2000-5 2 seats takeoff under rain&lt;br /&gt;
Mirage2000-5 raindrops1.png|mirage 2000-5 raindrops1&lt;br /&gt;
Mirage2000-5 raindrops2.png|mirage 2000-5 raindrops2&lt;br /&gt;
Mirage2000-5 basse altitude with pod.png|mirage 2000-5 flying low altitude with pod &amp;quot;PDLCT&amp;quot;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Refueling ===&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
M2000-5 Refueling.png|[[Mid-air refueling]] with an A330-MRTT&lt;br /&gt;
Refueling using RADAR TACAN.png|Refuelling using [[TACAN]] and radar&lt;br /&gt;
Mirage-2000-5weapons managment.png|Graphical weapon selection&lt;br /&gt;
M2000-5 EICAS.png|EICAS for engine mamagement&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Liveries and logos ===&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
Mirage 2000-5's green-blue ardennes.png|mirage 2000-5's green/blue camo (squadron &amp;quot;Ardennes&amp;quot;)&lt;br /&gt;
Mirage 2000-5's blue-grey camo chimere.png|mirage 2000-5's blue/grey camo (squadron &amp;quot;Chimère d'argent&amp;quot;)&lt;br /&gt;
Mirage 2000-5's desert camo lafayette.png|mirage 2000-5's desert camo (squadron &amp;quot;Lafayette&amp;quot;)&lt;br /&gt;
Mirage2000-5 one seat grey livery.png|mirage 2000-5's grey livery (squadron &amp;quot;Alsace&amp;quot;)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
=== Changelog for May 2017 version ===&lt;br /&gt;
==== 3D model ====&lt;br /&gt;
* a new two seats version (the mirage 2000B, N and D)&lt;br /&gt;
* new HD (high definition) liveries&lt;br /&gt;
* specific liveries : green digital, snow, black, etc&lt;br /&gt;
* a lot of corrections on littles details (antennas, refueling pole, gears doors, intakes shades, cockpit, wheels, reddish engine) for both versions (one and two seats)&lt;br /&gt;
* ground equipment&lt;br /&gt;
==== effects ====&lt;br /&gt;
* rain effects (sound, raindrops, effects on the fuselage)&lt;br /&gt;
* shakes on high gload, mach 1&lt;br /&gt;
* realistic blackout/redout&lt;br /&gt;
==== Systems ====&lt;br /&gt;
* new improvments on fly by wire systems (the purpose is to obtain maximum realism when flying : pitch limitations on high gload or high angle of attack, pitch and roll limitations when airbrakes are active)&lt;br /&gt;
* more stability with an &amp;quot;auto-trim system&amp;quot;&lt;br /&gt;
* new realistic radar with ground and doppler effects&lt;br /&gt;
* new instruments&lt;br /&gt;
* canvas nav-display&lt;br /&gt;
* partial canvas hud : radar detected targets are designed on the hud&lt;br /&gt;
==== Weapons and stores ====&lt;br /&gt;
* more realistic weapons to dogfight [http://opredflag.shivtr.com/ OPRF team] : realistic damages, counter measures, missile trajectory&lt;br /&gt;
* new weapons or 3d improvment for : matra mica IR, mica EM, magic, exocet&lt;br /&gt;
* liveries on external tanks&lt;br /&gt;
* inert pod : PDLCT (pod de designation laser - camera thermique)&lt;br /&gt;
=== Changelog for Feb 2015 version ===&lt;br /&gt;
==== 3D model ====&lt;br /&gt;
* Several more instrument in the cockpit, including startup instrument, and light variator instruments.&lt;br /&gt;
* New, more realistic gun explosion.&lt;br /&gt;
* New, more realistic missile explosion.&lt;br /&gt;
* New afterburner flames that take differents colors, depending on the sun position.&lt;br /&gt;
* New [[Rembrandt]] light effects in the cockpit.&lt;br /&gt;
* New rule about each instrument's light effects&lt;br /&gt;
* Possibility to hide the pilot model when in the cockpit.&lt;br /&gt;
* Deactivate the temporary non-Rembrandt shadow, because it had a big MP issue and did not allow a correct dogfight.&lt;br /&gt;
* New exhaust.&lt;br /&gt;
* Separated livery &amp;amp; logos.  Logos are now independent of the livery.&lt;br /&gt;
&lt;br /&gt;
==== Systems ====&lt;br /&gt;
* Center MFD can switch between old version and Canvas [[NavDisplay]] version. &lt;br /&gt;
* Working startup procedure.&lt;br /&gt;
* Working cockpit light variator.&lt;br /&gt;
* Utilisation of the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;usage&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
==== Weapons ====&lt;br /&gt;
* You can now create a ground target, by clicking on the ground and then clicking &amp;quot;Create a Target&amp;quot; in the &amp;quot;Mirage 2000 &amp;gt; Fast Config&amp;quot; menu.&lt;br /&gt;
&lt;br /&gt;
==== Nasal ====&lt;br /&gt;
* Centralised function launch and update instead of multiple separate loops/listeners.&lt;br /&gt;
* Loads are now visible over MP.&lt;br /&gt;
&lt;br /&gt;
=== Changelog for August 2013 version ===&lt;br /&gt;
* Much better autopilot (see video).&lt;br /&gt;
* Multi-page MFDs.&lt;br /&gt;
* Radio management on the right MFD.&lt;br /&gt;
* An EICAS page.&lt;br /&gt;
* Cockpit general graphics are improved.&lt;br /&gt;
* A weapons selection page on the left MFD.&lt;br /&gt;
* Better sound and missile script improved.&lt;br /&gt;
* Working alert panel.&lt;br /&gt;
* New clock&lt;br /&gt;
* And lots of other stuff not listed here...&lt;br /&gt;
&lt;br /&gt;
=== Todo ===&lt;br /&gt;
* dual control. '''On going'''&lt;br /&gt;
* Add more clickable instruments and complete tooltips. {{progressbar|60}}&lt;br /&gt;
* Make the start procedure more realistic. {{Done}}&lt;br /&gt;
* Complete the alert panel. {{progressbar|60}}&lt;br /&gt;
* Canvas HUD. {{progressbar|20}}&lt;br /&gt;
* Throttle stick, gear green/red light, jettison all button. {{Done}} (even if some are done)&lt;br /&gt;
* Checklist. {{not done}}&lt;br /&gt;
* Add some &amp;quot;ground&amp;quot; feature (equipment, external power). {{progressbar|60}}&lt;br /&gt;
* Improve the missile script. '''On going'''&lt;br /&gt;
* Put sound on the missiles. {{not done}}&lt;br /&gt;
* Make the loads visibles in MP. {{done}}&lt;br /&gt;
* Make the RWR work. {{not done}}&lt;br /&gt;
* Put missiles in a generic folder. {{done}}&lt;br /&gt;
* Improve missile models. {{progressbar|50}}&lt;br /&gt;
* Correct the radar issue due to the generic function radardist and multiplayer ATC. {{done}}&lt;br /&gt;
* High-resolution liveries. {{done}}&lt;br /&gt;
* Improve FDM. {{done}}&lt;br /&gt;
* Make a working ECM (missiles have to be reworked first). {{not done}}&lt;br /&gt;
* modelize rudder pedals and stick. '''On going'''&lt;br /&gt;
* modify exterior pylons shade. '''On going'''&lt;br /&gt;
* modify cockpit 3d model (single and dual seat). '''On going'''&lt;br /&gt;
* homogenise instruments texture and materials. '''On going'''&lt;br /&gt;
* smooth canopy arch. '''On going'''&lt;br /&gt;
* move flight in formation lights. '''On going'''&lt;br /&gt;
* update help : landing, takeoff. '''On going'''&lt;br /&gt;
* And more...&lt;br /&gt;
&lt;br /&gt;
== Thanks ==&lt;br /&gt;
'''Helijah''' (for the 3D model), '''Buckaroo''' (for the FDM), '''5HIN0B1''' (for the working weapons and systems), '''Koubi''' (for the engine script), '''FG-TUX''' (for testing), '''Ray''' (for helping on the MFD), '''Anusil''' (for testing), '''F-Sig''', '''Xiii''' (for fox2.nas, the initial missile script), '''the F-16 team''' (for the radar and HUD), '''the Citation X team''' (for the middle MFD), all those who created missile models, '''Niko''' (for the wiki page and the original ask for the project), '''Thomas''' (for the liveries), '''Gijs''' (for the wiki page), '''Hardball''' (for the two seats 3d model, the liveries, minihud and some other stuff), '''Leto''', '''Richard''', '''Swamp''', '''FB''', '''onox''', '''ItouchPod''' (All '''OPRF''' team) and all those forgotten here ('''Nicolas de Lemos''')… &lt;br /&gt;
&lt;br /&gt;
'''''Thanks to all.'''''&lt;br /&gt;
&lt;br /&gt;
== External link ==&lt;br /&gt;
* {{Wikipedia|Dassault_Mirage_2000#Mirage_2000-5|Dassault Mirage 2000-5}} (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
{{Dassault}}&lt;br /&gt;
{{air-to-air refueling}}&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5&amp;diff=81602</id>
		<title>Dassault Mirage 2000-5</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5&amp;diff=81602"/>
		<updated>2015-02-27T12:10:25Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: /* Futures Objectives on the precedent changelog 201308 */  make the inventory of what have been done&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infobox Aircraft&lt;br /&gt;
|image    	= M20005prespic.png&lt;br /&gt;
|name     	= Mirage 2000-5&lt;br /&gt;
|livery   	=  &lt;br /&gt;
|type     	= Combat and interception aircraft&lt;br /&gt;
|authors  	= Emmanuel Baranger (3D/FDM), Buckaroo (FDM), 5H1N0B1 (Weapons, Systems), F-Sig (3D, Systems)&lt;br /&gt;
|fdm      	= YASim&lt;br /&gt;
|fgname   	= m2000-5&lt;br /&gt;
|status-fdm	= 4&lt;br /&gt;
|status-systems	= 4&lt;br /&gt;
|status-cockpit	= 3&lt;br /&gt;
|status-model	= 4&lt;br /&gt;
|download 	= http://helijah.free.fr/flightgear/les-appareils/m2000/appareil.htm&lt;br /&gt;
}}&lt;br /&gt;
{{Distinguish|Dassault Mirage 2000}}&lt;br /&gt;
The '''Dassault Mirage 2000-5''' is a French multirole, single-engine fourth-generation jet fighter manufactured by Dassault Aviation. It was designed as a lightweight fighter based on the Mirage III in the late 1970s for the French Air Force (Armée de l'Air). The Mirage 2000 evolved into a multirole aircraft with several variants developed, with sales to a number of nations. The variants include the Mirage 2000N and 2000D strike variants, the improved Mirage 2000-5 and several export variants. Over 600 aircraft were built and it is in service in nine countries as of 2009.&lt;br /&gt;
&lt;br /&gt;
== Presentation Vidéo ==&lt;br /&gt;
Here is a video presentation video for the mirage 2000-5 with the last update.&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube | uAhXLSO1tt4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keyboard Controls ==&lt;br /&gt;
=== Flight Controls ===&lt;br /&gt;
{|&lt;br /&gt;
|{{key press|d}}&lt;br /&gt;
|Open/Close canopy&lt;br /&gt;
|-&lt;br /&gt;
|{{key press| e}}&lt;br /&gt;
|Fire guns/missiles&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|E}}&lt;br /&gt;
|Parachute (landing)&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|Pav Num}}&lt;br /&gt;
|Release the corresponding load (Not anymore on 08/2013 version)&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|0}}&lt;br /&gt;
|Jettison Tank&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|T}}&lt;br /&gt;
|Toggle ECM &amp;amp; RWR&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|t}}&lt;br /&gt;
|Change Radar Distances (10, 20 50, 100, 150)&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|R}}&lt;br /&gt;
|Activate/desactivate targeting the nearest in the HUD (the target has to be bellow radar range)&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|H}}&lt;br /&gt;
|Toggle Armements Circles&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|On/Off Reactor&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|l}}&lt;br /&gt;
|Flare out&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|n}}&lt;br /&gt;
|Next Target&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|Ctrl|N}}&lt;br /&gt;
|Previous Target&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|Ctrl|B}}&lt;br /&gt;
|Air Brake&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|w}}&lt;br /&gt;
|Cycle Stick Weapon Mode Selector&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Afterburners engage when throttle moves past 75%&lt;br /&gt;
&lt;br /&gt;
To fire a guided Missile, select A/A missile with &amp;quot;w&amp;quot;, activate &amp;quot;lock&amp;quot; with R, aim with the HUD and fire with &amp;quot;e&amp;quot;. Beware : it's a bad idea to fire a missile and have negative G...(Don't shoot yourself)&lt;br /&gt;
&lt;br /&gt;
==General characteristics==&lt;br /&gt;
* Crew: 1&lt;br /&gt;
* Length: 14.36 m (47 ft 1 in)&lt;br /&gt;
* Wingspan: 9.13 m (29 ft)&lt;br /&gt;
* Height: 5.20 m (17 ft)&lt;br /&gt;
* Wing area: 41 m² (441.3 ft²)&lt;br /&gt;
&lt;br /&gt;
==Weight==&lt;br /&gt;
* Empty weight: 7,500 kg (16,350 lb)&lt;br /&gt;
* Loaded weight: 13,800 kg (30,420 lb)&lt;br /&gt;
* Max. takeoff weight: 17,000 kg (37,500 lb)&lt;br /&gt;
&lt;br /&gt;
==Engine==&lt;br /&gt;
[[File:M2000-5 EICAS.png|thumb|The new EICAS, for engine mamagement]]&lt;br /&gt;
* Powerplant: 1 × SNECMA M53-P2 afterburning turbofan &lt;br /&gt;
* Dry thrust: 64.3 kN (14,500 lbf)&lt;br /&gt;
* Thrust with afterburner: 95.1 kN (21,400 lbf)&lt;br /&gt;
&lt;br /&gt;
==Performance==&lt;br /&gt;
* Maximum speed: Mach 2.2 (2,530+ km/h, 1,500+ mph) at high altitude/ 1,110 km/h (690 mph) at low altitude&lt;br /&gt;
* Range: 1,550 km (837 nmi, 963 mi) with drop tanks&lt;br /&gt;
* Ferry range: 3,335 km (1,800 nmi, 2,073 mi) with auxiliary fuel&lt;br /&gt;
* Service ceiling: 17,060 m (59,000 ft)&lt;br /&gt;
* Rate of climb: 285 m/s (56,000 ft/min)&lt;br /&gt;
* Wing loading: 337 kg/m² (69 lb/ft²)&lt;br /&gt;
* Thrust/weight: 0.91&lt;br /&gt;
* Roll Rate : 270 deg/sec &lt;br /&gt;
* G load : +9g / -3.2g (override mode : 11 g, structural limit 12 g), &lt;br /&gt;
&lt;br /&gt;
== Weapons ==&lt;br /&gt;
[[File:Mirage-2000-5weapons managment.png|thumb|Graphical weapon selection]]&lt;br /&gt;
&lt;br /&gt;
'''Guns:''' 2× 30 mm (1.18 in) DEFA 554 revolver cannon, 125 rounds per gun&lt;br /&gt;
&lt;br /&gt;
'''Missiles:'''&lt;br /&gt;
: '''Air-to-air missiles''': MBDA MICA IR/RF, Matra R550 Magic-II, Matra R530, AIM120 AMRAAM, AIM9 sidewinder, AIM-54 Phoenix, R74 Vympel (More to come)&lt;br /&gt;
: '''Air-to-surface missiles''': SCALP/APACHE missile (cruise missile Air to ground), Sea Eagle (cruise missile Air to sea), AGM65 Maverick, GBU16,GBU12&lt;br /&gt;
&lt;br /&gt;
'''To fire a guided Missile''' : &lt;br /&gt;
Select your missile on the graphical mfd, with the top button of the left series button.&amp;lt;br /&amp;gt;&lt;br /&gt;
Then, select your weapon mode with ''''w'''' (nothing, guns, missiles...)&amp;lt;br /&amp;gt;&lt;br /&gt;
Press ''''Shift - r'''' and activate the radar illumination. Acquire your target, and fire with ''''e'''' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Notes :''' Missile here are guided. There are lot a different missile, more than what the 2000-5 can carry. It's due to the missile's script, and its future adaption on other aircraft.&lt;br /&gt;
&lt;br /&gt;
== Refueling ==&lt;br /&gt;
[[File:M2000-5 Refueling.png|thumb|Air to Air refueling with an A330-MRTT]]&lt;br /&gt;
[[File:Refueling using RADAR TACAN.png|thumb|This how to refuel, using both TACAN and RADAR]]&lt;br /&gt;
Thanks to Fguk's team who worked on the A330-MRTT, the 2000-5 can refuel with it, as an AI, instead of the KA-6.&lt;br /&gt;
&lt;br /&gt;
When Flightgear gives you the TACAN, you can enter it in the MFD screen (watch the how to video), and then, use both radar and the tacan&lt;br /&gt;
&lt;br /&gt;
Only on mirage 2000-5 feature : in french air force, refuelling is always at 22 000 feets.&lt;br /&gt;
&lt;br /&gt;
== Radar and HUD ==&lt;br /&gt;
[[File:2000-5 new cockpit.png|thumb|More realistic cockpit of the 2000-5.]]&lt;br /&gt;
The Radar have 5 distances, (10, 20 50,100, 150) wich can be switched with {{key press|t}}. This radar can identify multiple spot and show their level (with only 2 digits)&lt;br /&gt;
The HUD show both potential target and actual target.&lt;br /&gt;
It also show if the gear are out, show the ground alt if this on is bellow 5 000 feets, and show mach only if spedd &amp;gt; mach 0.8&lt;br /&gt;
&lt;br /&gt;
== MFD &amp;amp; Navigation ==&lt;br /&gt;
Here is a video to explain how to navigate, use autopilot &amp;amp; MFD&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube | i9FXj03IDfs}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Developpement ==&lt;br /&gt;
=== Changelog 2015-02 ===&lt;br /&gt;
&lt;br /&gt;
3D : &lt;br /&gt;
*Several more instrument in the cockpit. The working ones are : startup instrument, light variator instruments.(The others, I'm still working on it)&lt;br /&gt;
*New gun explosion : more realistics&lt;br /&gt;
*New missiles explosion : more realistics&lt;br /&gt;
*New flames that take differents colors, depending of the sun position&lt;br /&gt;
*New light effect in the cockpit when using Rembrandt.&lt;br /&gt;
*New rule about each instruments lights effects&lt;br /&gt;
*Possibility to disable the pilot.&lt;br /&gt;
*Desactivate temporary the &amp;quot;non Rembrandt Shadow&amp;quot; that have big issue in MP (and do not allow a correct dogfight)&lt;br /&gt;
*New &amp;quot;Exhaust&amp;quot;&lt;br /&gt;
*Separated livery &amp;amp; logos (that allow differents HQ logos independently of the livery)&lt;br /&gt;
&lt;br /&gt;
Systems :&lt;br /&gt;
*Double center Mfd for the guys who want (or not) the canvas one. The older is now working lot more better.&lt;br /&gt;
*Working startup procedure&lt;br /&gt;
*Working cockpit light variator&lt;br /&gt;
*Utilisation of the &amp;lt;usage&amp;gt; tag&lt;br /&gt;
Weapons :&lt;br /&gt;
*Ground designation : This now possible to create a &amp;quot;ground target&amp;quot;, by clicking on the ground and then clicking at the &amp;quot;Create a Target&amp;quot; in &amp;quot;Mirage 2000 &amp;gt; Fast Config&amp;quot; menu.&lt;br /&gt;
&lt;br /&gt;
Nasal :&lt;br /&gt;
*Lot of improvement by using a centralised function lanch and update instead of setListener or multiple different loop. This should invisble to the user except that their FPS will stay high&lt;br /&gt;
*Loads are now visible over MP&lt;br /&gt;
&lt;br /&gt;
=== What was done on the precedent changelog 201308===&lt;br /&gt;
*A specific and clicable autopilot (see video)&lt;br /&gt;
*multi screen MFD&lt;br /&gt;
*Radio management on mfd&lt;br /&gt;
*An mfd EICAS&lt;br /&gt;
*Cockpit general graphics are improved.&lt;br /&gt;
*A weapons selection on mfd (wich make the numpad free)&lt;br /&gt;
*Better sound, missile script improved (Working aiming missiles)&lt;br /&gt;
*working alert panel&lt;br /&gt;
*a clock&lt;br /&gt;
And lot of other stuff not listed here...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Futures Objectives on the precedent changelog 201308===&lt;br /&gt;
*Add more clicable instruments- On going (even if some are done)&lt;br /&gt;
*Make the start procedure more realistic Done. (Ill add check list later)&lt;br /&gt;
*Complete the Alert Panel- On going (60%)&lt;br /&gt;
*Make a better HUD -&amp;gt; Use canvas (To make multiple Hud, for example, draw a runway on the HUD while landing with low visibility...) -Not Yet&lt;br /&gt;
*Throttle stick,gear green/red light, Jettison all button.  On going (even if some are done)&lt;br /&gt;
*Checklist&lt;br /&gt;
*Add some &amp;quot;ground&amp;quot; feature. Not Yet&lt;br /&gt;
*Improve the missile script. On going&lt;br /&gt;
*Put sound on missiles. Not Yet&lt;br /&gt;
*Make the loads visibles in mp. Done&lt;br /&gt;
*Make the RWR work. Not Yet&lt;br /&gt;
*Put Missiles on a generic folder. Not Yet&lt;br /&gt;
*increase visual on missiles. Not Yet&lt;br /&gt;
*Correct the radar issue due to the generic function radardist and multiplayer ATC. Done&lt;br /&gt;
&lt;br /&gt;
*make high resolution liveries (But keep the old ones). Done&lt;br /&gt;
*Increase the FDM (correction of some strange behaviour).Done (Roll limitation have been added)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Make a working ECM ...(Not yet....missiles has to be reworked first)&lt;br /&gt;
And more...&lt;br /&gt;
&lt;br /&gt;
== Thanks ==&lt;br /&gt;
'''Helijah''' (for the 3D), '''Buckaroo''' (for the FDM), '''5HIN0B1''' (for woorkiing weapons and systems)  '''Koubi''' (For engine script) , '''FG-TUX''' (for testing), '''Ray''' (for help on MFD), '''Anusil''' (For testing), '''F-Sig''', '''XIII''' (fr the initial missile script), '''the f16 team''' (For the Radar), HUd),  '''the CitationX''' team (for the middle MFD), All those who created all these 3D missiles that could be addeed to the missile script, '''Niko''' (For the wiki and the original ask for the project) , '''Thomas''' (for all these liveries) Gijs (for the wiki) and all those forgotten here.&lt;br /&gt;
'''Thanks to all.'''&lt;br /&gt;
&lt;br /&gt;
== External link ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Dassault_Mirage_2000 Dassault Mirage 2000] (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
{{Dassault}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Delta-wing aircraft]]&lt;br /&gt;
[[Category:Fighter aircraft]]&lt;br /&gt;
[[Category:Interceptor aircraft]]&lt;br /&gt;
[[Category:Single-engined jets]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5&amp;diff=81601</id>
		<title>Dassault Mirage 2000-5</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5&amp;diff=81601"/>
		<updated>2015-02-27T12:02:29Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: /* Changelog 2015-02 */  Just add a new feature on the 2015-02 change log.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infobox Aircraft&lt;br /&gt;
|image    	= M20005prespic.png&lt;br /&gt;
|name     	= Mirage 2000-5&lt;br /&gt;
|livery   	=  &lt;br /&gt;
|type     	= Combat and interception aircraft&lt;br /&gt;
|authors  	= Emmanuel Baranger (3D/FDM), Buckaroo (FDM), 5H1N0B1 (Weapons, Systems), F-Sig (3D, Systems)&lt;br /&gt;
|fdm      	= YASim&lt;br /&gt;
|fgname   	= m2000-5&lt;br /&gt;
|status-fdm	= 4&lt;br /&gt;
|status-systems	= 4&lt;br /&gt;
|status-cockpit	= 3&lt;br /&gt;
|status-model	= 4&lt;br /&gt;
|download 	= http://helijah.free.fr/flightgear/les-appareils/m2000/appareil.htm&lt;br /&gt;
}}&lt;br /&gt;
{{Distinguish|Dassault Mirage 2000}}&lt;br /&gt;
The '''Dassault Mirage 2000-5''' is a French multirole, single-engine fourth-generation jet fighter manufactured by Dassault Aviation. It was designed as a lightweight fighter based on the Mirage III in the late 1970s for the French Air Force (Armée de l'Air). The Mirage 2000 evolved into a multirole aircraft with several variants developed, with sales to a number of nations. The variants include the Mirage 2000N and 2000D strike variants, the improved Mirage 2000-5 and several export variants. Over 600 aircraft were built and it is in service in nine countries as of 2009.&lt;br /&gt;
&lt;br /&gt;
== Presentation Vidéo ==&lt;br /&gt;
Here is a video presentation video for the mirage 2000-5 with the last update.&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube | uAhXLSO1tt4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keyboard Controls ==&lt;br /&gt;
=== Flight Controls ===&lt;br /&gt;
{|&lt;br /&gt;
|{{key press|d}}&lt;br /&gt;
|Open/Close canopy&lt;br /&gt;
|-&lt;br /&gt;
|{{key press| e}}&lt;br /&gt;
|Fire guns/missiles&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|E}}&lt;br /&gt;
|Parachute (landing)&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|Pav Num}}&lt;br /&gt;
|Release the corresponding load (Not anymore on 08/2013 version)&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|0}}&lt;br /&gt;
|Jettison Tank&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|T}}&lt;br /&gt;
|Toggle ECM &amp;amp; RWR&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|t}}&lt;br /&gt;
|Change Radar Distances (10, 20 50, 100, 150)&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|R}}&lt;br /&gt;
|Activate/desactivate targeting the nearest in the HUD (the target has to be bellow radar range)&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|H}}&lt;br /&gt;
|Toggle Armements Circles&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|On/Off Reactor&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|l}}&lt;br /&gt;
|Flare out&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|n}}&lt;br /&gt;
|Next Target&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|Ctrl|N}}&lt;br /&gt;
|Previous Target&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|Ctrl|B}}&lt;br /&gt;
|Air Brake&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|w}}&lt;br /&gt;
|Cycle Stick Weapon Mode Selector&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Afterburners engage when throttle moves past 75%&lt;br /&gt;
&lt;br /&gt;
To fire a guided Missile, select A/A missile with &amp;quot;w&amp;quot;, activate &amp;quot;lock&amp;quot; with R, aim with the HUD and fire with &amp;quot;e&amp;quot;. Beware : it's a bad idea to fire a missile and have negative G...(Don't shoot yourself)&lt;br /&gt;
&lt;br /&gt;
==General characteristics==&lt;br /&gt;
* Crew: 1&lt;br /&gt;
* Length: 14.36 m (47 ft 1 in)&lt;br /&gt;
* Wingspan: 9.13 m (29 ft)&lt;br /&gt;
* Height: 5.20 m (17 ft)&lt;br /&gt;
* Wing area: 41 m² (441.3 ft²)&lt;br /&gt;
&lt;br /&gt;
==Weight==&lt;br /&gt;
* Empty weight: 7,500 kg (16,350 lb)&lt;br /&gt;
* Loaded weight: 13,800 kg (30,420 lb)&lt;br /&gt;
* Max. takeoff weight: 17,000 kg (37,500 lb)&lt;br /&gt;
&lt;br /&gt;
==Engine==&lt;br /&gt;
[[File:M2000-5 EICAS.png|thumb|The new EICAS, for engine mamagement]]&lt;br /&gt;
* Powerplant: 1 × SNECMA M53-P2 afterburning turbofan &lt;br /&gt;
* Dry thrust: 64.3 kN (14,500 lbf)&lt;br /&gt;
* Thrust with afterburner: 95.1 kN (21,400 lbf)&lt;br /&gt;
&lt;br /&gt;
==Performance==&lt;br /&gt;
* Maximum speed: Mach 2.2 (2,530+ km/h, 1,500+ mph) at high altitude/ 1,110 km/h (690 mph) at low altitude&lt;br /&gt;
* Range: 1,550 km (837 nmi, 963 mi) with drop tanks&lt;br /&gt;
* Ferry range: 3,335 km (1,800 nmi, 2,073 mi) with auxiliary fuel&lt;br /&gt;
* Service ceiling: 17,060 m (59,000 ft)&lt;br /&gt;
* Rate of climb: 285 m/s (56,000 ft/min)&lt;br /&gt;
* Wing loading: 337 kg/m² (69 lb/ft²)&lt;br /&gt;
* Thrust/weight: 0.91&lt;br /&gt;
* Roll Rate : 270 deg/sec &lt;br /&gt;
* G load : +9g / -3.2g (override mode : 11 g, structural limit 12 g), &lt;br /&gt;
&lt;br /&gt;
== Weapons ==&lt;br /&gt;
[[File:Mirage-2000-5weapons managment.png|thumb|Graphical weapon selection]]&lt;br /&gt;
&lt;br /&gt;
'''Guns:''' 2× 30 mm (1.18 in) DEFA 554 revolver cannon, 125 rounds per gun&lt;br /&gt;
&lt;br /&gt;
'''Missiles:'''&lt;br /&gt;
: '''Air-to-air missiles''': MBDA MICA IR/RF, Matra R550 Magic-II, Matra R530, AIM120 AMRAAM, AIM9 sidewinder, AIM-54 Phoenix, R74 Vympel (More to come)&lt;br /&gt;
: '''Air-to-surface missiles''': SCALP/APACHE missile (cruise missile Air to ground), Sea Eagle (cruise missile Air to sea), AGM65 Maverick, GBU16,GBU12&lt;br /&gt;
&lt;br /&gt;
'''To fire a guided Missile''' : &lt;br /&gt;
Select your missile on the graphical mfd, with the top button of the left series button.&amp;lt;br /&amp;gt;&lt;br /&gt;
Then, select your weapon mode with ''''w'''' (nothing, guns, missiles...)&amp;lt;br /&amp;gt;&lt;br /&gt;
Press ''''Shift - r'''' and activate the radar illumination. Acquire your target, and fire with ''''e'''' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Notes :''' Missile here are guided. There are lot a different missile, more than what the 2000-5 can carry. It's due to the missile's script, and its future adaption on other aircraft.&lt;br /&gt;
&lt;br /&gt;
== Refueling ==&lt;br /&gt;
[[File:M2000-5 Refueling.png|thumb|Air to Air refueling with an A330-MRTT]]&lt;br /&gt;
[[File:Refueling using RADAR TACAN.png|thumb|This how to refuel, using both TACAN and RADAR]]&lt;br /&gt;
Thanks to Fguk's team who worked on the A330-MRTT, the 2000-5 can refuel with it, as an AI, instead of the KA-6.&lt;br /&gt;
&lt;br /&gt;
When Flightgear gives you the TACAN, you can enter it in the MFD screen (watch the how to video), and then, use both radar and the tacan&lt;br /&gt;
&lt;br /&gt;
Only on mirage 2000-5 feature : in french air force, refuelling is always at 22 000 feets.&lt;br /&gt;
&lt;br /&gt;
== Radar and HUD ==&lt;br /&gt;
[[File:2000-5 new cockpit.png|thumb|More realistic cockpit of the 2000-5.]]&lt;br /&gt;
The Radar have 5 distances, (10, 20 50,100, 150) wich can be switched with {{key press|t}}. This radar can identify multiple spot and show their level (with only 2 digits)&lt;br /&gt;
The HUD show both potential target and actual target.&lt;br /&gt;
It also show if the gear are out, show the ground alt if this on is bellow 5 000 feets, and show mach only if spedd &amp;gt; mach 0.8&lt;br /&gt;
&lt;br /&gt;
== MFD &amp;amp; Navigation ==&lt;br /&gt;
Here is a video to explain how to navigate, use autopilot &amp;amp; MFD&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube | i9FXj03IDfs}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Developpement ==&lt;br /&gt;
=== Changelog 2015-02 ===&lt;br /&gt;
&lt;br /&gt;
3D : &lt;br /&gt;
*Several more instrument in the cockpit. The working ones are : startup instrument, light variator instruments.(The others, I'm still working on it)&lt;br /&gt;
*New gun explosion : more realistics&lt;br /&gt;
*New missiles explosion : more realistics&lt;br /&gt;
*New flames that take differents colors, depending of the sun position&lt;br /&gt;
*New light effect in the cockpit when using Rembrandt.&lt;br /&gt;
*New rule about each instruments lights effects&lt;br /&gt;
*Possibility to disable the pilot.&lt;br /&gt;
*Desactivate temporary the &amp;quot;non Rembrandt Shadow&amp;quot; that have big issue in MP (and do not allow a correct dogfight)&lt;br /&gt;
*New &amp;quot;Exhaust&amp;quot;&lt;br /&gt;
*Separated livery &amp;amp; logos (that allow differents HQ logos independently of the livery)&lt;br /&gt;
&lt;br /&gt;
Systems :&lt;br /&gt;
*Double center Mfd for the guys who want (or not) the canvas one. The older is now working lot more better.&lt;br /&gt;
*Working startup procedure&lt;br /&gt;
*Working cockpit light variator&lt;br /&gt;
*Utilisation of the &amp;lt;usage&amp;gt; tag&lt;br /&gt;
Weapons :&lt;br /&gt;
*Ground designation : This now possible to create a &amp;quot;ground target&amp;quot;, by clicking on the ground and then clicking at the &amp;quot;Create a Target&amp;quot; in &amp;quot;Mirage 2000 &amp;gt; Fast Config&amp;quot; menu.&lt;br /&gt;
&lt;br /&gt;
Nasal :&lt;br /&gt;
*Lot of improvement by using a centralised function lanch and update instead of setListener or multiple different loop. This should invisble to the user except that their FPS will stay high&lt;br /&gt;
*Loads are now visible over MP&lt;br /&gt;
&lt;br /&gt;
=== What was done on the precedent changelog 201308===&lt;br /&gt;
*A specific and clicable autopilot (see video)&lt;br /&gt;
*multi screen MFD&lt;br /&gt;
*Radio management on mfd&lt;br /&gt;
*An mfd EICAS&lt;br /&gt;
*Cockpit general graphics are improved.&lt;br /&gt;
*A weapons selection on mfd (wich make the numpad free)&lt;br /&gt;
*Better sound, missile script improved (Working aiming missiles)&lt;br /&gt;
*working alert panel&lt;br /&gt;
*a clock&lt;br /&gt;
And lot of other stuff not listed here...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Futures Objectives on the precedent changelog 201308===&lt;br /&gt;
*Add more clicable instruments&lt;br /&gt;
*Make the start procedure more realistic&lt;br /&gt;
*Complete the Alert Panel&lt;br /&gt;
*Make a better HUD -&amp;gt; Use canvas (To make multiple Hud, for example, draw a runway on the hUD while landing with low visibility...)&lt;br /&gt;
*Throttle stick,gear green/red light, Jettison all button&lt;br /&gt;
*Checklist&lt;br /&gt;
*Add some &amp;quot;ground&amp;quot; feature&lt;br /&gt;
*Improve the missile script&lt;br /&gt;
*Put sound on missiles&lt;br /&gt;
*Make the loads visibles in mp&lt;br /&gt;
*Make the RWR work&lt;br /&gt;
*Put Missiles on a generic folder&lt;br /&gt;
*increase visual on missiles&lt;br /&gt;
*Correct the radar issue due to the generic function radardist and multiplayer ATC&lt;br /&gt;
&lt;br /&gt;
*make high resolution liveries (But keep the old ones)&lt;br /&gt;
*Increase the FDM (correction of some strange behaviour)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Make a working ECM ...&lt;br /&gt;
And more...&lt;br /&gt;
&lt;br /&gt;
== Thanks ==&lt;br /&gt;
'''Helijah''' (for the 3D), '''Buckaroo''' (for the FDM), '''5HIN0B1''' (for woorkiing weapons and systems)  '''Koubi''' (For engine script) , '''FG-TUX''' (for testing), '''Ray''' (for help on MFD), '''Anusil''' (For testing), '''F-Sig''', '''XIII''' (fr the initial missile script), '''the f16 team''' (For the Radar), HUd),  '''the CitationX''' team (for the middle MFD), All those who created all these 3D missiles that could be addeed to the missile script, '''Niko''' (For the wiki and the original ask for the project) , '''Thomas''' (for all these liveries) Gijs (for the wiki) and all those forgotten here.&lt;br /&gt;
'''Thanks to all.'''&lt;br /&gt;
&lt;br /&gt;
== External link ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Dassault_Mirage_2000 Dassault Mirage 2000] (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
{{Dassault}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Delta-wing aircraft]]&lt;br /&gt;
[[Category:Fighter aircraft]]&lt;br /&gt;
[[Category:Interceptor aircraft]]&lt;br /&gt;
[[Category:Single-engined jets]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5&amp;diff=81121</id>
		<title>Dassault Mirage 2000-5</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5&amp;diff=81121"/>
		<updated>2015-02-18T12:53:33Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infobox Aircraft&lt;br /&gt;
|image    	= M20005prespic.png&lt;br /&gt;
|name     	= Mirage 2000-5&lt;br /&gt;
|livery   	=  &lt;br /&gt;
|type     	= Combat and interception aircraft&lt;br /&gt;
|authors  	= Emmanuel Baranger (3D/FDM), Buckaroo (FDM), 5H1N0B1 (Weapons, Systems), F-Sig (3D, Systems)&lt;br /&gt;
|fdm      	= YASim&lt;br /&gt;
|fgname   	= m2000-5&lt;br /&gt;
|status-fdm	= 4&lt;br /&gt;
|status-systems	= 4&lt;br /&gt;
|status-cockpit	= 3&lt;br /&gt;
|status-model	= 4&lt;br /&gt;
|download 	= http://helijah.free.fr/flightgear/les-appareils/m2000/appareil.htm&lt;br /&gt;
}}&lt;br /&gt;
{{Distinguish|Dassault Mirage 2000}}&lt;br /&gt;
The '''Dassault Mirage 2000-5''' is a French multirole, single-engine fourth-generation jet fighter manufactured by Dassault Aviation. It was designed as a lightweight fighter based on the Mirage III in the late 1970s for the French Air Force (Armée de l'Air). The Mirage 2000 evolved into a multirole aircraft with several variants developed, with sales to a number of nations. The variants include the Mirage 2000N and 2000D strike variants, the improved Mirage 2000-5 and several export variants. Over 600 aircraft were built and it is in service in nine countries as of 2009.&lt;br /&gt;
&lt;br /&gt;
== Presentation Vidéo ==&lt;br /&gt;
Here is a video presentation video for the mirage 2000-5 with the last update.&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube | uAhXLSO1tt4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keyboard Controls ==&lt;br /&gt;
=== Flight Controls ===&lt;br /&gt;
{|&lt;br /&gt;
|{{key press|d}}&lt;br /&gt;
|Open/Close canopy&lt;br /&gt;
|-&lt;br /&gt;
|{{key press| e}}&lt;br /&gt;
|Fire guns/missiles&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|E}}&lt;br /&gt;
|Parachute (landing)&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|Pav Num}}&lt;br /&gt;
|Release the corresponding load (Not anymore on 08/2013 version)&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|0}}&lt;br /&gt;
|Jettison Tank&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|T}}&lt;br /&gt;
|Toggle ECM &amp;amp; RWR&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|t}}&lt;br /&gt;
|Change Radar Distances (10, 20 50, 100, 150)&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|R}}&lt;br /&gt;
|Activate/desactivate targeting the nearest in the HUD (the target has to be bellow radar range)&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|H}}&lt;br /&gt;
|Toggle Armements Circles&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|On/Off Reactor&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|l}}&lt;br /&gt;
|Flare out&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|n}}&lt;br /&gt;
|Next Target&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|Ctrl|N}}&lt;br /&gt;
|Previous Target&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|Ctrl|B}}&lt;br /&gt;
|Air Brake&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|w}}&lt;br /&gt;
|Cycle Stick Weapon Mode Selector&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Afterburners engage when throttle moves past 75%&lt;br /&gt;
&lt;br /&gt;
To fire a guided Missile, select A/A missile with &amp;quot;w&amp;quot;, activate &amp;quot;lock&amp;quot; with R, aim with the HUD and fire with &amp;quot;e&amp;quot;. Beware : it's a bad idea to fire a missile and have negative G...(Don't shoot yourself)&lt;br /&gt;
&lt;br /&gt;
==General characteristics==&lt;br /&gt;
* Crew: 1&lt;br /&gt;
* Length: 14.36 m (47 ft 1 in)&lt;br /&gt;
* Wingspan: 9.13 m (29 ft)&lt;br /&gt;
* Height: 5.20 m (17 ft)&lt;br /&gt;
* Wing area: 41 m² (441.3 ft²)&lt;br /&gt;
&lt;br /&gt;
==Weight==&lt;br /&gt;
* Empty weight: 7,500 kg (16,350 lb)&lt;br /&gt;
* Loaded weight: 13,800 kg (30,420 lb)&lt;br /&gt;
* Max. takeoff weight: 17,000 kg (37,500 lb)&lt;br /&gt;
&lt;br /&gt;
==Engine==&lt;br /&gt;
[[File:M2000-5 EICAS.png|thumb|The new EICAS, for engine mamagement]]&lt;br /&gt;
* Powerplant: 1 × SNECMA M53-P2 afterburning turbofan &lt;br /&gt;
* Dry thrust: 64.3 kN (14,500 lbf)&lt;br /&gt;
* Thrust with afterburner: 95.1 kN (21,400 lbf)&lt;br /&gt;
&lt;br /&gt;
==Performance==&lt;br /&gt;
* Maximum speed: Mach 2.2 (2,530+ km/h, 1,500+ mph) at high altitude/ 1,110 km/h (690 mph) at low altitude&lt;br /&gt;
* Range: 1,550 km (837 nmi, 963 mi) with drop tanks&lt;br /&gt;
* Ferry range: 3,335 km (1,800 nmi, 2,073 mi) with auxiliary fuel&lt;br /&gt;
* Service ceiling: 17,060 m (59,000 ft)&lt;br /&gt;
* Rate of climb: 285 m/s (56,000 ft/min)&lt;br /&gt;
* Wing loading: 337 kg/m² (69 lb/ft²)&lt;br /&gt;
* Thrust/weight: 0.91&lt;br /&gt;
* Roll Rate : 270 deg/sec &lt;br /&gt;
* G load : +9g / -3.2g (override mode : 11 g, structural limit 12 g), &lt;br /&gt;
&lt;br /&gt;
== Weapons ==&lt;br /&gt;
[[File:Mirage-2000-5weapons managment.png|thumb|Graphical weapon selection]]&lt;br /&gt;
&lt;br /&gt;
'''Guns:''' 2× 30 mm (1.18 in) DEFA 554 revolver cannon, 125 rounds per gun&lt;br /&gt;
&lt;br /&gt;
'''Missiles:'''&lt;br /&gt;
: '''Air-to-air missiles''': MBDA MICA IR/RF, Matra R550 Magic-II, Matra R530, AIM120 AMRAAM, AIM9 sidewinder, AIM-54 Phoenix, R74 Vympel (More to come)&lt;br /&gt;
: '''Air-to-surface missiles''': SCALP/APACHE missile (cruise missile Air to ground), Sea Eagle (cruise missile Air to sea), AGM65 Maverick, GBU16,GBU12&lt;br /&gt;
&lt;br /&gt;
'''To fire a guided Missile''' : &lt;br /&gt;
Select your missile on the graphical mfd, with the top button of the left series button.&amp;lt;br /&amp;gt;&lt;br /&gt;
Then, select your weapon mode with ''''w'''' (nothing, guns, missiles...)&amp;lt;br /&amp;gt;&lt;br /&gt;
Press ''''Shift - r'''' and activate the radar illumination. Acquire your target, and fire with ''''e'''' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Notes :''' Missile here are guided. There are lot a different missile, more than what the 2000-5 can carry. It's due to the missile's script, and its future adaption on other aircraft.&lt;br /&gt;
&lt;br /&gt;
== Refueling ==&lt;br /&gt;
[[File:M2000-5 Refueling.png|thumb|Air to Air refueling with an A330-MRTT]]&lt;br /&gt;
[[File:Refueling using RADAR TACAN.png|thumb|This how to refuel, using both TACAN and RADAR]]&lt;br /&gt;
Thanks to Fguk's team who worked on the A330-MRTT, the 2000-5 can refuel with it, as an AI, instead of the KA-6.&lt;br /&gt;
&lt;br /&gt;
When Flightgear gives you the TACAN, you can enter it in the MFD screen (watch the how to video), and then, use both radar and the tacan&lt;br /&gt;
&lt;br /&gt;
Only on mirage 2000-5 feature : in french air force, refuelling is always at 22 000 feets.&lt;br /&gt;
&lt;br /&gt;
== Radar and HUD ==&lt;br /&gt;
[[File:2000-5 new cockpit.png|thumb|More realistic cockpit of the 2000-5.]]&lt;br /&gt;
The Radar have 5 distances, (10, 20 50,100, 150) wich can be switched with {{key press|t}}. This radar can identify multiple spot and show their level (with only 2 digits)&lt;br /&gt;
The HUD show both potential target and actual target.&lt;br /&gt;
It also show if the gear are out, show the ground alt if this on is bellow 5 000 feets, and show mach only if spedd &amp;gt; mach 0.8&lt;br /&gt;
&lt;br /&gt;
== MFD &amp;amp; Navigation ==&lt;br /&gt;
Here is a video to explain how to navigate, use autopilot &amp;amp; MFD&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube | i9FXj03IDfs}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Developpement ==&lt;br /&gt;
=== Changelog 2015-02 ===&lt;br /&gt;
&lt;br /&gt;
3D : &lt;br /&gt;
*Several more instrument in the cockpit. The working ones are : startup instrument, light variator instruments.(The others, I'm still working on it)&lt;br /&gt;
*New gun explosion : more realistics&lt;br /&gt;
*New missiles explosion : more realistics&lt;br /&gt;
*New flames that take differents colors, depending of the sun position&lt;br /&gt;
*New light effect in the cockpit when using Rembrandt.&lt;br /&gt;
*New rule about each instruments lights effects&lt;br /&gt;
*Possibility to disable the pilot.&lt;br /&gt;
*Desactivate temporary the &amp;quot;non Rembrandt Shadow&amp;quot; that have big issue in MP (and do not allow a correct dogfight)&lt;br /&gt;
*New &amp;quot;Exhaust&amp;quot;&lt;br /&gt;
*Sperated livery &amp;amp; logos (that allow differents HQ logos independently of the livery)&lt;br /&gt;
&lt;br /&gt;
Systems :&lt;br /&gt;
*Double center Mfd for the guys who want (or not) the canvas one. The older is now working lot more better.&lt;br /&gt;
*Working startup procedure&lt;br /&gt;
*Working cockpit light variator&lt;br /&gt;
*Utilisation of the &amp;lt;usage&amp;gt; tag&lt;br /&gt;
Weapons :&lt;br /&gt;
*Ground designation : This now possible to create a &amp;quot;ground target&amp;quot;, by clicking on the ground and then clicking at the &amp;quot;Create a Target&amp;quot; in &amp;quot;Mirage 2000 &amp;gt; Fast Config&amp;quot; menu.&lt;br /&gt;
&lt;br /&gt;
Nasal :&lt;br /&gt;
*Lot of improvement by using a centralised function lanch and update instead of setListener or multiple different loop. This should invisble to the user except that their FPS will stay high&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What was done on the precedent changelog 201308===&lt;br /&gt;
*A specific and clicable autopilot (see video)&lt;br /&gt;
*multi screen MFD&lt;br /&gt;
*Radio management on mfd&lt;br /&gt;
*An mfd EICAS&lt;br /&gt;
*Cockpit general graphics are improved.&lt;br /&gt;
*A weapons selection on mfd (wich make the numpad free)&lt;br /&gt;
*Better sound, missile script improved (Working aiming missiles)&lt;br /&gt;
*working alert panel&lt;br /&gt;
*a clock&lt;br /&gt;
And lot of other stuff not listed here...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Futures Objectives on the precedent changelog 201308===&lt;br /&gt;
*Add more clicable instruments&lt;br /&gt;
*Make the start procedure more realistic&lt;br /&gt;
*Complete the Alert Panel&lt;br /&gt;
*Make a better HUD -&amp;gt; Use canvas (To make multiple Hud, for example, draw a runway on the hUD while landing with low visibility...)&lt;br /&gt;
*Throttle stick,gear green/red light, Jettison all button&lt;br /&gt;
*Checklist&lt;br /&gt;
*Add some &amp;quot;ground&amp;quot; feature&lt;br /&gt;
*Improve the missile script&lt;br /&gt;
*Put sound on missiles&lt;br /&gt;
*Make the loads visibles in mp&lt;br /&gt;
*Make the RWR work&lt;br /&gt;
*Put Missiles on a generic folder&lt;br /&gt;
*increase visual on missiles&lt;br /&gt;
*Correct the radar issue due to the generic function radardist and multiplayer ATC&lt;br /&gt;
&lt;br /&gt;
*make high resolution liveries (But keep the old ones)&lt;br /&gt;
*Increase the FDM (correction of some strange behaviour)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Make a working ECM ...&lt;br /&gt;
And more...&lt;br /&gt;
&lt;br /&gt;
== Thanks ==&lt;br /&gt;
'''Helijah''' (for the 3D), '''Buckaroo''' (for the FDM), '''5HIN0B1''' (for woorkiing weapons and systems)  '''Koubi''' (For engine script) , '''FG-TUX''' (for testing), '''Ray''' (for help on MFD), '''Anusil''' (For testing), '''F-Sig''', '''XIII''' (fr the initial missile script), '''the f16 team''' (For the Radar), HUd),  '''the CitationX''' team (for the middle MFD), All those who created all these 3D missiles that could be addeed to the missile script, '''Niko''' (For the wiki and the original ask for the project) , '''Thomas''' (for all these liveries) Gijs (for the wiki) and all those forgotten here.&lt;br /&gt;
'''Thanks to all.'''&lt;br /&gt;
&lt;br /&gt;
== External link ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Dassault_Mirage_2000 Dassault Mirage 2000] (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
{{Dassault}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Delta-wing aircraft]]&lt;br /&gt;
[[Category:Fighter aircraft]]&lt;br /&gt;
[[Category:Interceptor aircraft]]&lt;br /&gt;
[[Category:Single-engined jets]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Talk:Scripted_AI_Objects&amp;diff=77656</id>
		<title>Talk:Scripted AI Objects</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Talk:Scripted_AI_Objects&amp;diff=77656"/>
		<updated>2014-11-05T09:45:02Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Target / Source handling ==&lt;br /&gt;
&lt;br /&gt;
As Hooray said, this is the talk started here : http://wiki.flightgear.org/User_talk:Red_Leader&lt;br /&gt;
We agree on the general way of doing it, and the goal we want.&lt;br /&gt;
&lt;br /&gt;
For now, the script use 2 objects :&lt;br /&gt;
# the missile itself&lt;br /&gt;
# A &amp;quot;target&amp;quot; object which is an object with all variable available on the target aircraft/ship whatever...&lt;br /&gt;
The aircraft very specific variables are those used to setup the inital position of the missile : You give a pylon number and the script go look threw your aircraft to geo positionning the missile object and make it fire.( and the missile type...)&lt;br /&gt;
&lt;br /&gt;
Instead of using this :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var DestinationOfFiring = Target.new(whatever);&lt;br /&gt;
var missile = Missile.new(pylon, DestinationOfFiring ); &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
a very, very simple way of doing it could be just feed the missile with 2 object and have someting like that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
 var SourceOfFiring = geo.Coord.new(whatever);&lt;br /&gt;
 var DestinationOfFiring = geo.Coord.new(whatever);&lt;br /&gt;
 var myMissile = new missile(origin:SourceOfFiring , target:DestinationOfFiring, type:missileType);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a quick way of doing the job. Perhaps the &amp;quot;Target&amp;quot; object needs to be completed, with &amp;quot;pylon number&amp;quot; or &amp;quot;pylon position&amp;quot; (and it also could be renamed). This will allow the script to be independant of any aircraft.&lt;br /&gt;
&lt;br /&gt;
== Using geo.Coord objects for dealing with source/targets ==&lt;br /&gt;
&lt;br /&gt;
:: a target really is really just representing a position with lat/lon/alt - thus, it would make sense to simply use the existing geo.nas helpers here (geo.Coord) - if you need additional data, you can just sub-class geo.Coord to add your own fields - we are using this method in the MapStructre/TFC (traffic) layer. So I wouldn't make this more complicated than necessary. Obviously, targets/positions may be dynamic/changing, but that can also be realized using a geo.Coord sub-class, or a helper class with a geo.Coord member. Equally, missileType should probably just be another hash with a well-defined set of interfaces/methods. Overall, a simple MVC separation would definitely make sense here, which would allow you to have a custom 3D model, add animations to it, while having a plug&amp;amp;play FDM for different purposes. --[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 16:52, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
This is not only a quick way of doing it, this also something that can allow multiplayer firing : If (imagine a checkbox) the &amp;quot;MP firing property&amp;quot; is activated, it could reproduce a &amp;quot;AI model&amp;quot; on both side : On the SourceOfFiring's computer, but also a second &amp;quot;AI model&amp;quot; in the DestinationOfFiring's computer...(this a way of doing it...)&lt;br /&gt;
&lt;br /&gt;
== Coding/collaboration == &lt;br /&gt;
One thing we need to consider is how we coordinate code, i.e. use of version control etc..  [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 12:59, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Coordination-wise, you should consider refactoring the existing code into separate modules/files and classes that can be independently maintained without requiring a ton of communication-obviously, being able to use git/gitorious would still help. --[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 16:00, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: We've had a number of users on the forum interested in these things, especially the FGUK guys would probably love to be involved in this. If you keep maintaining this article, I'll send heads-up to others who might be interested in this - even if just to provide feedback and advice. A few weeks ago, I talked with Algernon about these kinds of features so the FGUK guys should be all game - and a few others recently posted MapStructure/Canvas screen shots showing Combat-related developments[http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=23299&amp;amp;p=213180&amp;amp;hilit=revhardt#p212557].--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 16:00, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: The more the better, Hooray.  : [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 12:59, 28 October 2014 (UTC)&lt;br /&gt;
== Missile FDM  ==&lt;br /&gt;
And then once this is done, we could work later on a real FDM for the missile and what so ever.&lt;br /&gt;
(Anyways, just my 2 cents opinion...)&lt;br /&gt;
—[[User:5H1N0B1|5H1N0B1]] ([[User_talk:5H1N0B1|Talk]] | [[Special:Contributions/5H1N0B1|contribs]]) 14:08, 27 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Hi 5H1N0B1. Sorry I've not been able to get back to you sooner.  Your suggestion seems quite good.  [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 12:59, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
== MP Support ==&lt;br /&gt;
Also, having MP firing would be a great feature.  [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 12:59, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: For MP support, you'll want to use an intermediate class that uses the mp_broadcast.nas script to set up a comm channel for events (see bombable). --[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 16:00, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Specs and  Requirements ==&lt;br /&gt;
I think that we should also write down stuff that would be configurable on the missile (i.e. size and weight, but also seeker and guidance type).  A while ago, I found a PDF that I think will be very useful http://cdn.preterhuman.net/texts/terrorism_and_pyrotechnics/rocketry/Missiles_and_Warheads/Missile%20Guidance%20&amp;amp;%20Control%20Systems.pdf. &lt;br /&gt;
: [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 12:59, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: I think what we should do first is to put down stuff that affects the missiles specs, such as guidance types, seeker type, etc., then split these into categories, such as FDM, Seeker, etc., and work from there.&lt;br /&gt;
: [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 16:52, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: I've looked at the fox2.nas file and all those missile specs there are usually based on defaults provided by the aircraft-set.xml file - thus, I've extracted those portions to a separate XML file and using io.read_properties() to read in specs in an xml-configurable way. All those values will end up in a key/value map (hash), so can be easily accessed. For now, it's just a stub, but I'll probably generalize this a little more and move it to some sub-class, so that we can reuse the same mechanism for other missile. The commit can be seen at [https://gitorious.org/fg/hoorays-fgdata/commit/8f52be90eb615a29e16b9ed6b5d19f7c42ac503b].--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 13:05, 2 November 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Generalizing the existing code ==&lt;br /&gt;
&lt;br /&gt;
:: You'll find that most of these requirements will basically evolve automatically once you start refactoring the existing code into separate classes and files, while still supporting additional aircraft/use-cases. That is basically what we did with Gijs' [[NavDisplay]] code - and it can now be used on arbitrary aircraft, while also supporting an arbitrary number of instances per aircraft. We are even supporting an &amp;quot;AI aircraft&amp;quot; mode-which means that you can get a ND view for an arbitrary AI aircraft (including even AI nodes like a Bombable bot or AI missile). To make things sufficiently flexible and configurable we're using &amp;quot;behavior hashes&amp;quot; that can override default behavior (fields/methods). With efforts like these, over-engineering is a very real danger - it will probably get you farther to just refactor the existing code and incrementally make it support additional use-cases/aircraft, and extend the code over time. Currently, the main issue still is that the module is aircraft specific-once this restriction is removed, you'll see other aircraft developers join the effort over time, especially those without any stakes in the m2000-5, but still interested in combat feature.--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 17:04, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
I think that we should instead call this the &amp;quot;AI guided weapons system&amp;quot; or &amp;quot;AI guided munitions.&amp;quot;  After all, we aren't just talking about missile, we're also talking about guided bombs.  The same system can and should be used for both.  That's what I think anyway.&lt;br /&gt;
[[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 19:56, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Functional separation into guidance, autopilot and FDM ==&lt;br /&gt;
&lt;br /&gt;
: From a functional standpoint, I would suggest to look at the way FlightGear's subsystems are divided into distinct components and then simply model this code accordingly by introducing helper classes for components like 1) the FDM, 2) the autopilot, 3) the &amp;quot;route managerh&amp;quot;. That way, a guidance system would simply implement the route manager system's interface. As I stated elsewhere, it would make a lot of sense to maintain parity with the property tree-level FDM/AP and RM systems. Primarily, this will ensure consistency - secondly, it will ensure that future updates would provide a sane migration path, i.e. for using C++ level hooks that are currently not exposed to scripting space - we do have a number of contributors who tinkered with supporting multiple instances of the FDM/AP and RM subsystems - in fact, the AP system already supports multiple instances (see the property-rules system). And multiple FDM instances can also be supported for JSBSim FDMs - the route manager (RM) seems to be not sufficiently generic, but Durk and Zakalawe have repeatedly stated being interested in generalizing this part, too[http://forum.flightgear.org/viewtopic.php?p=134970#p134970]. Which basically means that there will be less repetitive/integration work necessary if/once those changes should materialize at some point. Thus, it would be a good idea not to re-invent the wheel entirely in scripting space - there's useful existing C++ code for these things (FDM, AP, RM), and exposing things to scripting space using [[Nasal/CppBind]] also has never been so easy. The other benefit is obviously that people will intuitively know how to deal with scripted AI objects because the property tree interfaces would be closely modeled after existing conventions.--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 13:36, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Hi Hooray.  Thanks for the suggestions.  I think that, for now, we'll concentrate on keeping it in Nasal.  At a later stage, we could look at implementing parts of the system in other parts of FG.&lt;br /&gt;
:: [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 16:34, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
right, but you misunderstood - I wasn't suggesting to move this out of Nasal anytime soon, but to just keep the design sufficiently generic so that components can be replaced at a later time, no matter if that involves other Nasal modules or really existing C++ code. The main problems that flug, xiii and others had when implementing these features was working around hard-coded design restrictions-those can be entirely prevented once a modular design is used like the one discussed above - without making things any more difficult. In fact, separation of concerns will be greatly simplified-and it does make sense to treat any entity like an airborne vehicle with a fdm, autopilot and route manager/guidance system. All this can be done entirely in scripting space using Nasal. The key is just the layered design using the property tree for I/O between systems--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 16:42, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: OK, so the way I understand it is that the code should generic enough so that, for example, in the future YASim supports multiple instances, we could take out the Nasal FDM and instead translate the missile through the sky according to properties generated by a YASim instance.&lt;br /&gt;
: [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 17:01, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: correct, but this is not specific to FDMs - all the autopilot/routing logic that people tend to reinvent in Nasal is significantly overlapping with existing, generic, C++ subsystems that are currently not yet exposed to Nasal. Thus, the main thing is using properties analogous to the actual C++ subsystems for interacting with the FDM/AP and RM components, which will ensure that a reusable and generic design is established, while preparing it for future updates. Otherwise, there will be more and more Nasal code doing what the C++ code is known to be very good at already.--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 18:00, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: I've taken your code and refactored it to add stubs for separating things like FDM, guidance and autopilot - I've also added a self-test routine that I am hoping to extend over time - it should be self-contained, i.e. not rely on any aircraft/scenery. But it would seem to make sense to also move away from the static model_path and instead introduce a ModelMgr class so that multiple models per stage can be easily supported according to the missile.nas discussion above. This class could then also manage effects/animations and so on. You will find my changes in the &amp;quot;scripted-ai-submodels' branch. HTH--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 00:02, 31 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Extending geo.Coord using sub-classing ==&lt;br /&gt;
A suggestion that I have is to expand geo.Coord to hold orientation values.  That would mean we could handle target and have their lat/lon/alt/pitch/roll/heading at our fingertips.&lt;br /&gt;
[[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 17:03, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: like I said, this is trivial to do using sub-classing, so need to touch geo.nas at all - just create your own geo.Coord sub-class and add helpers for getting the corresponding properties via props.nas --[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 17:55, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
PS Hooary, how do you sub-class an existing Nasal class?&lt;br /&gt;
[[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 20:15, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: No special syntax/techniques involved - it just involves adding fields/methods to the new object, either directly - or via inheritance (the parents vector). I've added stubs to Philosopher's OO article at: http://wiki.flightgear.org/Object_Oriented_Programming_with_Nasal#Sub-Classing --[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 21:00, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
Hi guys, you just go really too fast for me but I really like the way it goes. Seems to be clear code and could be really generic.&lt;br /&gt;
I'll try to contribute a little but time, sadly is missing here !&lt;br /&gt;
—[[User:5H1N0B1|5H1N0B1]] ([[User_talk:5H1N0B1|Talk]] | [[Special:Contributions/5H1N0B1|contribs]]) 22:02, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Things to keep in mind ==&lt;br /&gt;
Few things, just to be sure, and to remember :&lt;br /&gt;
* a) The missiles object have to be loaded/created only once the fire order have been triggered.&lt;br /&gt;
* b) The missile have 3 or 4 states : 1) Ignition (very high acceleration + special 3D light), 2) &amp;quot;Cruise&amp;quot;/fuse mode, with propulsion, 3) last part of the flight, no more fuel, using kinetic energy nad 4) explosion part. The flight behavior is different for each of the state, we must not forget that in the future ai fdm. (The biggest change is for thurst vectoring missiles)&lt;br /&gt;
The 4 state have been scripted both in fox2 &amp;amp; missile. They also use 3 differents 3D object each time. (Ignition don't have special model)&lt;br /&gt;
The explosion part could be separeted from the missile object itself and be generic, as the smoke part.&lt;br /&gt;
* c) We will have trajectory calculation. We must understand that time is a frame time. At high speed, and low fps, large distance could be traveled, and this must not affect missile/object behavior.&lt;br /&gt;
* d) Just a request for the future : I saw lot of calculation in flightgear, and we will have a lot here. Could we, please for once, directly code/calculate in SI units...&lt;br /&gt;
* e) What do you think about unguided/unpropelled munition. Actually this use the submodels system. Couldn't we add them here ? This would greatly simplify weapon system.&lt;br /&gt;
* f) In the fdm part we have to not forget : &amp;quot;Parachute&amp;quot; bomb, but also missiles that launch itself &amp;quot;sub bomb&amp;quot; like fragmentation or Apache anty runway missile. I'm not syaing we have to code that, but perhaps code in a way we could include that after.&lt;br /&gt;
* g) Anyways the code you wrotten here is very clear, and my remarks earlier concerns futur developppement.&lt;br /&gt;
—[[User:5H1N0B1|5H1N0B1]] ([[User_talk:5H1N0B1|Talk]] | [[Special:Contributions/5H1N0B1|contribs]]) 16:26, 30 October 2014 (UTC)&lt;br /&gt;
[[User:5H1N0B1|Every day, from everything and everybody, there is a truth to learn]] ([[User talk:5H1N0B1|talk]]) 15:29, 30 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: To me, this sounds all very do-able - but obviously, it is a matter of priorities in terms of manpower and time that can be dedicated to this - most of us have many other areas/projects that we're juggling already. Thus, to state my own priorities, and to clarify where I'd be interested in helping:&lt;br /&gt;
:* I'd like to help extend the posted code such that tanker.nas and existing missile systems can be implemented using this code&lt;br /&gt;
:* Specifically, I would like to support a handful of different aircraft/use-cases, including other missiles, and at some point hopefully also other types of &amp;quot;payloads&amp;quot;&lt;br /&gt;
:* Primarily, I am interested in refactoring existing code to generalize the underlying concepts and to come up with an OO framework, where all the generic code lives in shared directory, instead of being copied&amp;amp;pasted into various places under $FG_AIRCRAFT&lt;br /&gt;
:* I might also be able to hook this up to galvedro's failure management code, so that missiles or aircraft systems may suffer failures and respond properly&lt;br /&gt;
:* in the really long-term, I'd also like to see flug's code reviewed and generalized accordingly, so that we can come up with a library/module for controlling AI objects in scripted fashion - without being specific to combat/missile use.&lt;br /&gt;
:* I am personally not opposed to any combat functionality in FG, but I do understand that this is a controversial topic-thus, I'd prefer to come up with generic building blocks that are not specific to combat use only - e.g. by having a &amp;quot;uav&amp;quot; framework instead of a drone/missile framework.&lt;br /&gt;
:* Structurally, I would suggest to come up with a new Nasal submodule under $FG_ROOT/Nasal/ai and add our ai.nas and missile.nas files there so that they can be independently developed, while being strictly optional&lt;br /&gt;
:* specific instances I would like to instantiate explicitly by using io.include(), analogous to the failure management framework or MapStructure&lt;br /&gt;
:* I do believe that it is very important to separate all components properly and to establish the property tree as the sole interfacing mechanism between guidance/autopilot and FDM-I am thinking in terms of having *.guidance, *.autopilot and *.fdm files that contain Nasal sub-classes implementing the corresponding lower-level interfaces (base classes)&lt;br /&gt;
:* that way, aircraft developers may not necessarily have to touch any *.nas files but just work with a certain subset of Nasal, analogous to MapStructure implementation files&lt;br /&gt;
:* I think there's really just 8-12 main base classes missing that can probably be prototyped by looking at existing use-cases (tanker.nas, fox2.nas. missile.nas) - once the code is sufficiently generic, I would hope to port those files to make them use the new framework, and then get aircraft developers involved to update their work accordingly.&lt;br /&gt;
: --[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 17:02, 30 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: @5H1N0B1: About point d): I think the reason for not using the SI-system is that most formulas are laid out in the {{wikipedia|Foot–pound–second system#Pound-force as force unit|gravitational Foot–pound–second system}} in US aeronautical engineering textbooks (which are often used internationally in higher education and sometimes also are freely available).&lt;br /&gt;
:: —[[User:Johan G|Johan G]] ([[User_talk:Johan_G|Talk]] | [[Special:Contributions/Johan_G|contribs]]) 19:44, 30 October 2014 (UTC)&lt;br /&gt;
  &lt;br /&gt;
Actually fox2.nas and missile.nas convert Imperial unit in SI unit, do the calculation in SI, and reconvert it in Imperial unit. (seriously gravity in foot-pound-second...o_O' ?)&lt;br /&gt;
Another thing : About bombable. I tried to install it once on missile.nas : I discoverd that the bombable variable is already implemented since fox2.nas, and after testing I rememeber shooting bombable C172 invation with missiles... So if bombable still use the same system it could be easy to keep the fox2 orignal implementation. I never tested it with bombable and multiplayer...&lt;br /&gt;
—[[User:5H1N0B1|5H1N0B1]] ([[User_talk:5H1N0B1|Talk]] | [[Special:Contributions/5H1N0B1|contribs]]) 14:46, 31 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Article renaming/focus ==&lt;br /&gt;
: @5H1N0B1: About point e: I think that unguided munitions should be simulated as [[Howto:Add_submodels|submodels]], but unguided weapons (such as the {{Wikipedia|GBU-24_Paveway_III|GBU-24}}) can be simulated using this new system.  Because of this, I think that this project should be renamed &amp;quot;AI guided weapons,&amp;quot; or something like that.&lt;br /&gt;
: [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 17:38, 31 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:: I don't mind this project/article being renamed - it originally started out with the missile code obviously - and that's what the original contributors were interested in, which is why I chose this name. The question is if we have enough manpower to make this sufficiently generic. I am not concerned about being too broad/generic - in fact, like I said already, it would make sense to not make things highly combat-specific: Under the hood, we first of all need an API for scriptable AI objects. The next iteration would be about script-able airborne objects, from which missiles/bombs might be inherited. In general, it helps to keep different use-cases in mind, i.e. to broaden the pool of potential contributors, which also includes UAV folks, and those not interested in combat. For these reasons, I would probably favor &amp;quot;Scripted AI Objects&amp;quot; over &amp;quot;AI guided weapons&amp;quot;. The point to bring across here is that functionality will be mostly scripted - the AI system may be used internally, but most of it remains unused/disabled. Also, the odds of getting this reviewed and committed are much better if it's not too specific to a highly-narrow niche that has no application outside a controversial area like combat support in FG. I would very much like to see this developed further - but without being specific to a single aircraft/missile or weapons system - I am primarily interested in the framework side of this, i.e. refactoring, improving code reuse and so on, and would love to see non-combat efforts also being able to use the same modules (which seems doable).--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 19:34, 31 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Modified tanker.nas version using ai.nas ==&lt;br /&gt;
&lt;br /&gt;
Like I said, before you told me you were interested in exploring this, I already started some work related to this - I'd suggest you wait until I have committed those changes so that you can take a look - it's mainly structural stuff ensuring that the existing GUI dialog can be used to instantiate a new tanker using ai.nas - everything else is &amp;quot;as is&amp;quot; and still needs to be adapted, but I thought this could help lower the barrier to entry. It's up to you obviously to decide if you want to use or discard those changes. --[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 17:19, 2 November 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
Ok, I've committed those additions[https://gitorious.org/fg/hoorays-fgdata/commit/c61effba1a8e0f80b4acf5c48de8c19d94218fbc] - it isn't yet using ai.nas though, it's just a slightly modified version of tanker.nas that is loaded into a different namespace, and integrated via the tanker.xml GUI dialog, so that the actual file doesn't need to be modified. We can now easily replace existing functionality without there being any chance to break anything. Even though reset/re-init handling may still need some work/tweaking, because I haven't reviewed tanker.nas for any hard-coded namespace references yet.--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 18:14, 2 November 2014 (even though it might make sense to UTC)&lt;br /&gt;
&lt;br /&gt;
I've looked at the Tanker class in tanker.nas and it would seem pretty straightforward to use your ai.Obj class there, so depending on you getting git/gitorious access shortly, I can also prototype the whole thing in the meantime. It would definitely be a good thing to grow a library of tests, including not just scripts for testing the missile functionality, but also ai.Obj itself - and under the hood, aircraft functionality is going to be crucial either way. Once tanker.nas is ported, we could also adapt the code to add an f14 aircraft that can actually fire the new missiles to exercise the code without relying on a particular aircraft/location setup. Thus, I'd suggest the following priorities:&lt;br /&gt;
* review tanker.nas and port the Tanker class&lt;br /&gt;
* review bombable.nas and other use-cases to help generalize the new ai/missile.nas modules&lt;br /&gt;
* look at the guidance/autopilot logic and come up with corresponding base classes&lt;br /&gt;
--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 19:36, 2 November 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
== missile.nas feedback ==&lt;br /&gt;
&lt;br /&gt;
I've started refactoring some of its code to implement the FDM base class - so here's some initial feedback. The main things preventing us from using the file/class &amp;quot;as is&amp;quot; are:&lt;br /&gt;
* there's the hard-coded assumptions that missiles are started by the main aircraft, i.e. no support for AI aircraft firing missiles &lt;br /&gt;
* mainly, this requires any uses of hard-coded properties referring to /orientation /position and /velocities - especially the release() and update() methods to be generalized&lt;br /&gt;
* missile specs management is unnecessarily verbose, and not yet entirely generic - simply because of the way specs are loaded - it would be much easier to simply use a hash for configuring each missile, instead of having the hack in Loading_Missiles.nas[https://gitorious.org/fg/fgdata/source/cac8cc4ed2a52b075f72b3e300843599335d40a7:Aircraft/Mirage-2000/Missiles/Loading_Missiles.nas]&lt;br /&gt;
* 3-4 methods are much too big - i.e. need to be decoupled and refactored, especially to separate the FDM vs. guidance logic and the proximity detection stuff&lt;br /&gt;
* making the code use ai.nas in its original form would be straightforward, but establishing the component separation is more work, and is currently preventing the code from being easily reused elsewhere&lt;br /&gt;
* also, as is usually the case whenever complex Nasal code is involved, state management is not encapsulated at all, and done in a pretty roundabout fashion using lots of nested conditionals, i.e. no generic mechanism (state machine) in place&lt;br /&gt;
* overall, missile.nas remains the best option for coming up with a generic framework, but there's quite some refactoring work to do still&lt;br /&gt;
* how to proceed from here depends on who's willing to collaborate - otherwise, I may simply rewrite large portions of it, which would obviously take longer than providing feedback on what to change...&lt;br /&gt;
--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 23:20, 4 November 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
------&lt;br /&gt;
&lt;br /&gt;
I'll have a look this week end and will try to work of some points of the roadmap. I think the whole things goes in the right direction.The point here from what I can see is to follow the roadmap. Perhaps (as we all have complex schedule) we could splitt more the work in tiny little task that we can do in 1 hour...&lt;br /&gt;
If following the roadmap we could come up with :&lt;br /&gt;
1)Creating the ai object (done)&lt;br /&gt;
&lt;br /&gt;
2)display it (done)&lt;br /&gt;
&lt;br /&gt;
3)Creating the initial position of this objec, depending of the &amp;quot;source&amp;quot;/launcher paramters (this involve trigonometric calculation if I remember right...&lt;br /&gt;
&lt;br /&gt;
4) Also we have for the &amp;quot;missile/bomb/lanched drone case&amp;quot; think how manage the pylon positioning issue. (Do we put it in the source object ?)&lt;br /&gt;
&lt;br /&gt;
5)Detection:this is a big part : the ideal would be to have the &amp;quot;radar&amp;quot; object that we discussed once Hooray. This object could do Infrared detection, radar detection, could make the target disapeared if there &amp;quot;terrain&amp;quot; etc... and then if there is detection, it should provide command to the FDM (wanted pitch, wanted Roll, wanted heading). But Perhaps just a radar object could not be enough for al ai object (like tanker, drones, terrain following missiles etc).I don't really know how to do this but the idea would be to have both a kind of autopilot &amp;amp; a radar ...&lt;br /&gt;
(Anyways the autopilot should also include the tanker behaviour : with base returning, virage ?, dialogs ?)&lt;br /&gt;
And also we have to make a prevision script : just following a target isn't enough for the detection part. Some of missile should predict the next position(s) of the target and anicipate, in order to be more precise. This is important when a aircraft come from the front. a &amp;quot;simple following detection&amp;quot; will make the missile avoid the target.&lt;br /&gt;
We also let the code open enough to include tomorrow a &amp;quot;flares sensibility&amp;quot; (MP player would love that)&lt;br /&gt;
&lt;br /&gt;
6)Then comes the fdm. This should be the tough part. I don't see how make this generic. Cause we have : terrain following (simplified), sea level following, aim54 High altitude cruise missile, other cruise missile/ai (drone and tankers), vectoring thurst missile (wich become less agile with no fuel), breaked bomb (with parachute), and simple missile&lt;br /&gt;
&lt;br /&gt;
7) the proximity detection &amp;amp; detonate the &amp;quot;missile&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If we subdivise it perhpas we could go forward. Anyways...perhaps I can not have a suffisant big mind or stand back to make something generic enough...So do not hesitate to show me the way :D&lt;br /&gt;
As I said earlier, I will look this this week end.&lt;br /&gt;
&lt;br /&gt;
—[[User:5H1N0B1|5H1N0B1]] ([[User_talk:5H1N0B1|Talk]] | [[Special:Contributions/5H1N0B1|contribs]]) 10:40, 05 November 2014 (UTC)&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Talk:Scripted_AI_Objects&amp;diff=77540</id>
		<title>Talk:Scripted AI Objects</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Talk:Scripted_AI_Objects&amp;diff=77540"/>
		<updated>2014-10-31T14:03:03Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Implementation ==&lt;br /&gt;
&lt;br /&gt;
As Hooray said, this is the talk started here : http://wiki.flightgear.org/User_talk:Red_Leader&lt;br /&gt;
We agree on the general way of doing it, and the goal we want.&lt;br /&gt;
&lt;br /&gt;
For now, the script use 2 objects :&lt;br /&gt;
# the missile itself&lt;br /&gt;
# A &amp;quot;target&amp;quot; object which is an object with all variable available on the target aircraft/ship whatever...&lt;br /&gt;
The aircraft very specific variables are those used to setup the inital position of the missile : You give a pylon number and the script go look threw your aircraft to geo positionning the missile object and make it fire.( and the missile type...)&lt;br /&gt;
&lt;br /&gt;
Instead of using this :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var DestinationOfFiring = Target.new(whatever);&lt;br /&gt;
var missile = Missile.new(pylon, DestinationOfFiring ); &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
a very, very simple way of doing it could be just feed the missile with 2 object and have someting like that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
 var SourceOfFiring = geo.Coord.new(whatever);&lt;br /&gt;
 var DestinationOfFiring = geo.Coord.new(whatever);&lt;br /&gt;
 var myMissile = new missile(origin:SourceOfFiring , target:DestinationOfFiring, type:missileType);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a quick way of doing the job. Perhaps the &amp;quot;Target&amp;quot; object needs to be completed, with &amp;quot;pylon number&amp;quot; or &amp;quot;pylon position&amp;quot; (and it also could be renamed). This will allow the script to be independant of any aircraft.&lt;br /&gt;
&lt;br /&gt;
== Using geo.Coord objects for dealing with source/targets ==&lt;br /&gt;
&lt;br /&gt;
:: a target really is really just representing a position with lat/lon/alt - thus, it would make sense to simply use the existing geo.nas helpers here (geo.Coord) - if you need additional data, you can just sub-class geo.Coord to add your own fields - we are using this method in the MapStructre/TFC (traffic) layer. So I wouldn't make this more complicated than necessary. Obviously, targets/positions may be dynamic/changing, but that can also be realized using a geo.Coord sub-class, or a helper class with a geo.Coord member. Equally, missileType should probably just be another hash with a well-defined set of interfaces/methods. Overall, a simple MVC separation would definitely make sense here, which would allow you to have a custom 3D model, add animations to it, while having a plug&amp;amp;play FDM for different purposes. --[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 16:52, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
This is not only a quick way of doing it, this also something that can allow multiplayer firing : If (imagine a checkbox) the &amp;quot;MP firing property&amp;quot; is activated, it could reproduce a &amp;quot;AI model&amp;quot; on both side : On the SourceOfFiring's computer, but also a second &amp;quot;AI model&amp;quot; in the DestinationOfFiring's computer...(this a way of doing it...)&lt;br /&gt;
&lt;br /&gt;
== Coding / Collaboration == &lt;br /&gt;
One thing we need to consider is how we coordinate code, i.e. use of version control etc..  [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 12:59, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Coordination-wise, you should consider refactoring the existing code into separate modules/files and classes that can be independently maintained without requiring a ton of communication-obviously, being able to use git/gitorious would still help. --[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 16:00, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: We've had a number of users on the forum interested in these things, especially the FGUK guys would probably love to be involved in this. If you keep maintaining this article, I'll send heads-up to others who might be interested in this - even if just to provide feedback and advice. A few weeks ago, I talked with Algernon about these kinds of features so the FGUK guys should be all game - and a few others recently posted MapStructure/Canvas screen shots showing Combat-related developments[http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=23299&amp;amp;p=213180&amp;amp;hilit=revhardt#p212557].--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 16:00, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: The more the better, Hooray.  : [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 12:59, 28 October 2014 (UTC)&lt;br /&gt;
== Missile FDM / MP support ==&lt;br /&gt;
And then once this is done, we could work later on a real FDM for the missile and what so ever.&lt;br /&gt;
(Anyways, just my 2 cents opinion...)&lt;br /&gt;
—[[User:5H1N0B1|5H1N0B1]] ([[User_talk:5H1N0B1|Talk]] | [[Special:Contributions/5H1N0B1|contribs]]) 14:08, 27 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Hi 5H1N0B1. Sorry I've not been able to get back to you sooner.  Your suggestion seems quite good.  [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 12:59, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
== MP Support ==&lt;br /&gt;
Also, having MP firing would be a great feature.  [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 12:59, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: For MP support, you'll want to use an intermediate class that uses the mp_broadcast.nas script to set up a comm channel for events (see bombable). --[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 16:00, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Specs and  Requirements ==&lt;br /&gt;
I think that we should also write down stuff that would be configurable on the missile (i.e. size and weight, but also seeker and guidance type).  A while ago, I found a PDF that I think will be very useful http://cdn.preterhuman.net/texts/terrorism_and_pyrotechnics/rocketry/Missiles_and_Warheads/Missile%20Guidance%20&amp;amp;%20Control%20Systems.pdf. &lt;br /&gt;
: [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 12:59, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: I think what we should do first is to put down stuff that affects the missiles specs, such as guidance types, seeker type, etc., then split these into categories, such as FDM, Seeker, etc., and work from there.&lt;br /&gt;
: [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 16:52, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Generalizing the existing code ==&lt;br /&gt;
&lt;br /&gt;
:: You'll find that most of these requirements will basically evolve automatically once you start refactoring the existing code into separate classes and files, while still supporting additional aircraft/use-cases. That is basically what we did with Gijs' [[NavDisplay]] code - and it can now be used on arbitrary aircraft, while also supporting an arbitrary number of instances per aircraft. We are even supporting an &amp;quot;AI aircraft&amp;quot; mode-which means that you can get a ND view for an arbitrary AI aircraft (including even AI nodes like a Bombable bot or AI missile). To make things sufficiently flexible and configurable we're using &amp;quot;behavior hashes&amp;quot; that can override default behavior (fields/methods). With efforts like these, over-engineering is a very real danger - it will probably get you farther to just refactor the existing code and incrementally make it support additional use-cases/aircraft, and extend the code over time. Currently, the main issue still is that the module is aircraft specific-once this restriction is removed, you'll see other aircraft developers join the effort over time, especially those without any stakes in the m2000-5, but still interested in combat feature.--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 17:04, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
I think that we should instead call this the &amp;quot;AI guided weapons system&amp;quot; or &amp;quot;AI guided munitions.&amp;quot;  After all, we aren't just talking about missile, we're also talking about guided bombs.  The same system can and should be used for both.  That's what I think anyway.&lt;br /&gt;
[[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 19:56, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Functional separation into guidance, autopilot and fdm ==&lt;br /&gt;
&lt;br /&gt;
: From a functional standpoint, I would suggest to look at the way FlightGear's subsystems are divided into distinct components and then simply model this code accordingly by introducing helper classes for components like 1) the FDM, 2) the autopilot, 3) the &amp;quot;route managerh&amp;quot;. That way, a guidance system would simply implement the route manager system's interface. As I stated elsewhere, it would make a lot of sense to maintain parity with the property tree-level FDM/AP and RM systems. Primarily, this will ensure consistency - secondly, it will ensure that future updates would provide a sane migration path, i.e. for using C++ level hooks that are currently not exposed to scripting space - we do have a number of contributors who tinkered with supporting multiple instances of the FDM/AP and RM subsystems - in fact, the AP system already supports multiple instances (see the property-rules system). And multiple FDM instances can also be supported for JSBSim FDMs - the route manager (RM) seems to be not sufficiently generic, but Durk and Zakalawe have repeatedly stated being interested in generalizing this part, too[http://forum.flightgear.org/viewtopic.php?p=134970#p134970]. Which basically means that there will be less repetitive/integration work necessary if/once those changes should materialize at some point. Thus, it would be a good idea not to re-invent the wheel entirely in scripting space - there's useful existing C++ code for these things (FDM, AP, RM), and exposing things to scripting space using [[Nasal/CppBind]] also has never been so easy. The other benefit is obviously that people will intuitively know how to deal with scripted AI objects because the property tree interfaces would be closely modeled after existing conventions.--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 13:36, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Hi Hooray.  Thanks for the suggestions.  I think that, for now, we'll concentrate on keeping it in Nasal.  At a later stage, we could look at implementing parts of the system in other parts of FG.&lt;br /&gt;
:: [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 16:34, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
right, but you misunderstood - I wasn't suggesting to move this out of Nasal anytime soon, but to just keep the design sufficiently generic so that components can be replaced at a later time, no matter if that involves other Nasal modules or really existing C++ code. The main problems that flug, xiii and others had when implementing these features was working around hard-coded design restrictions-those can be entirely prevented once a modular design is used like the one discussed above - without making things any more difficult. In fact, separation of concerns will be greatly simplified-and it does make sense to treat any entity like an airborne vehicle with a fdm, autopilot and route manager/guidance system. All this can be done entirely in scripting space using Nasal. The key is just the layered design using the property tree for I/O between systems--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 16:42, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: OK, so the way I understand it is that the code should generic enough so that, for example, in the future YASim supports multiple instances, we could take out the Nasal FDM and instead translate the missile through the sky according to properties generated by a YASim instance.&lt;br /&gt;
: [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 17:01, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: correct, but this is not specific to FDMs - all the autopilot/routing logic that people tend to reinvent in Nasal is significantly overlapping with existing, generic, C++ subsystems that are currently not yet exposed to Nasal. Thus, the main thing is using properties analogous to the actual C++ subsystems for interacting with the FDM/AP and RM components, which will ensure that a reusable and generic design is established, while preparing it for future updates. Otherwise, there will be more and more Nasal code doing what the C++ code is known to be very good at already.--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 18:00, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: I've taken your code and refactored it to add stubs for separating things like FDM, guidance and autopilot - I've also added a self-test routine that I am hoping to extend over time - it should be self-contained, i.e. not rely on any aircraft/scenery. But it would seem to make sense to also move away from the static model_path and instead introduce a ModelMgr class so that multiple models per stage can be easily supported according to the missile.nas discussion above. This class could then also manage effects/animations and so on. You will find my changes in the &amp;quot;scripted-ai-submodels' branch. HTH--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 00:02, 31 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Extending geo.Coord using Sub-classing ==&lt;br /&gt;
A suggestion that I have is to expand geo.Coord to hold orientation values.  That would mean we could handle target and have their lat/lon/alt/pitch/roll/heading at our fingertips.&lt;br /&gt;
[[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 17:03, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: like I said, this is trivial to do using sub-classing, so need to touch geo.nas at all - just create your own geo.Coord sub-class and add helpers for getting the corresponding properties via props.nas --[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 17:55, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
PS Hooary, how do you sub-class an existing Nasal class?&lt;br /&gt;
[[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 20:15, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: No special syntax/techniques involved - it just involves adding fields/methods to the new object, either directly - or via inheritance (the parents vector). I've added stubs to Philosopher's OO article at: http://wiki.flightgear.org/Object_Oriented_Programming_with_Nasal#Sub-Classing --[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 21:00, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
Hi guys, you just go really too fast for me but I really like the way it goes. Seems to be clear code and could be really generic.&lt;br /&gt;
I'll try to contribute a little but time, sadly is missing here !&lt;br /&gt;
—[[User:5H1N0B1|5H1N0B1]] ([[User_talk:5H1N0B1|Talk]] | [[Special:Contributions/5H1N0B1|contribs]]) 22:02, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Things to keep in mind ==&lt;br /&gt;
Few things, just to be sure, and to remember :&lt;br /&gt;
* a) The missiles object have to be loaded/created only once the fire order have been triggered.&lt;br /&gt;
* b) The missile have 3 or 4 states : 1) Ignition (very high acceleration + special 3D light), 2) &amp;quot;Cruise&amp;quot;/fuse mode, with propulsion, 3) last part of the flight, no more fuel, using kinetic energy nad 4) explosion part. The flight behavior is different for each of the state, we must not forget that in the future ai fdm. (The biggest change is for thurst vectoring missiles)&lt;br /&gt;
The 4 state have been scripted both in fox2 &amp;amp; missile. They also use 3 differents 3D object each time. (Ignition don't have special model)&lt;br /&gt;
The explosion part could be separeted from the missile object itself and be generic, as the smoke part.&lt;br /&gt;
* c) We will have trajectory calculation. We must understand that time is a frame time. At high speed, and low fps, large distance could be traveled, and this must not affect missile/object behavior.&lt;br /&gt;
* d) Just a request for the future : I saw lot of calculation in flightgear, and we will have a lot here. Could we, please for once, directly code/calculate in SI units...&lt;br /&gt;
* e) What do you think about unguided/unpropelled munition. Actually this use the submodels system. Couldn't we add them here ? This would greatly simplify weapon system.&lt;br /&gt;
* f) In the fdm part we have to not forget : &amp;quot;Parachute&amp;quot; bomb, but also missiles that launch itself &amp;quot;sub bomb&amp;quot; like fragmentation or Apache anty runway missile. I'm not syaing we have to code that, but perhaps code in a way we could include that after.&lt;br /&gt;
* g) Anyways the code you wrotten here is very clear, and my remarks earlier concerns futur developppement.&lt;br /&gt;
—[[User:5H1N0B1|5H1N0B1]] ([[User_talk:5H1N0B1|Talk]] | [[Special:Contributions/5H1N0B1|contribs]]) 16:26, 30 October 2014 (UTC)&lt;br /&gt;
[[User:5H1N0B1|Every day, from everything and everybody, there is a truth to learn]] ([[User talk:5H1N0B1|talk]]) 15:29, 30 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: To me, this sounds all very do-able - but obviously, it is a matter of priorities in terms of manpower and time that can be dedicated to this - most of us have many other areas/projects that we're juggling already. Thus, to state my own priorities, and to clarify where I'd be interested in helping:&lt;br /&gt;
:* I'd like to help extend the posted code such that tanker.nas and existing missile systems can be implemented using this code&lt;br /&gt;
:* Specifically, I would like to support a handful of different aircraft/use-cases, including other missiles, and at some point hopefully also other types of &amp;quot;payloads&amp;quot;&lt;br /&gt;
:* Primarily, I am interested in refactoring existing code to generalize the underlying concepts and to come up with an OO framework, where all the generic code lives in shared directory, instead of being copied&amp;amp;pasted into various places under $FG_AIRCRAFT&lt;br /&gt;
:* I might also be able to hook this up to galvedro's failure management code, so that missiles or aircraft systems may suffer failures and respond properly&lt;br /&gt;
:* in the really long-term, I'd also like to see flug's code reviewed and generalized accordingly, so that we can come up with a library/module for controlling AI objects in scripted fashion - without being specific to combat/missile use.&lt;br /&gt;
:* I am personally not opposed to any combat functionality in FG, but I do understand that this is a controversial topic-thus, I'd prefer to come up with generic building blocks that are not specific to combat use only - e.g. by having a &amp;quot;uav&amp;quot; framework instead of a drone/missile framework.&lt;br /&gt;
:* Structurally, I would suggest to come up with a new Nasal submodule under $FG_ROOT/Nasal/ai and add our ai.nas and missile.nas files there so that they can be independently developed, while being strictly optional&lt;br /&gt;
:* specific instances I would like to instantiate explicitly by using io.include(), analogous to the failure management framework or MapStructure&lt;br /&gt;
:* I do believe that it is very important to separate all components properly and to establish the property tree as the sole interfacing mechanism between guidance/autopilot and FDM-I am thinking in terms of having *.guidance, *.autopilot and *.fdm files that contain Nasal sub-classes implementing the corresponding lower-level interfaces (base classes)&lt;br /&gt;
:* that way, aircraft developers may not necessarily have to touch any *.nas files but just work with a certain subset of Nasal, analogous to MapStructure implementation files&lt;br /&gt;
:* I think there's really just 8-12 main base classes missing that can probably be prototyped by looking at existing use-cases (tanker.nas, fox2.nas. missile.nas) - once the code is sufficiently generic, I would hope to port those files to make them use the new framework, and then get aircraft developers involved to update their work accordingly.&lt;br /&gt;
: --[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 17:02, 30 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: @5H1N0B1: About point d): I think the reason for not using the SI-system is that most formulas are laid out in the {{wikipedia|Foot–pound–second system#Pound-force as force unit|gravitational Foot–pound–second system}} in US aeronautical engineering textbooks (which are often used internationally in higher education and sometimes also are freely available).&lt;br /&gt;
:: —[[User:Johan G|Johan G]] ([[User_talk:Johan_G|Talk]] | [[Special:Contributions/Johan_G|contribs]]) 19:44, 30 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
Actually fox2.nas and missile.nas convert Imperial unit in SI unit, do the calculation in SI, and reconvert it in Imperial unit. (seriously gravity in foot-pound-second...o_O' ?)&lt;br /&gt;
Another thing : About bombable. I tried to install it once on missile.nas : I discoverd that the bombable variable is already implemented since fox2.nas, and after testing I rememeber shooting bombable C172 invation with missiles... So if bombable still use the same system it could be easy to keep the fox2 orignal implementation. I never tested it with bombable and multiplayer...&lt;br /&gt;
—[[User:5H1N0B1|5H1N0B1]] ([[User_talk:5H1N0B1|Talk]] | [[Special:Contributions/5H1N0B1|contribs]]) 14:46, 31 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== merging latest changes ==&lt;br /&gt;
&lt;br /&gt;
@Red_Leader: you just reverted all the changes I added to your code in the meantime, you may want to review the last diff to see if you want to merge any of those or not (I've merged everything into the git topic branch now, see the infobox) .--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 21:28, 30 October 2014 (UTC)&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Talk:Scripted_AI_Objects&amp;diff=77494</id>
		<title>Talk:Scripted AI Objects</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Talk:Scripted_AI_Objects&amp;diff=77494"/>
		<updated>2014-10-30T15:29:07Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Implementation ==&lt;br /&gt;
&lt;br /&gt;
As Hooray said, this is the talk started here : http://wiki.flightgear.org/User_talk:Red_Leader&lt;br /&gt;
We agree on the general way of doing it, and the goal we want.&lt;br /&gt;
&lt;br /&gt;
For now, the script use 2 objects :&lt;br /&gt;
# the missile itself&lt;br /&gt;
# A &amp;quot;target&amp;quot; object which is an object with all variable available on the target aircraft/ship whatever...&lt;br /&gt;
The aircraft very specific variables are those used to setup the inital position of the missile : You give a pylon number and the script go look threw your aircraft to geo positionning the missile object and make it fire.( and the missile type...)&lt;br /&gt;
&lt;br /&gt;
Instead of using this :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var DestinationOfFiring = Target.new(whatever);&lt;br /&gt;
var missile = Missile.new(pylon, DestinationOfFiring ); &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
a very, very simple way of doing it could be just feed the missile with 2 object and have someting like that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
 var SourceOfFiring = geo.Coord.new(whatever);&lt;br /&gt;
 var DestinationOfFiring = geo.Coord.new(whatever);&lt;br /&gt;
 var myMissile = new missile(origin:SourceOfFiring , target:DestinationOfFiring, type:missileType);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a quick way of doing the job. Perhaps the &amp;quot;Target&amp;quot; object needs to be completed, with &amp;quot;pylon number&amp;quot; or &amp;quot;pylon position&amp;quot; (and it also could be renamed). This will allow the script to be independant of any aircraft.&lt;br /&gt;
&lt;br /&gt;
:: a target really is really just representing a position with lat/lon/alt - thus, it would make sense to simply use the existing geo.nas helpers here (geo.Coord) - if you need additional data, you can just sub-class geo.Coord to add your own fields - we are using this method in the MapStructre/TFC (traffic) layer. So I wouldn't make this more complicated than necessary. Obviously, targets/positions may be dynamic/changing, but that can also be realized using a geo.Coord sub-class, or a helper class with a geo.Coord member. Equally, missileType should probably just be another hash with a well-defined set of interfaces/methods. Overall, a simple MVC separation would definitely make sense here, which would allow you to have a custom 3D model, add animations to it, while having a plug&amp;amp;play FDM for different purposes. --[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 16:52, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
This is not only a quick way of doing it, this also something that can allow multiplayer firing : If (imagine a checkbox) the &amp;quot;MP firing property&amp;quot; is activated, it could reproduce a &amp;quot;AI model&amp;quot; on both side : On the SourceOfFiring's computer, but also a second &amp;quot;AI model&amp;quot; in the DestinationOfFiring's computer...(this a way of doing it...)&lt;br /&gt;
&lt;br /&gt;
And then once this is done, we could work later on a real FDM for the missile and what so ever.&lt;br /&gt;
(Anyways, just my 2 cents opinion...)&lt;br /&gt;
—[[User:5H1N0B1|5H1N0B1]] ([[User_talk:5H1N0B1|Talk]] | [[Special:Contributions/5H1N0B1|contribs]]) 14:08, 27 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Hi 5H1N0B1. Sorry I've not been able to get back to you sooner.  Your suggestion seems quite good.  Also, having MP firing would be a great feature.  One thing we need to consider is how we coordinate code, i.e. use of version control etc..  I think that we should also write down stuff that would be configurable on the missile (i.e. size and weight, but also seeker and guidance type).  A while ago, I found a PDF that I think will be very useful http://cdn.preterhuman.net/texts/terrorism_and_pyrotechnics/rocketry/Missiles_and_Warheads/Missile%20Guidance%20&amp;amp;%20Control%20Systems.pdf. &lt;br /&gt;
: [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 12:59, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
We've had a number of users on the forum interested in these things, especially the FGUK guys would probably love to be involved in this. Coordination-wise, you should consider refactoring the existing code into separate modules/files and classes that can be independently maintained without requiring a ton of communication-obviously, being able to use git/gitorious would still help. For MP support, you'll want to use an intermediate class that uses the mp_broadcast.nas script to set up a comm channel for events (see bombable). If you keep maintaining this article, I'll send heads-up to others who might be interested in this - even if just to provide feedback and advice. A few weeks ago, I talked with Algernon about these kinds of features so the FGUK guys should be all game - and a few others recently posted MapStructure/Canvas screen shots showing Combat-related developments[http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=23299&amp;amp;p=213180&amp;amp;hilit=revhardt#p212557].--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 16:00, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: The more the better, Hooray.  I think what we should do first is to put down stuff that affects the missiles specs, such as guidance types, seeker type, etc., then split these into categories, such as FDM, Seeker, etc., and work from there.&lt;br /&gt;
: [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 16:52, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Sure, but you'll find that most of these requirements will basically evolve automatically once you start refactoring the existing code into separate classes and files, while still supporting additional aircraft/use-cases. That is basically what we did with Gijs' [[NavDisplay]] code - and it can now be used on arbitrary aircraft, while also supporting an arbitrary number of instances per aircraft. We are even supporting an &amp;quot;AI aircraft&amp;quot; mode-which means that you can get a ND view for an arbitrary AI aircraft (including even AI nodes like a Bombable bot or AI missile). To make things sufficiently flexible and configurable we're using &amp;quot;behavior hashes&amp;quot; that can override default behavior (fields/methods). With efforts like these, over-engineering is a very real danger - it will probably get you farther to just refactor the existing code and incrementally make it support additional use-cases/aircraft, and extend the code over time. Currently, the main issue still is that the module is aircraft specific-once this restriction is removed, you'll see other aircraft developers join the effort over time, especially those without any stakes in the m2000-5, but still interested in combat feature.--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 17:04, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
I think that we should instead call this the &amp;quot;AI guided weapons system&amp;quot; or &amp;quot;AI guided munitions.&amp;quot;  After all, we aren't just talking about missile, we're also talking about guided bombs.  The same system can and should be used for both.  That's what I think anyway.&lt;br /&gt;
[[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 19:56, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: From a functional standpoint, I would suggest to look at the way FlightGear's subsystems are divided into distinct components and then simply model this code accordingly by introducing helper classes for components like 1) the FDM, 2) the autopilot, 3) the &amp;quot;route managerh&amp;quot;. That way, a guidance system would simply implement the route manager system's interface. As I stated elsewhere, it would make a lot of sense to maintain parity with the property tree-level FDM/AP and RM systems. Primarily, this will ensure consistency - secondly, it will ensure that future updates would provide a sane migration path, i.e. for using C++ level hooks that are currently not exposed to scripting space - we do have a number of contributors who tinkered with supporting multiple instances of the FDM/AP and RM subsystems - in fact, the AP system already supports multiple instances (see the property-rules system). And multiple FDM instances can also be supported for JSBSim FDMs - the route manager (RM) seems to be not sufficiently generic, but Durk and Zakalawe have repeatedly stated being interested in generalizing this part, too[http://forum.flightgear.org/viewtopic.php?p=134970#p134970]. Which basically means that there will be less repetitive/integration work necessary if/once those changes should materialize at some point. Thus, it would be a good idea not to re-invent the wheel entirely in scripting space - there's useful existing C++ code for these things (FDM, AP, RM), and exposing things to scripting space using [[Nasal/CppBind]] also has never been so easy. The other benefit is obviously that people will intuitively know how to deal with scripted AI objects because the property tree interfaces would be closely modeled after existing conventions.--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 13:36, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Hi Hooray.  Thanks for the suggestions.  I think that, for now, we'll concentrate on keeping it in Nasal.  At a later stage, we could look at implementing parts of the system in other parts of FG.&lt;br /&gt;
:: [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 16:34, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
right, but you misunderstood - I wasn't suggesting to move this out of Nasal anytime soon, but to just keep the design sufficiently generic so that components can be replaced at a later time, no matter if that involves other Nasal modules or really existing C++ code. The main problems that flug, xiii and others had when implementing these features was working around hard-coded design restrictions-those can be entirely prevented once a modular design is used like the one discussed above - without making things any more difficult. In fact, separation of concerns will be greatly simplified-and it does make sense to treat any entity like an airborne vehicle with a fdm, autopilot and route manager/guidance system. All this can be done entirely in scripting space using Nasal. The key is just the layered design using the property tree for I/O between systems--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 16:42, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: OK, so the way I understand it is that the code should generic enough so that, for example, in the future YASim supports multiple instances, we could take out the Nasal FDM and instead translate the missile through the sky according to properties generated by a YASim instance.&lt;br /&gt;
: [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 17:01, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: correct, but this is not specific to FDMs - all the autopilot/routing logic that people tend to reinvent in Nasal is significantly overlapping with existing, generic, C++ subsystems that are currently not yet exposed to Nasal. Thus, the main thing is using properties analogous to the actual C++ subsystems for interacting with the FDM/AP and RM components, which will ensure that a reusable and generic design is established, while preparing it for future updates. Otherwise, there will be more and more Nasal code doing what the C++ code is known to be very good at already.--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 18:00, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
A suggestion that I have is to expand geo.Coord to hold orientation values.  That would mean we could handle target and have their lat/lon/alt/pitch/roll/heading at our fingertips.&lt;br /&gt;
[[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 17:03, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: like I said, this is trivial to do using sub-classing, so need to touch geo.nas at all - just create your own geo.Coord sub-class and add helpers for getting the corresponding properties via props.nas --[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 17:55, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
Progress for tonight as follows.  I've created missile.nas and ai.nas, both in $FGDATA/Nasal, with the code as follows.&lt;br /&gt;
&lt;br /&gt;
ai.nas:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
# This module enables generic AI objects to be created and updated&lt;br /&gt;
&lt;br /&gt;
var Obj = {&lt;br /&gt;
	new: func(type = nil, model_path = &amp;quot;Models/Geometry/null.ac&amp;quot;){&lt;br /&gt;
		if(type == nil){&lt;br /&gt;
			die(&amp;quot;ai.nas: Error! 'type' is not defined&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		var m = { parents: [Obj] };&lt;br /&gt;
	&lt;br /&gt;
		var n = props.globals.getNode(&amp;quot;models&amp;quot;, 1);&lt;br /&gt;
		for(var i = 0; 1; i += 1){&lt;br /&gt;
			if(n.getChild(&amp;quot;model&amp;quot;, i, 0) == nil){&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		m.model_node = n.getChild(&amp;quot;model&amp;quot;, i, 1);		&lt;br /&gt;
		&lt;br /&gt;
		var n = props.globals.getNode(&amp;quot;ai/models&amp;quot;, 1);&lt;br /&gt;
		for(var i = 0; 1; i += 1){&lt;br /&gt;
			if(n.getChild(type, i, 0) == nil){&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}		&lt;br /&gt;
		m.ai_node = n.getChild(type, i, 1);&lt;br /&gt;
		&lt;br /&gt;
		m.ai_node.getNode(&amp;quot;valid&amp;quot;, 1).setBoolValue(1);&lt;br /&gt;
		m.latN    = m.ai_node.getNode(&amp;quot;position/latitude-deg&amp;quot;, 1);&lt;br /&gt;
		m.lonN    = m.ai_node.getNode(&amp;quot;position/longitude-deg&amp;quot;, 1);&lt;br /&gt;
		m.altN    = m.ai_node.getNode(&amp;quot;position/altitude-ft&amp;quot;, 1);&lt;br /&gt;
		m.hdgN    = m.ai_node.getNode(&amp;quot;orientation/true-heading-deg&amp;quot;, 1);&lt;br /&gt;
		m.pitchN  = m.ai_node.getNode(&amp;quot;orientation/pitch-deg&amp;quot;, 1);&lt;br /&gt;
		m.rollN   = m.ai_node.getNode(&amp;quot;orientation/roll-deg&amp;quot;, 1);&lt;br /&gt;
		&lt;br /&gt;
		m.latN.setDoubleValue(0);&lt;br /&gt;
		m.lonN.setDoubleValue(0);&lt;br /&gt;
		m.altN.setDoubleValue(0);&lt;br /&gt;
		m.hdgN.setDoubleValue(0);&lt;br /&gt;
		m.pitchN.setDoubleValue(0);&lt;br /&gt;
		m.rollN.setDoubleValue(0);&lt;br /&gt;
		&lt;br /&gt;
		m.model_node.getNode(&amp;quot;path&amp;quot;, 1).setValue(model_path);&lt;br /&gt;
		m.model_node.getNode(&amp;quot;latitude-deg-prop&amp;quot;, 1).setValue(m.latN.getPath());&lt;br /&gt;
		m.model_node.getNode(&amp;quot;longitude-deg-prop&amp;quot;, 1).setValue(m.lonN.getPath());&lt;br /&gt;
		m.model_node.getNode(&amp;quot;elevation-ft-prop&amp;quot;, 1).setValue(m.altN.getPath());&lt;br /&gt;
		m.model_node.getNode(&amp;quot;heading-deg-prop&amp;quot;, 1).setValue(m.hdgN.getPath());&lt;br /&gt;
		m.model_node.getNode(&amp;quot;pitch-deg-prop&amp;quot;, 1).setValue(m.pitchN.getPath());&lt;br /&gt;
		m.model_node.getNode(&amp;quot;roll-deg-prop&amp;quot;, 1).setValue(m.rollN.getPath());&lt;br /&gt;
		m.model_node.getNode(&amp;quot;load&amp;quot;, 1).remove();&lt;br /&gt;
		&lt;br /&gt;
		return m;&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	del: func(){&lt;br /&gt;
		me.model_node.remove();&lt;br /&gt;
		me.ai_node.remove();&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	reload_model: func(model_path = &amp;quot;Models/Geometry/null.ac&amp;quot;){&lt;br /&gt;
		me.model_node.remove();&lt;br /&gt;
		&lt;br /&gt;
		var n = props.globals.getNode(&amp;quot;models&amp;quot;, 1);&lt;br /&gt;
		for(var i = 0; 1; i += 1){&lt;br /&gt;
			if(n.getChild(&amp;quot;model&amp;quot;, i, 0) == nil){&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		me.model_node = n.getChild(&amp;quot;model&amp;quot;, i, 1);&lt;br /&gt;
		&lt;br /&gt;
		me.model_node.getNode(&amp;quot;path&amp;quot;, 1).setValue(model_path);&lt;br /&gt;
		me.model_node.getNode(&amp;quot;latitude-deg-prop&amp;quot;, 1).setValue(me.latN.getPath());&lt;br /&gt;
		me.model_node.getNode(&amp;quot;longitude-deg-prop&amp;quot;, 1).setValue(me.lonN.getPath());&lt;br /&gt;
		me.model_node.getNode(&amp;quot;elevation-ft-prop&amp;quot;, 1).setValue(me.altN.getPath());&lt;br /&gt;
		me.model_node.getNode(&amp;quot;heading-deg-prop&amp;quot;, 1).setValue(me.hdgN.getPath());&lt;br /&gt;
		me.model_node.getNode(&amp;quot;pitch-deg-prop&amp;quot;, 1).setValue(me.pitchN.getPath());&lt;br /&gt;
		me.model_node.getNode(&amp;quot;roll-deg-prop&amp;quot;, 1).setValue(me.rollN.getPath());&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	set_pos: func(lat, lon, alt = 0, roll = 0, ptch = 0, hdg = 0){&lt;br /&gt;
		me.latN.setDoubleValue(lat);&lt;br /&gt;
		me.lonN.setDoubleValue(lon);&lt;br /&gt;
		me.altN.setDoubleValue(alt);&lt;br /&gt;
		me.hdgN.setDoubleValue(hdg);&lt;br /&gt;
		me.pitchN.setDoubleValue(ptch);&lt;br /&gt;
		me.rollN.setDoubleValue(roll);&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
missile.nas:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var Missile = {&lt;br /&gt;
	new: func(tgt = &amp;quot;none&amp;quot;, src = &amp;quot;none&amp;quot;, type = &amp;quot;none&amp;quot;){&lt;br /&gt;
	&lt;br /&gt;
		if(tgt == &amp;quot;none&amp;quot; or src == &amp;quot;none&amp;quot; or type == &amp;quot;none&amp;quot;){&lt;br /&gt;
			die(&amp;quot;missile.nas: Error! Arguments not defined.&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if(isa(tgt, geo.Coord) == 0 or isa(src, geo.Coord) == 0){&lt;br /&gt;
			die(&amp;quot;missile.nas: Error! Arguments not correct.&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		var m = { parents: [Missile] };&lt;br /&gt;
		&lt;br /&gt;
		m.tgt = tgt;&lt;br /&gt;
		m.src = src;&lt;br /&gt;
		m.type = check_lib(type);&lt;br /&gt;
		&lt;br /&gt;
		if(m.type == 0){&lt;br /&gt;
			die(&amp;quot;missile.nas: Error! Unsupported missile type.&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		return m;&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	launch: func(off_x = 0, off_y = 0, off_z = 0){&lt;br /&gt;
		me.model = ai.Obj.new(&amp;quot;missile&amp;quot;, &amp;quot;Aircraft/Generic/Stores/AIM-9/AIM-9.xml&amp;quot;);&lt;br /&gt;
		me.update();&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	update: func(){&lt;br /&gt;
		settimer(func{&lt;br /&gt;
			me.update();&lt;br /&gt;
		}, 0);&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var check_lib = func(type){&lt;br /&gt;
	return type;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PS Hooary, how do you sub-class an existing Nasal class?&lt;br /&gt;
[[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 20:15, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: No special syntax/techniques involved - it just involves adding fields/methods to the new object, either directly - or via inheritance (the parents vector). I've added stubs to Philosopher's OO article at: http://wiki.flightgear.org/Object_Oriented_Programming_with_Nasal#Sub-Classing --[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 21:00, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
Hi guys, you just go really too fast for me but I really like the way it goes. Seems to be clear code and could be really generic.&lt;br /&gt;
I'll try to contribute a little but time, sadly is missing here !&lt;br /&gt;
—[[User:5H1N0B1|5H1N0B1]] ([[User_talk:5H1N0B1|Talk]] | [[Special:Contributions/5H1N0B1|contribs]]) 22:02, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
* you can probably use forindex/foreach loops in a few places&lt;br /&gt;
* using named arguments in calls with many parameters would make sense eventually&lt;br /&gt;
* maketimer() should be favored over settimer()&lt;br /&gt;
* using isa() for sanity checking is a good thing!&lt;br /&gt;
* ideally, the code would be flexible enough so that existing code like tanker.nas can be updated/ported accordingly&lt;br /&gt;
* reset/re-init listeners should be registered to deal with sim resets/repositioning&lt;br /&gt;
&lt;br /&gt;
BTW: good job so far ! We can move the code to the main article for collaboratively editing it there...--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 21:11, 29 October 2014 (UTC)&lt;br /&gt;
----&lt;br /&gt;
Few things, just to be sure, and to remember :&lt;br /&gt;
* a) The missiles object have to be loaded/created only once the fire order have been triggered.&lt;br /&gt;
* b) The missile have 3 or 4 states : 1) Ignition (very high acceleration + special 3D light), 2) &amp;quot;Cruise&amp;quot;/fuse mode, with propulsion, 3) last part of the flight, no more fuel, using kinetic energy nad 4) explosion part. The flight behavior is different for each of the state, we must not forget that in the future ai fdm. (The biggest change is for thurst vectoring missiles)&lt;br /&gt;
The 4 state have been scripted both in fox2 &amp;amp; missile. They also use 3 differents 3D object each time. (Ignition don't have special model)&lt;br /&gt;
The explosion part could be separeted from the missile object itself and be generic, as the smoke part.&lt;br /&gt;
* c) We will have trajectory calculation. We must understand that time is a frame time. At high speed, and low fps, large distance could be traveled, and this must not affect missile/object behavior.&lt;br /&gt;
* d) Just a request for the future : I saw lot of calculation in flightgear, and we will have a lot here. Could we, please for once, directly code/calculate in SI units...&lt;br /&gt;
* e) What do you think about unguided/unpropelled munition. Actually this use the submodels system. Couldn't we add them here ? This would greatly simplify weapon system.&lt;br /&gt;
* f) In the fdm part we have to not forget : &amp;quot;Parachute&amp;quot; bomb, but also missiles that launch itself &amp;quot;sub bomb&amp;quot; like fragmentation or Apache anty runway missile. I'm not syaing we have to code that, but perhaps code in a way we could include that after.&lt;br /&gt;
* g) Anyways the code you wrotten here is very clear, and my remarks earlier concerns futur developppement.&lt;br /&gt;
—[[User:5H1N0B1|5H1N0B1]] ([[User_talk:5H1N0B1|Talk]] | [[Special:Contributions/5H1N0B1|contribs]]) 16:26, 30 October 2014 (UTC)&lt;br /&gt;
[[User:5H1N0B1|Every day, from everything and everybody, there is a truth to learn]] ([[User talk:5H1N0B1|talk]]) 15:29, 30 October 2014 (UTC)&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Talk:Scripted_AI_Objects&amp;diff=77471</id>
		<title>Talk:Scripted AI Objects</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Talk:Scripted_AI_Objects&amp;diff=77471"/>
		<updated>2014-10-29T21:06:20Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Implementation ==&lt;br /&gt;
&lt;br /&gt;
As Hooray said, this is the talk started here : http://wiki.flightgear.org/User_talk:Red_Leader&lt;br /&gt;
We agree on the general way of doing it, and the goal we want.&lt;br /&gt;
&lt;br /&gt;
For now, the script use 2 objects :&lt;br /&gt;
# the missile itself&lt;br /&gt;
# A &amp;quot;target&amp;quot; object which is an object with all variable available on the target aircraft/ship whatever...&lt;br /&gt;
The aircraft very specific variables are those used to setup the inital position of the missile : You give a pylon number and the script go look threw your aircraft to geo positionning the missile object and make it fire.( and the missile type...)&lt;br /&gt;
&lt;br /&gt;
Instead of using this :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var DestinationOfFiring = Target.new(whatever);&lt;br /&gt;
var missile = Missile.new(pylon, DestinationOfFiring ); &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
a very, very simple way of doing it could be just feed the missile with 2 object and have someting like that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
 var SourceOfFiring = geo.Coord.new(whatever);&lt;br /&gt;
 var DestinationOfFiring = geo.Coord.new(whatever);&lt;br /&gt;
 var myMissile = new missile(origin:SourceOfFiring , target:DestinationOfFiring, type:missileType);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a quick way of doing the job. Perhaps the &amp;quot;Target&amp;quot; object needs to be completed, with &amp;quot;pylon number&amp;quot; or &amp;quot;pylon position&amp;quot; (and it also could be renamed). This will allow the script to be independant of any aircraft.&lt;br /&gt;
&lt;br /&gt;
:: a target really is really just representing a position with lat/lon/alt - thus, it would make sense to simply use the existing geo.nas helpers here (geo.Coord) - if you need additional data, you can just sub-class geo.Coord to add your own fields - we are using this method in the MapStructre/TFC (traffic) layer. So I wouldn't make this more complicated than necessary. Obviously, targets/positions may be dynamic/changing, but that can also be realized using a geo.Coord sub-class, or a helper class with a geo.Coord member. Equally, missileType should probably just be another hash with a well-defined set of interfaces/methods. Overall, a simple MVC separation would definitely make sense here, which would allow you to have a custom 3D model, add animations to it, while having a plug&amp;amp;play FDM for different purposes. --[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 16:52, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
This is not only a quick way of doing it, this also something that can allow multiplayer firing : If (imagine a checkbox) the &amp;quot;MP firing property&amp;quot; is activated, it could reproduce a &amp;quot;AI model&amp;quot; on both side : On the SourceOfFiring's computer, but also a second &amp;quot;AI model&amp;quot; in the DestinationOfFiring's computer...(this a way of doing it...)&lt;br /&gt;
&lt;br /&gt;
And then once this is done, we could work later on a real FDM for the missile and what so ever.&lt;br /&gt;
(Anyways, just my 2 cents opinion...)&lt;br /&gt;
—[[User:5H1N0B1|5H1N0B1]] ([[User_talk:5H1N0B1|Talk]] | [[Special:Contributions/5H1N0B1|contribs]]) 14:08, 27 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Hi 5H1N0B1. Sorry I've not been able to get back to you sooner.  Your suggestion seems quite good.  Also, having MP firing would be a great feature.  One thing we need to consider is how we coordinate code, i.e. use of version control etc..  I think that we should also write down stuff that would be configurable on the missile (i.e. size and weight, but also seeker and guidance type).  A while ago, I found a PDF that I think will be very useful http://cdn.preterhuman.net/texts/terrorism_and_pyrotechnics/rocketry/Missiles_and_Warheads/Missile%20Guidance%20&amp;amp;%20Control%20Systems.pdf. &lt;br /&gt;
: [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 12:59, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
We've had a number of users on the forum interested in these things, especially the FGUK guys would probably love to be involved in this. Coordination-wise, you should consider refactoring the existing code into separate modules/files and classes that can be independently maintained without requiring a ton of communication-obviously, being able to use git/gitorious would still help. For MP support, you'll want to use an intermediate class that uses the mp_broadcast.nas script to set up a comm channel for events (see bombable). If you keep maintaining this article, I'll send heads-up to others who might be interested in this - even if just to provide feedback and advice. A few weeks ago, I talked with Algernon about these kinds of features so the FGUK guys should be all game - and a few others recently posted MapStructure/Canvas screen shots showing Combat-related developments[http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=23299&amp;amp;p=213180&amp;amp;hilit=revhardt#p212557].--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 16:00, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: The more the better, Hooray.  I think what we should do first is to put down stuff that affects the missiles specs, such as guidance types, seeker type, etc., then split these into categories, such as FDM, Seeker, etc., and work from there.&lt;br /&gt;
: [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 16:52, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Sure, but you'll find that most of these requirements will basically evolve automatically once you start refactoring the existing code into separate classes and files, while still supporting additional aircraft/use-cases. That is basically what we did with Gijs' [[NavDisplay]] code - and it can now be used on arbitrary aircraft, while also supporting an arbitrary number of instances per aircraft. We are even supporting an &amp;quot;AI aircraft&amp;quot; mode-which means that you can get a ND view for an arbitrary AI aircraft (including even AI nodes like a Bombable bot or AI missile). To make things sufficiently flexible and configurable we're using &amp;quot;behavior hashes&amp;quot; that can override default behavior (fields/methods). With efforts like these, over-engineering is a very real danger - it will probably get you farther to just refactor the existing code and incrementally make it support additional use-cases/aircraft, and extend the code over time. Currently, the main issue still is that the module is aircraft specific-once this restriction is removed, you'll see other aircraft developers join the effort over time, especially those without any stakes in the m2000-5, but still interested in combat feature.--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 17:04, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
I think that we should instead call this the &amp;quot;AI guided weapons system&amp;quot; or &amp;quot;AI guided munitions.&amp;quot;  After all, we aren't just talking about missile, we're also talking about guided bombs.  The same system can and should be used for both.  That's what I think anyway.&lt;br /&gt;
[[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 19:56, 28 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: From a functional standpoint, I would suggest to look at the way FlightGear's subsystems are divided into distinct components and then simply model this code accordingly by introducing helper classes for components like 1) the FDM, 2) the autopilot, 3) the &amp;quot;route managerh&amp;quot;. That way, a guidance system would simply implement the route manager system's interface. As I stated elsewhere, it would make a lot of sense to maintain parity with the property tree-level FDM/AP and RM systems. Primarily, this will ensure consistency - secondly, it will ensure that future updates would provide a sane migration path, i.e. for using C++ level hooks that are currently not exposed to scripting space - we do have a number of contributors who tinkered with supporting multiple instances of the FDM/AP and RM subsystems - in fact, the AP system already supports multiple instances (see the property-rules system). And multiple FDM instances can also be supported for JSBSim FDMs - the route manager (RM) seems to be not sufficiently generic, but Durk and Zakalawe have repeatedly stated being interested in generalizing this part, too[http://forum.flightgear.org/viewtopic.php?p=134970#p134970]. Which basically means that there will be less repetitive/integration work necessary if/once those changes should materialize at some point. Thus, it would be a good idea not to re-invent the wheel entirely in scripting space - there's useful existing C++ code for these things (FDM, AP, RM), and exposing things to scripting space using [[Nasal/CppBind]] also has never been so easy. The other benefit is obviously that people will intuitively know how to deal with scripted AI objects because the property tree interfaces would be closely modeled after existing conventions.--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 13:36, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Hi Hooray.  Thanks for the suggestions.  I think that, for now, we'll concentrate on keeping it in Nasal.  At a later stage, we could look at implementing parts of the system in other parts of FG.&lt;br /&gt;
:: [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 16:34, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
right, but you misunderstood - I wasn't suggesting to move this out of Nasal anytime soon, but to just keep the design sufficiently generic so that components can be replaced at a later time, no matter if that involves other Nasal modules or really existing C++ code. The main problems that flug, xiii and others had when implementing these features was working around hard-coded design restrictions-those can be entirely prevented once a modular design is used like the one discussed above - without making things any more difficult. In fact, separation of concerns will be greatly simplified-and it does make sense to treat any entity like an airborne vehicle with a fdm, autopilot and route manager/guidance system. All this can be done entirely in scripting space using Nasal. The key is just the layered design using the property tree for I/O between systems--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 16:42, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: OK, so the way I understand it is that the code should generic enough so that, for example, in the future YASim supports multiple instances, we could take out the Nasal FDM and instead translate the missile through the sky according to properties generated by a YASim instance.&lt;br /&gt;
: [[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 17:01, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: correct, but this is not specific to FDMs - all the autopilot/routing logic that people tend to reinvent in Nasal is significantly overlapping with existing, generic, C++ subsystems that are currently not yet exposed to Nasal. Thus, the main thing is using properties analogous to the actual C++ subsystems for interacting with the FDM/AP and RM components, which will ensure that a reusable and generic design is established, while preparing it for future updates. Otherwise, there will be more and more Nasal code doing what the C++ code is known to be very good at already.--[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 18:00, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
A suggestion that I have is to expand geo.Coord to hold orientation values.  That would mean we could handle target and have their lat/lon/alt/pitch/roll/heading at our fingertips.&lt;br /&gt;
[[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 17:03, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
: like I said, this is trivial to do using sub-classing, so need to touch geo.nas at all - just create your own geo.Coord sub-class and add helpers for getting the corresponding properties via props.nas --[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 17:55, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
Progress for tonight as follows.  I've created missile.nas and ai.nas, both in $FGDATA/Nasal, with the code as follows.&lt;br /&gt;
&lt;br /&gt;
ai.nas:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
# This module enables generic AI objects to be created and updated&lt;br /&gt;
&lt;br /&gt;
var Obj = {&lt;br /&gt;
	new: func(type = nil, model_path = &amp;quot;Models/Geometry/null.ac&amp;quot;){&lt;br /&gt;
		if(type == nil){&lt;br /&gt;
			die(&amp;quot;ai.nas: Error! 'type' is not defined&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		var m = { parents: [Obj] };&lt;br /&gt;
	&lt;br /&gt;
		var n = props.globals.getNode(&amp;quot;models&amp;quot;, 1);&lt;br /&gt;
		for(var i = 0; 1; i += 1){&lt;br /&gt;
			if(n.getChild(&amp;quot;model&amp;quot;, i, 0) == nil){&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		m.model_node = n.getChild(&amp;quot;model&amp;quot;, i, 1);		&lt;br /&gt;
		&lt;br /&gt;
		var n = props.globals.getNode(&amp;quot;ai/models&amp;quot;, 1);&lt;br /&gt;
		for(var i = 0; 1; i += 1){&lt;br /&gt;
			if(n.getChild(type, i, 0) == nil){&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}		&lt;br /&gt;
		m.ai_node = n.getChild(type, i, 1);&lt;br /&gt;
		&lt;br /&gt;
		m.ai_node.getNode(&amp;quot;valid&amp;quot;, 1).setBoolValue(1);&lt;br /&gt;
		m.latN    = m.ai_node.getNode(&amp;quot;position/latitude-deg&amp;quot;, 1);&lt;br /&gt;
		m.lonN    = m.ai_node.getNode(&amp;quot;position/longitude-deg&amp;quot;, 1);&lt;br /&gt;
		m.altN    = m.ai_node.getNode(&amp;quot;position/altitude-ft&amp;quot;, 1);&lt;br /&gt;
		m.hdgN    = m.ai_node.getNode(&amp;quot;orientation/true-heading-deg&amp;quot;, 1);&lt;br /&gt;
		m.pitchN  = m.ai_node.getNode(&amp;quot;orientation/pitch-deg&amp;quot;, 1);&lt;br /&gt;
		m.rollN   = m.ai_node.getNode(&amp;quot;orientation/roll-deg&amp;quot;, 1);&lt;br /&gt;
		&lt;br /&gt;
		m.latN.setDoubleValue(0);&lt;br /&gt;
		m.lonN.setDoubleValue(0);&lt;br /&gt;
		m.altN.setDoubleValue(0);&lt;br /&gt;
		m.hdgN.setDoubleValue(0);&lt;br /&gt;
		m.pitchN.setDoubleValue(0);&lt;br /&gt;
		m.rollN.setDoubleValue(0);&lt;br /&gt;
		&lt;br /&gt;
		m.model_node.getNode(&amp;quot;path&amp;quot;, 1).setValue(model_path);&lt;br /&gt;
		m.model_node.getNode(&amp;quot;latitude-deg-prop&amp;quot;, 1).setValue(m.latN.getPath());&lt;br /&gt;
		m.model_node.getNode(&amp;quot;longitude-deg-prop&amp;quot;, 1).setValue(m.lonN.getPath());&lt;br /&gt;
		m.model_node.getNode(&amp;quot;elevation-ft-prop&amp;quot;, 1).setValue(m.altN.getPath());&lt;br /&gt;
		m.model_node.getNode(&amp;quot;heading-deg-prop&amp;quot;, 1).setValue(m.hdgN.getPath());&lt;br /&gt;
		m.model_node.getNode(&amp;quot;pitch-deg-prop&amp;quot;, 1).setValue(m.pitchN.getPath());&lt;br /&gt;
		m.model_node.getNode(&amp;quot;roll-deg-prop&amp;quot;, 1).setValue(m.rollN.getPath());&lt;br /&gt;
		m.model_node.getNode(&amp;quot;load&amp;quot;, 1).remove();&lt;br /&gt;
		&lt;br /&gt;
		return m;&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	del: func(){&lt;br /&gt;
		me.model_node.remove();&lt;br /&gt;
		me.ai_node.remove();&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	reload_model: func(model_path = &amp;quot;Models/Geometry/null.ac&amp;quot;){&lt;br /&gt;
		me.model_node.remove();&lt;br /&gt;
		&lt;br /&gt;
		var n = props.globals.getNode(&amp;quot;models&amp;quot;, 1);&lt;br /&gt;
		for(var i = 0; 1; i += 1){&lt;br /&gt;
			if(n.getChild(&amp;quot;model&amp;quot;, i, 0) == nil){&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		me.model_node = n.getChild(&amp;quot;model&amp;quot;, i, 1);&lt;br /&gt;
		&lt;br /&gt;
		me.model_node.getNode(&amp;quot;path&amp;quot;, 1).setValue(model_path);&lt;br /&gt;
		me.model_node.getNode(&amp;quot;latitude-deg-prop&amp;quot;, 1).setValue(me.latN.getPath());&lt;br /&gt;
		me.model_node.getNode(&amp;quot;longitude-deg-prop&amp;quot;, 1).setValue(me.lonN.getPath());&lt;br /&gt;
		me.model_node.getNode(&amp;quot;elevation-ft-prop&amp;quot;, 1).setValue(me.altN.getPath());&lt;br /&gt;
		me.model_node.getNode(&amp;quot;heading-deg-prop&amp;quot;, 1).setValue(me.hdgN.getPath());&lt;br /&gt;
		me.model_node.getNode(&amp;quot;pitch-deg-prop&amp;quot;, 1).setValue(me.pitchN.getPath());&lt;br /&gt;
		me.model_node.getNode(&amp;quot;roll-deg-prop&amp;quot;, 1).setValue(me.rollN.getPath());&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	set_pos: func(lat, lon, alt = 0, roll = 0, ptch = 0, hdg = 0){&lt;br /&gt;
		me.latN.setDoubleValue(lat);&lt;br /&gt;
		me.lonN.setDoubleValue(lon);&lt;br /&gt;
		me.altN.setDoubleValue(alt);&lt;br /&gt;
		me.hdgN.setDoubleValue(hdg);&lt;br /&gt;
		me.pitchN.setDoubleValue(ptch);&lt;br /&gt;
		me.rollN.setDoubleValue(roll);&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
missile.nas:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var Missile = {&lt;br /&gt;
	new: func(tgt = &amp;quot;none&amp;quot;, src = &amp;quot;none&amp;quot;, type = &amp;quot;none&amp;quot;){&lt;br /&gt;
	&lt;br /&gt;
		if(tgt == &amp;quot;none&amp;quot; or src == &amp;quot;none&amp;quot; or type == &amp;quot;none&amp;quot;){&lt;br /&gt;
			die(&amp;quot;missile.nas: Error! Arguments not defined.&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if(isa(tgt, geo.Coord) == 0 or isa(src, geo.Coord) == 0){&lt;br /&gt;
			die(&amp;quot;missile.nas: Error! Arguments not correct.&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		var m = { parents: [Missile] };&lt;br /&gt;
		&lt;br /&gt;
		m.tgt = tgt;&lt;br /&gt;
		m.src = src;&lt;br /&gt;
		m.type = check_lib(type);&lt;br /&gt;
		&lt;br /&gt;
		if(m.type == 0){&lt;br /&gt;
			die(&amp;quot;missile.nas: Error! Unsupported missile type.&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		return m;&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	launch: func(off_x = 0, off_y = 0, off_z = 0){&lt;br /&gt;
		me.model = ai.Obj.new(&amp;quot;missile&amp;quot;, &amp;quot;Aircraft/Generic/Stores/AIM-9/AIM-9.xml&amp;quot;);&lt;br /&gt;
		me.update();&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	update: func(){&lt;br /&gt;
		settimer(func{&lt;br /&gt;
			me.update();&lt;br /&gt;
		}, 0);&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var check_lib = func(type){&lt;br /&gt;
	return type;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PS Hooary, how do you sub-class an existing Nasal class?&lt;br /&gt;
[[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 20:15, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: No special syntax/techniques involved - it just involves adding fields/methods to the new object, either directly - or via inheritance (the parents vector). I've added stubs to Philosopher's OO article at: http://wiki.flightgear.org/Object_Oriented_Programming_with_Nasal#Sub-Classing --[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 21:00, 29 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
Hi guys, you just go really too fast for me but I really like the way it goes. Seems to be clear code and could be really generic.&lt;br /&gt;
I'll try to contribute a little but time, sadly is missing here !&lt;br /&gt;
—[[User:5H1N0B1|5H1N0B1]] ([[User_talk:5H1N0B1|Talk]] | [[Special:Contributions/5H1N0B1|contribs]]) 22:02, 29 October 2014 (UTC)&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Mirage-2000_SunSet.png&amp;diff=77415</id>
		<title>File:Mirage-2000 SunSet.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Mirage-2000_SunSet.png&amp;diff=77415"/>
		<updated>2014-10-28T20:50:01Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: 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=mirage 2000-5 in the alps at sunset}}&lt;br /&gt;
|date=2014-10-28 21:48:09&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:5H1N0B1|5H1N0B1]]&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-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Screenshots]]&lt;br /&gt;
[[Category:Dassault]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Talk:Scripted_AI_Objects&amp;diff=77373</id>
		<title>Talk:Scripted AI Objects</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Talk:Scripted_AI_Objects&amp;diff=77373"/>
		<updated>2014-10-27T13:16:14Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: Just a quick way of doing something generic&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As Hooray said, this is the talk started here : http://wiki.flightgear.org/User_talk:Red_Leader&lt;br /&gt;
We agree on the general way of doing it, and the goal we want.&lt;br /&gt;
&lt;br /&gt;
For now, the script use 2 objects :&lt;br /&gt;
 1) the missile itself&lt;br /&gt;
 2) A &amp;quot;target&amp;quot; object which is an object with all variable available on the target aircraft/ship whatever...&lt;br /&gt;
The aircraft very specific variables are those used to setup the inital position of the missile : You give a pylon number and the script go look threw your aircraft to geo positionning the missile object and make it fire.( and the missile type...)&lt;br /&gt;
&lt;br /&gt;
Instead of using this :&lt;br /&gt;
 var DestinationOfFiring = new target(whatever);&lt;br /&gt;
 missile = new missile(pylon, DestinationOfFiring ); &lt;br /&gt;
a very, very simple way of doing it could be just feed the missile with 2 object and have someting like that&lt;br /&gt;
 var SourceOfFiring = new target(whatever);&lt;br /&gt;
 var DestinationOfFiring = new target(whatever);&lt;br /&gt;
 var myMissile = new missile(SourceOfFiring , DestinationOfFiring, missileType);&lt;br /&gt;
&lt;br /&gt;
This is a quick way of doing the job. Perhaps the &amp;quot;Target&amp;quot; object needs to be completed, with &amp;quot;pylon number&amp;quot; or &amp;quot;pylon position&amp;quot; (and it also could be renamed). This will allow the script to be independant of any aircraft.&lt;br /&gt;
This is not only a quick way of doing it, this also something that can allow multiplayer firing : If (imagine a checkbox) the &amp;quot;MP firing property&amp;quot; is activated, it could reproduce a &amp;quot;AI model&amp;quot; on both side : On the SourceOfFiring's computer, but also a second &amp;quot;AI model&amp;quot; in the DestinationOfFiring's computer...(this a way of doing it...)&lt;br /&gt;
&lt;br /&gt;
And then once this is done, we could work later on a real FDM for the missile and what so ever.&lt;br /&gt;
(Anyways, just my 2 cents opinion...)&lt;br /&gt;
—[[User:5H1N0B1|5H1N0B1]] ([[User_talk:5H1N0B1|Talk]] | [[Special:Contributions/5H1N0B1|contribs]]) 14:08, 27 October 2014 (UTC)&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User_talk:Red_Leader&amp;diff=77349</id>
		<title>User talk:Red Leader</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User_talk:Red_Leader&amp;diff=77349"/>
		<updated>2014-10-27T09:02:20Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: /* Welcome */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Welcome ==&lt;br /&gt;
Welcome to the wiki.  I have been following your first edits, and it seems you know your way around a wiki.  I find the {{tl|fixed}} template pretty much spotless for example, though I had used the tick mark (I am biased though; it is my own work. ;-) ).&lt;br /&gt;
&lt;br /&gt;
—[[User:Johan G|Johan G]] ([[User_talk:Johan_G|Talk]] | [[Special:Contributions/Johan_G|contribs]]) 18:39, 26 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Thanks Johan!  I've learnt quite a bit while looking inside wiki pages at the stuff you and other people have written. —[[User:Red_Leader|Red Leader]] ([[User_talk:Red_Leader|Talk]] | [[Special:Contributions/Red_Leader|contribs]]) 18:49, 26 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hi Red Leader ! I'm glad that you are working on the AI missile. Please, be aware that a lot of work has been done in terms of generalisation in Aircrat/m2000-5/Nasal/missile.nas ...&lt;br /&gt;
Just before recoding fox2.nas(which is the original source of missile.nas), could you just take a little look :)&lt;br /&gt;
Anyways there is still a lot to do... :D&lt;br /&gt;
&lt;br /&gt;
—[[User:5H1N0B1|5H1N0B1]] ([[User_talk:5H1N0B1|Talk]] | [[Special:Contributions/5H1N0B1|contribs]]) 10:00, 27 October 2014 (UTC)&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Canvas_Radar&amp;diff=68221</id>
		<title>Canvas Radar</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Canvas_Radar&amp;diff=68221"/>
		<updated>2014-02-24T10:55:30Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: /* Objective */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Template:Non-stable}}&lt;br /&gt;
&lt;br /&gt;
{{infobox subsystem&lt;br /&gt;
|image = MapStructure-TFC-Troubleshooting.png&lt;br /&gt;
|name =Canvas Radar Framework&lt;br /&gt;
|started= 02/2014 &lt;br /&gt;
|description = Radar Framework&lt;br /&gt;
|status = Under active development as of 02/2014&lt;br /&gt;
|maintainers  = 5H1N0B1, Hooray&lt;br /&gt;
|developers = 5H1N0B1 (since 02/2014),&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
|folders = [http://gitorious.org/fg/flightgear/trees/next/src/Canvas $FG_SRC/Canvas]&lt;br /&gt;
           [http://gitorious.org/fg/simgear/trees/next/simgear/canvas $SG_SRC/simgear/canvas]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|topic-fgdata= [https://gitorious.org/fg/canvas-hackers-fgdata canvas-hackers team clone] (topics/canvas-radar)&lt;br /&gt;
|subforum= http://forum.flightgear.org/viewforum.php?f=71&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Template:Canvas Navigation}}&lt;br /&gt;
&lt;br /&gt;
'''Canvas Radar''' is a [[MapStructure]]-based [[Nasal]]-space [[Canvas]]-Framework for creating Radar displays in FlightGear, as of 02/2014 it is being actively developed by 5H1N0B1 with a focus on the [[Mirage 2000-5]] fighter jet. The Radar implementation is heavily based on xiii's original code and will be further generalized and adapted to be usable in the MVC-centric design of Philosopher's MapStructure framework.&lt;br /&gt;
&lt;br /&gt;
The Radar framework is being closely developed in conjunction with F-JYL's [[CanvasMFD]] framework to ensure that aircraft developers can easily adopt the framework in their own aircraft, without having to modify a ton of Nasal code.&lt;br /&gt;
&lt;br /&gt;
{{Note|Contributors wanting to check out the topics/canvas-radar fgdata branch, need to follow these 3 steps:&lt;br /&gt;
* git remote add canvas-hackers git@gitorious.org:fg/canvas-hackers-fgdata.git&lt;br /&gt;
* git fetch canvas-hackers&lt;br /&gt;
* git checkout --track -b canvas-radar canvas-hackers/topics/canvas-radar&lt;br /&gt;
&lt;br /&gt;
This will give you a local branch named '''canvas-radar''', so that you can easily pull/push changes. &lt;br /&gt;
When pulling, it makes sense to pull with --rebase&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
Come up with a generic radar framework for [[MapStructure]] that is completely aircraft-agnostic, so that it can be easily adopted, integrated and customized by aircraft developers, but also by people  doing ATC related projects, like [[ATC-FS]] or [[ATC-aircraft]].&lt;br /&gt;
&lt;br /&gt;
Currently, we're in touch with Adrian to see if his [[Radio Propagation]] could be rebased against git/next and exposed via [[Nasal/CppBind]] to provide a better option for radar modeling. This is something that we should probably discuss with xiii (developer of the original Nasal code) and vivian (agradar developer) at some point, vivian also expressed interest in updating the agradar to support the Radio Propagation code written by Adrian[https://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg38923.html].&lt;br /&gt;
&lt;br /&gt;
Also, i4dnf  mentioned that we could benefit from making antenna profiles configurable for different aircraft. Adrian mentioned that he has access to the radar manual of the F16 and that he's familiar with the various operating modes.&lt;br /&gt;
&lt;br /&gt;
The Flightgear Next Gen Radar would be able to (not sorted) : &lt;br /&gt;
&lt;br /&gt;
# Be a lot faster as actual system (Using Canvas display and some C++ for high consuming function)&lt;br /&gt;
# Detect Heat/infrared&lt;br /&gt;
# Manage AESA radar. (Actually it's more complicated to manage non AESA radar -&amp;gt; cause of the sweep. -&amp;gt; No sweep for AESA)&lt;br /&gt;
#Manage DOPPLER radar DOPPLER (Actually, more complicated to manage &amp;quot;non doppler&amp;quot; radar. The purpose is to erase signature of airplane which are bellow us, and fly at low alt. We could even erase 0 kts aircraft -&amp;gt; The Pougatchev's Cobra should be able to make stall DOPPLER radar)&lt;br /&gt;
# BONUS : Terrain detection. Make an aircraft disapear if it's behind a mountain&lt;br /&gt;
# With the terrain detection : Allow to have a fast Terrain Following Mode&lt;br /&gt;
# Make it working with existing Radio Propagation code.&lt;br /&gt;
# Manage IFF/Transponder&lt;br /&gt;
# Display Radar on Nav Mfd&lt;br /&gt;
# Allow more than one radar on a plane, like AWACS or Russian aircraft which have a rear radar&lt;br /&gt;
# Manage laser targeting -&amp;gt; with a pod view and clicking (for non AI target like building)&lt;br /&gt;
# Allow simple re use of the radar on each aircraft military and also civilian&lt;br /&gt;
# Long term obj : Put a radar object in &amp;quot;each&amp;quot; missile on the missile.nas script&lt;br /&gt;
# More ?&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
Currently, we're playing around with a modified version of the [[MapStructure]] TFC (traffic) layer, to use this in a standalone XML dialog and customize it as needed. Once that is working as expected, we will investigate adding xiii's radar modeling code and replace the traffic/TCAS functionality accordingly. Afterwards, we will need to integrate this with the [[Canvas MFD Framework]] to ensure that aircraft developers can easily use the framework in their cockpits.&lt;br /&gt;
&lt;br /&gt;
At that point, it would then also make sense to check out the [[:Category:Fighter aircraft]] and [[:Category:Carrier-based aircraft]] categories to get in touch with the developers and maintainers of aircraft with RADAR, and ask them for adoption/integration feedback.&lt;br /&gt;
&lt;br /&gt;
Subsequently, it would make sense to look at existing hard-coded displays, like the agradar, groundradar and wxradar to support these use-cases, too.&lt;br /&gt;
Specifically, [[ATC-FS]] and [[ATC-aircraft]] could greatly benefit from this effort. &lt;br /&gt;
&lt;br /&gt;
5H1N0B1 also mentioned that a properly-designed component would allow other uses, too - such as for example, equipping [[Scripted AI Missiles]] with a real RADAR, or adding radar support to [[Bombable]] - likewise, it would be possible to add such radar displays to AWACS aircraft, or even to vessels like the [[Nimitz]].&lt;br /&gt;
&lt;br /&gt;
* [[Mirage 2000-5]] (5H1N0B1) {{Progressbar|10}}&lt;br /&gt;
* [[Saab JA-37 Viggen]] (Necolatis) {{Progressbar|10}}&lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=4&amp;amp;t=17709 Mig-29] (Mercury) {{Not done}}&lt;br /&gt;
* [[Grumman F-14 Tomcat]] (xiii) {{Not done}}&lt;br /&gt;
&lt;br /&gt;
== Radar/ATC Requirements ==&lt;br /&gt;
&lt;br /&gt;
These are primarily requirements for the Mirage2000 that is currently being revamped by 5H1N0B1[http://forum.flightgear.org/viewtopic.php?f=30&amp;amp;t=21955&amp;amp;p=199303&amp;amp;hilit=awacs#p199303], these changes could also be used to add ATC support to AWACS aircraft[http://forum.flightgear.org/viewtopic.php?f=19&amp;amp;t=21867&amp;amp;p=198427&amp;amp;hilit=awacs#p198417].&lt;br /&gt;
* Set up a dialog-based test bed {{Done}}&lt;br /&gt;
* Prototype a simple ATC/RADAR layer {{Progressbar|40}}&lt;br /&gt;
* Terrain layer (elevation height maps using the terrain presampler) see: [http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=17184&amp;amp;hilit=elevations+sampler#p163485] and [http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=17284&amp;amp;p=164347&amp;amp;hilit=heightmap#p164347] {{Not done}} (by 5H1N0B1)&lt;br /&gt;
* Custom Controllers for:&lt;br /&gt;
** azimuth-based filtering {{Not done}} (by 5H1N0B1)&lt;br /&gt;
** sweep mode (AESA) {{Not done}} (by 5H1N0B1)&lt;br /&gt;
** terrain awareness (filtering) {{Not done}} (by 5H1N0B1)&lt;br /&gt;
** heat detection based filtering {{Not done}} (by 5H1N0B1)&lt;br /&gt;
* select and animate symbols (targets) {{Not done}} (by 5H1N0B1)&lt;br /&gt;
* TCAS/transponder awareness for symbol animation/styling {{Not done}} (by 5H1N0B1)&lt;br /&gt;
* explore integrating this with Adrian's [[Radio propagation]] system via cppbind (Hooray) {{Not done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see [[ATC-FS]] and [[ATC-aircraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
== Creating a custom ATC/RADAR Layer ==&lt;br /&gt;
People already having some Nasal experience (property tree, OOP), should be able to complete this 20-30 minutes, and you would end up with an ATC display and a custom symbol - next, you will want to &amp;quot;filter&amp;quot; traffic based on surrrounding features like terrain, altitude, radar settings and radio propagation etc.&lt;br /&gt;
&lt;br /&gt;
If you find yourself getting stuck somewhere, look at some of the other .symbol/.lcontroller and .scontroller files - especially the shorter/simpler ones - and then read the wiki section about adding new layers a few times, and everything will start making sense&lt;br /&gt;
&lt;br /&gt;
Basically, this should get you going quickly:&lt;br /&gt;
* copy an existing set of files (better TFC* instead of VOR*), but name it &amp;quot;TARGET&amp;quot; instead of TFC: TARGET.symbol, TARGET.lcontroller, TARGET.symbol (RADAR may be a more appropriate name)&lt;br /&gt;
* you need to change the name to TARGET inside the 3 new TARGET* files (see the top of the new files, where 'TFC' can be seen)&lt;br /&gt;
** start by opening TARGET.scontroller and replace TFC with TARGET&lt;br /&gt;
** next, open TARGET.symbol - this contains the draw() and update() callbacks to draw/update a single symbol and animate it accordingly, also replace TFC with TARGET&lt;br /&gt;
** next, open TARGET.lcontroller - this contains the layer management code, a layer manages a vector of symbols, replace TFC with TARGET&lt;br /&gt;
* now, add the new files to MapStructure.nas: near the end of MapStructure.nas, in the loading code, there's a vector that contains the names to load, e.g. &amp;quot;VOR&amp;quot;, &amp;quot;DME&amp;quot;, and &amp;quot;TFC&amp;quot;, and so you will need to add &amp;quot;TARGET&amp;quot; there as well. This is to tell the framework about your newly created layer files.&lt;br /&gt;
&lt;br /&gt;
* once that is done, use the new &amp;quot;TARGET&amp;quot; identifier in the foreach vector in the Nasal section of the dialog seen above and its embedded canvas/nasal/load block &lt;br /&gt;
* this should give you a TCAS traffic (TFC) symbol using the TARGET handle when you run the dialog&lt;br /&gt;
(5H1N0B1 : I'm here)&lt;br /&gt;
* once that is working, you can customize the symbol by opening the TARGET.symbol file which contains the draw routine - for example by changing the color or using some custom font/label, or just using a SVG file via parsesevg() - see the NDB.draw file for an example on how to display a custom SVG file&lt;br /&gt;
* at this stage you should have a custom symbol rendered in all the places where MP/AI traffic is located, all driven via the TCAS function.&lt;br /&gt;
* so the next step is to make the code a bit smarter, especially look at the TFC.lcontroller and TFC.scontroller files&lt;br /&gt;
* it may even be a good idea to directly start with those, instead of the VOR files ...&lt;br /&gt;
* once that is working, i.e. 1) you have a custom symbol shown and see all the surrounding MP/AI traffic, you have already successfully created a simple ATC/radar screen!&lt;br /&gt;
* next, you would replace the data source (which is AI/MP traffic) with your own data source - for that, refer to the TARGET (TFC) files to see how the AI/MP traffic is added&lt;br /&gt;
* once you have added your own data source, you can change the heuristics accordingly - to handle terrain, radar range etc.&lt;br /&gt;
* your own objects should ideally be geo.nas Coord objects - that way, the system can directly support your traffic, you only need to derive from geo.Coord to make this happen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var myPosition3D = {&lt;br /&gt;
 new: func {&lt;br /&gt;
  return {parents:[geo.Coord.new() ]};&lt;br /&gt;
 },&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, you will want to investigate the positionedSearch class, which provides a powerful means to do range-based filtering of positioned objects, these can in turn be filtered (searched) for other characteristics, i.e. based on range, terrain, radio propagation or heat etc. Take a look at TARGET.lcontroller and its searchCmd() helper.&lt;br /&gt;
&lt;br /&gt;
If you  need help doing this, please check out the canvas subforum, and also post some screen shots, so that we can better help you&lt;br /&gt;
It would be a good idea to also start a fgdata topic branch so that we can better track your work and look at the code.&lt;br /&gt;
&lt;br /&gt;
== Custom Filtering ==&lt;br /&gt;
&lt;br /&gt;
Once the previously outlined steps are working, I would consider customizing the searchCmd in your lcontroller file.&lt;br /&gt;
At the moment, TFC.lcontoller works like this https://gitorious.org/fg/fgdata/source/c78b2f936891bffad49e27d84d952a0d45540eef:Nasal/canvas/map/TFC.lcontroller#&lt;br /&gt;
* get a list of AI and MP traffic (two vectors)&lt;br /&gt;
* foreach list of AI and MP traffic&lt;br /&gt;
* determine if each aircraft is within the range specified via in_range: https://gitorious.org/fg/fgdata/source/c78b2f936891bffad49e27d84d952a0d45540eef:Nasal/canvas/map/TFC.lcontroller#L50&lt;br /&gt;
* '''PLACEHOLDER'''&lt;br /&gt;
* if it is in range, the aircraft will be appended to the result vector&lt;br /&gt;
* the result vector will be returned, and later on used to call the draw/update routines in the *.symbol file (e.g. TRAFFIC.symbol)&lt;br /&gt;
&lt;br /&gt;
The line where I added PLACEHOLDER is where you could insert your own logic, i.e. the radar-specific stuff from xiii's code - such as checking distance, azimuth, altitude  - radar profile/signature, terrain etc - and only append the aircraft if the whole check evaluates to true.&lt;br /&gt;
&lt;br /&gt;
You will find that the whole lcontroller file uses a wrapper called &amp;quot;TrafficModel&amp;quot; - you can either extend this to use your &amp;quot;Target&amp;quot; class directly, or change your Target class accordingly.&lt;br /&gt;
The main thing is that your class should  be derived from a geo.Coord object, so that it has the lat/lon/alt methods available and can be directly processed by MapStructure without requiring further changes.&lt;br /&gt;
&lt;br /&gt;
You will see that the TrafficModel class is used in a few places - so this would need some changes if you use some different approach, but it's still simple. &lt;br /&gt;
The external interface is all about having lat/lon/alt (positions) and the .equals()  method&lt;br /&gt;
Overall, TrafficModel is just a dumb helper class that is a wrapper for geo.Coord() objects, so there's no reason why you shouldn't be able to extend your own Target class accordingly, you can use the TrafficModel as a template. I would just suggest to maintain the MVC separation at all times.&lt;br /&gt;
&lt;br /&gt;
Analogous to the in_range() helper, you could add other functions for your own filtering needs (altitude, terrain-obstruction etc) - it's better to use separate functions for each, than inflating a single function unnecessarily. As you can see, the in_range() function is unaware of TrafficModel specifics -it deals directly with lat/lon pairs..&lt;br /&gt;
&lt;br /&gt;
So it's simple to reuse as is.&lt;br /&gt;
TrafficModel itself is typically directly used via the constructor call: .new()&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Canvas_ND_framework&amp;diff=67896</id>
		<title>Canvas ND framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Canvas_ND_framework&amp;diff=67896"/>
		<updated>2014-02-19T15:33:31Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: /* Adding the navigation display to your aircraft */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Non-stable}}&lt;br /&gt;
&lt;br /&gt;
[[File:Canvasready.png|right]]&lt;br /&gt;
{{infobox subsystem&lt;br /&gt;
|image        = Navigation display MAP mode.png&lt;br /&gt;
|alt          = MAP mode with a [[Standard Instrument Departure|SID]] from Eindhoven Airport&lt;br /&gt;
|name         = NavDisplay&lt;br /&gt;
|started      = 11/2013 &lt;br /&gt;
|description  = [[Canvas]]/[[Nasal]] driven NDs&lt;br /&gt;
|status       = Under active development as of 12/2013&lt;br /&gt;
|maintainers  = Gijs, Hyde, Hooray, Philosopher&lt;br /&gt;
|developers   = [[User:Gijs]] (since 11/2013)&lt;br /&gt;
}}&lt;br /&gt;
The '''navigation display''' ('''ND''') is a display in a glass cockpit, providing information about an aircraft's lateral situation. As of late 2013, a new ND ([[Navigation display]] being the old) is in development for [[FlightGear]] using the new [[MapStructure]] back-end for charting purposes, and SVG symbols animated via Nasal functions for any non-mapping aspects. Thanks to [[Canvas]], much more complex and sophisticated graphics are possible now, without having to know any C++, and without having to rebuild FlightGear from source. Anybody able to run FlightGear and a text editor, can now easily use and extend the ND framework.&lt;br /&gt;
&lt;br /&gt;
It can be found on [[Git]] in fgdata/master (2.99). The main source is located in &amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Nasal/canvas/map/navdisplay.mfd|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Adding the navigation display to your aircraft ==&lt;br /&gt;
The new ND is available in FlightGear 3.0 as of February 2014. &lt;br /&gt;
&lt;br /&gt;
Note that the latest ND code is currently only available in Git and not in the latest stable release. &lt;br /&gt;
# Add a surface object to your 3D model and apply a place holder texture to it. You can refer to the 747-400 and 777 for examples.&lt;br /&gt;
# Copy the ND.nas file of the Boeing 777 into your own aircraft directory (&amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Aircraft/777/Models/Instruments/ND/ND.nas|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt;). &lt;br /&gt;
# Add the file to the &amp;lt;nasal&amp;gt; block in your aircraft's [[Aircraft-set.xml|-set.xml]] file.&lt;br /&gt;
# In order to customize the ND for your specific aircraft, change a few options in your ND.nas file:&lt;br /&gt;
## the node behind &amp;lt;code&amp;gt;addPlacement&amp;lt;/code&amp;gt; is the name of the object in your 3D model. For multiple independent NDs, each ND should have its own object (and thus placement node). The 777 for example has a &amp;quot;ndScreenL&amp;quot; and a &amp;quot;ndScreenR&amp;quot;.&lt;br /&gt;
## Rename the properties in the &amp;quot;myCockpit_switches&amp;quot; hash at the top of the ND.nas file to match your own properties (range selector, mode selector etc.), see {{Git link|gitorious|fg/fgdata|master|Aircraft/747-400/Models/Cockpit/Instruments/ND/ND.nas|3|22|pre=[[$FG_ROOT]]/}} You're advised to use the defaults (and change other systems of your aircraft accordingly). For an overview of switches, see [[#Cockpit switches]].&lt;br /&gt;
# Add knobs/buttons to the 3D model of your cockpit to control the various options of the ND. See &amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Aircraft/777/Models/Instruments/EFIS/efis-ctl1.xml|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt; for an example.&lt;br /&gt;
# Add a binding to your screen(s) to open the ND in a popup dialog. See &amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Aircraft/777/Models/Instruments/ND/ND_L.xml|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt; for an example.&lt;br /&gt;
&lt;br /&gt;
That's the only thing you need to do right now. future changes will be in navdisplay.mfd and will be automatically available to you once they're committed/merged, no changes needed in your ND.nas at all, except for additional switches/buttons that may be created, and which would obviously need to be mapped to your cockpit hot spots.&lt;br /&gt;
&lt;br /&gt;
If you are facing problems with the steps outlined above, please get in touch via the article's talk page or the forum, so that the instructions can be improved accordingly. Thank you!&lt;br /&gt;
&lt;br /&gt;
More detailed instruction. See if it could help. &lt;br /&gt;
ND integration: How it was done on the mirage 2000 :&lt;br /&gt;
The integration is simple :&lt;br /&gt;
&lt;br /&gt;
0) Have a update compiled version of flightgear.&lt;br /&gt;
&lt;br /&gt;
1) Have the 3D model in this way : &lt;br /&gt;
&lt;br /&gt;
 3D MFD -&amp;gt;&lt;br /&gt;
   - a) 3D Border (border of the screen, with scew etc)&lt;br /&gt;
   - b) 3D Button/swith, molette, turnable button&lt;br /&gt;
   - c) A 3D Screen object, with :&lt;br /&gt;
     - perfect size&lt;br /&gt;
     - Single texture, -&amp;gt; with perfect size&lt;br /&gt;
     - Perfect size of the UVmap&lt;br /&gt;
&lt;br /&gt;
2) Copy pasta ND.nas&lt;br /&gt;
2.1)Add the ND.nas in your basis xml file at Nasal part.&lt;br /&gt;
&lt;br /&gt;
3) Edit ND.nas : &lt;br /&gt;
  -a) Rename the screen to match with the object in 1)c) &lt;br /&gt;
  -b) If it a single mfd, you do not need another object, so suppress the line (when it's calling the object itself)&lt;br /&gt;
  -c) Keep the properties name -&amp;gt; it's just ok. We just need to input it with xml button in 1)b)&lt;br /&gt;
&lt;br /&gt;
4) Code the xml itself.&lt;br /&gt;
Really simple, it's just playing with properties : for example this for airport property : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!--######################## Airports ############################--&amp;gt;&lt;br /&gt;
  &amp;lt;animation&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;pick&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;object-name&amp;gt;bt-h1&amp;lt;/object-name&amp;gt;&lt;br /&gt;
    &amp;lt;visible&amp;gt;true&amp;lt;/visible&amp;gt;&lt;br /&gt;
    &amp;lt;action&amp;gt;&lt;br /&gt;
        &amp;lt;button&amp;gt;0&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
         &amp;lt;command&amp;gt;property-toggle&amp;lt;/command&amp;gt;&lt;br /&gt;
         &amp;lt;property&amp;gt;/instrumentation/efis/inputs/arpt&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/action&amp;gt;&lt;br /&gt;
  &amp;lt;/animation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Or here again for the range selection :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;animation&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;pick&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;object-name&amp;gt;trim1&amp;lt;/object-name&amp;gt;&lt;br /&gt;
    &amp;lt;action&amp;gt;&lt;br /&gt;
      &amp;lt;button&amp;gt;4&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;!--  scroll up --&amp;gt;&lt;br /&gt;
      &amp;lt;repeatable&amp;gt;false&amp;lt;/repeatable&amp;gt;   &lt;br /&gt;
      &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;property-cycle&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;property&amp;gt;/instrumentation/efis/inputs/range-nm&amp;lt;/property&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;20&amp;lt;/value&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;40&amp;lt;/value&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;80&amp;lt;/value&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;160&amp;lt;/value&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;320&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/binding&amp;gt;   &lt;br /&gt;
    &amp;lt;/action&amp;gt;&lt;br /&gt;
  &amp;lt;/animation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;animation&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;pick&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;object-name&amp;gt;trim1&amp;lt;/object-name&amp;gt;&lt;br /&gt;
    &amp;lt;action&amp;gt;&lt;br /&gt;
      &amp;lt;button&amp;gt;3&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;!--  scroll up --&amp;gt;&lt;br /&gt;
      &amp;lt;repeatable&amp;gt;false&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;property-cycle&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;property&amp;gt;/instrumentation/efis/inputs/range-nm&amp;lt;/property&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;320&amp;lt;/value&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;160&amp;lt;/value&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;80&amp;lt;/value&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;40&amp;lt;/value&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;20&amp;lt;/value&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;              &lt;br /&gt;
      &amp;lt;/binding&amp;gt;   &lt;br /&gt;
    &amp;lt;/action&amp;gt;&lt;br /&gt;
  &amp;lt;/animation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) Then you can optionnaly put this : &lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;pick&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;blackbkd&amp;lt;/object-name&amp;gt;&lt;br /&gt;
   &amp;lt;action&amp;gt;&lt;br /&gt;
      &amp;lt;button&amp;gt;0&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;repeatable&amp;gt;false&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
      &amp;lt;binding&amp;gt;&lt;br /&gt;
         &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
         &amp;lt;script&amp;gt;mirage2000.showNd();&amp;lt;/script&amp;gt;&lt;br /&gt;
      &amp;lt;/binding&amp;gt;&lt;br /&gt;
   &amp;lt;/action&amp;gt;&lt;br /&gt;
  &amp;lt;/animation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where 'blackbkd' is the screen 1)c). This last thing allow you to open a dialog box with what the actual canvas should display in your 1)c) screen. This is very usefull to check all the differents step when something isn't working well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Normally following these step, you should have a working Mfd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cockpit switches ===&lt;br /&gt;
{{Note|The default property is '''relative''' to the root location of your ND, it is NOT an absolute path. Boolean values (true/false) can also be just 1/0. The list of switches below is correct for FG 3.0 - future versions may support additional switches. In the future, we're also going to make the ND style-able this way, so that colors, fonts, size (LOD) and symbols can be customized easily via ND.nas }}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Switch !! Description !! Default property !! Accepted values&lt;br /&gt;
|-&lt;br /&gt;
| toggle_airports || Display airports on the map || /inputs/arpt || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_centered || Center ND modes || /inputs/nd-centered || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_data || Display way point data on the map || /inputs/data || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_display_mode || Change display mode || /mfd/display-mode || APP, MAP, PLAN, VOR&lt;br /&gt;
|-&lt;br /&gt;
| toggle_display_type || Change display type || /mfd/display-type || CRT, LCD&lt;br /&gt;
|-&lt;br /&gt;
| toggle_position || Display position data on the map (currently unused) || /inputs/pos || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_range || Range of the maps in nautical miles || /inputs/range-nm || Any positive number&lt;br /&gt;
|-&lt;br /&gt;
| toggle_terrain || Terrain radar (currently unused) || /inputs/terr || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_traffic || Display [[Traffic alert and collision avoidance system|TCAS]] data || /inputs/tfc || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_true_north || Toggle true or magnetic north || /mfd/true-north || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_waypoints || Display way points (fixes) on the map || /inputs/wpt || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_weather || Weather radar || /inputs/wxr || true, false&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Aircraft Support ==&lt;br /&gt;
For the framework to  become sufficiently generalized and aircraft-agnostic, we need many different aircraft to adopt it and aircraft developers to provide feedback regarding missing features. &lt;br /&gt;
We are looking for people interested in integrating the new system, so that it can be better developed with different requirements in mind.&lt;br /&gt;
&lt;br /&gt;
The 747 and 777 are the primary reference examples for now.&lt;br /&gt;
The following people/aircraft are currently in the process of adopting the new NavDisplay (please add any related efforts here):&lt;br /&gt;
&lt;br /&gt;
* 01/2014: Gijs  (747-400) {{Progressbar|100}}&lt;br /&gt;
* 01/2014: Hyde (777-200) {{Progressbar|100}}&lt;br /&gt;
* 02/2014: mueko (A320) {{Progressbar|90}} [http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=22045&amp;amp;p=200427#p200422]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* 02/2014: D-MKF1 (707) {{Progressbar|10}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* 02/2014: Soitanen (737-300) {{Progressbar|80}} [http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=21509&amp;amp;start=15#p200304]&lt;br /&gt;
* 02/2014: Sascha (A310) {{Progressbar|10}}&lt;br /&gt;
* 02/2014: drdavid (DC10) {{Progressbar|30}}&lt;br /&gt;
* 02/2014: 5H1N0B1 (m2000-5) {{Progressbar|100}}&lt;br /&gt;
&lt;br /&gt;
If you are finding yourself having problems integrating the framework, please refer to already integrated aircraft as reference/example, or get in touch with their  maintainers - ideally, via the forum, so that everybody can contribute and benefit.&lt;br /&gt;
&lt;br /&gt;
Note that this will initially just give you a Boeing-centric ND, because it is currently being developed by the 747/777 maintainers primarily - please use the issue tracker to file feature requests for missing features. Over time, the framework will grow and become more flexible,so that also specifics of non-Boeing aircraft can be properly emulated. But obviously this will take a while. We invite aircraft developers to help extend and refine the framework accordingly.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&amp;lt;gallery mode=packed widths=230px heights=230px&amp;gt;&lt;br /&gt;
Navigation display MAP mode.png|MAP mode&lt;br /&gt;
Navigation display centered MAP mode.png|Centered MAP mode&lt;br /&gt;
Navigation display PLAN mode.png|PLAN mode&lt;br /&gt;
NavDisplay-GUIFrontend.png|NavDisplay/MapStructure testbed&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding new features ==&lt;br /&gt;
{{Note|Please get in touch with [[User:Gijs]] before touching navdisplay.mfd&lt;br /&gt;
If you are primarily interested in porting/adding new '''mapping''' layers (such as e.g. waypoints, route, weather etc), please see the [[MapStructure]] article for details. &lt;br /&gt;
Otherwise, this section is focused on dealing with non-mapping aspects, i.e. ND-specific SVG symbols and animating them via properties and calculations. Typically, a new symbol will require 10-20 lines of code added to navdisplay.mfd - it will typically take 5-10 minutes to add a new animated symbol to the ND.}}&lt;br /&gt;
If you want to add new features to the navdisplay.mfd code, you need to open that file and map an SVG element to a callback routine - that's how everything is working currently.&lt;br /&gt;
&lt;br /&gt;
There's a &amp;quot;configuration hash&amp;quot; called &amp;quot;NDStyles&amp;quot; at the top of the file. Each aircraft can have its own entry in NDStyles, such as NDStyles[&amp;quot;B747-400&amp;quot;] or NavDisplay[&amp;quot;777&amp;quot;]. Then, all the required canvas callbacks are listed there, i.e. the font mapper etc.&lt;br /&gt;
&lt;br /&gt;
There's also an entry for a custom SVG filename. However, we encourage people to get in touch with Gijs and Hyde to help coordinate all ND development a little - so that a common (and shared) SVG file can be used, this is already the case for the B744 and B777 - we're hoping to get other aircraft developers involved, to help generalize the SVG file, instead of having dozens of different files and symbols. Most features should be identical or at least very similar. Which is why it's a good idea to get in touch with other people working on the ND code.&lt;br /&gt;
&lt;br /&gt;
Lines 52-131 set up existing layers, which are now shared with the GUI code - so that is where new layers are added.&lt;br /&gt;
Aircraft specific SVG elements are added at the end, after line 132&lt;br /&gt;
&lt;br /&gt;
For now, we suggest to directly use the 747-400 ND - but the framework is now prepared to easily style &amp;amp; customize it for different aircraft, we will probably add a tutorial to the wiki to explain how things are hanging together there. The constructor and init methods may still need some work to generalize things there, because they are basically still the original code.&lt;br /&gt;
&lt;br /&gt;
So to replace the 747 ND and customize it, these are the steps:&lt;br /&gt;
&lt;br /&gt;
* add a new entry to the NDStyles hash, for example &amp;quot;777-200&amp;quot;&lt;br /&gt;
* you can simply copy the configuration stuff from the 747 to get started&lt;br /&gt;
* start customizing things there&lt;br /&gt;
* open the SVG file in inkscape and change it as required, save it &lt;br /&gt;
* change the SVG filename in your NDStyles[&amp;quot;777-200&amp;quot;] hash entry to  match your own file name&lt;br /&gt;
* provide animation callbacks for any 777 specific elements&lt;br /&gt;
* open your own copy of ND.nas&lt;br /&gt;
* change the constructor call .new() to specify the name of your new NDStyles entry&lt;br /&gt;
* by default, this is 747-400 for the time being, for example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var NDCpt = ND.new(&amp;quot;instrumentation/efis&amp;quot;, myCockpit_switches, &amp;quot;777-200&amp;quot; );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the &amp;quot;777-200&amp;quot; part needs to match the identifier used in the NDStyles hash.&lt;br /&gt;
&lt;br /&gt;
To get started, just copy the whole 747-400 section in NDStyles and rename it to match your needs. Once that is working (getting a 747-400 ND via the 777-200 identifier), you can simply replace the SVG file name and add your own update handlers to incrementally come up with your own ND.&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
=== mapping vs. SVG animation ===&lt;br /&gt;
&lt;br /&gt;
It would be really nice to have two sides to navdisplay.mfd: a map (your/my area) and svg ui (Gijs' and aircraft devs' responsibility) 0.o.&lt;br /&gt;
&lt;br /&gt;
:  am all for supporting the two use-cases you mentioned - then again, the old code is fragile enough, so I wouldn't add to it - the main thing the old code was all about was establishing the MVC separation so that draw routines can be reused - and that's basically done, so no need to keep the old cruft around ...&lt;br /&gt;
&lt;br /&gt;
: Regarding the navdisplay stuff itself - well, it's pretty much the original code still, i.e. the design is only just evolving - algorithmically, it's still not very optimized - MapStructure only helps with mapping aspects obviously.&lt;br /&gt;
&lt;br /&gt;
: I was going to suggest the &amp;quot;SVG/element animation&amp;quot; separation too - but I think Gijs etc already need to handle quite a bit of re-thinking, because things are no longer as straightforward. In the long run, it will probably happen over time - especially once other things are generalized, especially for generic PFD/EICAS/CDU/EFB functionality - these would all benefit from a corresponding &amp;quot;symbol animation&amp;quot; abstraction eventually like TheTom mentioned on the forum: PFD: A common framework in the background&lt;br /&gt;
&lt;br /&gt;
: Honestly, it would have been great to have such a framework to implement MapStructure on top of it - but obviously, it's a chicken/egg issue :-)&lt;br /&gt;
&lt;br /&gt;
: Currently, the main danger here is that people are going to start using copy &amp;amp; paste again to adopt things like Gijs' PFD, like mentioned by Zakalawe: if someone provides a 'system' I'll use it but I'm not interested in writing it myself&lt;br /&gt;
&lt;br /&gt;
: So the real question is if people can be convinced to team up and come up with a generic and reusable design, or follow the original PFD/ND approach instead - interestingly, most of TheTom's work in this area (MCDU/EICAS) seems pretty reusable, also outside aircraft, i.e. usable via the GUI.&lt;br /&gt;
&lt;br /&gt;
After having looked at navdisplay.mfd, I think we only need to separate a few things using io.include() to make this happen automatically over time - all the 747/Boeing-specific stuff would be moved into &amp;quot;config&amp;quot; hashes and factored out of navdisplay.mfd - into something like &amp;quot;boeing747.nd&amp;quot; that would leave us with very little code remaining in navdisplay - basically a single class and a few methods with foreach loops.&lt;br /&gt;
&lt;br /&gt;
So we would end up with a layered design like this:&lt;br /&gt;
&lt;br /&gt;
* boeing.nd (config hashes via io.include)&lt;br /&gt;
* navdisplay (down-stripped code, aircraft-agnostic)&lt;br /&gt;
* MapStructure (needs no changes)&lt;br /&gt;
* Symbol/Animation Layer (shared with PFD, ND, CDU, EFB, would be developed/grown over time)&lt;br /&gt;
* canvas APIs (as is)&lt;br /&gt;
* canvas subsystem (as is)&lt;br /&gt;
* OSG / Shiva (as is)&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
* use switches hash to procedurally create a GUI dialog with buttons for each toggle_action (TFC,CTR,WXR etc) {{Not done}}&lt;br /&gt;
* make sure that the frameworks with properly with time-warp, sim-rate speed-up and replay {{Not done}}&lt;br /&gt;
* remove (old) disabled layers &lt;br /&gt;
* make the timer update interval configurable via constructor {{Not done}}&lt;br /&gt;
* consider adding hooks to generalize those huge conditionals in update() some more {{Not done}}&lt;br /&gt;
* use foreach() to hide()/show() or setVisible() groups of symbols {{Not done}}&lt;br /&gt;
* make this more aircraft agnostic by getting  rid of 747/Boeing specific assumptions {{Not done}}&lt;br /&gt;
* unify switch/case|default handling (again, huge conditionals in there) {{Not done}}&lt;br /&gt;
* on_update() helper should probably support global listeners and timers, too - i.e. via a hash spec ? {{Not done}}&lt;br /&gt;
* the whole symbol lookup needs to cleaned up (getElementById etc) {{Not done}}&lt;br /&gt;
* introduce a common &amp;quot;compute&amp;quot; field in the update/predicate hash and make its results available to is_true/false etc {{Not done}}&lt;br /&gt;
* use io.include to include boeing specific stuff{{Not done}}&lt;br /&gt;
* NDSoruceDriver should be generalized and combined with MapStructure's aircraftpos.controller {{Not done}}&lt;br /&gt;
* the radio/autopilot listeners need to be set up in the lcontroller file, they're just empty stubs for now {{Not done}}&lt;br /&gt;
* there are 3 foreach loops in newMFD() setting up symbols currently-we only need ONE: loop 2+3 should be removed and use the loop #1 method {{Not done}}  &lt;br /&gt;
* clean up the ctor and generalize the newMFD() method {{Not done}}&lt;br /&gt;
* move stuff out of the update() method into the aircraft-specific configuration hash {{Not done}}&lt;br /&gt;
* generalize/extend on_update() method to support other (global) properties and/or listeners/timers to run predicates {{Not done}}&lt;br /&gt;
* identify opportunities for improving the framework {{Not done}}&lt;br /&gt;
* support multiple routes (WPT/RTE), as per the [[Nasal Flightplan]] API (Hooray) {{Not done}}&lt;br /&gt;
* move the config hash out of the navdisplay.mfd file and use io.include instead {{Not done}}&lt;br /&gt;
* document SVG symbols currently assumed to be available in the ctor {{Not done}}&lt;br /&gt;
* consider using some of the SGCondition/StateMachine stuff in SG {{Not done}}&lt;br /&gt;
&lt;br /&gt;
== Bugs ==&lt;br /&gt;
&lt;br /&gt;
== Feature Requests ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft instruments]]&lt;br /&gt;
[[Category:Canvas]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Canvas_ND_framework&amp;diff=67715</id>
		<title>Canvas ND framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Canvas_ND_framework&amp;diff=67715"/>
		<updated>2014-02-16T12:35:27Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: /* Aircraft Support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Non-stable}}&lt;br /&gt;
&lt;br /&gt;
[[File:Canvasready.png|right]]&lt;br /&gt;
{{infobox subsystem&lt;br /&gt;
|image        = Navigation display MAP mode.png&lt;br /&gt;
|alt          = MAP mode with a [[Standard Instrument Departure|SID]] from Eindhoven Airport&lt;br /&gt;
|name         = NavDisplay&lt;br /&gt;
|started      = 11/2013 &lt;br /&gt;
|description  = [[Canvas]]/[[Nasal]] driven NDs&lt;br /&gt;
|status       = Under active development as of 12/2013&lt;br /&gt;
|maintainers  = Gijs, Hyde, Hooray, Philosopher&lt;br /&gt;
|developers   = [[User:Gijs]] (since 11/2013)&lt;br /&gt;
}}&lt;br /&gt;
The '''navigation display''' ('''ND''') is a display in a glass cockpit, providing information about an aircraft's lateral situation. As of late 2013, a new ND ([[Navigation display]] being the old) is in development for [[FlightGear]] using the new [[MapStructure]] back-end for charting purposes, and SVG symbols animated via Nasal functions for any non-mapping aspects. Thanks to [[Canvas]], much more complex and sophisticated graphics are possible now, without having to know any C++, and without having to rebuild FlightGear from source. &lt;br /&gt;
&lt;br /&gt;
It can be found on [[Git]] in fgdata/master (2.99). The main source is located in &amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Nasal/canvas/map/navdisplay.mfd|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Adding the navigation display to your aircraft ==&lt;br /&gt;
Note that the ND is currently only available in Git and not in the latest stable release. It will become available with FlightGear 3.0 in February 2014.&lt;br /&gt;
&lt;br /&gt;
# Add a surface object to your 3D model and apply a place holder texture to it. You can refer to the 747-400 and 777 for examples.&lt;br /&gt;
# Copy the ND.nas file of the Boeing 777 into your own aircraft directory (&amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Aircraft/777/Models/Instruments/ND/ND.nas|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt;). &lt;br /&gt;
# Add the file to the &amp;lt;nasal&amp;gt; block in your aircraft's [[Aircraft-set.xml|-set.xml]] file.&lt;br /&gt;
# In order to customize the ND for your specific aircraft, change a few options in your ND.nas file:&lt;br /&gt;
## the node behind &amp;lt;code&amp;gt;addPlacement&amp;lt;/code&amp;gt; is the name of the object in your 3D model. For multiple independent NDs, each ND should have its own object (and thus placement node). The 777 for example has a &amp;quot;ndScreenL&amp;quot; and a &amp;quot;ndScreenR&amp;quot;.&lt;br /&gt;
## Rename the properties in the &amp;quot;myCockpit_switches&amp;quot; hash at the top of the ND.nas file to match your own properties (range selector, mode selector etc.), see {{Git link|gitorious|fg/fgdata|master|Aircraft/747-400/Models/Cockpit/Instruments/ND/ND.nas|3|22|pre=[[$FG_ROOT]]/}} You're advised to use the defaults (and change other systems of your aircraft accordingly). For an overview of switches, see [[#Cockpit switches]].&lt;br /&gt;
# Add knobs/buttons to the 3D model of your cockpit to control the various options of the ND. See &amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Aircraft/777/Models/Instruments/EFIS/efis-ctl1.xml|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt; for an example.&lt;br /&gt;
# Add a binding to your screen(s) to open the ND in a popup dialog. See &amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Aircraft/777/Models/Instruments/ND/ND_L.xml|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt; for an example.&lt;br /&gt;
&lt;br /&gt;
That's the only thing you need to do right now. future changes will be in navdisplay.mfd and will be automatically available to you once they're committed/merged, no changes needed in your ND.nas at all, except for additional switches/buttons that may be created, and which would obviously need to be mapped to your cockpit hot spots.&lt;br /&gt;
&lt;br /&gt;
If you are facing problems with the steps outlined above, please get in touch via the article's talk page or the forum, so that the instructions can be improved accordingly. Thank you!&lt;br /&gt;
&lt;br /&gt;
=== Cockpit switches ===&lt;br /&gt;
{{Note|The default property is '''relative''' to the root location of your ND, it is NOT an absolute path. Boolean values (true/false) can also be just 1/0. The list of switches below is correct for FG 3.0 - future versions may support additional switches. In the future, we're also going to make the ND style-able this way, so that colors, fonts, size (LOD) and symbols can be customized easily via ND.nas }}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Switch !! Description !! Default property !! Accepted values&lt;br /&gt;
|-&lt;br /&gt;
| toggle_airports || Display airports on the map || /inputs/arpt || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_centered || Center ND modes || /inputs/nd-centered || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_data || Display way point data on the map || /inputs/data || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_display_mode || Change display mode || /mfd/display-mode || APP, MAP, PLAN, VOR&lt;br /&gt;
|-&lt;br /&gt;
| toggle_display_type || Change display type || /mfd/display-type || CRT, LCD&lt;br /&gt;
|-&lt;br /&gt;
| toggle_position || Display position data on the map (currently unused) || /inputs/pos || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_range || Range of the maps in nautical miles || /inputs/range-nm || Any positive number&lt;br /&gt;
|-&lt;br /&gt;
| toggle_terrain || Terrain radar (currently unused) || /inputs/terr || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_traffic || Display [[Traffic alert and collision avoidance system|TCAS]] data || /inputs/tfc || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_true_north || Toggle true or magnetic north || /mfd/true-north || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_waypoints || Display way points (fixes) on the map || /inputs/wpt || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_weather || Weather radar || /inputs/wxr || true, false&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Aircraft Support ==&lt;br /&gt;
For the framework to  become sufficiently generalized and aircraft-agnostic, we need many different aircraft to adopt it and aircraft developers to provide feedback regarding missing features. &lt;br /&gt;
We are looking for people interested in integrating the new system, so that it can be better developed with different requirements in mind.&lt;br /&gt;
&lt;br /&gt;
The 747 and 777 are the primary reference examples for now.&lt;br /&gt;
The following people/aircraft are currently in the process of adopting the new NavDisplay (please add any related efforts here):&lt;br /&gt;
&lt;br /&gt;
* 01/2014: Gijs  (747-400) {{Progressbar|100}}&lt;br /&gt;
* 01/2014: Hyde (777-200) {{Progressbar|100}}&lt;br /&gt;
* 02/2014: mueko (A320) {{Progressbar|90}} [http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=22045&amp;amp;p=200427#p200422]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* 02/2014: D-MKF1 (707) {{Progressbar|10}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* 02/2014: Soitanen (737-300) {{Progressbar|80}} [http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=21509&amp;amp;start=15#p200304]&lt;br /&gt;
* 02/2014: Sascha (A310) {{Progressbar|10}}&lt;br /&gt;
* 02/2014: drdavid (DC10) {{Progressbar|30}}&lt;br /&gt;
* 02/2014: 5H1N0B1 (m2000-5) {{Progressbar|100}}&lt;br /&gt;
&lt;br /&gt;
If you are finding yourself having problems integrating the framework, please refer to already integrated aircraft as reference/example, or get in touch with their  maintainers - ideally, via the forum, so that everybody can contribute and benefit.&lt;br /&gt;
&lt;br /&gt;
Note that this will initially just give you a Boeing-centric ND, because it is currently being developed by the 747/777 maintainers primarily - please use the issue tracker to file feature requests for missing features. Over time, the framework will grow and become more flexible,so that also specifics of non-Boeing aircraft can be properly emulated. But obviously this will take a while. We invite aircraft developers to help extend and refine the framework accordingly.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&amp;lt;gallery mode=packed widths=230px heights=230px&amp;gt;&lt;br /&gt;
Navigation display MAP mode.png|MAP mode&lt;br /&gt;
Navigation display centered MAP mode.png|Centered MAP mode&lt;br /&gt;
Navigation display PLAN mode.png|PLAN mode&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding new features ==&lt;br /&gt;
{{Note|Please get in touch with [[User:Gijs]] before touching navdisplay.mfd&lt;br /&gt;
If you are primarily interested in porting/adding new layers (such as e.g. waypoints, route, weather etc), please see the [[MapStructure]] article for details. &lt;br /&gt;
Otherwise, this section is focused on dealing with non-mapping aspects, i.e. ND-specific SVG symbols and animating them via properties and calculations. Typically, a new symbol will require 10-20 lines of code added to navdisplay.mfd}}&lt;br /&gt;
If you want to add new features to the navdisplay.mfd code, you need to open that file and map an SVG element to a callback routine - that's how everything is working currently.&lt;br /&gt;
&lt;br /&gt;
There's a &amp;quot;configuration hash&amp;quot; called &amp;quot;NDStyles&amp;quot; at the top of the file. Each aircraft can have its own entry in NDStyles, such as NDStyles[&amp;quot;B747-400&amp;quot;] or NavDisplay[&amp;quot;777&amp;quot;]. Then, all the required canvas callbacks are listed there, i.e. the font mapper etc.&lt;br /&gt;
&lt;br /&gt;
There's also an entry for a custom SVG filename. However, we encourage people to get in touch with Gijs and Hyde to help coordinate all ND development a little - so that a common (and shared) SVG file can be used, this is already the case for the B744 and B777 - we're hoping to get other aircraft developers involved, to help generalize the SVG file, instead of having dozens of different files and symbols. Most features should be identical or at least very similar. Which is why it's a good idea to get in touch with other people working on the ND code.&lt;br /&gt;
&lt;br /&gt;
Lines 52-131 set up existing layers, which are now shared with the GUI code - so that is where new layers are added.&lt;br /&gt;
Aircraft specific SVG elements are added at the end, after line 132&lt;br /&gt;
&lt;br /&gt;
For now, we suggest to directly use the 747-400 ND - but the framework is now prepared to easily style &amp;amp; customize it for different aircraft, we will probably add a tutorial to the wiki to explain how things are hanging together there. The constructor and init methods may still need some work to generalize things there, because they are basically still the original code.&lt;br /&gt;
&lt;br /&gt;
So to replace the 747 ND and customize it, these are the steps:&lt;br /&gt;
&lt;br /&gt;
* add a new entry to the NDStyles hash, for example &amp;quot;777-200&amp;quot;&lt;br /&gt;
* you can simply copy the configuration stuff from the 747 to get started&lt;br /&gt;
* start customizing things there&lt;br /&gt;
* open the SVG file in inkscape and change it as required, save it &lt;br /&gt;
* change the SVG filename in your NDStyles[&amp;quot;777-200&amp;quot;] hash entry to  match your own file name&lt;br /&gt;
* provide animation callbacks for any 777 specific elements&lt;br /&gt;
* open your own copy of ND.nas&lt;br /&gt;
* change the constructor call .new() to specify the name of your new NDStyles entry&lt;br /&gt;
* by default, this is 747-400 for the time being, for example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var NDCpt = ND.new(&amp;quot;instrumentation/efis&amp;quot;, myCockpit_switches, &amp;quot;777-200&amp;quot; );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the &amp;quot;777-200&amp;quot; part needs to match the identifier used in the NDStyles hash.&lt;br /&gt;
&lt;br /&gt;
To get started, just copy the whole 747-400 section in NDStyles and rename it to match your needs. Once that is working (getting a 747-400 ND via the 777-200 identifier), you can simply replace the SVG file name and add your own update handlers to incrementally come up with your own ND.&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* make the timer update interval configurable via constructor {{Not done}}&lt;br /&gt;
* the radio/autopilot listeners need to be set up in the lcontroller file, they're just empty stubs for now {{Not done}}&lt;br /&gt;
* there are 3 foreach loops in newMFD() setting up symbols currently-we only need ONE: loop 2+3 should be removed and use the loop #1 method {{Not done}}  &lt;br /&gt;
* clean up the ctor and generalize the newMFD() method {{Not done}}&lt;br /&gt;
* move stuff out of the update() method into the aircraft-specific configuration hash {{Not done}}&lt;br /&gt;
* generalize/extend on_update() method to support other (global) properties and/or listeners/timers to run predicates {{Not done}}&lt;br /&gt;
* identify opportunities for improving the framework {{Not done}}&lt;br /&gt;
* support multiple routes (WPT/RTE), as per the [[Nasal Flightplan]] API (Hooray) {{Not done}}&lt;br /&gt;
* move the config hash out of the navdisplay.mfd file and use io.include instead {{Not done}}&lt;br /&gt;
* document SVG symbols currently assumed to be available in the ctor {{Not done}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft instruments]]&lt;br /&gt;
[[Category:Canvas]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Canvas_ND_framework&amp;diff=67714</id>
		<title>Canvas ND framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Canvas_ND_framework&amp;diff=67714"/>
		<updated>2014-02-16T12:34:18Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: /* Aircraft Support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Non-stable}}&lt;br /&gt;
&lt;br /&gt;
[[File:Canvasready.png|right]]&lt;br /&gt;
{{infobox subsystem&lt;br /&gt;
|image        = Navigation display MAP mode.png&lt;br /&gt;
|alt          = MAP mode with a [[Standard Instrument Departure|SID]] from Eindhoven Airport&lt;br /&gt;
|name         = NavDisplay&lt;br /&gt;
|started      = 11/2013 &lt;br /&gt;
|description  = [[Canvas]]/[[Nasal]] driven NDs&lt;br /&gt;
|status       = Under active development as of 12/2013&lt;br /&gt;
|maintainers  = Gijs, Hyde, Hooray, Philosopher&lt;br /&gt;
|developers   = [[User:Gijs]] (since 11/2013)&lt;br /&gt;
}}&lt;br /&gt;
The '''navigation display''' ('''ND''') is a display in a glass cockpit, providing information about an aircraft's lateral situation. As of late 2013, a new ND ([[Navigation display]] being the old) is in development for [[FlightGear]] using the new [[MapStructure]] back-end for charting purposes, and SVG symbols animated via Nasal functions for any non-mapping aspects. Thanks to [[Canvas]], much more complex and sophisticated graphics are possible now, without having to know any C++, and without having to rebuild FlightGear from source. &lt;br /&gt;
&lt;br /&gt;
It can be found on [[Git]] in fgdata/master (2.99). The main source is located in &amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Nasal/canvas/map/navdisplay.mfd|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Adding the navigation display to your aircraft ==&lt;br /&gt;
Note that the ND is currently only available in Git and not in the latest stable release. It will become available with FlightGear 3.0 in February 2014.&lt;br /&gt;
&lt;br /&gt;
# Add a surface object to your 3D model and apply a place holder texture to it. You can refer to the 747-400 and 777 for examples.&lt;br /&gt;
# Copy the ND.nas file of the Boeing 777 into your own aircraft directory (&amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Aircraft/777/Models/Instruments/ND/ND.nas|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt;). &lt;br /&gt;
# Add the file to the &amp;lt;nasal&amp;gt; block in your aircraft's [[Aircraft-set.xml|-set.xml]] file.&lt;br /&gt;
# In order to customize the ND for your specific aircraft, change a few options in your ND.nas file:&lt;br /&gt;
## the node behind &amp;lt;code&amp;gt;addPlacement&amp;lt;/code&amp;gt; is the name of the object in your 3D model. For multiple independent NDs, each ND should have its own object (and thus placement node). The 777 for example has a &amp;quot;ndScreenL&amp;quot; and a &amp;quot;ndScreenR&amp;quot;.&lt;br /&gt;
## Rename the properties in the &amp;quot;myCockpit_switches&amp;quot; hash at the top of the ND.nas file to match your own properties (range selector, mode selector etc.), see {{Git link|gitorious|fg/fgdata|master|Aircraft/747-400/Models/Cockpit/Instruments/ND/ND.nas|3|22|pre=[[$FG_ROOT]]/}} You're advised to use the defaults (and change other systems of your aircraft accordingly). For an overview of switches, see [[#Cockpit switches]].&lt;br /&gt;
# Add knobs/buttons to the 3D model of your cockpit to control the various options of the ND. See &amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Aircraft/777/Models/Instruments/EFIS/efis-ctl1.xml|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt; for an example.&lt;br /&gt;
# Add a binding to your screen(s) to open the ND in a popup dialog. See &amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Aircraft/777/Models/Instruments/ND/ND_L.xml|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt; for an example.&lt;br /&gt;
&lt;br /&gt;
That's the only thing you need to do right now. future changes will be in navdisplay.mfd and will be automatically available to you once they're committed/merged, no changes needed in your ND.nas at all, except for additional switches/buttons that may be created, and which would obviously need to be mapped to your cockpit hot spots.&lt;br /&gt;
&lt;br /&gt;
If you are facing problems with the steps outlined above, please get in touch via the article's talk page or the forum, so that the instructions can be improved accordingly. Thank you!&lt;br /&gt;
&lt;br /&gt;
=== Cockpit switches ===&lt;br /&gt;
{{Note|The default property is '''relative''' to the root location of your ND, it is NOT an absolute path. Boolean values (true/false) can also be just 1/0. The list of switches below is correct for FG 3.0 - future versions may support additional switches. In the future, we're also going to make the ND style-able this way, so that colors, fonts, size (LOD) and symbols can be customized easily via ND.nas }}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Switch !! Description !! Default property !! Accepted values&lt;br /&gt;
|-&lt;br /&gt;
| toggle_airports || Display airports on the map || /inputs/arpt || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_centered || Center ND modes || /inputs/nd-centered || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_data || Display way point data on the map || /inputs/data || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_display_mode || Change display mode || /mfd/display-mode || APP, MAP, PLAN, VOR&lt;br /&gt;
|-&lt;br /&gt;
| toggle_display_type || Change display type || /mfd/display-type || CRT, LCD&lt;br /&gt;
|-&lt;br /&gt;
| toggle_position || Display position data on the map (currently unused) || /inputs/pos || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_range || Range of the maps in nautical miles || /inputs/range-nm || Any positive number&lt;br /&gt;
|-&lt;br /&gt;
| toggle_terrain || Terrain radar (currently unused) || /inputs/terr || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_traffic || Display [[Traffic alert and collision avoidance system|TCAS]] data || /inputs/tfc || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_true_north || Toggle true or magnetic north || /mfd/true-north || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_waypoints || Display way points (fixes) on the map || /inputs/wpt || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_weather || Weather radar || /inputs/wxr || true, false&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Aircraft Support ==&lt;br /&gt;
For the framework to  become sufficiently generalized and aircraft-agnostic, we need many different aircraft to adopt it and aircraft developers to provide feedback regarding missing features. &lt;br /&gt;
We are looking for people interested in integrating the new system, so that it can be better developed with different requirements in mind.&lt;br /&gt;
&lt;br /&gt;
The 747 and 777 are the primary reference examples for now.&lt;br /&gt;
The following people/aircraft are currently in the process of adopting the new NavDisplay (please add any related efforts here):&lt;br /&gt;
&lt;br /&gt;
* 01/2014: Gijs  (747-400) {{Progressbar|100}}&lt;br /&gt;
* 01/2014: Hyde (777-200) {{Progressbar|100}}&lt;br /&gt;
* 02/2014: mueko (A320) {{Progressbar|90}} [http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=22045&amp;amp;p=200427#p200422]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* 02/2014: D-MKF1 (707) {{Progressbar|10}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* 02/2014: Soitanen (737-300) {{Progressbar|80}} [http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=21509&amp;amp;start=15#p200304]&lt;br /&gt;
* 02/2014: Sascha (A310) {{Progressbar|10}}&lt;br /&gt;
* 02/2014: drdavid (DC10) {{Progressbar|30}}&lt;br /&gt;
* 02/2014: 5H1N0B1 (m2000-5) {{Progressbar|95}}&lt;br /&gt;
&lt;br /&gt;
If you are finding yourself having problems integrating the framework, please refer to already integrated aircraft as reference/example, or get in touch with their  maintainers - ideally, via the forum, so that everybody can contribute and benefit.&lt;br /&gt;
&lt;br /&gt;
Note that this will initially just give you a Boeing-centric ND, because it is currently being developed by the 747/777 maintainers primarily - please use the issue tracker to file feature requests for missing features. Over time, the framework will grow and become more flexible,so that also specifics of non-Boeing aircraft can be properly emulated. But obviously this will take a while. We invite aircraft developers to help extend and refine the framework accordingly.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&amp;lt;gallery mode=packed widths=230px heights=230px&amp;gt;&lt;br /&gt;
Navigation display MAP mode.png|MAP mode&lt;br /&gt;
Navigation display centered MAP mode.png|Centered MAP mode&lt;br /&gt;
Navigation display PLAN mode.png|PLAN mode&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding new features ==&lt;br /&gt;
{{Note|Please get in touch with [[User:Gijs]] before touching navdisplay.mfd&lt;br /&gt;
If you are primarily interested in porting/adding new layers (such as e.g. waypoints, route, weather etc), please see the [[MapStructure]] article for details. &lt;br /&gt;
Otherwise, this section is focused on dealing with non-mapping aspects, i.e. ND-specific SVG symbols and animating them via properties and calculations. Typically, a new symbol will require 10-20 lines of code added to navdisplay.mfd}}&lt;br /&gt;
If you want to add new features to the navdisplay.mfd code, you need to open that file and map an SVG element to a callback routine - that's how everything is working currently.&lt;br /&gt;
&lt;br /&gt;
There's a &amp;quot;configuration hash&amp;quot; called &amp;quot;NDStyles&amp;quot; at the top of the file. Each aircraft can have its own entry in NDStyles, such as NDStyles[&amp;quot;B747-400&amp;quot;] or NavDisplay[&amp;quot;777&amp;quot;]. Then, all the required canvas callbacks are listed there, i.e. the font mapper etc.&lt;br /&gt;
&lt;br /&gt;
There's also an entry for a custom SVG filename. However, we encourage people to get in touch with Gijs and Hyde to help coordinate all ND development a little - so that a common (and shared) SVG file can be used, this is already the case for the B744 and B777 - we're hoping to get other aircraft developers involved, to help generalize the SVG file, instead of having dozens of different files and symbols. Most features should be identical or at least very similar. Which is why it's a good idea to get in touch with other people working on the ND code.&lt;br /&gt;
&lt;br /&gt;
Lines 52-131 set up existing layers, which are now shared with the GUI code - so that is where new layers are added.&lt;br /&gt;
Aircraft specific SVG elements are added at the end, after line 132&lt;br /&gt;
&lt;br /&gt;
For now, we suggest to directly use the 747-400 ND - but the framework is now prepared to easily style &amp;amp; customize it for different aircraft, we will probably add a tutorial to the wiki to explain how things are hanging together there. The constructor and init methods may still need some work to generalize things there, because they are basically still the original code.&lt;br /&gt;
&lt;br /&gt;
So to replace the 747 ND and customize it, these are the steps:&lt;br /&gt;
&lt;br /&gt;
* add a new entry to the NDStyles hash, for example &amp;quot;777-200&amp;quot;&lt;br /&gt;
* you can simply copy the configuration stuff from the 747 to get started&lt;br /&gt;
* start customizing things there&lt;br /&gt;
* open the SVG file in inkscape and change it as required, save it &lt;br /&gt;
* change the SVG filename in your NDStyles[&amp;quot;777-200&amp;quot;] hash entry to  match your own file name&lt;br /&gt;
* provide animation callbacks for any 777 specific elements&lt;br /&gt;
* open your own copy of ND.nas&lt;br /&gt;
* change the constructor call .new() to specify the name of your new NDStyles entry&lt;br /&gt;
* by default, this is 747-400 for the time being, for example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var NDCpt = ND.new(&amp;quot;instrumentation/efis&amp;quot;, myCockpit_switches, &amp;quot;777-200&amp;quot; );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the &amp;quot;777-200&amp;quot; part needs to match the identifier used in the NDStyles hash.&lt;br /&gt;
&lt;br /&gt;
To get started, just copy the whole 747-400 section in NDStyles and rename it to match your needs. Once that is working (getting a 747-400 ND via the 777-200 identifier), you can simply replace the SVG file name and add your own update handlers to incrementally come up with your own ND.&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* make the timer update interval configurable via constructor {{Not done}}&lt;br /&gt;
* the radio/autopilot listeners need to be set up in the lcontroller file, they're just empty stubs for now {{Not done}}&lt;br /&gt;
* there are 3 foreach loops in newMFD() setting up symbols currently-we only need ONE: loop 2+3 should be removed and use the loop #1 method {{Not done}}  &lt;br /&gt;
* clean up the ctor and generalize the newMFD() method {{Not done}}&lt;br /&gt;
* move stuff out of the update() method into the aircraft-specific configuration hash {{Not done}}&lt;br /&gt;
* generalize/extend on_update() method to support other (global) properties and/or listeners/timers to run predicates {{Not done}}&lt;br /&gt;
* identify opportunities for improving the framework {{Not done}}&lt;br /&gt;
* support multiple routes (WPT/RTE), as per the [[Nasal Flightplan]] API (Hooray) {{Not done}}&lt;br /&gt;
* move the config hash out of the navdisplay.mfd file and use io.include instead {{Not done}}&lt;br /&gt;
* document SVG symbols currently assumed to be available in the ctor {{Not done}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft instruments]]&lt;br /&gt;
[[Category:Canvas]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Canvas_ND_framework&amp;diff=67608</id>
		<title>Canvas ND framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Canvas_ND_framework&amp;diff=67608"/>
		<updated>2014-02-14T09:54:18Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: /* Aircraft Support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Non-stable}}&lt;br /&gt;
&lt;br /&gt;
[[File:Canvasready.png|right]]&lt;br /&gt;
{{infobox subsystem&lt;br /&gt;
|image        = Navigation display MAP mode.png&lt;br /&gt;
|alt          = MAP mode with a [[Standard Instrument Departure|SID]] from Eindhoven Airport&lt;br /&gt;
|name         = NavDisplay&lt;br /&gt;
|started      = 11/2013 &lt;br /&gt;
|description  = [[Canvas]]/[[Nasal]] driven NDs&lt;br /&gt;
|status       = Under active development as of 12/2013&lt;br /&gt;
|maintainers  = Gijs, Hyde, Hooray, Philosopher&lt;br /&gt;
|developers   = [[User:Gijs]] (since 11/2013)&lt;br /&gt;
}}&lt;br /&gt;
The '''navigation display''' ('''ND''') is a display in a glass cockpit, providing information about an aircraft's lateral situation. As of late 2013, a new ND ([[Navigation display]] being the old) is in development for [[FlightGear]] using the new [[MapStructure]] back-end for charting purposes, and SVG symbols animated via Nasal functions for any non-mapping aspects. Thanks to [[Canvas]], much more complex and sophisticated graphics are possible now, without having to know any C++, and without having to rebuild FlightGear from source. &lt;br /&gt;
&lt;br /&gt;
It can be found on [[Git]] in fgdata/master (2.99). The main source is located in &amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Nasal/canvas/map/navdisplay.mfd|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Adding the navigation display to your aircraft ==&lt;br /&gt;
Note that the ND is currently only available in Git and not in the latest stable release. It will become available with FlightGear 3.0 in February 2014.&lt;br /&gt;
&lt;br /&gt;
# Add a surface object to your 3D model and apply a place holder texture to it. You can refer to the 747-400 and 777 for examples.&lt;br /&gt;
# Copy the ND.nas file of the Boeing 777 into your own aircraft directory (&amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Aircraft/777/Models/Instruments/ND/ND.nas|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt;). &lt;br /&gt;
# Add the file to the &amp;lt;nasal&amp;gt; block in your aircraft's [[Aircraft-set.xml|-set.xml]] file.&lt;br /&gt;
# In order to customize the ND for your specific aircraft, change a few options in your ND.nas file:&lt;br /&gt;
## the node behind &amp;lt;code&amp;gt;addPlacement&amp;lt;/code&amp;gt; is the name of the object in your 3D model. For multiple independent NDs, each ND should have its own object (and thus placement node). The 777 for example has a &amp;quot;ndScreenL&amp;quot; and a &amp;quot;ndScreenR&amp;quot;.&lt;br /&gt;
## Rename the properties in the &amp;quot;myCockpit_switches&amp;quot; hash at the top of the ND.nas file to match your own properties (range selector, mode selector etc.), see {{Git link|gitorious|fg/fgdata|master|Aircraft/747-400/Models/Cockpit/Instruments/ND/ND.nas|3|22|pre=[[$FG_ROOT]]/}} You're advised to use the defaults (and change other systems of your aircraft accordingly). For an overview of switches, see [[#Cockpit switches]].&lt;br /&gt;
# Add knobs/buttons to the 3D model of your cockpit to control the various options of the ND. See &amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Aircraft/777/Models/Instruments/EFIS/efis-ctl1.xml|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt; for an example.&lt;br /&gt;
# Add a binding to your screen(s) to open the ND in a popup dialog. See &amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Aircraft/777/Models/Instruments/ND/ND_L.xml|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt; for an example.&lt;br /&gt;
&lt;br /&gt;
That's the only thing you need to do right now. future changes will be in navdisplay.mfd and will be automatically available to you once they're committed/merged, no changes needed in your ND.nas at all, except for additional switches/buttons that may be created, and which would obviously need to be mapped to your cockpit hot spots.&lt;br /&gt;
&lt;br /&gt;
If you are facing problems with the steps outlined above, please get in touch via the article's talk page or the forum, so that the instructions can be improved accordingly. Thank you!&lt;br /&gt;
&lt;br /&gt;
=== Cockpit switches ===&lt;br /&gt;
{{Note|The default property is '''relative''' to the root location of your ND, it is NOT an absolute path. Boolean values (true/false) can also be just 1/0. The list of switches below is correct for FG 3.0 - future versions may support additional switches. In the future, we're also going to make the ND style-able this way, so that colors, fonts, size (LOD) and symbols can be customized easily via ND.nas }}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Switch !! Description !! Default property !! Accepted values&lt;br /&gt;
|-&lt;br /&gt;
| toggle_airports || Display airports on the map || /inputs/arpt || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_centered || Center ND modes || /inputs/nd-centered || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_data || Display way point data on the map || /inputs/data || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_display_mode || Change display mode || /mfd/display-mode || APP, MAP, PLAN, VOR&lt;br /&gt;
|-&lt;br /&gt;
| toggle_display_type || Change display type || /mfd/display-type || CRT, LCD&lt;br /&gt;
|-&lt;br /&gt;
| toggle_position || Display position data on the map (currently unused) || /inputs/pos || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_range || Range of the maps in nautical miles || /inputs/range-nm || Any positive number&lt;br /&gt;
|-&lt;br /&gt;
| toggle_terrain || Terrain radar (currently unused) || /inputs/terr || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_traffic || Display [[Traffic alert and collision avoidance system|TCAS]] data || /inputs/tfc || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_true_north || Toggle true or magnetic north || /mfd/true-north || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_waypoints || Display way points (fixes) on the map || /inputs/wpt || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_weather || Weather radar || /inputs/wxr || true, false&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Aircraft Support ==&lt;br /&gt;
For the framework to  become sufficiently generalized and aircraft-agnostic, we need many different aircraft to adopt it and aircraft developers to provide feedback regarding missing features. &lt;br /&gt;
We are looking for people interested in integrating the new system, so that it can be better developed with different requirements in mind.&lt;br /&gt;
&lt;br /&gt;
The 747 and 777 are the primary reference examples for now.&lt;br /&gt;
The following people/aircraft are currently in the process of adopting the new NavDisplay (please add any related efforts here):&lt;br /&gt;
&lt;br /&gt;
* 01/2014: Gijs  (747-400) {{Progressbar|100}}&lt;br /&gt;
* 01/2014: Hyde (777-200) {{Progressbar|100}}&lt;br /&gt;
* 02/2014: mueko (A320) {{Progressbar|90}} [http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=22045&amp;amp;p=200427#p200422]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* 02/2014: D-MKF1 (707) {{Progressbar|10}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* 02/2014: Soitanen (737-300) {{Progressbar|80}} [http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=21509&amp;amp;start=15#p200304]&lt;br /&gt;
* 02/2014: Sascha (A310) {{Progressbar|10}}&lt;br /&gt;
* 02/2014: drdavid (DC10) {{Progressbar|30}}&lt;br /&gt;
* 02/2014: 5H1N0B1 (m2000-5) {{Progressbar|70}}&lt;br /&gt;
&lt;br /&gt;
If you are finding yourself having problems integrating the framework, please refer to already integrated aircraft as reference/example, or get in touch with their  maintainers - ideally, via the forum, so that everybody can contribute and benefit.&lt;br /&gt;
&lt;br /&gt;
Note that this will initially just give you a Boeing-centric ND, because it is currently being developed by the 747/777 maintainers primarily - please use the issue tracker to file feature requests for missing features. Over time, the framework will grow and become more flexible,so that also specifics of non-Boeing aircraft can be properly emulated. But obviously this will take a while. We invite aircraft developers to help extend and refine the framework accordingly.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&amp;lt;gallery mode=packed widths=230px heights=230px&amp;gt;&lt;br /&gt;
Navigation display MAP mode.png|MAP mode&lt;br /&gt;
Navigation display centered MAP mode.png|Centered MAP mode&lt;br /&gt;
Navigation display PLAN mode.png|PLAN mode&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding new features ==&lt;br /&gt;
{{Note|Please get in touch with [[User:Gijs]] before touching navdisplay.mfd&lt;br /&gt;
If you are primarily interested in porting/adding new layers (such as e.g. waypoints, route, weather etc), please see the [[MapStructure]] article for details. &lt;br /&gt;
Otherwise, this section is focused on dealing with non-mapping aspects, i.e. ND-specific SVG symbols and animating them via properties and calculations. Typically, a new symbol will require 10-20 lines of code added to navdisplay.mfd}}&lt;br /&gt;
If you want to add new features to the navdisplay.mfd code, you need to open that file and map an SVG element to a callback routine - that's how everything is working currently.&lt;br /&gt;
&lt;br /&gt;
There's a &amp;quot;configuration hash&amp;quot; called &amp;quot;NDStyles&amp;quot; at the top of the file. Each aircraft can have its own entry in NDStyles, such as NDStyles[&amp;quot;B747-400&amp;quot;] or NavDisplay[&amp;quot;777&amp;quot;]. Then, all the required canvas callbacks are listed there, i.e. the font mapper etc.&lt;br /&gt;
&lt;br /&gt;
There's also an entry for a custom SVG filename. However, we encourage people to get in touch with Gijs and Hyde to help coordinate all ND development a little - so that a common (and shared) SVG file can be used, this is already the case for the B744 and B777 - we're hoping to get other aircraft developers involved, to help generalize the SVG file, instead of having dozens of different files and symbols. Most features should be identical or at least very similar. Which is why it's a good idea to get in touch with other people working on the ND code.&lt;br /&gt;
&lt;br /&gt;
Lines 52-131 set up existing layers, which are now shared with the GUI code - so that is where new layers are added.&lt;br /&gt;
Aircraft specific SVG elements are added at the end, after line 132&lt;br /&gt;
&lt;br /&gt;
For now, we suggest to directly use the 747-400 ND - but the framework is now prepared to easily style &amp;amp; customize it for different aircraft, we will probably add a tutorial to the wiki to explain how things are hanging together there. The constructor and init methods may still need some work to generalize things there, because they are basically still the original code.&lt;br /&gt;
&lt;br /&gt;
So to replace the 747 ND and customize it, these are the steps:&lt;br /&gt;
&lt;br /&gt;
* add a new entry to the NDStyles hash, for example &amp;quot;777-200&amp;quot;&lt;br /&gt;
* you can simply copy the configuration stuff from the 747 to get started&lt;br /&gt;
* start customizing things there&lt;br /&gt;
* open the SVG file in inkscape and change it as required, save it &lt;br /&gt;
* change the SVG filename in your NDStyles[&amp;quot;777-200&amp;quot;] hash entry to  match your own file name&lt;br /&gt;
* provide animation callbacks for any 777 specific elements&lt;br /&gt;
* open your own copy of ND.nas&lt;br /&gt;
* change the constructor call .new() to specify the name of your new NDStyles entry&lt;br /&gt;
* by default, this is 747-400 for the time being, for example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var NDCpt = ND.new(&amp;quot;instrumentation/efis&amp;quot;, myCockpit_switches, &amp;quot;777-200&amp;quot; );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the &amp;quot;777-200&amp;quot; part needs to match the identifier used in the NDStyles hash.&lt;br /&gt;
&lt;br /&gt;
To get started, just copy the whole 747-400 section in NDStyles and rename it to match your needs. Once that is working (getting a 747-400 ND via the 777-200 identifier), you can simply replace the SVG file name and add your own update handlers to incrementally come up with your own ND.&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* make the timer update interval configurable via constructor {{Not done}}&lt;br /&gt;
* the radio/autopilot listeners need to be set up in the lcontroller file, they're just empty stubs for now {{Not done}}&lt;br /&gt;
* there are 3 foreach loops in newMFD() setting up symbols currently-we only need ONE: loop 2+3 should be removed and use the loop #1 method {{Not done}}  &lt;br /&gt;
* clean up the ctor and generalize the newMFD() method {{Not done}}&lt;br /&gt;
* move stuff out of the update() method into the aircraft-specific configuration hash {{Not done}}&lt;br /&gt;
* generalize/extend on_update() method to support other (global) properties and/or listeners/timers to run predicates {{Not done}}&lt;br /&gt;
* identify opportunities for improving the framework {{Not done}}&lt;br /&gt;
* support multiple routes (WPT/RTE), as per the [[Nasal Flightplan]] API (Hooray) {{Not done}}&lt;br /&gt;
* move the config hash out of the navdisplay.mfd file and use io.include instead {{Not done}}&lt;br /&gt;
* document SVG symbols currently assumed to be available in the ctor {{Not done}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft instruments]]&lt;br /&gt;
[[Category:Canvas]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Canvas_ND_framework&amp;diff=67600</id>
		<title>Canvas ND framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Canvas_ND_framework&amp;diff=67600"/>
		<updated>2014-02-13T21:40:00Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: /* Aircraft Support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Non-stable}}&lt;br /&gt;
&lt;br /&gt;
[[File:Canvasready.png|right]]&lt;br /&gt;
{{infobox subsystem&lt;br /&gt;
|image        = Navigation display MAP mode.png&lt;br /&gt;
|alt          = MAP mode with a [[Standard Instrument Departure|SID]] from Eindhoven Airport&lt;br /&gt;
|name         = NavDisplay&lt;br /&gt;
|started      = 11/2013 &lt;br /&gt;
|description  = [[Canvas]]/[[Nasal]] driven NDs&lt;br /&gt;
|status       = Under active development as of 12/2013&lt;br /&gt;
|maintainers  = Gijs, Hyde, Hooray, Philosopher&lt;br /&gt;
|developers   = [[User:Gijs]] (since 11/2013)&lt;br /&gt;
}}&lt;br /&gt;
The '''navigation display''' ('''ND''') is a display in a glass cockpit, providing information about an aircraft's lateral situation. As of late 2013, a new ND ([[Navigation display]] being the old) is in development for [[FlightGear]] using the new [[MapStructure]] back-end for charting purposes, and SVG symbols animated via Nasal functions for any non-mapping aspects. Thanks to [[Canvas]], much more complex and sophisticated graphics are possible now, without having to know any C++, and without having to rebuild FlightGear from source. &lt;br /&gt;
&lt;br /&gt;
It can be found on [[Git]] in fgdata/master (2.99). The main source is located in &amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Nasal/canvas/map/navdisplay.mfd|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Adding the navigation display to your aircraft ==&lt;br /&gt;
Note that the ND is currently only available in Git and not in the latest stable release. It will become available with FlightGear 3.0 in February 2014.&lt;br /&gt;
&lt;br /&gt;
# Add a surface object to your 3D model and apply a place holder texture to it. You can refer to the 747-400 and 777 for examples.&lt;br /&gt;
# Copy the ND.nas file of the Boeing 777 into your own aircraft directory (&amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Aircraft/777/Models/Instruments/ND/ND.nas|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt;). &lt;br /&gt;
# Add the file to the &amp;lt;nasal&amp;gt; block in your aircraft's [[Aircraft-set.xml|-set.xml]] file.&lt;br /&gt;
# In order to customize the ND for your specific aircraft, change a few options in your ND.nas file:&lt;br /&gt;
## the node behind &amp;lt;code&amp;gt;addPlacement&amp;lt;/code&amp;gt; is the name of the object in your 3D model. For multiple independent NDs, each ND should have its own object (and thus placement node). The 777 for example has a &amp;quot;ndScreenL&amp;quot; and a &amp;quot;ndScreenR&amp;quot;.&lt;br /&gt;
## Rename the properties in the &amp;quot;myCockpit_switches&amp;quot; hash at the top of the ND.nas file to match your own properties (range selector, mode selector etc.), see {{Git link|gitorious|fg/fgdata|master|Aircraft/747-400/Models/Cockpit/Instruments/ND/ND.nas|3|22|pre=[[$FG_ROOT]]/}} You're advised to use the defaults (and change other systems of your aircraft accordingly). For an overview of switches, see [[#Cockpit switches]].&lt;br /&gt;
# Add knobs/buttons to the 3D model of your cockpit to control the various options of the ND. See &amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Aircraft/777/Models/Instruments/EFIS/efis-ctl1.xml|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt; for an example.&lt;br /&gt;
# Add a binding to your screen(s) to open the ND in a popup dialog. See &amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Aircraft/777/Models/Instruments/ND/ND_L.xml|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt; for an example.&lt;br /&gt;
&lt;br /&gt;
That's the only thing you need to do right now. future changes will be in navdisplay.mfd and will be automatically available to you once they're committed/merged, no changes needed in your ND.nas at all, except for additional switches/buttons that may be created, and which would obviously need to be mapped to your cockpit hot spots.&lt;br /&gt;
&lt;br /&gt;
If you are facing problems with the steps outlined above, please get in touch via the article's talk page or the forum, so that the instructions can be improved accordingly. Thank you!&lt;br /&gt;
&lt;br /&gt;
=== Cockpit switches ===&lt;br /&gt;
{{Note|The default property is '''relative''' to the root location of your ND, it is NOT an absolute path. Boolean values (true/false) can also be just 1/0. The list of switches below is correct for FG 3.0 - future versions may support additional switches. In the future, we're also going to make the ND style-able this way, so that colors, fonts, size (LOD) and symbols can be customized easily via ND.nas }}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Switch !! Description !! Default property !! Accepted values&lt;br /&gt;
|-&lt;br /&gt;
| toggle_airports || Display airports on the map || /inputs/arpt || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_centered || Center ND modes || /inputs/nd-centered || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_data || Display way point data on the map || /inputs/data || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_display_mode || Change display mode || /mfd/display-mode || APP, MAP, PLAN, VOR&lt;br /&gt;
|-&lt;br /&gt;
| toggle_display_type || Change display type || /mfd/display-type || CRT, LCD&lt;br /&gt;
|-&lt;br /&gt;
| toggle_position || Display position data on the map (currently unused) || /inputs/pos || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_range || Range of the maps in nautical miles || /inputs/range-nm || Any positive number&lt;br /&gt;
|-&lt;br /&gt;
| toggle_terrain || Terrain radar (currently unused) || /inputs/terr || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_traffic || Display [[Traffic alert and collision avoidance system|TCAS]] data || /inputs/tfc || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_true_north || Toggle true or magnetic north || /mfd/true-north || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_waypoints || Display way points (fixes) on the map || /inputs/wpt || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_weather || Weather radar || /inputs/wxr || true, false&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Aircraft Support ==&lt;br /&gt;
For the framework to  become sufficiently generalized and aircraft-agnostic, we need many different aircraft to adopt it and aircraft developers to provide feedback regarding missing features. &lt;br /&gt;
We are looking for people interested in integrating the new system, so that it can be better developed with different requirements in mind.&lt;br /&gt;
&lt;br /&gt;
The 747 and 777 are the primary reference examples for now.&lt;br /&gt;
The following people/aircraft are currently in the process of adopting the new NavDisplay (please add any related efforts here):&lt;br /&gt;
&lt;br /&gt;
* 01/2014: Gijs  (747-400) {{Progressbar|100}}&lt;br /&gt;
* 01/2014: Hyde (777-200) {{Progressbar|100}}&lt;br /&gt;
* 02/2014: mueko (A320) {{Progressbar|90}} [http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=22045&amp;amp;p=200427#p200422]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* 02/2014: D-MKF1 (707) {{Progressbar|10}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* 02/2014: Soitanen (737-300) {{Progressbar|80}} [http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=21509&amp;amp;start=15#p200304]&lt;br /&gt;
* 02/2014: Sascha (A310) {{Progressbar|10}}&lt;br /&gt;
* 02/2014: drdavid (DC10) {{Progressbar|30}}&lt;br /&gt;
* 02/2014: 5H1N0B1 (m2000-5) {{Progressbar|60}}&lt;br /&gt;
&lt;br /&gt;
If you are finding yourself having problems integrating the framework, please refer to already integrated aircraft as reference/example, or get in touch with their  maintainers - ideally, via the forum, so that everybody can contribute and benefit.&lt;br /&gt;
&lt;br /&gt;
Note that this will initially just give you a Boeing-centric ND, because it is currently being developed by the 747/777 maintainers primarily - please use the issue tracker to file feature requests for missing features. Over time, the framework will grow and become more flexible,so that also specifics of non-Boeing aircraft can be properly emulated. But obviously this will take a while. We invite aircraft developers to help extend and refine the framework accordingly.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&amp;lt;gallery mode=packed widths=230px heights=230px&amp;gt;&lt;br /&gt;
Navigation display MAP mode.png|MAP mode&lt;br /&gt;
Navigation display centered MAP mode.png|Centered MAP mode&lt;br /&gt;
Navigation display PLAN mode.png|PLAN mode&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding new features ==&lt;br /&gt;
{{Note|Please get in touch with [[User:Gijs]] before touching navdisplay.mfd&lt;br /&gt;
If you are primarily interested in porting/adding new layers (such as e.g. waypoints, route, weather etc), please see the [[MapStructure]] article for details. &lt;br /&gt;
Otherwise, this section is focused on dealing with non-mapping aspects, i.e. ND-specific SVG symbols and animating them via properties and calculations. Typically, a new symbol will require 10-20 lines of code added to navdisplay.mfd}}&lt;br /&gt;
If you want to add new features to the navdisplay.mfd code, you need to open that file and map an SVG element to a callback routine - that's how everything is working currently.&lt;br /&gt;
&lt;br /&gt;
There's a &amp;quot;configuration hash&amp;quot; called &amp;quot;NDStyles&amp;quot; at the top of the file. Each aircraft can have its own entry in NDStyles, such as NDStyles[&amp;quot;B747-400&amp;quot;] or NavDisplay[&amp;quot;777&amp;quot;]. Then, all the required canvas callbacks are listed there, i.e. the font mapper etc.&lt;br /&gt;
&lt;br /&gt;
There's also an entry for a custom SVG filename. However, we encourage people to get in touch with Gijs and Hyde to help coordinate all ND development a little - so that a common (and shared) SVG file can be used, this is already the case for the B744 and B777 - we're hoping to get other aircraft developers involved, to help generalize the SVG file, instead of having dozens of different files and symbols. Most features should be identical or at least very similar. Which is why it's a good idea to get in touch with other people working on the ND code.&lt;br /&gt;
&lt;br /&gt;
Lines 52-131 set up existing layers, which are now shared with the GUI code - so that is where new layers are added.&lt;br /&gt;
Aircraft specific SVG elements are added at the end, after line 132&lt;br /&gt;
&lt;br /&gt;
For now, we suggest to directly use the 747-400 ND - but the framework is now prepared to easily style &amp;amp; customize it for different aircraft, we will probably add a tutorial to the wiki to explain how things are hanging together there. The constructor and init methods may still need some work to generalize things there, because they are basically still the original code.&lt;br /&gt;
&lt;br /&gt;
So to replace the 747 ND and customize it, these are the steps:&lt;br /&gt;
&lt;br /&gt;
* add a new entry to the NDStyles hash, for example &amp;quot;777-200&amp;quot;&lt;br /&gt;
* you can simply copy the configuration stuff from the 747 to get started&lt;br /&gt;
* start customizing things there&lt;br /&gt;
* open the SVG file in inkscape and change it as required, save it &lt;br /&gt;
* change the SVG filename in your NDStyles[&amp;quot;777-200&amp;quot;] hash entry to  match your own file name&lt;br /&gt;
* provide animation callbacks for any 777 specific elements&lt;br /&gt;
* open your own copy of ND.nas&lt;br /&gt;
* change the constructor call .new() to specify the name of your new NDStyles entry&lt;br /&gt;
* by default, this is 747-400 for the time being, for example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var NDCpt = ND.new(&amp;quot;instrumentation/efis&amp;quot;, myCockpit_switches, &amp;quot;777-200&amp;quot; );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the &amp;quot;777-200&amp;quot; part needs to match the identifier used in the NDStyles hash.&lt;br /&gt;
&lt;br /&gt;
To get started, just copy the whole 747-400 section in NDStyles and rename it to match your needs. Once that is working (getting a 747-400 ND via the 777-200 identifier), you can simply replace the SVG file name and add your own update handlers to incrementally come up with your own ND.&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* make the timer update interval configurable via constructor {{Not done}}&lt;br /&gt;
* the radio/autopilot listeners need to be set up in the lcontroller file, they're just empty stubs for now {{Not done}}&lt;br /&gt;
* there are 3 foreach loops in newMFD() setting up symbols currently-we only need ONE: loop 2+3 should be removed and use the loop #1 method {{Not done}}  &lt;br /&gt;
* clean up the ctor and generalize the newMFD() method {{Not done}}&lt;br /&gt;
* move stuff out of the update() method into the aircraft-specific configuration hash {{Not done}}&lt;br /&gt;
* generalize/extend on_update() method to support other (global) properties and/or listeners/timers to run predicates {{Not done}}&lt;br /&gt;
* identify opportunities for improving the framework {{Not done}}&lt;br /&gt;
* support multiple routes (WPT/RTE), as per the [[Nasal Flightplan]] API (Hooray) {{Not done}}&lt;br /&gt;
* move the config hash out of the navdisplay.mfd file and use io.include instead {{Not done}}&lt;br /&gt;
* document SVG symbols currently assumed to be available in the ctor {{Not done}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft instruments]]&lt;br /&gt;
[[Category:Canvas]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Canvas_ND_framework&amp;diff=67540</id>
		<title>Canvas ND framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Canvas_ND_framework&amp;diff=67540"/>
		<updated>2014-02-11T20:24:51Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: /* Aircraft Support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Non-stable}}&lt;br /&gt;
&lt;br /&gt;
[[File:Canvasready.png|right]]&lt;br /&gt;
{{infobox subsystem&lt;br /&gt;
|image        = Navigation display MAP mode.png&lt;br /&gt;
|alt          = MAP mode with a [[Standard Instrument Departure|SID]] from Eindhoven Airport&lt;br /&gt;
|name         = NavDisplay&lt;br /&gt;
|started      = 11/2013 &lt;br /&gt;
|description  = [[Canvas]]/[[Nasal]] driven NDs&lt;br /&gt;
|status       = Under active development as of 12/2013&lt;br /&gt;
|maintainers  = Gijs, Hyde, Hooray, Philosopher&lt;br /&gt;
|developers   = [[User:Gijs]] (since 11/2013)&lt;br /&gt;
}}&lt;br /&gt;
The '''navigation display''' ('''ND''') is a display in a glass cockpit, providing information about an aircraft's lateral situation. As of late 2013, a new ND ([[Navigation display]] being the old) is in development for [[FlightGear]] using the new [[MapStructure]] back-end. Thanks to [[Canvas]], much more complex and sophisticated graphics are possible now, without having to know any C++, and without having to rebuild FlightGear from source. &lt;br /&gt;
&lt;br /&gt;
It can be found on [[Git]] in fgdata/master (2.99). The main source is located in &amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Nasal/canvas/map/navdisplay.mfd|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Adding the navigation display to your aircraft ==&lt;br /&gt;
Note that the ND is currently only available in Git and not in the latest stable release. It will become available with FlightGear 3.0 in February 2014.&lt;br /&gt;
&lt;br /&gt;
# Add a surface object to your 3D model and apply a place holder texture to it. You can refer to the 747-400 and 777 for examples.&lt;br /&gt;
# Copy the ND.nas file of the Boeing 777 into your own aircraft directory (&amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Aircraft/777/Models/Instruments/ND/ND.nas|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt;). &lt;br /&gt;
# Add the file to the &amp;lt;nasal&amp;gt; block in your aircraft's [[Aircraft-set.xml|-set.xml]] file.&lt;br /&gt;
# In order to customize the ND for your specific aircraft, change a few options in your ND.nas file:&lt;br /&gt;
## the node behind &amp;lt;code&amp;gt;addPlacement&amp;lt;/code&amp;gt; is the name of the object in your 3D model. For multiple independent NDs, each ND should have its own object (and thus placement node). The 777 for example has a &amp;quot;ndScreenL&amp;quot; and a &amp;quot;ndScreenR&amp;quot;.&lt;br /&gt;
## Rename the properties in the &amp;quot;myCockpit_switches&amp;quot; hash at the top of the ND.nas file to match your own properties (range selector, mode selector etc.), see {{Git link|gitorious|fg/fgdata|master|Aircraft/747-400/Models/Cockpit/Instruments/ND/ND.nas|3|22|pre=[[$FG_ROOT]]/}} You're advised to use the defaults (and change other systems of your aircraft accordingly). For an overview of switches, see [[#Cockpit switches]].&lt;br /&gt;
# Add knobs/buttons to the 3D model of your cockpit to control the various options of the ND. See &amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Aircraft/777/Models/Instruments/EFIS/efis-ctl1.xml|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt; for an example.&lt;br /&gt;
# Add a binding to your screen(s) to open the ND in a popup dialog. See &amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Aircraft/777/Models/Instruments/ND/ND_L.xml|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt; for an example.&lt;br /&gt;
&lt;br /&gt;
That's the only thing you need to do right now. future changes will be in navdisplay.mfd and will be automatically available to you once they're committed/merged, no changes needed in your ND.nas at all, except for additional switches/buttons that may be created, and which would obviously need to be mapped to your cockpit hot spots.&lt;br /&gt;
&lt;br /&gt;
If you are facing problems with the steps outlined above, please get in touch via the article's talk page or the forum, so that the instructions can be improved accordingly. Thank you!&lt;br /&gt;
&lt;br /&gt;
=== Cockpit switches ===&lt;br /&gt;
{{Note|The default property is '''relative''' to the root location of your ND, it is NOT an absolute path. Boolean values (true/false) can also be just 1/0. The list of switches below is correct for FG 3.0 - future versions may support additional switches.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Switch !! Description !! Default property !! Accepted values&lt;br /&gt;
|-&lt;br /&gt;
| toggle_airports || Display airports on the map || /inputs/arpt || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_centered || Center ND modes || /inputs/nd-centered || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_data || Display way point data on the map || /inputs/data || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_display_mode || Change display mode || /mfd/display-mode || APP, MAP, PLAN, VOR&lt;br /&gt;
|-&lt;br /&gt;
| toggle_display_type || Change display type || /mfd/display-type || CRT, LCD&lt;br /&gt;
|-&lt;br /&gt;
| toggle_position || Display position data on the map (currently unused) || /inputs/pos || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_range || Range of the maps in nautical miles || /inputs/range-nm || Any positive number&lt;br /&gt;
|-&lt;br /&gt;
| toggle_terrain || Terrain radar (currently unused) || /inputs/terr || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_traffic || Display [[Traffic alert and collision avoidance system|TCAS]] data || /inputs/tfc || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_true_north || Toggle true or magnetic north || /mfd/true-north || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_waypoints || Display way points (fixes) on the map || /inputs/wpt || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_weather || Weather radar || /inputs/wxr || true, false&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Aircraft Support ==&lt;br /&gt;
For the framework to  become sufficiently generalized and aircraft-agnostic, we need many different aircraft to adopt it and aircraft developers to provide feedback regarding missing features. &lt;br /&gt;
We are looking for people interested in integrating the new system, so that it can be better developed with different requirements in mind.&lt;br /&gt;
&lt;br /&gt;
The 747 and 777 are the primary reference examples for now.&lt;br /&gt;
The following people/aircraft are currently in the process of adopting the new NavDisplay (please add any related efforts here):&lt;br /&gt;
&lt;br /&gt;
* 01/2014: Gijs  (747-400) {{Progressbar|100}}&lt;br /&gt;
* 01/2014: Hyde (777-200) {{Progressbar|100}}&lt;br /&gt;
* 02/2014: mueko (A320) {{Progressbar|90}} [http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=22045&amp;amp;p=200427#p200422]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* 02/2014: D-MKF1 (707) {{Progressbar|10}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* 02/2014: Soitanen (737-300) {{Progressbar|80}} [http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=21509&amp;amp;start=15#p200304]&lt;br /&gt;
* 02/2014: Sascha (A310) {{Progressbar|10}}&lt;br /&gt;
* 02/2014: drdavid (DC10) {{Progressbar|30}}&lt;br /&gt;
* 02/2014: 5H1N0B1 (m2000-5) {{Progressbar|20}}&lt;br /&gt;
&lt;br /&gt;
If you are finding yourself having problems integrating the framework, please refer to already integrated aircraft as reference/example, or get in touch with their  maintainers - ideally, via the forum, so that everybody can contribute and benefit.&lt;br /&gt;
&lt;br /&gt;
Note that this will initially just give you a Boeing-centric ND, because it is currently being developed by the 747/777 maintainers primarily - please use the issue tracker to file feature requests for missing features. Over time, the framework will grow and become more flexible,so that also specifics of non-Boeing aircraft can be properly emulated. But obviously this will take a while. We invite aircraft developers to help extend and refine the framework accordingly.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&amp;lt;gallery mode=packed widths=230px heights=230px&amp;gt;&lt;br /&gt;
Navigation display MAP mode.png|MAP mode&lt;br /&gt;
Navigation display centered MAP mode.png|Centered MAP mode&lt;br /&gt;
Navigation display PLAN mode.png|PLAN mode&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding new features ==&lt;br /&gt;
{{Note|Please get in touch with [[User:Gijs]] before touching navdisplay.mfd}}&lt;br /&gt;
If you want to add new features to the navdisplay.mfd code, you need to open that file and map an SVG element to a callback routine - that's how everything is working currently.&lt;br /&gt;
&lt;br /&gt;
There's a &amp;quot;configuration hash&amp;quot; called &amp;quot;NDStyles&amp;quot; at the top of the file. Each aircraft can have its own entry in NDStyles, such as NDStyles[&amp;quot;B747-400&amp;quot;] or NavDisplay[&amp;quot;777&amp;quot;]. Then, all the required canvas callbacks are listed there, i.e. the font mapper etc.&lt;br /&gt;
&lt;br /&gt;
There's also an entry for a custom SVG filename. However, we encourage people to get in touch with Gijs and Hyde to help coordinate all ND development a little - so that a common (and shared) SVG file can be used, this is already the case for the B744 and B777 - we're hoping to get other aircraft developers involved, to help generalize the SVG file, instead of having dozens of different files and symbols. Most features should be identical or at least very similar. Which is why it's a good idea to get in touch with other people working on the ND code.&lt;br /&gt;
&lt;br /&gt;
Lines 52-131 set up existing layers, which are now shared with the GUI code - so that is where new layers are added.&lt;br /&gt;
Aircraft specific SVG elements are added at the end, after line 132&lt;br /&gt;
&lt;br /&gt;
For now, we suggest to directly use the 747-400 ND - but the framework is now prepared to easily style &amp;amp; customize it for different aircraft, we will probably add a tutorial to the wiki to explain how things are hanging together there. The constructor and init methods may still need some work to generalize things there, because they are basically still the original code.&lt;br /&gt;
&lt;br /&gt;
So to replace the 747 ND and customize it, these are the steps:&lt;br /&gt;
&lt;br /&gt;
* add a new entry to the NDStyles hash, for example &amp;quot;777-200&amp;quot;&lt;br /&gt;
* you can simply copy the configuration stuff from the 747 to get started&lt;br /&gt;
* start customizing things there&lt;br /&gt;
* open the SVG file in inkscape and change it as required, save it &lt;br /&gt;
* change the SVG filename in your NDStyles[&amp;quot;777-200&amp;quot;] hash entry to  match your own file name&lt;br /&gt;
* provide animation callbacks for any 777 specific elements&lt;br /&gt;
* open your own copy of ND.nas&lt;br /&gt;
* change the constructor call .new() to specify the name of your new NDStyles entry&lt;br /&gt;
* by default, this is 747-400 for the time being, for example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var NDCpt = ND.new(&amp;quot;instrumentation/efis&amp;quot;, myCockpit_switches, &amp;quot;777-200&amp;quot; );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the &amp;quot;777-200&amp;quot; part needs to match the identifier used in the NDStyles hash.&lt;br /&gt;
&lt;br /&gt;
To get started, just copy the whole 747-400 section in NDStyles and rename it to match your needs. Once that is working (getting a 747-400 ND via the 777-200 identifier), you can simply replace the SVG file name and add your own update handlers to incrementally come up with your own ND.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft instruments]]&lt;br /&gt;
[[Category:Canvas]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Canvas_ND_framework&amp;diff=67522</id>
		<title>Canvas ND framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Canvas_ND_framework&amp;diff=67522"/>
		<updated>2014-02-11T00:39:31Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Non-stable}}&lt;br /&gt;
&lt;br /&gt;
[[File:Canvasready.png|right]]&lt;br /&gt;
{{infobox subsystem&lt;br /&gt;
|image        = Navigation display MAP mode.png&lt;br /&gt;
|alt          = MAP mode with a [[Standard Instrument Departure|SID]] from Eindhoven Airport&lt;br /&gt;
|name         = NavDisplay&lt;br /&gt;
|started      = 11/2013 &lt;br /&gt;
|description  = [[Canvas]]/[[Nasal]] driven NDs&lt;br /&gt;
|status       = Under active development as of 12/2013&lt;br /&gt;
|maintainers  = Gijs, Hyde, Hooray, Philosopher&lt;br /&gt;
|developers   = [[User:Gijs]] (since 11/2013)&lt;br /&gt;
}}&lt;br /&gt;
The '''navigation display''' ('''ND''') is a display in a glass cockpit, providing information about an aircraft's lateral situation. As of late 2013, a new ND ([[Navigation display]] being the old) is in development for [[FlightGear]] using the new [[MapStructure]] back-end. Thanks to [[Canvas]], much more complex and sophisticated graphics are possible now, without having to know any C++, and without having to rebuild FlightGear from source. &lt;br /&gt;
&lt;br /&gt;
It can be found on [[Git]] in fgdata/master (2.99). The main source is located in &amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Nasal/canvas/map/navdisplay.mfd|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Adding the navigation display to your aircraft ==&lt;br /&gt;
Note that the ND is currently only available in Git and not in the latest stable release. It will become available with FlightGear 3.0 in February 2014.&lt;br /&gt;
&lt;br /&gt;
# Add a surface object to your 3D model and apply a place holder texture to it. You can refer to the 747-400 and 777 for examples.&lt;br /&gt;
# Copy the ND.nas file of the Boeing 777 into your own aircraft directory (&amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Aircraft/777/Models/Instruments/ND/ND.nas|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt;). &lt;br /&gt;
# Add the file to the &amp;lt;nasal&amp;gt; block in your aircraft's [[Aircraft-set.xml|-set.xml]] file.&lt;br /&gt;
# In order to customize the ND for your specific aircraft, change a few options in your ND.nas file:&lt;br /&gt;
## the node behind &amp;lt;code&amp;gt;addPlacement&amp;lt;/code&amp;gt; is the name of the object in your 3D model. For multiple independent NDs, each ND should have its own object (and thus placement node). The 777 for example has a &amp;quot;ndScreenL&amp;quot; and a &amp;quot;ndScreenR&amp;quot;.&lt;br /&gt;
## Rename the properties in the &amp;quot;myCockpit_switches&amp;quot; hash at the top of the ND.nas file to match your own properties (range selector, mode selector etc.), see {{Git link|gitorious|fg/fgdata|master|Aircraft/747-400/Models/Cockpit/Instruments/ND/ND.nas|3|22|pre=[[$FG_ROOT]]/}} You're advised to use the defaults (and change other systems of your aircraft accordingly). For an overview of switches, see [[#Cockpit switches]].&lt;br /&gt;
# Add knobs/buttons to the 3D model of your cockpit to control the various options of the ND. See &amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Aircraft/777/Models/Instruments/EFIS/efis-ctl1.xml|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt; for an example.&lt;br /&gt;
# Add a binding to your screen(s) to open the ND in a popup dialog. See &amp;lt;tt&amp;gt;{{Git link|gitorious|fg/fgdata|master|Aircraft/777/Models/Instruments/ND/ND_L.xml|pre=[[$FG_ROOT]]/}}&amp;lt;/tt&amp;gt; for an example.&lt;br /&gt;
&lt;br /&gt;
That's the only thing you need to do right now. future changes will be in navdisplay.mfd and will be automatically available to you once they're committed/merged, no changes needed in your ND.nas at all, except for additional switches/buttons that may be created, and which would obviously need to be mapped to your cockpit hot spots.&lt;br /&gt;
&lt;br /&gt;
If you are facing problems with the steps outlined above, please get in touch via the article's talk page or the forum, so that the instructions can be improved accordingly. Thank you!&lt;br /&gt;
&lt;br /&gt;
=== Cockpit switches ===&lt;br /&gt;
{{Note|The default property is '''relative''' to the root location of your ND, it is NOT an absolute path. Boolean values (true/false) can also be just 1/0. The list of switches below is correct for FG 3.0 - future versions may support additional switches.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Switch !! Description !! Default property !! Accepted values&lt;br /&gt;
|-&lt;br /&gt;
| toggle_airports || Display airports on the map || /inputs/arpt || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_centered || Center ND modes || /inputs/nd-centered || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_data || Display way point data on the map || /inputs/data || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_display_mode || Change display mode || /mfd/display-mode || APP, MAP, PLAN, VOR&lt;br /&gt;
|-&lt;br /&gt;
| toggle_display_type || Change display type || /mfd/display-type || CRT, LCD&lt;br /&gt;
|-&lt;br /&gt;
| toggle_position || Display position data on the map (currently unused) || /inputs/pos || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_range || Range of the maps in nautical miles || /inputs/range-nm || Any positive number&lt;br /&gt;
|-&lt;br /&gt;
| toggle_terrain || Terrain radar (currently unused) || /inputs/terr || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_traffic || Display [[Traffic alert and collision avoidance system|TCAS]] data || /inputs/tfc || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_true_north || Toggle true or magnetic north || /mfd/true-north || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_waypoints || Display way points (fixes) on the map || /inputs/wpt || true, false&lt;br /&gt;
|-&lt;br /&gt;
| toggle_weather || Weather radar || /inputs/wxr || true, false&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Aircraft Support ==&lt;br /&gt;
For the framework to  become sufficiently generalized and aircraft-agnostic, we need many different aircraft to adopt it and aircraft developers to provide feedback regarding missing features. &lt;br /&gt;
We are looking for people interested in integrating the new system, so that it can be better developed with different requirements in mind.&lt;br /&gt;
&lt;br /&gt;
The 747 and 777 are the primary reference examples for now.&lt;br /&gt;
The following people/aircraft are currently in the process of adopting the new NavDisplay (please add any related efforts here):&lt;br /&gt;
&lt;br /&gt;
* 01/2014: Gijs  (747-400) {{Progressbar|100}}&lt;br /&gt;
* 01/2014: Hyde (777-200) {{Progressbar|100}}&lt;br /&gt;
* 02/2014: mueko (A320) {{Progressbar|90}} [http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=22045&amp;amp;p=200427#p200422]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* 02/2014: D-MKF1 (707) {{Progressbar|10}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* 02/2014: Soitanen (737-300) {{Progressbar|80}} [http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=21509&amp;amp;start=15#p200304]&lt;br /&gt;
* 02/2014: Sascha (A310) {{Progressbar|10}}&lt;br /&gt;
* 02/2014: drdavid (DC10) {{Progressbar|30}}&lt;br /&gt;
* 02/2014: 5H1N0B1 (m2000-5) {{Progressbar|10}}&lt;br /&gt;
&lt;br /&gt;
If you are finding yourself having problems integrating the framework, please refer to already integrated aircraft as reference/example, or get in touch with their  maintainers - ideally, via the forum, so that everybody can contribute and benefit.&lt;br /&gt;
&lt;br /&gt;
Note that this will initially just give you a Boeing-centric ND, because it is currently being developed by the 747/777 maintainers primarily - please use the issue tracker to file feature requests for missing features. Over time, the framework will grow and become more flexible,so that also specifics of non-Boeing aircraft can be properly emulated. But obviously this will take a while. We invite aircraft developers to help extend and refine the framework accordingly.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&amp;lt;gallery mode=packed widths=230px heights=230px&amp;gt;&lt;br /&gt;
Navigation display MAP mode.png|MAP mode&lt;br /&gt;
Navigation display centered MAP mode.png|Centered MAP mode&lt;br /&gt;
Navigation display PLAN mode.png|PLAN mode&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding new features ==&lt;br /&gt;
{{Note|Please get in touch with [[User:Gijs]] before touching navdisplay.mfd}}&lt;br /&gt;
If you want to add new features to the navdisplay.mfd code, you need to open that file and map an SVG element to a callback routine - that's how everything is working currently.&lt;br /&gt;
&lt;br /&gt;
There's a &amp;quot;configuration hash&amp;quot; called &amp;quot;NDStyles&amp;quot; at the top of the file. Each aircraft can have its own entry in NDStyles, such as NDStyles[&amp;quot;B747-400&amp;quot;] or NavDisplay[&amp;quot;777&amp;quot;]. Then, all the required canvas callbacks are listed there, i.e. the font mapper etc.&lt;br /&gt;
&lt;br /&gt;
There's also an entry for a custom SVG filename. However, we encourage people to get in touch with Gijs and Hyde to help coordinate all ND development a little - so that a common (and shared) SVG file can be used, this is already the case for the B744 and B777 - we're hoping to get other aircraft developers involved, to help generalize the SVG file, instead of having dozens of different files and symbols. Most features should be identical or at least very similar. Which is why it's a good idea to get in touch with other people working on the ND code.&lt;br /&gt;
&lt;br /&gt;
Lines 52-131 set up existing layers, which are now shared with the GUI code - so that is where new layers are added.&lt;br /&gt;
Aircraft specific SVG elements are added at the end, after line 132&lt;br /&gt;
&lt;br /&gt;
For now, we suggest to directly use the 747-400 ND - but the framework is now prepared to easily style &amp;amp; customize it for different aircraft, we will probably add a tutorial to the wiki to explain how things are hanging together there. The constructor and init methods may still need some work to generalize things there, because they are basically still the original code.&lt;br /&gt;
&lt;br /&gt;
So to replace the 747 ND and customize it, these are the steps:&lt;br /&gt;
&lt;br /&gt;
* add a new entry to the NDStyles hash, for example &amp;quot;777-200&amp;quot;&lt;br /&gt;
* you can simply copy the configuration stuff from the 747 to get started&lt;br /&gt;
* start customizing things there&lt;br /&gt;
* open the SVG file in inkscape and change it as required, save it &lt;br /&gt;
* change the SVG filename in your NDStyles[&amp;quot;777-200&amp;quot;] hash entry to  match your own file name&lt;br /&gt;
* provide animation callbacks for any 777 specific elements&lt;br /&gt;
* open your own copy of ND.nas&lt;br /&gt;
* change the constructor call .new() to specify the name of your new NDStyles entry&lt;br /&gt;
* by default, this is 747-400 for the time being, for example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var NDCpt = ND.new(&amp;quot;instrumentation/efis&amp;quot;, myCockpit_switches, &amp;quot;777-200&amp;quot; );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the &amp;quot;777-200&amp;quot; part needs to match the identifier used in the NDStyles hash.&lt;br /&gt;
&lt;br /&gt;
To get started, just copy the whole 747-400 section in NDStyles and rename it to match your needs. Once that is working (getting a 747-400 ND via the 777-200 identifier), you can simply replace the SVG file name and add your own update handlers to incrementally come up with your own ND.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft instruments]]&lt;br /&gt;
[[Category:Canvas]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_04.png&amp;diff=67516</id>
		<title>File:Alpine flight MtBlanc bellow the Moutain 04.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_04.png&amp;diff=67516"/>
		<updated>2014-02-10T20:10:12Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: /* {{int:filedesc}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=On the left : the &amp;quot;Aiguille du Midi&amp;quot; and on the right : the Mt Blanc}}&lt;br /&gt;
|date=2014-02-10 20:43:24&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:5H1N0B1|5H1N0B1]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
{{Location dec|45.9167|6.8667}}&lt;br /&gt;
Chamonix Mt Blanc&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Screenshots]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_02.png&amp;diff=67515</id>
		<title>File:Alpine flight MtBlanc bellow the Moutain 02.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_02.png&amp;diff=67515"/>
		<updated>2014-02-10T20:09:18Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: /* {{int:filedesc}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=Other side of the &amp;quot;Aiguille du Midi&amp;quot;}}&lt;br /&gt;
|date=2014-02-10 20:42:52&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:5H1N0B1|5H1N0B1]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
{{Location dec|45.9167|6.8667}}&lt;br /&gt;
Chamonix Mt Blanc&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Screenshots]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_05.png&amp;diff=67514</id>
		<title>File:Alpine flight MtBlanc bellow the Moutain 05.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_05.png&amp;diff=67514"/>
		<updated>2014-02-10T20:08:11Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=m2000 panel, outside view}}&lt;br /&gt;
|date=2014-02-10 20:43:10&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:5H1N0B1|5H1N0B1]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Screenshots]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_06.png&amp;diff=67513</id>
		<title>File:Alpine flight MtBlanc bellow the Moutain 06.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_06.png&amp;diff=67513"/>
		<updated>2014-02-10T20:06:53Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: /* {{int:filedesc}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=Flight in Las Vegas, Nellis. We can see automatics slats which mean high aoa}}&lt;br /&gt;
|date=2014-02-10 20:43:32&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:5H1N0B1|5H1N0B1]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
Las Vegas, Nellis&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Screenshots]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_07.png&amp;diff=67512</id>
		<title>File:Alpine flight MtBlanc bellow the Moutain 07.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_07.png&amp;diff=67512"/>
		<updated>2014-02-10T20:05:07Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: /* {{int:filedesc}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=Breaking sound Barrier}}&lt;br /&gt;
|date=2014-02-10 20:43:29&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:5H1N0B1|5H1N0B1]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Screenshots]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_08.png&amp;diff=67511</id>
		<title>File:Alpine flight MtBlanc bellow the Moutain 08.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_08.png&amp;diff=67511"/>
		<updated>2014-02-10T20:03:50Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: /* {{int:filedesc}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=New details wing}}&lt;br /&gt;
|date=2014-02-10 20:43:54&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:5H1N0B1|5H1N0B1]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Screenshots]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_03.png&amp;diff=67510</id>
		<title>File:Alpine flight MtBlanc bellow the Moutain 03.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_03.png&amp;diff=67510"/>
		<updated>2014-02-10T20:00:48Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: 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=Bellow the &amp;quot;Aiguille du Midi&amp;quot; and the Mt Blanc}}&lt;br /&gt;
|date=2014-02-10 20:43:10&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:5H1N0B1|5H1N0B1]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
{{Location dec|45.9167|6.8667}}&lt;br /&gt;
Chamonix Mt Blanc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Screenshots]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_08.png&amp;diff=67509</id>
		<title>File:Alpine flight MtBlanc bellow the Moutain 08.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_08.png&amp;diff=67509"/>
		<updated>2014-02-10T20:00:46Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: 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=Bellow the &amp;quot;Aiguille du Midi&amp;quot; and the Mt Blanc}}&lt;br /&gt;
|date=2014-02-10 20:43:54&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:5H1N0B1|5H1N0B1]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Screenshots]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_07.png&amp;diff=67508</id>
		<title>File:Alpine flight MtBlanc bellow the Moutain 07.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_07.png&amp;diff=67508"/>
		<updated>2014-02-10T20:00:45Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: 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=Bellow the &amp;quot;Aiguille du Midi&amp;quot; and the Mt Blanc}}&lt;br /&gt;
|date=2014-02-10 20:43:29&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:5H1N0B1|5H1N0B1]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Screenshots]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_06.png&amp;diff=67507</id>
		<title>File:Alpine flight MtBlanc bellow the Moutain 06.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_06.png&amp;diff=67507"/>
		<updated>2014-02-10T20:00:44Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: 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=Bellow the &amp;quot;Aiguille du Midi&amp;quot; and the Mt Blanc}}&lt;br /&gt;
|date=2014-02-10 20:43:32&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:5H1N0B1|5H1N0B1]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
Las Vegas, Nellis&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Screenshots]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_05.png&amp;diff=67506</id>
		<title>File:Alpine flight MtBlanc bellow the Moutain 05.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_05.png&amp;diff=67506"/>
		<updated>2014-02-10T20:00:43Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: 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=Bellow the &amp;quot;Aiguille du Midi&amp;quot; and the Mt Blanc}}&lt;br /&gt;
|date=2014-02-10 20:43:10&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:5H1N0B1|5H1N0B1]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Screenshots]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_02.png&amp;diff=67505</id>
		<title>File:Alpine flight MtBlanc bellow the Moutain 02.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_02.png&amp;diff=67505"/>
		<updated>2014-02-10T20:00:41Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: 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=Bellow the &amp;quot;Aiguille du Midi&amp;quot; and the Mt Blanc}}&lt;br /&gt;
|date=2014-02-10 20:42:52&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:5H1N0B1|5H1N0B1]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
{{Location dec|45.9167|6.8667}}&lt;br /&gt;
Chamonix Mt Blanc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Screenshots]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_04.png&amp;diff=67504</id>
		<title>File:Alpine flight MtBlanc bellow the Moutain 04.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_04.png&amp;diff=67504"/>
		<updated>2014-02-10T20:00:40Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: 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=Bellow the &amp;quot;Aiguille du Midi&amp;quot; and the Mt Blanc}}&lt;br /&gt;
|date=2014-02-10 20:43:24&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:5H1N0B1|5H1N0B1]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
{{Location dec|45.9167|6.8667}}&lt;br /&gt;
Chamonix Mt Blanc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Screenshots]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_01.png&amp;diff=67503</id>
		<title>File:Alpine flight MtBlanc bellow the Moutain 01.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Alpine_flight_MtBlanc_bellow_the_Moutain_01.png&amp;diff=67503"/>
		<updated>2014-02-10T20:00:38Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: 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=Bellow the &amp;quot;Aiguille du Midi&amp;quot; and the Mt Blanc}}&lt;br /&gt;
|date=2014-02-10 20:42:57&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:5H1N0B1|5H1N0B1]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
{{Location dec|45.9167|6.8667}}&lt;br /&gt;
Chamonix Mt Blanc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Screenshots]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Canvas_Radar&amp;diff=67388</id>
		<title>Canvas Radar</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Canvas_Radar&amp;diff=67388"/>
		<updated>2014-02-06T17:17:40Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: /* Objective */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Template:Non-stable}}&lt;br /&gt;
&lt;br /&gt;
{{infobox subsystem&lt;br /&gt;
|image = MapStructure-TFC-Troubleshooting.png&lt;br /&gt;
|name =Canvas Radar Framework&lt;br /&gt;
|started= 02/2014 &lt;br /&gt;
|description = Radar Framework&lt;br /&gt;
|status = Under active development as of 02/2014&lt;br /&gt;
|maintainers  = 5H1N0B1, Hooray&lt;br /&gt;
|developers = 5H1N0B1 (since 02/2014),&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
|folders = [http://gitorious.org/fg/flightgear/trees/next/src/Canvas $FG_SRC/Canvas]&lt;br /&gt;
           [http://gitorious.org/fg/simgear/trees/next/simgear/canvas $SG_SRC/simgear/canvas]&lt;br /&gt;
|topic-fgdata= (main repository, master branch; https://gitorious.org/~tomprogs/fg/toms-fgdata/commits/canvas-gui-demo)&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|subforum= http://forum.flightgear.org/viewforum.php?f=71&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Template:Canvas Navigation}}&lt;br /&gt;
&lt;br /&gt;
'''Canvas Radar''' is a [[MapStructure]]-based [[Nasal]]-space [[Canvas]]-Framework for creating Radar displays in FlightGear, as of 02/2014 it is being actively developed by 5H1N0B1 with a focus on the [[Mirage 2000-5]] fighter jet. The Radar implementation is heavily based on xiii's original code and will be further generalized and adapted to be usable in the MVC-centric design of Philosopher's MapStructure framework.&lt;br /&gt;
&lt;br /&gt;
The Radar framework is being closely developed in conjunction with F-JYL's [[CanvasMFD]] framework to ensure that aircraft developers can easily adopt the framework in their own aircraft, without having to modify a ton of Nasal code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
Come up with a generic radar framework for [[MapStructure]] that is completely aircraft-agnostic, so that it can be easily adopted, integrated and customized by aircraft developers, but also by people  doing ATC related projects, like [[ATC-FS]] or [[ATC-aircraft]].&lt;br /&gt;
&lt;br /&gt;
Currently, we're in touch with Adrian to see if his [[Radio Propagation]] could be rebased against git/next and exposed via [[Nasal/CppBind]] to provide a better option for radar modeling. This is something that we should probably discuss with xiii (developer of the original Nasal code) and vivian (agradar developer) at some point, vivian also expressed interest in updating the agradar to support the Radio Propagation code written by Adrian[https://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg38923.html].&lt;br /&gt;
&lt;br /&gt;
Also, i4dnf  mentioned that we could benefit from making antenna profiles configurable for different aircraft. Adrian mentioned that he has access to the radar manual of the F16 and that he's familiar with the various operating modes.&lt;br /&gt;
&lt;br /&gt;
The Flightgear Next Gen Radar would be able to (not sorted) : &lt;br /&gt;
&lt;br /&gt;
1) Be a lot faster as actual system (Using Canvas display and some C++ for high consuming function)&lt;br /&gt;
&lt;br /&gt;
2) Detect Heat/infrared&lt;br /&gt;
&lt;br /&gt;
3) Manage AESA radar. (Actually it's more complicated to manage non AESA radar -&amp;gt; cause of the sweep. -&amp;gt; No sweep for AESA)&lt;br /&gt;
&lt;br /&gt;
4) Manage DOPPLER radar DOPPLER (Actually, more complicated to manage &amp;quot;non doppler&amp;quot; radar. The purpose is to erase signature of airplane which are bellow us, and fly at low alt. We could even erase 0 kts aircraft -&amp;gt; The Pougatchev's Cobra should be able to make stall DOPPLER radar)&lt;br /&gt;
&lt;br /&gt;
5) BONUS : Terrain detection. Make an aircraft disapear if it's behind a mountain&lt;br /&gt;
&lt;br /&gt;
6) Make it working with existing Radio Propagation code.&lt;br /&gt;
&lt;br /&gt;
7) Manage IFF/Transponder&lt;br /&gt;
&lt;br /&gt;
8) Display Radar on Nav Mfd&lt;br /&gt;
&lt;br /&gt;
9) Allow more than one radar on a plane, like AWACS or Russian aircraft which have a rear radar&lt;br /&gt;
&lt;br /&gt;
10) Manage laser targeting -&amp;gt; with a pod view and clicking (for non AI target like building)&lt;br /&gt;
&lt;br /&gt;
11) Allow simple re use of the radar on each aircraft military and also civilian&lt;br /&gt;
&lt;br /&gt;
12) Long term obj : Put a radar object in &amp;quot;each&amp;quot; missile on the missile.nas script&lt;br /&gt;
&lt;br /&gt;
13) More ?&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
Currently, we're playing around with a modified version of the [[MapStructure]] TFC (traffic) layer, to use this in a standalone XML dialog and customize it as needed. Once that is working as expected, we will investigate adding xiii's radar modeling code and replace the traffic/TCAS functionality accordingly. Afterwards, we will need to integrate this with the [[Canvas MFD Framework]] to ensure that aircraft developers can easily use the framework in their cockpits.&lt;br /&gt;
&lt;br /&gt;
At that point, it would then also make sense to check out the [[:Category:Fighter aircraft]] and [[:Category:Carrier-based aircraft]] categories to get in touch with the developers and maintainers of aircraft with RADAR, and ask them for adoption/integration feedback.&lt;br /&gt;
&lt;br /&gt;
Subsequently, it would make sense to look at existing hard-coded displays, like the agradar, groundradar and wxradar to support these use-cases, too.&lt;br /&gt;
Specifically, [[ATC-FS]] and [[ATC-aircraft]] could greatly benefit from this effort. &lt;br /&gt;
&lt;br /&gt;
5H1N0B1 also mentioned that a properly-designed component would allow other uses, too - such as for example, equipping [[Scripted AI Missiles]] with a real RADAR, or adding radar support to [[Bombable]] - likewise, it would be possible to add such radar displays to AWACS aircraft, or even to vessels like the [[Nimitz]].&lt;br /&gt;
&lt;br /&gt;
* [[Mirage 2000-5]] (5H1N0B1) {{Progressbar|10}}&lt;br /&gt;
* [[Saab JA-37 Viggen]] (Necolatis) {{Progressbar|10}}&lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=4&amp;amp;t=17709 Mig-29] (Mercury) {{Not done}}&lt;br /&gt;
* [[Grumman F-14 Tomcat]] (xiii) {{Not done}}&lt;br /&gt;
&lt;br /&gt;
== Radar/ATC Requirements ==&lt;br /&gt;
&lt;br /&gt;
These are primarily requirements for the Mirage2000 that is currently being revamped by 5H1N0B1[http://forum.flightgear.org/viewtopic.php?f=30&amp;amp;t=21955&amp;amp;p=199303&amp;amp;hilit=awacs#p199303], these changes could also be used to add ATC support to AWACS aircraft[http://forum.flightgear.org/viewtopic.php?f=19&amp;amp;t=21867&amp;amp;p=198427&amp;amp;hilit=awacs#p198417].&lt;br /&gt;
* Set up a dialog-based test bed {{Done}}&lt;br /&gt;
* Prototype a simple ATC/RADAR layer {{Progressbar|40}}&lt;br /&gt;
* Terrain layer (elevation height maps using the terrain presampler) see: [http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=17184&amp;amp;hilit=elevations+sampler#p163485] and [http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=17284&amp;amp;p=164347&amp;amp;hilit=heightmap#p164347] {{Not done}} (by 5H1N0B1)&lt;br /&gt;
* Custom Controllers for:&lt;br /&gt;
** azimuth-based filtering {{Not done}} (by 5H1N0B1)&lt;br /&gt;
** sweep mode (AESA) {{Not done}} (by 5H1N0B1)&lt;br /&gt;
** terrain awareness (filtering) {{Not done}} (by 5H1N0B1)&lt;br /&gt;
** heat detection based filtering {{Not done}} (by 5H1N0B1)&lt;br /&gt;
* select and animate symbols (targets) {{Not done}} (by 5H1N0B1)&lt;br /&gt;
* TCAS/transponder awareness for symbol animation/styling {{Not done}} (by 5H1N0B1)&lt;br /&gt;
* explore integrating this with Adrian's [[Radio propagation]] system via cppbind (Hooray) {{Not done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see [[ATC-FS]] and [[ATC-aircraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
== Creating a custom ATC/RADAR Layer ==&lt;br /&gt;
People already having some Nasal experience (property tree, OOP), should be able to complete this 20-30 minutes, and you would end up with an ATC display and a custom symbol - next, you will want to &amp;quot;filter&amp;quot; traffic based on surrrounding features like terrain, altitude, radar settings and radio propagation etc.&lt;br /&gt;
&lt;br /&gt;
If you find yourself getting stuck somewhere, look at some of the other .symbol/.lcontroller and .scontroller files - especially the shorter/simpler ones - and then read the wiki section about adding new layers a few times, and everything will start making sense&lt;br /&gt;
&lt;br /&gt;
Basically, this should get you going quickly:&lt;br /&gt;
* copy an existing set of files (better TFC* instead of VOR*), but name it &amp;quot;TARGET&amp;quot; instead of TFC: TARGET.symbol, TARGET.lcontroller, TARGET.symbol (RADAR may be a more appropriate name)&lt;br /&gt;
* you need to change the name to TARGET inside the 3 new TARGET* files (see the top of the new files, where 'TFC' can be seen)&lt;br /&gt;
** start by opening TARGET.scontroller and replace TFC with TARGET&lt;br /&gt;
** next, open TARGET.symbol - this contains the draw() and update() callbacks to draw/update a single symbol and animate it accordingly, also replace TFC with TARGET&lt;br /&gt;
** next, open TARGET.lcontroller - this contains the layer management code, a layer manages a vector of symbols, replace TFC with TARGET&lt;br /&gt;
* now, add the new files to MapStructure.nas: near the end of MapStructure.nas, in the loading code, there's a vector that contains the names to load, e.g. &amp;quot;VOR&amp;quot;, &amp;quot;DME&amp;quot;, and &amp;quot;TFC&amp;quot;, and so you will need to add &amp;quot;TARGET&amp;quot; there as well. This is to tell the framework about your newly created layer files.&lt;br /&gt;
&lt;br /&gt;
* once that is done, use the new &amp;quot;TARGET&amp;quot; identifier in the foreach vector in the Nasal section of the dialog seen above and its embedded canvas/nasal/load block &lt;br /&gt;
* this should give you a TCAS traffic (TFC) symbol using the TARGET handle when you run the dialog&lt;br /&gt;
(5H1N0B1 : I'm here)&lt;br /&gt;
* once that is working, you can customize the symbol by opening the TARGET.symbol file which contains the draw routine - for example by changing the color or using some custom font/label, or just using a SVG file via parsesevg() - see the NDB.draw file for an example on how to display a custom SVG file&lt;br /&gt;
* at this stage you should have a custom symbol rendered in all the places where MP/AI traffic is located, all driven via the TCAS function.&lt;br /&gt;
* so the next step is to make the code a bit smarter, especially look at the TFC.lcontroller and TFC.scontroller files&lt;br /&gt;
* it may even be a good idea to directly start with those, instead of the VOR files ...&lt;br /&gt;
* once that is working, i.e. 1) you have a custom symbol shown and see all the surrounding MP/AI traffic, you have already successfully created a simple ATC/radar screen!&lt;br /&gt;
* next, you would replace the data source (which is AI/MP traffic) with your own data source - for that, refer to the TARGET (TFC) files to see how the AI/MP traffic is added&lt;br /&gt;
* once you have added your own data source, you can change the heuristics accordingly - to handle terrain, radar range etc.&lt;br /&gt;
* your own objects should ideally be geo.nas Coord objects - that way, the system can directly support your traffic, you only need to derive from geo.Coord to make this happen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var myPosition3D = {&lt;br /&gt;
 new: func {&lt;br /&gt;
  return {parents:[geo.Coord.new() ]};&lt;br /&gt;
 },&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, you will want to investigate the positionedSearch class, which provides a powerful means to do range-based filtering of positioned objects, these can in turn be filtered (searched) for other characteristics, i.e. based on range, terrain, radio propagation or heat etc. Take a look at TARGET.lcontroller and its searchCmd() helper.&lt;br /&gt;
&lt;br /&gt;
If you  need help doing this, please check out the canvas subforum, and also post some screen shots, so that we can better help you&lt;br /&gt;
It would be a good idea to also start a fgdata topic branch so that we can better track your work and look at the code.&lt;br /&gt;
&lt;br /&gt;
== Custom Filtering ==&lt;br /&gt;
&lt;br /&gt;
Once the previously outlined steps are working, I would consider customizing the searchCmd in your lcontroller file.&lt;br /&gt;
At the moment, TFC.lcontoller works like this https://gitorious.org/fg/fgdata/source/c78b2f936891bffad49e27d84d952a0d45540eef:Nasal/canvas/map/TFC.lcontroller#&lt;br /&gt;
* get a list of AI and MP traffic (two vectors)&lt;br /&gt;
* foreach list of AI and MP traffic&lt;br /&gt;
* determine if each aircraft is within the range specified via in_range: https://gitorious.org/fg/fgdata/source/c78b2f936891bffad49e27d84d952a0d45540eef:Nasal/canvas/map/TFC.lcontroller#L50&lt;br /&gt;
* '''PLACEHOLDER'''&lt;br /&gt;
* if it is in range, the aircraft will be appended to the result vector&lt;br /&gt;
* the result vector will be returned, and later on used to call the draw/update routines in the *.symbol file (e.g. TRAFFIC.symbol)&lt;br /&gt;
&lt;br /&gt;
The line where I added PLACEHOLDER is where you could insert your own logic, i.e. the radar-specific stuff from xiii's code - such as checking distance, azimuth, altitude  - radar profile/signature, terrain etc - and only append the aircraft if the whole check evaluates to true.&lt;br /&gt;
&lt;br /&gt;
You will find that the whole lcontroller file uses a wrapper called &amp;quot;TrafficModel&amp;quot; - you can either extend this to use your &amp;quot;Target&amp;quot; class directly, or change your Target class accordingly.&lt;br /&gt;
The main thing is that your class should  be derived from a geo.Coord object, so that it has the lat/lon/alt methods available and can be directly processed by MapStructure without requiring further changes.&lt;br /&gt;
&lt;br /&gt;
You will see that the TrafficModel class is used in a few places - so this would need some changes if you use some different approach, but it's still simple. &lt;br /&gt;
The external interface is all about having lat/lon/alt (positions) and the .equals()  method&lt;br /&gt;
Overall, TrafficModel is just a dumb helper class that is a wrapper for geo.Coord() objects, so there's no reason why you shouldn't be able to extend your own Target class accordingly, you can use the TrafficModel as a template. I would just suggest to maintain the MVC separation at all times.&lt;br /&gt;
&lt;br /&gt;
Analogous to the in_range() helper, you could add other functions for your own filtering needs (altitude, terrain-obstruction etc) - it's better to use separate functions for each, than inflating a single function unnecessarily. As you can see, the in_range() function is unaware of TrafficModel specifics -it deals directly with lat/lon pairs..&lt;br /&gt;
&lt;br /&gt;
So it's simple to reuse as is.&lt;br /&gt;
TrafficModel itself is typically directly used via the constructor call: .new()&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
== Prototyping ==&lt;br /&gt;
=== MapStructure.nas ===&lt;br /&gt;
&lt;br /&gt;
MapStructure.nas currently needs to be patched/edited to add new layers manually - at some point, we will introduce some simple registration API, analogous to the old framework, where people can simply call a function to make their layer known to the framework.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
diff --git a/Nasal/canvas/MapStructure.nas b/Nasal/canvas/MapStructure.nas&lt;br /&gt;
index 0afdcd2..0c11db3 100644&lt;br /&gt;
--- a/Nasal/canvas/MapStructure.nas&lt;br /&gt;
+++ b/Nasal/canvas/MapStructure.nas&lt;br /&gt;
@@ -480,7 +480,7 @@ var load_MapStructure = func {&lt;br /&gt;
                load(FG_ROOT~&amp;quot;/Nasal/canvas/map/&amp;quot;~name~&amp;quot;.scontroller&amp;quot;, name);&lt;br /&gt;
                }&lt;br /&gt;
 &lt;br /&gt;
-               foreach( var name; ['VOR','FIX','NDB','DME','WPT','TFC'] )&lt;br /&gt;
+               foreach( var name; ['VOR','FIX','NDB','DME','WPT','TFC','TARGET',] )&lt;br /&gt;
                        load_deps( name );&lt;br /&gt;
                load(FG_ROOT~&amp;quot;/Nasal/canvas/map/aircraftpos.controller&amp;quot;, name);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TARGET.scontroller ===&lt;br /&gt;
&lt;br /&gt;
This file contains symbol-specific controller logic&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
# Class things:&lt;br /&gt;
var name = 'TARGET';&lt;br /&gt;
var parents = [Symbol.Controller];&lt;br /&gt;
var __self__ = caller(0)[0];&lt;br /&gt;
Symbol.Controller.add(name, __self__);&lt;br /&gt;
Symbol.registry[name].df_controller = __self__;&lt;br /&gt;
var new = func(model) ; # this controller doesn't need an instance&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# XXX: this is more model-ish than controller-ish&lt;br /&gt;
var get_threat_lvl =  func 3; #func(model) (model.getNode(&amp;quot;tcas/threat-level&amp;quot;).getValue() or 0);&lt;br /&gt;
var get_vspd       =  func 300; #func(model) (model.getNode(&amp;quot;velocities/vertical-speed-fps&amp;quot;).getValue() or 0)*60;&lt;br /&gt;
var get_alt_diff   =  func 900; #func(model) (model.getNode(&amp;quot;position/altitude-ft&amp;quot;).getValue() or 0) - (getprop(&amp;quot;/position/altitude-ft&amp;quot;) or 0);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TARGET.lcontroller ===&lt;br /&gt;
&lt;br /&gt;
This file handles managing a single layer&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Class things:&lt;br /&gt;
var name = 'TARGET';&lt;br /&gt;
var parents = [SymbolLayer.Controller];&lt;br /&gt;
var __self__ = caller(0)[0];&lt;br /&gt;
SymbolLayer.Controller.add(name, __self__);&lt;br /&gt;
SymbolLayer.add(name, {&lt;br /&gt;
	parents: [SymbolLayer],&lt;br /&gt;
	type: name, # Symbol type&lt;br /&gt;
	df_controller: __self__, # controller to use by default -- this one&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var model_root = props.globals.getNode(&amp;quot;/ai/models/&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var new = func(layer) {&lt;br /&gt;
	var m = {&lt;br /&gt;
		parents: [__self__],&lt;br /&gt;
		layer: layer,&lt;br /&gt;
		listeners: [],&lt;br /&gt;
		# query_range_nm: 500,&lt;br /&gt;
	};&lt;br /&gt;
	# Listen to ai model events&lt;br /&gt;
	append(m.listeners, setlistener(&lt;br /&gt;
		model_root.getNode(&amp;quot;model-added&amp;quot;), func(n) {&lt;br /&gt;
			printlog(_MP_dbg_lvl, &amp;quot;Dynamically adding model at &amp;quot;~n.getValue());&lt;br /&gt;
			var node = props.globals.getNode(n.getValue());&lt;br /&gt;
			var name = node.getName();&lt;br /&gt;
			if (name == &amp;quot;aircraft&amp;quot; or name == &amp;quot;multiplayer&amp;quot;)&lt;br /&gt;
				if (m.in_range(node.getValue(&amp;quot;position/latitude-deg&amp;quot;), node.getValue(&amp;quot;position/longitude-deg&amp;quot;)))&lt;br /&gt;
					layer.onAdded(TrafficModel.new(node));&lt;br /&gt;
		}&lt;br /&gt;
	));&lt;br /&gt;
	append(m.listeners, setlistener(&lt;br /&gt;
		model_root.getNode(&amp;quot;model-removed&amp;quot;), func(n) {&lt;br /&gt;
			printlog(_MP_dbg_lvl, &amp;quot;Dynamically deleting model at &amp;quot;~n.getValue());&lt;br /&gt;
			var node = props.globals.getNode(n.getValue());&lt;br /&gt;
			var name = node.getName();&lt;br /&gt;
			if (name == &amp;quot;aircraft&amp;quot; or name == &amp;quot;multiplayer&amp;quot;)&lt;br /&gt;
				if (m.in_range(node.getValue(&amp;quot;position/latitude-deg&amp;quot;), node.getValue(&amp;quot;position/longitude-deg&amp;quot;)))&lt;br /&gt;
					layer.onRemoved(TrafficModel.new(node));&lt;br /&gt;
		}&lt;br /&gt;
	));&lt;br /&gt;
	layer.searcher._equals = func(l,r) l.equals(r);&lt;br /&gt;
	return m;&lt;br /&gt;
};&lt;br /&gt;
var del = func() {&lt;br /&gt;
	#print(name~&amp;quot;.lcontroller.del()&amp;quot;);&lt;br /&gt;
	foreach (var l; me.listeners)&lt;br /&gt;
		removelistener(l);&lt;br /&gt;
};&lt;br /&gt;
var in_range = func(lat,lon,myPositionVec=nil,max_dist_m=nil) {&lt;br /&gt;
	if (lat == nil or lon == nil) return 0;&lt;br /&gt;
	var pos = geo.Coord.new();&lt;br /&gt;
	pos.set_latlon(lat,lon);&lt;br /&gt;
	var myPosition = geo.Coord.new();&lt;br /&gt;
	# FIXME: need a Map Controller for this, and all query_range's/get_position's&lt;br /&gt;
	if (myPositionVec == nil)&lt;br /&gt;
		var myPositionVec = me.get_position();&lt;br /&gt;
	myPosition.set_latlon( myPositionVec[0], myPositionVec[1]);&lt;br /&gt;
	if (max_dist_m == nil)&lt;br /&gt;
		var max_dist_m = me.query_range()*NM2M;&lt;br /&gt;
	return (pos.distance_to( myPosition ) &amp;lt;= max_dist_m )&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var TrafficModel = {&lt;br /&gt;
	new: func(node, id=nil, layer=nil) {&lt;br /&gt;
		if (id == nil) id = node.getValue(&amp;quot;id&amp;quot;);&lt;br /&gt;
		var m = {&lt;br /&gt;
			# Note: because this inherits from props.Node, Symbol.Controller.equals&lt;br /&gt;
			# will call l.equals(r) -- the one defined below&lt;br /&gt;
			parents: [TrafficModel, geo.Coord, node], # note we don't implement a full geo.Coord API&lt;br /&gt;
			id: id,&lt;br /&gt;
			node: node,&lt;br /&gt;
			pos: node.getNode(&amp;quot;position&amp;quot;,1),&lt;br /&gt;
		};&lt;br /&gt;
		if (m.pos == nil)&lt;br /&gt;
			m.latlon = func [nil,nil,nil];&lt;br /&gt;
		#debug.dump(m); # why doesn't this print?&lt;br /&gt;
		return m;&lt;br /&gt;
	},&lt;br /&gt;
	equals: func(other) other.id == me.id,&lt;br /&gt;
	latlon: func() {&lt;br /&gt;
		return [&lt;br /&gt;
			me.pos.getValue(&amp;quot;latitude-deg&amp;quot;),&lt;br /&gt;
			me.pos.getValue(&amp;quot;longitude-deg&amp;quot;),&lt;br /&gt;
			me.pos.getValue(&amp;quot;altitude-ft&amp;quot;)&lt;br /&gt;
		];&lt;br /&gt;
	},&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
##&lt;br /&gt;
# huge hack taken from navdisplay.mfd&lt;br /&gt;
&lt;br /&gt;
var query_range = func 500;&lt;br /&gt;
var get_position = func geo.aircraft_position().latlon() ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var searchCmd = func {&lt;br /&gt;
	# TODO: this would be a good candidate for splitting across frames&lt;br /&gt;
	print(&amp;quot;Doing query: &amp;quot;~name);&lt;br /&gt;
&lt;br /&gt;
	var result = [];&lt;br /&gt;
	# FIXME: need a Map Controller for this, and all query_range's/get_position's&lt;br /&gt;
	var myPositionVec = me.get_position();&lt;br /&gt;
	var max_dist_m = me.query_range()*NM2M;&lt;br /&gt;
&lt;br /&gt;
	# AI and Multiplayer traffic&lt;br /&gt;
	foreach (var traffic; [model_root.getChildren(&amp;quot;aircraft&amp;quot;), model_root.getChildren(&amp;quot;multiplayer&amp;quot;)]) {&lt;br /&gt;
		foreach(var t; traffic) {&lt;br /&gt;
			if (me.in_range(t.getValue(&amp;quot;position/latitude-deg&amp;quot;),&lt;br /&gt;
				            t.getValue(&amp;quot;position/longitude-deg&amp;quot;),&lt;br /&gt;
				            myPositionVec,&lt;br /&gt;
				            max_dist_m))&lt;br /&gt;
				append(result, TrafficModel.new(t, nil, me.layer));&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#debug.dump(result);&lt;br /&gt;
	#return [];&lt;br /&gt;
	print(&amp;quot;TARGETS:&amp;quot;, size(result) );&lt;br /&gt;
	return result;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TARGET.symbol ===&lt;br /&gt;
&lt;br /&gt;
This is the file that handles drawing and updating a single symbol.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Class things:&lt;br /&gt;
var name = 'TARGET';&lt;br /&gt;
var parents = [DotSym];&lt;br /&gt;
var __self__ = caller(0)[0];&lt;br /&gt;
DotSym.makeinstance( name, __self__ );&lt;br /&gt;
&lt;br /&gt;
var element_type = &amp;quot;group&amp;quot;; # we want a group, becomes &amp;quot;me.element&amp;quot;&lt;br /&gt;
var text_tcas = nil;&lt;br /&gt;
var icon_tcas = nil;&lt;br /&gt;
var arrow_tcas = [nil,nil];&lt;br /&gt;
var arrow_type = nil;&lt;br /&gt;
&lt;br /&gt;
var draw_tcas_arrow = nil;&lt;br /&gt;
&lt;br /&gt;
var draw = func {&lt;br /&gt;
	if (me.draw_tcas_arrow == nil)&lt;br /&gt;
		me.draw_tcas_arrow = [&lt;br /&gt;
			draw_tcas_arrow_above_500,&lt;br /&gt;
			draw_tcas_arrow_below_500&lt;br /&gt;
		];&lt;br /&gt;
	#var callsign = me.model.getNode(&amp;quot;callsign&amp;quot;).getValue();&lt;br /&gt;
	print(&amp;quot;Drawing target&amp;quot; );&lt;br /&gt;
	var threatLvl = me.controller.get_threat_lvl(me.model);&lt;br /&gt;
	var vspeed = me.controller.get_vspd(me.model);&lt;br /&gt;
	var altDiff = me.controller.get_alt_diff(me.model);&lt;br /&gt;
	# Init&lt;br /&gt;
	if (me.text_tcas == nil) {&lt;br /&gt;
		me.text_tcas = me.element.createChild(&amp;quot;text&amp;quot;)&lt;br /&gt;
			.setDrawMode( canvas.Text.TEXT )&lt;br /&gt;
			.setText(sprintf(&amp;quot;%+02.0f&amp;quot;,altDiff/100))&lt;br /&gt;
			.setFont(&amp;quot;LiberationFonts/LiberationSans-Regular.ttf&amp;quot;)&lt;br /&gt;
			.setColor(1,1,1)&lt;br /&gt;
			.setFontSize(28)&lt;br /&gt;
			.setAlignment(&amp;quot;center-center&amp;quot;);&lt;br /&gt;
		me.icon_tcas = me.element.createChild(&amp;quot;path&amp;quot;)&lt;br /&gt;
			.setStrokeLineWidth(3);&lt;br /&gt;
	}&lt;br /&gt;
	# Update&lt;br /&gt;
	if (altDiff &amp;gt; 0)&lt;br /&gt;
		me.text_tcas.setTranslation(0,-40);&lt;br /&gt;
	else&lt;br /&gt;
		me.text_tcas.setTranslation(0,40);&lt;br /&gt;
	var arrow_type = (vspeed &amp;gt;= 500);&lt;br /&gt;
	if (arrow_type != me.arrow_type) {&lt;br /&gt;
		(old_type, me.arrow_type) = (me.arrow_type, arrow_type);&lt;br /&gt;
		if (old_type != nil and me.arrow_tcas[old_type] != nil) me.arrow_tcas[old_type].hide();&lt;br /&gt;
		if (me.arrow_tcas[arrow_type] == nil)&lt;br /&gt;
			me.arrow_tcas[arrow_type] = me.draw_tcas_arrow[arrow_type](me.element);&lt;br /&gt;
		#me.arrow_tcas[arrow_type].show();&lt;br /&gt;
	}&lt;br /&gt;
	## TODO: threat level symbols should also be moved to *.draw files&lt;br /&gt;
	if (threatLvl == 3) {&lt;br /&gt;
		# resolution advisory&lt;br /&gt;
		me.icon_tcas.moveTo(-17,-17)&lt;br /&gt;
			.horiz(34)&lt;br /&gt;
			.vert(34)&lt;br /&gt;
			.horiz(-34)&lt;br /&gt;
			.close()&lt;br /&gt;
			.setColor(1,0,0)&lt;br /&gt;
			.setColorFill(1,0,0);&lt;br /&gt;
		me.text_tcas.setColor(1,0,0);&lt;br /&gt;
		#me.arrow_tcas.setColor(1,0,0);&lt;br /&gt;
	} elsif (threatLvl == 2) {&lt;br /&gt;
		# traffic advisory&lt;br /&gt;
		me.icon_tcas.moveTo(-17,0)&lt;br /&gt;
			.arcSmallCW(17,17,0,34,0)&lt;br /&gt;
			.arcSmallCW(17,17,0,-34,0)&lt;br /&gt;
			.setColor(1,0.5,0)&lt;br /&gt;
			.setColorFill(1,0.5,0);&lt;br /&gt;
		me.text_tcas.setColor(1,0.5,0);&lt;br /&gt;
		#me.arrow_tcas.setColor(1,0.5,0);&lt;br /&gt;
	} elsif (threatLvl == 1) {&lt;br /&gt;
		# proximate traffic&lt;br /&gt;
		me.icon_tcas.moveTo(-10,0)&lt;br /&gt;
			.lineTo(0,-17)&lt;br /&gt;
			.lineTo(10,0)&lt;br /&gt;
			.lineTo(0,17)&lt;br /&gt;
			.close()&lt;br /&gt;
			.setColor(1,1,1)&lt;br /&gt;
			.setColorFill(1,1,1);&lt;br /&gt;
	} else {&lt;br /&gt;
		print(&amp;quot;Not a conflict!&amp;quot;);&lt;br /&gt;
		# other traffic&lt;br /&gt;
		me.icon_tcas.moveTo(-10,0)&lt;br /&gt;
			.lineTo(0,-17)&lt;br /&gt;
			.lineTo(10,0)&lt;br /&gt;
			.lineTo(0,17)&lt;br /&gt;
			.close()&lt;br /&gt;
			.setColor(1,1,1);&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== traffic-mapstructure.xml (GUI dialog) ===&lt;br /&gt;
&lt;br /&gt;
This is the XML dialog file that contains an embedded canvas which loads the required [[MapStructure]] layers. &lt;br /&gt;
This is purely used for prototyping and testing, so that there's no aircraft needed to test things.&lt;br /&gt;
&lt;br /&gt;
You will want to save this file in $FG_ROOT/gui/dialogs/traffic-mapstructure.xml.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;traffic-mapstructure&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;modal&amp;gt;false&amp;lt;/modal&amp;gt;&lt;br /&gt;
&amp;lt;layout&amp;gt;vbox&amp;lt;/layout&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;group&amp;gt;&lt;br /&gt;
        &amp;lt;layout&amp;gt;hbox&amp;lt;/layout&amp;gt;&lt;br /&gt;
        &amp;lt;empty&amp;gt;&amp;lt;stretch&amp;gt;1&amp;lt;/stretch&amp;gt;&amp;lt;/empty&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;text&amp;gt;&lt;br /&gt;
            &amp;lt;label&amp;gt;MapStructure Traffic Demo&amp;lt;/label&amp;gt;&lt;br /&gt;
        &amp;lt;/text&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
       &amp;lt;empty&amp;gt;&amp;lt;stretch&amp;gt;1&amp;lt;/stretch&amp;gt;&amp;lt;/empty&amp;gt;&lt;br /&gt;
       &amp;lt;button&amp;gt;&lt;br /&gt;
            &amp;lt;legend&amp;gt;Reload&amp;lt;/legend&amp;gt;&lt;br /&gt;
            &amp;lt;default&amp;gt;1&amp;lt;/default&amp;gt;&lt;br /&gt;
            &amp;lt;border&amp;gt;2&amp;lt;/border&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;reinit&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;subsystem&amp;gt;gui&amp;lt;/subsystem&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/button&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;button&amp;gt;&lt;br /&gt;
            &amp;lt;pref-width&amp;gt;16&amp;lt;/pref-width&amp;gt;&lt;br /&gt;
            &amp;lt;pref-height&amp;gt;16&amp;lt;/pref-height&amp;gt;&lt;br /&gt;
            &amp;lt;legend&amp;gt;&amp;lt;/legend&amp;gt;&lt;br /&gt;
            &amp;lt;default&amp;gt;1&amp;lt;/default&amp;gt;&lt;br /&gt;
            &amp;lt;keynum&amp;gt;27&amp;lt;/keynum&amp;gt;&lt;br /&gt;
            &amp;lt;border&amp;gt;2&amp;lt;/border&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;dialog-close&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;/group&amp;gt;&lt;br /&gt;
    &amp;lt;hrule/&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;canvas&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;traffic-map&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;valign&amp;gt;fill&amp;lt;/valign&amp;gt;&lt;br /&gt;
               &amp;lt;halign&amp;gt;fill&amp;lt;/halign&amp;gt;&lt;br /&gt;
               &amp;lt;stretch&amp;gt;true&amp;lt;/stretch&amp;gt;&lt;br /&gt;
               &amp;lt;pref-width&amp;gt;600&amp;lt;/pref-width&amp;gt;&lt;br /&gt;
               &amp;lt;pref-height&amp;gt;400&amp;lt;/pref-height&amp;gt;&lt;br /&gt;
&amp;lt;nasal&amp;gt;      &lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
     this is the Canvas-specific Nasal section where you can run your own Nasal code &lt;br /&gt;
     to access and animate the canvas region.&lt;br /&gt;
     If you need to access existing code from other places (i.e. aircraft specific stuff), &lt;br /&gt;
     just use io.load_nasal() or io.include() to pull in all required dependencies.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;load&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
## &lt;br /&gt;
# you can add your own dependencies here&lt;br /&gt;
#&lt;br /&gt;
var dependencies = [&lt;br /&gt;
];&lt;br /&gt;
 &lt;br /&gt;
foreach(var path; dependencies)&lt;br /&gt;
 io.include( path );&lt;br /&gt;
 &lt;br /&gt;
var myCanvas = canvas.get( cmdarg() );&lt;br /&gt;
var TestMap = myCanvas.createGroup().createChild(&amp;quot;map&amp;quot;);&lt;br /&gt;
TestMap.setController(&amp;quot;Aircraft position&amp;quot;); # Nasal/canvas/map/aircraftpos.controller&lt;br /&gt;
foreach(var type; var layer_types = ['TARGET',] )&lt;br /&gt;
TestMap.addLayer(factory: canvas.SymbolLayer, type_arg: type); &lt;br /&gt;
# Center the map's origin:&lt;br /&gt;
TestMap.setTranslation(300,200); &lt;br /&gt;
# Initialize a range (TODO: LayeredMap.Controller):&lt;br /&gt;
TestMap.set(&amp;quot;range&amp;quot;, 100);&lt;br /&gt;
# Little cursor of current position:&lt;br /&gt;
TestMap.createChild(&amp;quot;path&amp;quot;).rect(-5,-5,10,10).setColorFill(1,1,1).setColor(0,1,0);&lt;br /&gt;
# And make it move with our aircraft:&lt;br /&gt;
TestMap.setController(&amp;quot;Aircraft position&amp;quot;); # from aircraftpos.controller&lt;br /&gt;
&lt;br /&gt;
# this is the end of the embedded Canvas/Nasal-load section&lt;br /&gt;
]]&amp;gt;&amp;lt;/load&amp;gt;&lt;br /&gt;
&amp;lt;!-- 	all the code here will be executed once the dialog is closed, so you should &lt;br /&gt;
	put your cleanup code here - i.e. free all resources here (timers, listeners, loops)&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;unload&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
TestMap.del();&lt;br /&gt;
]]&amp;gt;&amp;lt;/unload&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/nasal&amp;gt;&lt;br /&gt;
&amp;lt;/canvas&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then use the following piece of Nasal to open/show the dialog via the [[Nasal Console]]:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
gui.showDialog(&amp;quot;traffic-mapstructure&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Canvas_Radar&amp;diff=67387</id>
		<title>Canvas Radar</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Canvas_Radar&amp;diff=67387"/>
		<updated>2014-02-06T17:16:46Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: /* Objective */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Template:Non-stable}}&lt;br /&gt;
&lt;br /&gt;
{{infobox subsystem&lt;br /&gt;
|image = MapStructure-TFC-Troubleshooting.png&lt;br /&gt;
|name =Canvas Radar Framework&lt;br /&gt;
|started= 02/2014 &lt;br /&gt;
|description = Radar Framework&lt;br /&gt;
|status = Under active development as of 02/2014&lt;br /&gt;
|maintainers  = 5H1N0B1, Hooray&lt;br /&gt;
|developers = 5H1N0B1 (since 02/2014),&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
|folders = [http://gitorious.org/fg/flightgear/trees/next/src/Canvas $FG_SRC/Canvas]&lt;br /&gt;
           [http://gitorious.org/fg/simgear/trees/next/simgear/canvas $SG_SRC/simgear/canvas]&lt;br /&gt;
|topic-fgdata= (main repository, master branch; https://gitorious.org/~tomprogs/fg/toms-fgdata/commits/canvas-gui-demo)&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|subforum= http://forum.flightgear.org/viewforum.php?f=71&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Template:Canvas Navigation}}&lt;br /&gt;
&lt;br /&gt;
'''Canvas Radar''' is a [[MapStructure]]-based [[Nasal]]-space [[Canvas]]-Framework for creating Radar displays in FlightGear, as of 02/2014 it is being actively developed by 5H1N0B1 with a focus on the [[Mirage 2000-5]] fighter jet. The Radar implementation is heavily based on xiii's original code and will be further generalized and adapted to be usable in the MVC-centric design of Philosopher's MapStructure framework.&lt;br /&gt;
&lt;br /&gt;
The Radar framework is being closely developed in conjunction with F-JYL's [[CanvasMFD]] framework to ensure that aircraft developers can easily adopt the framework in their own aircraft, without having to modify a ton of Nasal code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
Come up with a generic radar framework for [[MapStructure]] that is completely aircraft-agnostic, so that it can be easily adopted, integrated and customized by aircraft developers, but also by people  doing ATC related projects, like [[ATC-FS]] or [[ATC-aircraft]].&lt;br /&gt;
&lt;br /&gt;
Currently, we're in touch with Adrian to see if his [[Radio Propagation]] could be rebased against git/next and exposed via [[Nasal/CppBind]] to provide a better option for radar modeling. This is something that we should probably discuss with xiii (developer of the original Nasal code) and vivian (agradar developer) at some point, vivian also expressed interest in updating the agradar to support the Radio Propagation code written by Adrian[https://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg38923.html].&lt;br /&gt;
&lt;br /&gt;
Also, i4dnf  mentioned that we could benefit from making antenna profiles configurable for different aircraft. Adrian mentioned that he has access to the radar manual of the F16 and that he's familiar with the various operating modes.&lt;br /&gt;
&lt;br /&gt;
The Flightgear Next Gen Radar would be able to (not sorted) : &lt;br /&gt;
1) Be a lot faster as actual system (Using Canvas display and some C++ for high consuming function)&lt;br /&gt;
2) Detect Heat/infrared&lt;br /&gt;
3) Manage AESA radar. (Actually it's more complicated to manage non AESA radar -&amp;gt; cause of the sweep. -&amp;gt; No sweep for AESA)&lt;br /&gt;
4) Manage DOPPLER radar DOPPLER (Actually, more complicated to manage &amp;quot;non doppler&amp;quot; radar. The purpose is to erase signature of airplane which are bellow us, and fly at low alt. We could even erase 0 kts aircraft -&amp;gt; The Pougatchev's Cobra should be able to make stall DOPPLER radar)&lt;br /&gt;
5) BONUS : Terrain detection. Make an aircraft disapear if it's behind a mountain&lt;br /&gt;
6) Make it working with existing Radio Propagation code.&lt;br /&gt;
7) Manage IFF/Transponder&lt;br /&gt;
8) Display Radar on Nav Mfd&lt;br /&gt;
9) Allow more than one radar on a plane, like AWACS or Russian aircraft which have a rear radar&lt;br /&gt;
10) Manage laser targeting -&amp;gt; with a pod view and clicking (for non AI target like building)&lt;br /&gt;
11) Allow simple re use of the radar on each aircraft military and also civilian&lt;br /&gt;
12) Long term obj : Put a radar object in &amp;quot;each&amp;quot; missile on the missile.nas script&lt;br /&gt;
13) More ?&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
Currently, we're playing around with a modified version of the [[MapStructure]] TFC (traffic) layer, to use this in a standalone XML dialog and customize it as needed. Once that is working as expected, we will investigate adding xiii's radar modeling code and replace the traffic/TCAS functionality accordingly. Afterwards, we will need to integrate this with the [[Canvas MFD Framework]] to ensure that aircraft developers can easily use the framework in their cockpits.&lt;br /&gt;
&lt;br /&gt;
At that point, it would then also make sense to check out the [[:Category:Fighter aircraft]] and [[:Category:Carrier-based aircraft]] categories to get in touch with the developers and maintainers of aircraft with RADAR, and ask them for adoption/integration feedback.&lt;br /&gt;
&lt;br /&gt;
Subsequently, it would make sense to look at existing hard-coded displays, like the agradar, groundradar and wxradar to support these use-cases, too.&lt;br /&gt;
Specifically, [[ATC-FS]] and [[ATC-aircraft]] could greatly benefit from this effort. &lt;br /&gt;
&lt;br /&gt;
5H1N0B1 also mentioned that a properly-designed component would allow other uses, too - such as for example, equipping [[Scripted AI Missiles]] with a real RADAR, or adding radar support to [[Bombable]] - likewise, it would be possible to add such radar displays to AWACS aircraft, or even to vessels like the [[Nimitz]].&lt;br /&gt;
&lt;br /&gt;
* [[Mirage 2000-5]] (5H1N0B1) {{Progressbar|10}}&lt;br /&gt;
* [[Saab JA-37 Viggen]] (Necolatis) {{Progressbar|10}}&lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=4&amp;amp;t=17709 Mig-29] (Mercury) {{Not done}}&lt;br /&gt;
* [[Grumman F-14 Tomcat]] (xiii) {{Not done}}&lt;br /&gt;
&lt;br /&gt;
== Radar/ATC Requirements ==&lt;br /&gt;
&lt;br /&gt;
These are primarily requirements for the Mirage2000 that is currently being revamped by 5H1N0B1[http://forum.flightgear.org/viewtopic.php?f=30&amp;amp;t=21955&amp;amp;p=199303&amp;amp;hilit=awacs#p199303], these changes could also be used to add ATC support to AWACS aircraft[http://forum.flightgear.org/viewtopic.php?f=19&amp;amp;t=21867&amp;amp;p=198427&amp;amp;hilit=awacs#p198417].&lt;br /&gt;
* Set up a dialog-based test bed {{Done}}&lt;br /&gt;
* Prototype a simple ATC/RADAR layer {{Progressbar|40}}&lt;br /&gt;
* Terrain layer (elevation height maps using the terrain presampler) see: [http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=17184&amp;amp;hilit=elevations+sampler#p163485] and [http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=17284&amp;amp;p=164347&amp;amp;hilit=heightmap#p164347] {{Not done}} (by 5H1N0B1)&lt;br /&gt;
* Custom Controllers for:&lt;br /&gt;
** azimuth-based filtering {{Not done}} (by 5H1N0B1)&lt;br /&gt;
** sweep mode (AESA) {{Not done}} (by 5H1N0B1)&lt;br /&gt;
** terrain awareness (filtering) {{Not done}} (by 5H1N0B1)&lt;br /&gt;
** heat detection based filtering {{Not done}} (by 5H1N0B1)&lt;br /&gt;
* select and animate symbols (targets) {{Not done}} (by 5H1N0B1)&lt;br /&gt;
* TCAS/transponder awareness for symbol animation/styling {{Not done}} (by 5H1N0B1)&lt;br /&gt;
* explore integrating this with Adrian's [[Radio propagation]] system via cppbind (Hooray) {{Not done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see [[ATC-FS]] and [[ATC-aircraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
== Creating a custom ATC/RADAR Layer ==&lt;br /&gt;
People already having some Nasal experience (property tree, OOP), should be able to complete this 20-30 minutes, and you would end up with an ATC display and a custom symbol - next, you will want to &amp;quot;filter&amp;quot; traffic based on surrrounding features like terrain, altitude, radar settings and radio propagation etc.&lt;br /&gt;
&lt;br /&gt;
If you find yourself getting stuck somewhere, look at some of the other .symbol/.lcontroller and .scontroller files - especially the shorter/simpler ones - and then read the wiki section about adding new layers a few times, and everything will start making sense&lt;br /&gt;
&lt;br /&gt;
Basically, this should get you going quickly:&lt;br /&gt;
* copy an existing set of files (better TFC* instead of VOR*), but name it &amp;quot;TARGET&amp;quot; instead of TFC: TARGET.symbol, TARGET.lcontroller, TARGET.symbol (RADAR may be a more appropriate name)&lt;br /&gt;
* you need to change the name to TARGET inside the 3 new TARGET* files (see the top of the new files, where 'TFC' can be seen)&lt;br /&gt;
** start by opening TARGET.scontroller and replace TFC with TARGET&lt;br /&gt;
** next, open TARGET.symbol - this contains the draw() and update() callbacks to draw/update a single symbol and animate it accordingly, also replace TFC with TARGET&lt;br /&gt;
** next, open TARGET.lcontroller - this contains the layer management code, a layer manages a vector of symbols, replace TFC with TARGET&lt;br /&gt;
* now, add the new files to MapStructure.nas: near the end of MapStructure.nas, in the loading code, there's a vector that contains the names to load, e.g. &amp;quot;VOR&amp;quot;, &amp;quot;DME&amp;quot;, and &amp;quot;TFC&amp;quot;, and so you will need to add &amp;quot;TARGET&amp;quot; there as well. This is to tell the framework about your newly created layer files.&lt;br /&gt;
&lt;br /&gt;
* once that is done, use the new &amp;quot;TARGET&amp;quot; identifier in the foreach vector in the Nasal section of the dialog seen above and its embedded canvas/nasal/load block &lt;br /&gt;
* this should give you a TCAS traffic (TFC) symbol using the TARGET handle when you run the dialog&lt;br /&gt;
(5H1N0B1 : I'm here)&lt;br /&gt;
* once that is working, you can customize the symbol by opening the TARGET.symbol file which contains the draw routine - for example by changing the color or using some custom font/label, or just using a SVG file via parsesevg() - see the NDB.draw file for an example on how to display a custom SVG file&lt;br /&gt;
* at this stage you should have a custom symbol rendered in all the places where MP/AI traffic is located, all driven via the TCAS function.&lt;br /&gt;
* so the next step is to make the code a bit smarter, especially look at the TFC.lcontroller and TFC.scontroller files&lt;br /&gt;
* it may even be a good idea to directly start with those, instead of the VOR files ...&lt;br /&gt;
* once that is working, i.e. 1) you have a custom symbol shown and see all the surrounding MP/AI traffic, you have already successfully created a simple ATC/radar screen!&lt;br /&gt;
* next, you would replace the data source (which is AI/MP traffic) with your own data source - for that, refer to the TARGET (TFC) files to see how the AI/MP traffic is added&lt;br /&gt;
* once you have added your own data source, you can change the heuristics accordingly - to handle terrain, radar range etc.&lt;br /&gt;
* your own objects should ideally be geo.nas Coord objects - that way, the system can directly support your traffic, you only need to derive from geo.Coord to make this happen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var myPosition3D = {&lt;br /&gt;
 new: func {&lt;br /&gt;
  return {parents:[geo.Coord.new() ]};&lt;br /&gt;
 },&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, you will want to investigate the positionedSearch class, which provides a powerful means to do range-based filtering of positioned objects, these can in turn be filtered (searched) for other characteristics, i.e. based on range, terrain, radio propagation or heat etc. Take a look at TARGET.lcontroller and its searchCmd() helper.&lt;br /&gt;
&lt;br /&gt;
If you  need help doing this, please check out the canvas subforum, and also post some screen shots, so that we can better help you&lt;br /&gt;
It would be a good idea to also start a fgdata topic branch so that we can better track your work and look at the code.&lt;br /&gt;
&lt;br /&gt;
== Custom Filtering ==&lt;br /&gt;
&lt;br /&gt;
Once the previously outlined steps are working, I would consider customizing the searchCmd in your lcontroller file.&lt;br /&gt;
At the moment, TFC.lcontoller works like this https://gitorious.org/fg/fgdata/source/c78b2f936891bffad49e27d84d952a0d45540eef:Nasal/canvas/map/TFC.lcontroller#&lt;br /&gt;
* get a list of AI and MP traffic (two vectors)&lt;br /&gt;
* foreach list of AI and MP traffic&lt;br /&gt;
* determine if each aircraft is within the range specified via in_range: https://gitorious.org/fg/fgdata/source/c78b2f936891bffad49e27d84d952a0d45540eef:Nasal/canvas/map/TFC.lcontroller#L50&lt;br /&gt;
* '''PLACEHOLDER'''&lt;br /&gt;
* if it is in range, the aircraft will be appended to the result vector&lt;br /&gt;
* the result vector will be returned, and later on used to call the draw/update routines in the *.symbol file (e.g. TRAFFIC.symbol)&lt;br /&gt;
&lt;br /&gt;
The line where I added PLACEHOLDER is where you could insert your own logic, i.e. the radar-specific stuff from xiii's code - such as checking distance, azimuth, altitude  - radar profile/signature, terrain etc - and only append the aircraft if the whole check evaluates to true.&lt;br /&gt;
&lt;br /&gt;
You will find that the whole lcontroller file uses a wrapper called &amp;quot;TrafficModel&amp;quot; - you can either extend this to use your &amp;quot;Target&amp;quot; class directly, or change your Target class accordingly.&lt;br /&gt;
The main thing is that your class should  be derived from a geo.Coord object, so that it has the lat/lon/alt methods available and can be directly processed by MapStructure without requiring further changes.&lt;br /&gt;
&lt;br /&gt;
You will see that the TrafficModel class is used in a few places - so this would need some changes if you use some different approach, but it's still simple. &lt;br /&gt;
The external interface is all about having lat/lon/alt (positions) and the .equals()  method&lt;br /&gt;
Overall, TrafficModel is just a dumb helper class that is a wrapper for geo.Coord() objects, so there's no reason why you shouldn't be able to extend your own Target class accordingly, you can use the TrafficModel as a template. I would just suggest to maintain the MVC separation at all times.&lt;br /&gt;
&lt;br /&gt;
Analogous to the in_range() helper, you could add other functions for your own filtering needs (altitude, terrain-obstruction etc) - it's better to use separate functions for each, than inflating a single function unnecessarily. As you can see, the in_range() function is unaware of TrafficModel specifics -it deals directly with lat/lon pairs..&lt;br /&gt;
&lt;br /&gt;
So it's simple to reuse as is.&lt;br /&gt;
TrafficModel itself is typically directly used via the constructor call: .new()&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
== Prototyping ==&lt;br /&gt;
=== MapStructure.nas ===&lt;br /&gt;
&lt;br /&gt;
MapStructure.nas currently needs to be patched/edited to add new layers manually - at some point, we will introduce some simple registration API, analogous to the old framework, where people can simply call a function to make their layer known to the framework.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
diff --git a/Nasal/canvas/MapStructure.nas b/Nasal/canvas/MapStructure.nas&lt;br /&gt;
index 0afdcd2..0c11db3 100644&lt;br /&gt;
--- a/Nasal/canvas/MapStructure.nas&lt;br /&gt;
+++ b/Nasal/canvas/MapStructure.nas&lt;br /&gt;
@@ -480,7 +480,7 @@ var load_MapStructure = func {&lt;br /&gt;
                load(FG_ROOT~&amp;quot;/Nasal/canvas/map/&amp;quot;~name~&amp;quot;.scontroller&amp;quot;, name);&lt;br /&gt;
                }&lt;br /&gt;
 &lt;br /&gt;
-               foreach( var name; ['VOR','FIX','NDB','DME','WPT','TFC'] )&lt;br /&gt;
+               foreach( var name; ['VOR','FIX','NDB','DME','WPT','TFC','TARGET',] )&lt;br /&gt;
                        load_deps( name );&lt;br /&gt;
                load(FG_ROOT~&amp;quot;/Nasal/canvas/map/aircraftpos.controller&amp;quot;, name);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TARGET.scontroller ===&lt;br /&gt;
&lt;br /&gt;
This file contains symbol-specific controller logic&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
# Class things:&lt;br /&gt;
var name = 'TARGET';&lt;br /&gt;
var parents = [Symbol.Controller];&lt;br /&gt;
var __self__ = caller(0)[0];&lt;br /&gt;
Symbol.Controller.add(name, __self__);&lt;br /&gt;
Symbol.registry[name].df_controller = __self__;&lt;br /&gt;
var new = func(model) ; # this controller doesn't need an instance&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# XXX: this is more model-ish than controller-ish&lt;br /&gt;
var get_threat_lvl =  func 3; #func(model) (model.getNode(&amp;quot;tcas/threat-level&amp;quot;).getValue() or 0);&lt;br /&gt;
var get_vspd       =  func 300; #func(model) (model.getNode(&amp;quot;velocities/vertical-speed-fps&amp;quot;).getValue() or 0)*60;&lt;br /&gt;
var get_alt_diff   =  func 900; #func(model) (model.getNode(&amp;quot;position/altitude-ft&amp;quot;).getValue() or 0) - (getprop(&amp;quot;/position/altitude-ft&amp;quot;) or 0);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TARGET.lcontroller ===&lt;br /&gt;
&lt;br /&gt;
This file handles managing a single layer&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Class things:&lt;br /&gt;
var name = 'TARGET';&lt;br /&gt;
var parents = [SymbolLayer.Controller];&lt;br /&gt;
var __self__ = caller(0)[0];&lt;br /&gt;
SymbolLayer.Controller.add(name, __self__);&lt;br /&gt;
SymbolLayer.add(name, {&lt;br /&gt;
	parents: [SymbolLayer],&lt;br /&gt;
	type: name, # Symbol type&lt;br /&gt;
	df_controller: __self__, # controller to use by default -- this one&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var model_root = props.globals.getNode(&amp;quot;/ai/models/&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var new = func(layer) {&lt;br /&gt;
	var m = {&lt;br /&gt;
		parents: [__self__],&lt;br /&gt;
		layer: layer,&lt;br /&gt;
		listeners: [],&lt;br /&gt;
		# query_range_nm: 500,&lt;br /&gt;
	};&lt;br /&gt;
	# Listen to ai model events&lt;br /&gt;
	append(m.listeners, setlistener(&lt;br /&gt;
		model_root.getNode(&amp;quot;model-added&amp;quot;), func(n) {&lt;br /&gt;
			printlog(_MP_dbg_lvl, &amp;quot;Dynamically adding model at &amp;quot;~n.getValue());&lt;br /&gt;
			var node = props.globals.getNode(n.getValue());&lt;br /&gt;
			var name = node.getName();&lt;br /&gt;
			if (name == &amp;quot;aircraft&amp;quot; or name == &amp;quot;multiplayer&amp;quot;)&lt;br /&gt;
				if (m.in_range(node.getValue(&amp;quot;position/latitude-deg&amp;quot;), node.getValue(&amp;quot;position/longitude-deg&amp;quot;)))&lt;br /&gt;
					layer.onAdded(TrafficModel.new(node));&lt;br /&gt;
		}&lt;br /&gt;
	));&lt;br /&gt;
	append(m.listeners, setlistener(&lt;br /&gt;
		model_root.getNode(&amp;quot;model-removed&amp;quot;), func(n) {&lt;br /&gt;
			printlog(_MP_dbg_lvl, &amp;quot;Dynamically deleting model at &amp;quot;~n.getValue());&lt;br /&gt;
			var node = props.globals.getNode(n.getValue());&lt;br /&gt;
			var name = node.getName();&lt;br /&gt;
			if (name == &amp;quot;aircraft&amp;quot; or name == &amp;quot;multiplayer&amp;quot;)&lt;br /&gt;
				if (m.in_range(node.getValue(&amp;quot;position/latitude-deg&amp;quot;), node.getValue(&amp;quot;position/longitude-deg&amp;quot;)))&lt;br /&gt;
					layer.onRemoved(TrafficModel.new(node));&lt;br /&gt;
		}&lt;br /&gt;
	));&lt;br /&gt;
	layer.searcher._equals = func(l,r) l.equals(r);&lt;br /&gt;
	return m;&lt;br /&gt;
};&lt;br /&gt;
var del = func() {&lt;br /&gt;
	#print(name~&amp;quot;.lcontroller.del()&amp;quot;);&lt;br /&gt;
	foreach (var l; me.listeners)&lt;br /&gt;
		removelistener(l);&lt;br /&gt;
};&lt;br /&gt;
var in_range = func(lat,lon,myPositionVec=nil,max_dist_m=nil) {&lt;br /&gt;
	if (lat == nil or lon == nil) return 0;&lt;br /&gt;
	var pos = geo.Coord.new();&lt;br /&gt;
	pos.set_latlon(lat,lon);&lt;br /&gt;
	var myPosition = geo.Coord.new();&lt;br /&gt;
	# FIXME: need a Map Controller for this, and all query_range's/get_position's&lt;br /&gt;
	if (myPositionVec == nil)&lt;br /&gt;
		var myPositionVec = me.get_position();&lt;br /&gt;
	myPosition.set_latlon( myPositionVec[0], myPositionVec[1]);&lt;br /&gt;
	if (max_dist_m == nil)&lt;br /&gt;
		var max_dist_m = me.query_range()*NM2M;&lt;br /&gt;
	return (pos.distance_to( myPosition ) &amp;lt;= max_dist_m )&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var TrafficModel = {&lt;br /&gt;
	new: func(node, id=nil, layer=nil) {&lt;br /&gt;
		if (id == nil) id = node.getValue(&amp;quot;id&amp;quot;);&lt;br /&gt;
		var m = {&lt;br /&gt;
			# Note: because this inherits from props.Node, Symbol.Controller.equals&lt;br /&gt;
			# will call l.equals(r) -- the one defined below&lt;br /&gt;
			parents: [TrafficModel, geo.Coord, node], # note we don't implement a full geo.Coord API&lt;br /&gt;
			id: id,&lt;br /&gt;
			node: node,&lt;br /&gt;
			pos: node.getNode(&amp;quot;position&amp;quot;,1),&lt;br /&gt;
		};&lt;br /&gt;
		if (m.pos == nil)&lt;br /&gt;
			m.latlon = func [nil,nil,nil];&lt;br /&gt;
		#debug.dump(m); # why doesn't this print?&lt;br /&gt;
		return m;&lt;br /&gt;
	},&lt;br /&gt;
	equals: func(other) other.id == me.id,&lt;br /&gt;
	latlon: func() {&lt;br /&gt;
		return [&lt;br /&gt;
			me.pos.getValue(&amp;quot;latitude-deg&amp;quot;),&lt;br /&gt;
			me.pos.getValue(&amp;quot;longitude-deg&amp;quot;),&lt;br /&gt;
			me.pos.getValue(&amp;quot;altitude-ft&amp;quot;)&lt;br /&gt;
		];&lt;br /&gt;
	},&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
##&lt;br /&gt;
# huge hack taken from navdisplay.mfd&lt;br /&gt;
&lt;br /&gt;
var query_range = func 500;&lt;br /&gt;
var get_position = func geo.aircraft_position().latlon() ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var searchCmd = func {&lt;br /&gt;
	# TODO: this would be a good candidate for splitting across frames&lt;br /&gt;
	print(&amp;quot;Doing query: &amp;quot;~name);&lt;br /&gt;
&lt;br /&gt;
	var result = [];&lt;br /&gt;
	# FIXME: need a Map Controller for this, and all query_range's/get_position's&lt;br /&gt;
	var myPositionVec = me.get_position();&lt;br /&gt;
	var max_dist_m = me.query_range()*NM2M;&lt;br /&gt;
&lt;br /&gt;
	# AI and Multiplayer traffic&lt;br /&gt;
	foreach (var traffic; [model_root.getChildren(&amp;quot;aircraft&amp;quot;), model_root.getChildren(&amp;quot;multiplayer&amp;quot;)]) {&lt;br /&gt;
		foreach(var t; traffic) {&lt;br /&gt;
			if (me.in_range(t.getValue(&amp;quot;position/latitude-deg&amp;quot;),&lt;br /&gt;
				            t.getValue(&amp;quot;position/longitude-deg&amp;quot;),&lt;br /&gt;
				            myPositionVec,&lt;br /&gt;
				            max_dist_m))&lt;br /&gt;
				append(result, TrafficModel.new(t, nil, me.layer));&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#debug.dump(result);&lt;br /&gt;
	#return [];&lt;br /&gt;
	print(&amp;quot;TARGETS:&amp;quot;, size(result) );&lt;br /&gt;
	return result;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TARGET.symbol ===&lt;br /&gt;
&lt;br /&gt;
This is the file that handles drawing and updating a single symbol.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Class things:&lt;br /&gt;
var name = 'TARGET';&lt;br /&gt;
var parents = [DotSym];&lt;br /&gt;
var __self__ = caller(0)[0];&lt;br /&gt;
DotSym.makeinstance( name, __self__ );&lt;br /&gt;
&lt;br /&gt;
var element_type = &amp;quot;group&amp;quot;; # we want a group, becomes &amp;quot;me.element&amp;quot;&lt;br /&gt;
var text_tcas = nil;&lt;br /&gt;
var icon_tcas = nil;&lt;br /&gt;
var arrow_tcas = [nil,nil];&lt;br /&gt;
var arrow_type = nil;&lt;br /&gt;
&lt;br /&gt;
var draw_tcas_arrow = nil;&lt;br /&gt;
&lt;br /&gt;
var draw = func {&lt;br /&gt;
	if (me.draw_tcas_arrow == nil)&lt;br /&gt;
		me.draw_tcas_arrow = [&lt;br /&gt;
			draw_tcas_arrow_above_500,&lt;br /&gt;
			draw_tcas_arrow_below_500&lt;br /&gt;
		];&lt;br /&gt;
	#var callsign = me.model.getNode(&amp;quot;callsign&amp;quot;).getValue();&lt;br /&gt;
	print(&amp;quot;Drawing target&amp;quot; );&lt;br /&gt;
	var threatLvl = me.controller.get_threat_lvl(me.model);&lt;br /&gt;
	var vspeed = me.controller.get_vspd(me.model);&lt;br /&gt;
	var altDiff = me.controller.get_alt_diff(me.model);&lt;br /&gt;
	# Init&lt;br /&gt;
	if (me.text_tcas == nil) {&lt;br /&gt;
		me.text_tcas = me.element.createChild(&amp;quot;text&amp;quot;)&lt;br /&gt;
			.setDrawMode( canvas.Text.TEXT )&lt;br /&gt;
			.setText(sprintf(&amp;quot;%+02.0f&amp;quot;,altDiff/100))&lt;br /&gt;
			.setFont(&amp;quot;LiberationFonts/LiberationSans-Regular.ttf&amp;quot;)&lt;br /&gt;
			.setColor(1,1,1)&lt;br /&gt;
			.setFontSize(28)&lt;br /&gt;
			.setAlignment(&amp;quot;center-center&amp;quot;);&lt;br /&gt;
		me.icon_tcas = me.element.createChild(&amp;quot;path&amp;quot;)&lt;br /&gt;
			.setStrokeLineWidth(3);&lt;br /&gt;
	}&lt;br /&gt;
	# Update&lt;br /&gt;
	if (altDiff &amp;gt; 0)&lt;br /&gt;
		me.text_tcas.setTranslation(0,-40);&lt;br /&gt;
	else&lt;br /&gt;
		me.text_tcas.setTranslation(0,40);&lt;br /&gt;
	var arrow_type = (vspeed &amp;gt;= 500);&lt;br /&gt;
	if (arrow_type != me.arrow_type) {&lt;br /&gt;
		(old_type, me.arrow_type) = (me.arrow_type, arrow_type);&lt;br /&gt;
		if (old_type != nil and me.arrow_tcas[old_type] != nil) me.arrow_tcas[old_type].hide();&lt;br /&gt;
		if (me.arrow_tcas[arrow_type] == nil)&lt;br /&gt;
			me.arrow_tcas[arrow_type] = me.draw_tcas_arrow[arrow_type](me.element);&lt;br /&gt;
		#me.arrow_tcas[arrow_type].show();&lt;br /&gt;
	}&lt;br /&gt;
	## TODO: threat level symbols should also be moved to *.draw files&lt;br /&gt;
	if (threatLvl == 3) {&lt;br /&gt;
		# resolution advisory&lt;br /&gt;
		me.icon_tcas.moveTo(-17,-17)&lt;br /&gt;
			.horiz(34)&lt;br /&gt;
			.vert(34)&lt;br /&gt;
			.horiz(-34)&lt;br /&gt;
			.close()&lt;br /&gt;
			.setColor(1,0,0)&lt;br /&gt;
			.setColorFill(1,0,0);&lt;br /&gt;
		me.text_tcas.setColor(1,0,0);&lt;br /&gt;
		#me.arrow_tcas.setColor(1,0,0);&lt;br /&gt;
	} elsif (threatLvl == 2) {&lt;br /&gt;
		# traffic advisory&lt;br /&gt;
		me.icon_tcas.moveTo(-17,0)&lt;br /&gt;
			.arcSmallCW(17,17,0,34,0)&lt;br /&gt;
			.arcSmallCW(17,17,0,-34,0)&lt;br /&gt;
			.setColor(1,0.5,0)&lt;br /&gt;
			.setColorFill(1,0.5,0);&lt;br /&gt;
		me.text_tcas.setColor(1,0.5,0);&lt;br /&gt;
		#me.arrow_tcas.setColor(1,0.5,0);&lt;br /&gt;
	} elsif (threatLvl == 1) {&lt;br /&gt;
		# proximate traffic&lt;br /&gt;
		me.icon_tcas.moveTo(-10,0)&lt;br /&gt;
			.lineTo(0,-17)&lt;br /&gt;
			.lineTo(10,0)&lt;br /&gt;
			.lineTo(0,17)&lt;br /&gt;
			.close()&lt;br /&gt;
			.setColor(1,1,1)&lt;br /&gt;
			.setColorFill(1,1,1);&lt;br /&gt;
	} else {&lt;br /&gt;
		print(&amp;quot;Not a conflict!&amp;quot;);&lt;br /&gt;
		# other traffic&lt;br /&gt;
		me.icon_tcas.moveTo(-10,0)&lt;br /&gt;
			.lineTo(0,-17)&lt;br /&gt;
			.lineTo(10,0)&lt;br /&gt;
			.lineTo(0,17)&lt;br /&gt;
			.close()&lt;br /&gt;
			.setColor(1,1,1);&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== traffic-mapstructure.xml (GUI dialog) ===&lt;br /&gt;
&lt;br /&gt;
This is the XML dialog file that contains an embedded canvas which loads the required [[MapStructure]] layers. &lt;br /&gt;
This is purely used for prototyping and testing, so that there's no aircraft needed to test things.&lt;br /&gt;
&lt;br /&gt;
You will want to save this file in $FG_ROOT/gui/dialogs/traffic-mapstructure.xml.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;traffic-mapstructure&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;modal&amp;gt;false&amp;lt;/modal&amp;gt;&lt;br /&gt;
&amp;lt;layout&amp;gt;vbox&amp;lt;/layout&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;group&amp;gt;&lt;br /&gt;
        &amp;lt;layout&amp;gt;hbox&amp;lt;/layout&amp;gt;&lt;br /&gt;
        &amp;lt;empty&amp;gt;&amp;lt;stretch&amp;gt;1&amp;lt;/stretch&amp;gt;&amp;lt;/empty&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;text&amp;gt;&lt;br /&gt;
            &amp;lt;label&amp;gt;MapStructure Traffic Demo&amp;lt;/label&amp;gt;&lt;br /&gt;
        &amp;lt;/text&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
       &amp;lt;empty&amp;gt;&amp;lt;stretch&amp;gt;1&amp;lt;/stretch&amp;gt;&amp;lt;/empty&amp;gt;&lt;br /&gt;
       &amp;lt;button&amp;gt;&lt;br /&gt;
            &amp;lt;legend&amp;gt;Reload&amp;lt;/legend&amp;gt;&lt;br /&gt;
            &amp;lt;default&amp;gt;1&amp;lt;/default&amp;gt;&lt;br /&gt;
            &amp;lt;border&amp;gt;2&amp;lt;/border&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;reinit&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;subsystem&amp;gt;gui&amp;lt;/subsystem&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/button&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;button&amp;gt;&lt;br /&gt;
            &amp;lt;pref-width&amp;gt;16&amp;lt;/pref-width&amp;gt;&lt;br /&gt;
            &amp;lt;pref-height&amp;gt;16&amp;lt;/pref-height&amp;gt;&lt;br /&gt;
            &amp;lt;legend&amp;gt;&amp;lt;/legend&amp;gt;&lt;br /&gt;
            &amp;lt;default&amp;gt;1&amp;lt;/default&amp;gt;&lt;br /&gt;
            &amp;lt;keynum&amp;gt;27&amp;lt;/keynum&amp;gt;&lt;br /&gt;
            &amp;lt;border&amp;gt;2&amp;lt;/border&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;dialog-close&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;/group&amp;gt;&lt;br /&gt;
    &amp;lt;hrule/&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;canvas&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;traffic-map&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;valign&amp;gt;fill&amp;lt;/valign&amp;gt;&lt;br /&gt;
               &amp;lt;halign&amp;gt;fill&amp;lt;/halign&amp;gt;&lt;br /&gt;
               &amp;lt;stretch&amp;gt;true&amp;lt;/stretch&amp;gt;&lt;br /&gt;
               &amp;lt;pref-width&amp;gt;600&amp;lt;/pref-width&amp;gt;&lt;br /&gt;
               &amp;lt;pref-height&amp;gt;400&amp;lt;/pref-height&amp;gt;&lt;br /&gt;
&amp;lt;nasal&amp;gt;      &lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
     this is the Canvas-specific Nasal section where you can run your own Nasal code &lt;br /&gt;
     to access and animate the canvas region.&lt;br /&gt;
     If you need to access existing code from other places (i.e. aircraft specific stuff), &lt;br /&gt;
     just use io.load_nasal() or io.include() to pull in all required dependencies.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;load&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
## &lt;br /&gt;
# you can add your own dependencies here&lt;br /&gt;
#&lt;br /&gt;
var dependencies = [&lt;br /&gt;
];&lt;br /&gt;
 &lt;br /&gt;
foreach(var path; dependencies)&lt;br /&gt;
 io.include( path );&lt;br /&gt;
 &lt;br /&gt;
var myCanvas = canvas.get( cmdarg() );&lt;br /&gt;
var TestMap = myCanvas.createGroup().createChild(&amp;quot;map&amp;quot;);&lt;br /&gt;
TestMap.setController(&amp;quot;Aircraft position&amp;quot;); # Nasal/canvas/map/aircraftpos.controller&lt;br /&gt;
foreach(var type; var layer_types = ['TARGET',] )&lt;br /&gt;
TestMap.addLayer(factory: canvas.SymbolLayer, type_arg: type); &lt;br /&gt;
# Center the map's origin:&lt;br /&gt;
TestMap.setTranslation(300,200); &lt;br /&gt;
# Initialize a range (TODO: LayeredMap.Controller):&lt;br /&gt;
TestMap.set(&amp;quot;range&amp;quot;, 100);&lt;br /&gt;
# Little cursor of current position:&lt;br /&gt;
TestMap.createChild(&amp;quot;path&amp;quot;).rect(-5,-5,10,10).setColorFill(1,1,1).setColor(0,1,0);&lt;br /&gt;
# And make it move with our aircraft:&lt;br /&gt;
TestMap.setController(&amp;quot;Aircraft position&amp;quot;); # from aircraftpos.controller&lt;br /&gt;
&lt;br /&gt;
# this is the end of the embedded Canvas/Nasal-load section&lt;br /&gt;
]]&amp;gt;&amp;lt;/load&amp;gt;&lt;br /&gt;
&amp;lt;!-- 	all the code here will be executed once the dialog is closed, so you should &lt;br /&gt;
	put your cleanup code here - i.e. free all resources here (timers, listeners, loops)&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;unload&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
TestMap.del();&lt;br /&gt;
]]&amp;gt;&amp;lt;/unload&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/nasal&amp;gt;&lt;br /&gt;
&amp;lt;/canvas&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then use the following piece of Nasal to open/show the dialog via the [[Nasal Console]]:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
gui.showDialog(&amp;quot;traffic-mapstructure&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Canvas_Radar&amp;diff=67192</id>
		<title>Canvas Radar</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Canvas_Radar&amp;diff=67192"/>
		<updated>2014-02-03T22:14:55Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Template:Non-stable}}&lt;br /&gt;
&lt;br /&gt;
{{infobox subsystem&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
|image =777-display-selector.png&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|name =Canvas Radar Framework&lt;br /&gt;
|started= 02/2014 &lt;br /&gt;
|description = Radar Framework&lt;br /&gt;
|status = Under active development as of 02/2014&lt;br /&gt;
|maintainers  = 5H1N0B1, Hooray&lt;br /&gt;
|developers = 5H1N0B1 (since 02/2014),&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
|folders = [http://gitorious.org/fg/flightgear/trees/next/src/Canvas $FG_SRC/Canvas]&lt;br /&gt;
           [http://gitorious.org/fg/simgear/trees/next/simgear/canvas $SG_SRC/simgear/canvas]&lt;br /&gt;
|topic-fgdata= (main repository, master branch; https://gitorious.org/~tomprogs/fg/toms-fgdata/commits/canvas-gui-demo)&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|subforum= http://forum.flightgear.org/viewforum.php?f=71&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Template:Canvas Navigation}}&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Canvas Radar is a [[MapStructure]]-based [[Nasal]]-space [[Canvas]]-Framework for creating Radar displays in FlightGear, as of 02/2014 it is being actively developed by 5H1N0B1 with a focus on the [[Mirage 2000-5]] fighter jet. The Radar implementation is heavily based on xiii's original code and will be further generalized and adapted to be usable in the MVC-centric design of Philosopher's MapStructure framework.&lt;br /&gt;
&lt;br /&gt;
The Radar framework is being closely developed in conjunction with F-JYL's [[CanvasMFD]] framework to ensure that aircraft developers can easily adopt the framework in their own aircraft, without having to modify a ton of Nasal code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
Come up with a generic radar framework for [[MapStructure]] that is completely aircraft-agnostic, so that it can be easily adopted, integrated and customized by aircraft developers, but also by people  doing ATC related projects, like [[ATC-FS]] or [[ATC-aircraft]].&lt;br /&gt;
&lt;br /&gt;
Currently, we're in touch with Adrian to see if his [[Radio Propagation]] could be rebased against git/next and exposed via [[Nasal/CppBind]] to provide a better option for radar modeling. This is something that we should probably discuss with xiii (developer of the original Nasal code) and vivian (agradar developer) at some point, vivian also expressed interest in updating the agradar to support the Radio Propagation code written by Adrian[https://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg38923.html].&lt;br /&gt;
&lt;br /&gt;
Also, i4dnf  mentioned that we could benefit from making antenna profiles configurable for different aircraft. Adrian mentioned that he has access to the radar manual of the F16 and that he's familiar with the various operating modes.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
* [[Mirage 2000-5]] (5H1N0B1) {{Progressbar|10}}&lt;br /&gt;
* [[Saab JA-37 Viggen]] (Necolatis) {{Progressbar|10}}&lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=4&amp;amp;t=17709 Mig-29] (Mercury) {{Not done}}&lt;br /&gt;
* [[Grumman F-14 Tomcat]] (xiii) {{Not done}}&lt;br /&gt;
&lt;br /&gt;
== Radar/ATC Requirements ==&lt;br /&gt;
&lt;br /&gt;
These are primarily requirements for the Mirage2000 that is currently being revamped by 5H1N0B1[http://forum.flightgear.org/viewtopic.php?f=30&amp;amp;t=21955&amp;amp;p=199303&amp;amp;hilit=awacs#p199303], these changes could also be used to add ATC support to AWACS aircraft[http://forum.flightgear.org/viewtopic.php?f=19&amp;amp;t=21867&amp;amp;p=198427&amp;amp;hilit=awacs#p198417].&lt;br /&gt;
* Set up a dialog-based test bed {{Done}}&lt;br /&gt;
* Prototype a simple ATC/RADAR layer {{Progressbar|40}}&lt;br /&gt;
* Terrain layer (elevation height maps using the terrain presampler) see: [http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=17184&amp;amp;hilit=elevations+sampler#p163485] and [http://forum.flightgear.org/viewtopic.php?f=71&amp;amp;t=17284&amp;amp;p=164347&amp;amp;hilit=heightmap#p164347] {{Not done}} (by 5H1N0B1)&lt;br /&gt;
* Custom Controllers for:&lt;br /&gt;
** azimuth-based filtering {{Not done}} (by 5H1N0B1)&lt;br /&gt;
** sweep mode (AESA) {{Not done}} (by 5H1N0B1)&lt;br /&gt;
** terrain awareness (filtering) {{Not done}} (by 5H1N0B1)&lt;br /&gt;
** heat detection based filtering {{Not done}} (by 5H1N0B1)&lt;br /&gt;
* select and animate symbols (targets) {{Not done}} (by 5H1N0B1)&lt;br /&gt;
* TCAS/transponder awareness for symbol animation/styling {{Not done}} (by 5H1N0B1)&lt;br /&gt;
* explore integrating this with the [[Radio propagation]] via cppbind (Hooray) {{Not done}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see [[ATC-FS]] and [[ATC-aircraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
== Creating a custom ATC/RADAR Layer in 10 minutes ==&lt;br /&gt;
People already having some Nasal experience (property tree, OOP), should be able to complete this 20-30 minutes, and you would end up with an ATC display and a custom symbol - next, you will want to &amp;quot;filter&amp;quot; traffic based on surrrounding features like terrain, altitude, radar settings and radio propagation etc.&lt;br /&gt;
&lt;br /&gt;
If you find yourself getting stuck somewhere, look at some of the other .symbol/.lcontroller and .scontroller files - especially the shorter/simpler ones - and then read the wiki section about adding new layers a few times, and everything will start making sense&lt;br /&gt;
&lt;br /&gt;
Basically, this should get you going quickly:&lt;br /&gt;
* copy an existing set of files (better TFC* instead of VOR*), but name it &amp;quot;TARGET&amp;quot; instead of TFC: TARGET.symbol, TARGET.lcontroller, TARGET.symbol (RADAR may be a more appropriate name)&lt;br /&gt;
* you need to change the name to TARGET inside the 3 new TARGET* files (see the top of the new files, where 'TFC' can be seen)&lt;br /&gt;
** start by opening TARGET.scontroller and replace TFC with TARGET&lt;br /&gt;
** next, open TARGET.symbol - this contains the draw() and update() callbacks to draw/update a single symbol and animate it accordingly, also replace TFC with TARGET&lt;br /&gt;
** next, open TARGET.lcontroller - this contains the layer management code, a layer manages a vector of symbols, replace TFC with TARGET&lt;br /&gt;
* now, add the new files to MapStructure.nas: near the end of MapStructure.nas, in the loading code, there's a vector that contains the names to load, e.g. &amp;quot;VOR&amp;quot;, &amp;quot;DME&amp;quot;, and &amp;quot;TFC&amp;quot;, and so you will need to add &amp;quot;TARGET&amp;quot; there as well. This is to tell the framework about your newly created layer files.&lt;br /&gt;
&lt;br /&gt;
* once that is done, use the new &amp;quot;TARGET&amp;quot; identifier in the foreach vector in the Nasal section of the dialog seen above and its embedded canvas/nasal/load block &lt;br /&gt;
* this should give you a TCAS traffic (TFC) symbol using the TARGET handle when you run the dialog&lt;br /&gt;
(5H1N0B1 : I'm here)&lt;br /&gt;
* once that is working, you can customize the symbol by opening the TARGET.symbol file which contains the draw routine - for example by changing the color or using some custom font/label, or just using a SVG file via parsesevg() - see the NDB.draw file for an example on how to display a custom SVG file&lt;br /&gt;
* at this stage you should have a custom symbol rendered in all the places where MP/AI traffic is located, all driven via the TCAS function.&lt;br /&gt;
* so the next step is to make the code a bit smarter, especially look at the TFC.lcontroller and TFC.scontroller files&lt;br /&gt;
* it may even be a good idea to directly start with those, instead of the VOR files ...&lt;br /&gt;
* once that is working, i.e. 1) you have a custom symbol shown and see all the surrounding MP/AI traffic, you have already successfully created a simple ATC/radar screen!&lt;br /&gt;
* next, you would replace the data source (which is AI/MP traffic) with your own data source - for that, refer to the TARGET (TFC) files to see how the AI/MP traffic is added&lt;br /&gt;
* once you have added your own data source, you can change the heuristics accordingly - to handle terrain, radar range etc.&lt;br /&gt;
* your own objects should ideally be geo.nas Coord objects - that way, the system can directly support your traffic, you only need to derive from geo.Coord to make this happen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var myPosition3D = {&lt;br /&gt;
 new: func {&lt;br /&gt;
  return {parents:[geo.Coord.new() ]};&lt;br /&gt;
 },&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, you will want to investigate the positionedSearch class, which provides a powerful means to do range-based filtering of positioned objects, these can in turn be filtered (searched) for other characteristics, i.e. based on range, terrain, radio propagation or heat etc. Take a look at TARGET.lcontroller and its searchCmd() helper.&lt;br /&gt;
&lt;br /&gt;
If you  need help doing this, please check out the canvas subforum, and also post some screen shots, so that we can better help you&lt;br /&gt;
It would be a good idea to also start a fgdata topic branch so that we can better track your work and look at the code.&lt;br /&gt;
&lt;br /&gt;
== Custom Filtering ==&lt;br /&gt;
&lt;br /&gt;
Once the previously outlined steps are working, I would consider customizing the searchCmd in your lcontroller file.&lt;br /&gt;
At the moment, TFC.lcontoller works like this https://gitorious.org/fg/fgdata/source/c78b2f936891bffad49e27d84d952a0d45540eef:Nasal/canvas/map/TFC.lcontroller#&lt;br /&gt;
* get a list of AI and MP traffic (two vectors)&lt;br /&gt;
* foreach list of AI and MP traffic&lt;br /&gt;
* determine if each aircraft is within the range specified via in_range: https://gitorious.org/fg/fgdata/source/c78b2f936891bffad49e27d84d952a0d45540eef:Nasal/canvas/map/TFC.lcontroller#L50&lt;br /&gt;
* '''PLACEHOLDER'''&lt;br /&gt;
* if it is in range, the aircraft will be appended to the result vector&lt;br /&gt;
* the result vector will be returned, and later on used to call the draw/update routines in the *.symbol file (e.g. TRAFFIC.symbol)&lt;br /&gt;
&lt;br /&gt;
The line where I added PLACEHOLDER is where you could insert your own logic, i.e. the radar-specific stuff from xiii's code - such as checking distance, azimuth, altitude  - radar profile/signature, terrain etc - and only append the aircraft if the whole check evaluates to true.&lt;br /&gt;
&lt;br /&gt;
You will find that the whole lcontroller file uses a wrapper called &amp;quot;TrafficModel&amp;quot; - you can either extend this to use your &amp;quot;Target&amp;quot; class directly, or change your Target class accordingly.&lt;br /&gt;
The main thing is that your class should  be derived from a geo.Coord object, so that it has the lat/lon/alt methods available and can be directly processed by MapStructure without requiring further changes.&lt;br /&gt;
&lt;br /&gt;
You will see that the TrafficModel class is used in a few places - so this would need some changes if you use some different approach, but it's still simple. &lt;br /&gt;
The external interface is all about having lat/lon/alt (positions) and the .equals()  method&lt;br /&gt;
Overall, TrafficModel is just a dumb helper class that is a wrapper for geo.Coord() objects, so there's no reason why you shouldn't be able to extend your own Target class accordingly, you can use the TrafficModel as a template. I would just suggest to maintain the MVC separation at all times.&lt;br /&gt;
&lt;br /&gt;
Analogous to the in_range() helper, you could add other functions for your own filtering needs (altitude, terrain-obstruction etc) - it's better to use separate functions for each, than inflating a single function unnecessarily. As you can see, the in_range() function is unaware of TrafficModel specifics -it deals directly with lat/lon pairs..&lt;br /&gt;
&lt;br /&gt;
So it's simple to reuse as is.&lt;br /&gt;
TrafficModel itself is typically directly used via the constructor call: .new()&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Scripted_AI_Objects&amp;diff=66105</id>
		<title>Scripted AI Objects</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Scripted_AI_Objects&amp;diff=66105"/>
		<updated>2013-12-31T10:04:09Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: Correct some of my bad english&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Mentored Volunteer Effort&lt;br /&gt;
|mentors=[http://forum.flightgear.org/memberlist.php?mode=viewprofile&amp;amp;u=884 xiii], [http://forum.flightgear.org/memberlist.php?mode=viewprofile&amp;amp;u=13504 5H1N0B1],[http://forum.flightgear.org/memberlist.php?mode=viewprofile&amp;amp;u=1092 Hooray] [[User:Philosopher|Philosopher]] (get in touch to learn more)&lt;br /&gt;
|skills=[[PropertyList XML File]], [[Property Tree]], [[Nasal|Nasal scripting]], fgcommands, [[AI traffic]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|UL7jQkl1qe4|400}}&lt;br /&gt;
&lt;br /&gt;
== Bombable &amp;amp; Fox2 ==&lt;br /&gt;
Flug's [[bombable]] script implements &amp;quot;dog fighting&amp;quot; support on top of FlightGear, without ANY changes to the C++ side of the code, just by using some fairly advanced scripted code (implemented in the built-in Nasal programming language). You can basically imagine it like a &amp;quot;MOD&amp;quot; of FlightGear.&lt;br /&gt;
&lt;br /&gt;
In other words, the bombable script creates a completely new mode in FlightGear. So it is well worth looking into this script to see how flug has managed to do what he has accomplished. While the script is certainly far from trivial, it is an excellent example for what can be achieved by plugging together distinct FG components in creative ways to create completely new behavior and systems. &lt;br /&gt;
&lt;br /&gt;
Also, there is another related effort - by the forum user &amp;quot;xii&amp;quot;: xiii created an implementation of a &amp;quot;seeking missile&amp;quot; for the f14b aircraft, IIRC the file is called &amp;quot;fox2.nas&amp;quot;. While these two systems are not yet integrated as far as I know, it should be fairly straight forward to do - you would then have a &amp;quot;dog fighting&amp;quot; system with f14 aircraft that can actually shoot seeking missiles.&lt;br /&gt;
&lt;br /&gt;
Integrating these two systems (Nasal scripts in fact!) would probably be an excellent exercise to get to know FlightGear's internal architecture, its built-in extension language (Nasal) and related systems such as the AI traffic system etc.&lt;br /&gt;
&lt;br /&gt;
== Fox2 Implementation ==&lt;br /&gt;
You can check $FGDATA/Aircraft/f-14b/Nasal/fox2.nas (in Git) which models a tiny part of a complex weapons system.&lt;br /&gt;
* It checks for available weapons with respect of the pylon position.&lt;br /&gt;
* checks for missile readiness (all switchs on right position and time to temperature of the IR seeker).&lt;br /&gt;
* activates one missile search function.&lt;br /&gt;
* search for a possible target.&lt;br /&gt;
* locks on the target and check if any lock out condition. Calculate HUD symbology (diamond displayed over the target position in the HUD)&lt;br /&gt;
* checks for fire order&lt;br /&gt;
* calculates exact position/orientation/velocity when fire order so we can spawn a new AI object in the proper place.&lt;br /&gt;
* releases the missile and guides it with a crude FDM&lt;br /&gt;
* if available activates a new searching missile and drives both fired and searching objects (we can guide several fired missile (flying and tracking) and have an additional one in searching state (on its pylon and searching or tracking). Each object can have its own target.&lt;br /&gt;
* checks for (near) impact or lock out condition&lt;br /&gt;
* if impact, creates the properties used by bombable.nas so the target is actually damaged, and some other properties for the explosion graphical animation. Also it displays the distance from the target on the player screen when the missile explode.&lt;br /&gt;
There is a menu item in &amp;quot;Tomcat Controls&amp;quot; with a switch which allows those informations to be displayed as messages over MP. &lt;br /&gt;
&lt;br /&gt;
The script works with Git version. If you are interested in how the impact handled on the target side, you'll have to checkout a modified version of bombable.nas available here&lt;br /&gt;
The weapons system manual is available on the wiki &lt;br /&gt;
&lt;br /&gt;
Sorry, it's all but a simple script but if it can help...&lt;br /&gt;
&lt;br /&gt;
About the trajectory and proximity detection: There is plenty of room to improve the trajectory algorithm. But this would drive us toward a 100% collision chance and this would oblige us to add adverse conditions to downside the success rate and keep a reasonable scoring. Users experience may also be unchanged after adding lot of computations.&lt;br /&gt;
Anyway,I agree with you about the poor more or less 75% score on the level flying tanker. I'll try to think about how to test your idea, but if you can stand my code, you are welcome to play with the algos!&lt;br /&gt;
&lt;br /&gt;
I wonder if building a controler loop wouldn't worth the pain, as for now, functions call themselves in an awful gordian knot... Now if the freeze happens without the weapons system running, even if it is much less often, then will have to search somewhere else.&lt;br /&gt;
&lt;br /&gt;
Well in any case a controler loop might help the reuse of the code, frankly ATM it looks like crap.&lt;br /&gt;
&lt;br /&gt;
I also noticed that the freeze occurs mostly after a cockpit sound play.&lt;br /&gt;
&lt;br /&gt;
About guidance, the steering of a missile is not the most complex thing, at least from a simulation point of view. Now, it is nearly impossible to match exactly a direct hit with the framerates we have, so there is a need of some tricks here and there to give the missile a chance (some kind of funny &amp;quot;post prediction&amp;quot;). The complex thing is rather locking one from several target, assign it to a missile, fire, steer, and while doing this, repeat the operation with a possible other target and another missile. Be able to cancel the operation in case of a lock loss is part of the game. For this part you will have to handle a lot of logic. Now doing a crude FDM, checking how to spawn a new AI missile and apply the FDM is not woodoo science, the hard work is already done and may not need all the radar stuff and weapon system. Same for making it work with bombable.&lt;br /&gt;
&lt;br /&gt;
== Fox2 Generalization ==&lt;br /&gt;
We already talked about this in the &amp;quot;AI guided missiles&amp;quot; thread a couple of weks ago: Basically, xiii has illustrated that this is perfectly possible, and there are plans in place to generalize the existing code to turn it into a reusable Nasal module for the $FG_ROOT/Nasal directory eventually, so that all users can easily create new AI objects that can be controlled from Nasal, just by subclassing an existing Nasal class: viewtopic.php?f=23&amp;amp;t=7791&amp;amp;start=45#p84834&lt;br /&gt;
&lt;br /&gt;
This will all depend on solid background knowledge of Nasal, and the AI system (its properties) however - so the best thing you can do right now, is reading more about Nasal to see how it works. Even if the approach had already been fully documented, and if the module would be available right now - you would still need to know Nasal.&lt;br /&gt;
&lt;br /&gt;
Code reuse is actually a very good idea, especially because there are now three different scripts doing basically the same thing: controlling AI objects and because there were meanwhile so many people also asking how to control AI objects using Nasal, and I haven't yet had the time to write a howto, so a reusable Nasal module might be a good idea.&lt;br /&gt;
&lt;br /&gt;
So I am wondering, if we should take a look at the three addons (your's, Thorsten's local-weather and flug's bombable) and come up with a new generic Nasal module for controlling AI objects? Normally, this would be a task for the Nasal library maintainers. But just looking at the three scripts, it should be possible to come up with an API. This would make it easier for other people to reuse your code and create similar addons.&lt;br /&gt;
&lt;br /&gt;
So here is what I can add to the discussion:&lt;br /&gt;
&lt;br /&gt;
* About people involved: Anders (AndersG) is actually the official Nasal library maintainer, though hopefully Melchior (cptf) isn't far and always have a look at this part of FG he knows better than nobody else.&lt;br /&gt;
* Bombable: I still didn't have time to dive into it (though it is running on my working copy of the data). Now I'm interested into it and I'll be happy to provide what's needed so Flug can re-use my stuff. Also I think an effort should be done to move bombable from an addon to an integrated part of FG. Being an add-on makes working with it more difficult for people working on official data (Git merges on locally modified files, different mp_broadcast module...)&lt;br /&gt;
* My own stuff: I already look forward generic modules even if they may be difficult to implement in a new aircraft (case of the radar screen). ATM the f16 use a generic version of the f-14b radar. I plan to rework the guided missile to make it generic before adding it to the f16, I'd also like to separate it from the radar stuff. Now, sticking to RL systems with accuracy is a nightmare, but how funny. I wouldn't like to see these things used as toys with no care of what could be a real system.&lt;br /&gt;
* AI API: this would be a nice start as being very reusable. I think there is also a possibility to do that in C++ as most of it is already written mostly by Vivian, and know he isn't against some of these ideas. Nevertheless a Nasal prototype is also a good start.&lt;br /&gt;
* What can I do: well during summer time I won't be able to really focus on serious things, I'll have more time during winter. Now I can follow, adapt my own stuff to a future API, test, and commit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So it is probably a good idea to base such an &amp;quot;ai.nas&amp;quot; module on xiii's code, i.e. simply take a look at the code, generalize and abstract it and put it into a new Nasal module. &lt;br /&gt;
Once the original fox2 script can use that module, we can still look at the other addons (bombable ) to see how the ai module needs to be modified to be fully usable by the other scripts.&lt;br /&gt;
&lt;br /&gt;
That in itself should help reduce duplicate code and improve code reuse among Nasal scripts.&lt;br /&gt;
&lt;br /&gt;
Once we have a working ai.nas module, we could start work on porting all existing addons to start using this module then.&lt;br /&gt;
&lt;br /&gt;
I am really convinced that this is the right thing to do, because it is generally better to look at any large portions of code and see how it can be refactored into distinct reusable components. This is something that has been done rather well with the Nasal standard library in $FG_ROOT/Nasal.&lt;br /&gt;
&lt;br /&gt;
Starting this effort right now would help us combine all related projects and unifying the code.&lt;br /&gt;
&lt;br /&gt;
== Supporting other missile types ==&lt;br /&gt;
A Phoenix isn't just a Sidewinder with a different range and callsign - it has a completely different guidance system, a different acceleration, different aerodynamics, is targeted in a different way,...&lt;br /&gt;
&lt;br /&gt;
The maintainer of the F-14b knows these things (and cares for them) and so far no attempt at a realistic modelling of the other missiles has been made - an unrealistic attempt has no real chance of being committed.&lt;br /&gt;
&lt;br /&gt;
FlightGear is not a combat simulator. Thus, I would not mind if there were shortcuts in the weapon-system. Though the AIM 7 and AIM 54 use radar, they could be modeled/coded exactly as the AIM 9, the only difference is range and callsign. Missile aerodynamics in my opinion, is not that important in FlightGear---perhaps something to be worked to in the long, long run.&lt;br /&gt;
&lt;br /&gt;
== Cruise Missiles ==&lt;br /&gt;
A cruise missile is more than a simple AA passive guidance missile, it's rather a one way UAV, in other terms a jet aircraft without landing gear, so it worth something better than the very crude fox2 nasal FDM. Fox2.nas is good at managing several submodels, engaging one or more AI/MP target, managing weapons on different pylons and it only uses a proportional pursuit guidance algorythm which simply change the velocity vector inside a given flight envelope (basicly a G limiter). There is no phisical effect but thrust, gravity and drag. I would say that's less than a FDM :-/&lt;br /&gt;
&lt;br /&gt;
AFAIK, please correct me if I'm wrong, there isn't the possiblity to run 2 real FDMs at the same time in FG but to use 2 instances of FG. Now it's perfectly possible to run a very basic FDM with nasal scripting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Brainstorming ==&lt;br /&gt;
This part is a draft&lt;br /&gt;
On the 2000, we could start some kind of generic missile. So first lets split this into different parts:&lt;br /&gt;
&lt;br /&gt;
=== I) The missile itself ===&lt;br /&gt;
Should be an object. The FDM has to be separated from the missile object itself.&lt;br /&gt;
The loop should loook like : detection-&amp;gt;load management-&amp;gt;firing order-&amp;gt;release missile-&amp;gt;update position-&amp;gt;update guidance with missile capabilities-&amp;gt;proximity detection-&amp;gt;update position&lt;br /&gt;
&lt;br /&gt;
There is a few sorts of missiles: &lt;br /&gt;
We can class them with their FDM: &lt;br /&gt;
# Engine: Solid rocket, ramjet, turbojet...&lt;br /&gt;
# Orientation control: vectored thrust, moving wings, both&lt;br /&gt;
# Flying : just falling (dropped bombs), flight with the engine thrust, wings (cruise missiles)&lt;br /&gt;
# Kind of flight: Straight line, High alt cruise and dive, follow a low alt (sea missile), terrain following (SCALP), dropped bomb (kind of curve)...&lt;br /&gt;
# Terminal manoeuvre: Straight in, climb and dive (top attack)...&lt;br /&gt;
# Detection: Laser, Heat, Missile internal radar (active homing), lighted with shooter radar (semi active homing), &amp;quot;target radar&amp;quot; (anti-radiation missile), &amp;quot;shared data with shooter&amp;quot; (datalink), GPS/INS, Hybrids (Like Aim54 : lighted for the first part of the flight and then ue its own radar/ Or datalink for the first part and intern radar/heat for last part)&lt;br /&gt;
# Launch: rail, dropped, ejected (from the pylons, about 5–25 ft/s)&lt;br /&gt;
# Physics: Size, weight, warhead weight, fuel weight, max g over load etc...&lt;br /&gt;
&lt;br /&gt;
=== II) Missile detection ===&lt;br /&gt;
The way that an aircraft detect a missile. This is independent of the missile itself, but you can't fire the missile without it&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== III) Missile.nas ===&lt;br /&gt;
&lt;br /&gt;
What is done in &amp;quot;missile.nas&amp;quot;&lt;br /&gt;
&amp;quot;missile.nas&amp;quot; is an improved code of &amp;quot;fox2.nas&amp;quot;. The new things are : &lt;br /&gt;
- Added generic missile firing. Each different missile class have their property in &amp;quot;loading_Missiles.nas&amp;quot;&amp;lt;-this is not optimal, perhaps an xml file would do the job...&lt;br /&gt;
- Added  rail or dropped capacity (not ejected yet)&lt;br /&gt;
- Added High Alt Cruise mod. For high Altitude, the cruise mode go up to its cruise alt, stay there until the angle between the missile and the target &amp;lt; 45°&lt;br /&gt;
- Added low alt sea cruise mod. Same as High Alt mod : low Alt just above the sea.&lt;br /&gt;
- Added a low alt ground cruise missile. Here the Alt is given not at sea level but ground level. And to have a better behavior, the script calculate What the ground Alt will be in 2 frame/loop, in order to anticipate, and not crash. This is not optimal and can be improved.&lt;br /&gt;
- Added anticipation of the next target position. &lt;br /&gt;
With a return of experience of the first code (Dogfight test), if missile just follow the &amp;quot;actual&amp;quot; position of an aircraft, it's just a following things, and there is a lot of miss. When your target getting closer, you can't just &amp;quot;follow&amp;quot; the target. &lt;br /&gt;
Real missile react in really short time and can update their trajectory in a micro second. In FG we have to calculate the next target position in a &amp;quot;relative&amp;quot; time, which depend on when the next loop will be executed (could be slow down by terrain loading, High texture aircraft etc).&lt;br /&gt;
&lt;br /&gt;
This feature could be improved in a more dynamic way. Older missile had low update rate, and new missile high rate and some have even anticipation stuff themself)&lt;br /&gt;
&lt;br /&gt;
- Improve proximity detection. &amp;quot;fox2.nas&amp;quot; calculate the distance with the target in the actual frame and compare it to the precedent frame. If the precedent frame is closer to the target than the actual, it means that the missile get away from the target. So the script take the precedent distance and compare it to the &amp;quot;minimal distance for explosion&amp;quot;.&lt;br /&gt;
(And if the missile get away and minimum distance isn't reach -&amp;gt; missile go in &amp;quot;missed mode&amp;quot;)&lt;br /&gt;
The problem with this calculation is when your missile fly at very high speed (like mach 4 ou 5) it travel at more than 1 km/sec. So more than 100 or 200 meter between each frame. It mean the &amp;quot;minimal distance for explosion&amp;quot; could be reach between frame1 and frame2, but nor frame1 neither frame2 had reach the &amp;quot;minimal distance for explosion&amp;quot;. So in that case, &amp;quot;fox2.nas&amp;quot; will not trigger explosion and it should do.&lt;br /&gt;
&amp;quot;missile.nas&amp;quot; calculate the distance between the missile and the target in frame1 and frame to but also &amp;quot;on the line&amp;quot; between frame 1 and 2. So it's more accurate to trigger the explosion...&lt;br /&gt;
&lt;br /&gt;
- Max G limitation. In &amp;quot;fox2.nas&amp;quot; when the missile's maxG is reached, the script compute the missile in &amp;quot;missed mode&amp;quot;). &amp;quot;missile.nas&amp;quot; recalculate the max angle the missile can turn without exceed maxG&lt;br /&gt;
(Perhaps more things, but I have to look the code again)&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;fox2.nas&amp;quot; compute in &amp;quot;missed mode&amp;quot; when the missile go out circle of the HUD (to simulate, when the target go out the radar lightening). this function was directly link to the aircraft. In missile.nas this function is erased. This thing It should be implemented again, in order to simulate correctly all the passive missile... (like aim-7) &amp;lt;- This is not an improve, I assume.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IV) Object needed  ===&lt;br /&gt;
&lt;br /&gt;
missile&lt;br /&gt;
   |--&amp;gt;FDM&lt;br /&gt;
   |--&amp;gt;3D stuff : loading missile with smoke, without when out of fuel, and explosion. In the m2000's &amp;quot;missile.nas&amp;quot;, the missile smoke and the explosion is generic. But 3 different 3D model are loaded at each step -&amp;gt; Not the best way, but couldn't find another that could stay generic)&lt;br /&gt;
   |--&amp;gt;Guidance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Related == &lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=30&amp;amp;t=20857 How would I go about controlling an airplane with nasal?]&lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=30&amp;amp;t=20120 Looping Flight Path]&lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=66&amp;amp;t=19864 F-14B's Weapon System]&lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=4&amp;amp;t=20576 Mirage 2000-5]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://www.cobham.com/about-cobham/mission-systems/about-us/mission-equipment/weapons-carriage-and-release.aspx Cobham Weapons Carriage and Release equipment] Data sheets on some pylons, rails, racks and ejectors.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Missile_guidance Missile guidance] at English Wikipedia.&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Scripted_AI_Objects&amp;diff=66104</id>
		<title>Scripted AI Objects</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Scripted_AI_Objects&amp;diff=66104"/>
		<updated>2013-12-31T09:59:36Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: Little description missile.nas improvement + list of future needed objects&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Mentored Volunteer Effort&lt;br /&gt;
|mentors=[http://forum.flightgear.org/memberlist.php?mode=viewprofile&amp;amp;u=884 xiii], [http://forum.flightgear.org/memberlist.php?mode=viewprofile&amp;amp;u=13504 5H1N0B1],[http://forum.flightgear.org/memberlist.php?mode=viewprofile&amp;amp;u=1092 Hooray] [[User:Philosopher|Philosopher]] (get in touch to learn more)&lt;br /&gt;
|skills=[[PropertyList XML File]], [[Property Tree]], [[Nasal|Nasal scripting]], fgcommands, [[AI traffic]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|UL7jQkl1qe4|400}}&lt;br /&gt;
&lt;br /&gt;
== Bombable &amp;amp; Fox2 ==&lt;br /&gt;
Flug's [[bombable]] script implements &amp;quot;dog fighting&amp;quot; support on top of FlightGear, without ANY changes to the C++ side of the code, just by using some fairly advanced scripted code (implemented in the built-in Nasal programming language). You can basically imagine it like a &amp;quot;MOD&amp;quot; of FlightGear.&lt;br /&gt;
&lt;br /&gt;
In other words, the bombable script creates a completely new mode in FlightGear. So it is well worth looking into this script to see how flug has managed to do what he has accomplished. While the script is certainly far from trivial, it is an excellent example for what can be achieved by plugging together distinct FG components in creative ways to create completely new behavior and systems. &lt;br /&gt;
&lt;br /&gt;
Also, there is another related effort - by the forum user &amp;quot;xii&amp;quot;: xiii created an implementation of a &amp;quot;seeking missile&amp;quot; for the f14b aircraft, IIRC the file is called &amp;quot;fox2.nas&amp;quot;. While these two systems are not yet integrated as far as I know, it should be fairly straight forward to do - you would then have a &amp;quot;dog fighting&amp;quot; system with f14 aircraft that can actually shoot seeking missiles.&lt;br /&gt;
&lt;br /&gt;
Integrating these two systems (Nasal scripts in fact!) would probably be an excellent exercise to get to know FlightGear's internal architecture, its built-in extension language (Nasal) and related systems such as the AI traffic system etc.&lt;br /&gt;
&lt;br /&gt;
== Fox2 Implementation ==&lt;br /&gt;
You can check $FGDATA/Aircraft/f-14b/Nasal/fox2.nas (in Git) which models a tiny part of a complex weapons system.&lt;br /&gt;
* It checks for available weapons with respect of the pylon position.&lt;br /&gt;
* checks for missile readiness (all switchs on right position and time to temperature of the IR seeker).&lt;br /&gt;
* activates one missile search function.&lt;br /&gt;
* search for a possible target.&lt;br /&gt;
* locks on the target and check if any lock out condition. Calculate HUD symbology (diamond displayed over the target position in the HUD)&lt;br /&gt;
* checks for fire order&lt;br /&gt;
* calculates exact position/orientation/velocity when fire order so we can spawn a new AI object in the proper place.&lt;br /&gt;
* releases the missile and guides it with a crude FDM&lt;br /&gt;
* if available activates a new searching missile and drives both fired and searching objects (we can guide several fired missile (flying and tracking) and have an additional one in searching state (on its pylon and searching or tracking). Each object can have its own target.&lt;br /&gt;
* checks for (near) impact or lock out condition&lt;br /&gt;
* if impact, creates the properties used by bombable.nas so the target is actually damaged, and some other properties for the explosion graphical animation. Also it displays the distance from the target on the player screen when the missile explode.&lt;br /&gt;
There is a menu item in &amp;quot;Tomcat Controls&amp;quot; with a switch which allows those informations to be displayed as messages over MP. &lt;br /&gt;
&lt;br /&gt;
The script works with Git version. If you are interested in how the impact handled on the target side, you'll have to checkout a modified version of bombable.nas available here&lt;br /&gt;
The weapons system manual is available on the wiki &lt;br /&gt;
&lt;br /&gt;
Sorry, it's all but a simple script but if it can help...&lt;br /&gt;
&lt;br /&gt;
About the trajectory and proximity detection: There is plenty of room to improve the trajectory algorithm. But this would drive us toward a 100% collision chance and this would oblige us to add adverse conditions to downside the success rate and keep a reasonable scoring. Users experience may also be unchanged after adding lot of computations.&lt;br /&gt;
Anyway,I agree with you about the poor more or less 75% score on the level flying tanker. I'll try to think about how to test your idea, but if you can stand my code, you are welcome to play with the algos!&lt;br /&gt;
&lt;br /&gt;
I wonder if building a controler loop wouldn't worth the pain, as for now, functions call themselves in an awful gordian knot... Now if the freeze happens without the weapons system running, even if it is much less often, then will have to search somewhere else.&lt;br /&gt;
&lt;br /&gt;
Well in any case a controler loop might help the reuse of the code, frankly ATM it looks like crap.&lt;br /&gt;
&lt;br /&gt;
I also noticed that the freeze occurs mostly after a cockpit sound play.&lt;br /&gt;
&lt;br /&gt;
About guidance, the steering of a missile is not the most complex thing, at least from a simulation point of view. Now, it is nearly impossible to match exactly a direct hit with the framerates we have, so there is a need of some tricks here and there to give the missile a chance (some kind of funny &amp;quot;post prediction&amp;quot;). The complex thing is rather locking one from several target, assign it to a missile, fire, steer, and while doing this, repeat the operation with a possible other target and another missile. Be able to cancel the operation in case of a lock loss is part of the game. For this part you will have to handle a lot of logic. Now doing a crude FDM, checking how to spawn a new AI missile and apply the FDM is not woodoo science, the hard work is already done and may not need all the radar stuff and weapon system. Same for making it work with bombable.&lt;br /&gt;
&lt;br /&gt;
== Fox2 Generalization ==&lt;br /&gt;
We already talked about this in the &amp;quot;AI guided missiles&amp;quot; thread a couple of weks ago: Basically, xiii has illustrated that this is perfectly possible, and there are plans in place to generalize the existing code to turn it into a reusable Nasal module for the $FG_ROOT/Nasal directory eventually, so that all users can easily create new AI objects that can be controlled from Nasal, just by subclassing an existing Nasal class: viewtopic.php?f=23&amp;amp;t=7791&amp;amp;start=45#p84834&lt;br /&gt;
&lt;br /&gt;
This will all depend on solid background knowledge of Nasal, and the AI system (its properties) however - so the best thing you can do right now, is reading more about Nasal to see how it works. Even if the approach had already been fully documented, and if the module would be available right now - you would still need to know Nasal.&lt;br /&gt;
&lt;br /&gt;
Code reuse is actually a very good idea, especially because there are now three different scripts doing basically the same thing: controlling AI objects and because there were meanwhile so many people also asking how to control AI objects using Nasal, and I haven't yet had the time to write a howto, so a reusable Nasal module might be a good idea.&lt;br /&gt;
&lt;br /&gt;
So I am wondering, if we should take a look at the three addons (your's, Thorsten's local-weather and flug's bombable) and come up with a new generic Nasal module for controlling AI objects? Normally, this would be a task for the Nasal library maintainers. But just looking at the three scripts, it should be possible to come up with an API. This would make it easier for other people to reuse your code and create similar addons.&lt;br /&gt;
&lt;br /&gt;
So here is what I can add to the discussion:&lt;br /&gt;
&lt;br /&gt;
* About people involved: Anders (AndersG) is actually the official Nasal library maintainer, though hopefully Melchior (cptf) isn't far and always have a look at this part of FG he knows better than nobody else.&lt;br /&gt;
* Bombable: I still didn't have time to dive into it (though it is running on my working copy of the data). Now I'm interested into it and I'll be happy to provide what's needed so Flug can re-use my stuff. Also I think an effort should be done to move bombable from an addon to an integrated part of FG. Being an add-on makes working with it more difficult for people working on official data (Git merges on locally modified files, different mp_broadcast module...)&lt;br /&gt;
* My own stuff: I already look forward generic modules even if they may be difficult to implement in a new aircraft (case of the radar screen). ATM the f16 use a generic version of the f-14b radar. I plan to rework the guided missile to make it generic before adding it to the f16, I'd also like to separate it from the radar stuff. Now, sticking to RL systems with accuracy is a nightmare, but how funny. I wouldn't like to see these things used as toys with no care of what could be a real system.&lt;br /&gt;
* AI API: this would be a nice start as being very reusable. I think there is also a possibility to do that in C++ as most of it is already written mostly by Vivian, and know he isn't against some of these ideas. Nevertheless a Nasal prototype is also a good start.&lt;br /&gt;
* What can I do: well during summer time I won't be able to really focus on serious things, I'll have more time during winter. Now I can follow, adapt my own stuff to a future API, test, and commit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So it is probably a good idea to base such an &amp;quot;ai.nas&amp;quot; module on xiii's code, i.e. simply take a look at the code, generalize and abstract it and put it into a new Nasal module. &lt;br /&gt;
Once the original fox2 script can use that module, we can still look at the other addons (bombable ) to see how the ai module needs to be modified to be fully usable by the other scripts.&lt;br /&gt;
&lt;br /&gt;
That in itself should help reduce duplicate code and improve code reuse among Nasal scripts.&lt;br /&gt;
&lt;br /&gt;
Once we have a working ai.nas module, we could start work on porting all existing addons to start using this module then.&lt;br /&gt;
&lt;br /&gt;
I am really convinced that this is the right thing to do, because it is generally better to look at any large portions of code and see how it can be refactored into distinct reusable components. This is something that has been done rather well with the Nasal standard library in $FG_ROOT/Nasal.&lt;br /&gt;
&lt;br /&gt;
Starting this effort right now would help us combine all related projects and unifying the code.&lt;br /&gt;
&lt;br /&gt;
== Supporting other missile types ==&lt;br /&gt;
A Phoenix isn't just a Sidewinder with a different range and callsign - it has a completely different guidance system, a different acceleration, different aerodynamics, is targeted in a different way,...&lt;br /&gt;
&lt;br /&gt;
The maintainer of the F-14b knows these things (and cares for them) and so far no attempt at a realistic modelling of the other missiles has been made - an unrealistic attempt has no real chance of being committed.&lt;br /&gt;
&lt;br /&gt;
FlightGear is not a combat simulator. Thus, I would not mind if there were shortcuts in the weapon-system. Though the AIM 7 and AIM 54 use radar, they could be modeled/coded exactly as the AIM 9, the only difference is range and callsign. Missile aerodynamics in my opinion, is not that important in FlightGear---perhaps something to be worked to in the long, long run.&lt;br /&gt;
&lt;br /&gt;
== Cruise Missiles ==&lt;br /&gt;
A cruise missile is more than a simple AA passive guidance missile, it's rather a one way UAV, in other terms a jet aircraft without landing gear, so it worth something better than the very crude fox2 nasal FDM. Fox2.nas is good at managing several submodels, engaging one or more AI/MP target, managing weapons on different pylons and it only uses a proportional pursuit guidance algorythm which simply change the velocity vector inside a given flight envelope (basicly a G limiter). There is no phisical effect but thrust, gravity and drag. I would say that's less than a FDM :-/&lt;br /&gt;
&lt;br /&gt;
AFAIK, please correct me if I'm wrong, there isn't the possiblity to run 2 real FDMs at the same time in FG but to use 2 instances of FG. Now it's perfectly possible to run a very basic FDM with nasal scripting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Brainstorming ==&lt;br /&gt;
This part is a draft&lt;br /&gt;
On the 2000, we could start some kind of generic missile. So first lets split this into different parts:&lt;br /&gt;
&lt;br /&gt;
=== I) The missile itself ===&lt;br /&gt;
Should be an object. The FDM has to be separated from the missile object itself.&lt;br /&gt;
The loop should loook like : detection-&amp;gt;load management-&amp;gt;firing order-&amp;gt;release missile-&amp;gt;update position-&amp;gt;update guidance with missile capabilities-&amp;gt;proximity detection-&amp;gt;update position&lt;br /&gt;
&lt;br /&gt;
There is a few sorts of missiles: &lt;br /&gt;
We can class them with their FDM: &lt;br /&gt;
# Engine: Solid rocket, ramjet, turbojet...&lt;br /&gt;
# Orientation control: vectored thrust, moving wings, both&lt;br /&gt;
# Flying : just falling (dropped bombs), flight with the engine thrust, wings (cruise missiles)&lt;br /&gt;
# Kind of flight: Straight line, High alt cruise and dive, follow a low alt (sea missile), terrain following (SCALP), dropped bomb (kind of curve)...&lt;br /&gt;
# Terminal manoeuvre: Straight in, climb and dive (top attack)...&lt;br /&gt;
# Detection: Laser, Heat, Missile internal radar (active homing), lighted with shooter radar (semi active homing), &amp;quot;target radar&amp;quot; (anti-radiation missile), &amp;quot;shared data with shooter&amp;quot; (datalink), GPS/INS, Hybrids (Like Aim54 : lighted for the first part of the flight and then ue its own radar/ Or datalink for the first part and intern radar/heat for last part)&lt;br /&gt;
# Launch: rail, dropped, ejected (from the pylons, about 5–25 ft/s)&lt;br /&gt;
# Physics: Size, weight, warhead weight, fuel weight, max g over load etc...&lt;br /&gt;
&lt;br /&gt;
=== II) Missile detection ===&lt;br /&gt;
The way that an aircraft detect a missile. This is independent of the missile itself, but you can't fire the missile without it&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== III) Missile.nas ===&lt;br /&gt;
&lt;br /&gt;
What is done in &amp;quot;missile.nas&amp;quot;&lt;br /&gt;
&amp;quot;missile.nas&amp;quot; is an improved code of &amp;quot;fox2.nas&amp;quot;. The new things are : &lt;br /&gt;
- Added generic missile firing. Each different missile class have their property in &amp;quot;loading_Missiles.nas&amp;quot;&amp;lt;-this is not optimal, perhaps an xml file would do the job...&lt;br /&gt;
- Added  rail or dropped capacity (not ejected yet)&lt;br /&gt;
- Added High Alt Cruise mod. For high Altitude, the cruise mode go up to its cruise alt, stay there until the angle between the missile and the target &amp;lt; 45°&lt;br /&gt;
- Added low alt sea cruise mod. Same as High Alt mod : low Alt just above the sea.&lt;br /&gt;
- Added a low alt ground cruise missile. Here the Alt is given not at sea level but ground level. And to have a better behavior, the script calculate What the ground Alt will be in 2 frame/loop, in order to anticipate, and not crash. This is not optimal and can be improved.&lt;br /&gt;
- Added anticipation of the next target position. &lt;br /&gt;
With a return of experience of the first code (Dogfight test), if missile just follow the &amp;quot;actual&amp;quot; position of an aircraft, it's just a following things, and there is a lot of miss. When your target getting closer, you can't just &amp;quot;follow&amp;quot; the target. &lt;br /&gt;
Real missile react in really short time and can update their trajectory in a micro second. In FG we have to calculate the next target position in a &amp;quot;relative&amp;quot; time, which depend on when the next loop will be executed (could be slow down by terrain loading, High texture aircraft etc).&lt;br /&gt;
&lt;br /&gt;
This feature could be improved in a more dynamic way. Older missile had low update rate, and new missile high rate and some have even anticipation stuff themself)&lt;br /&gt;
&lt;br /&gt;
- Improve proximity detection. &amp;quot;fox2.nas&amp;quot; calculate the distance with the target in the actual frame and compare it to the precedent frame. If the precedent frame is closer to the target than the actual, it means that the missile get away from the target. So the script take the precedent distance and compare it to the &amp;quot;minimal distance for explosion&amp;quot;.&lt;br /&gt;
(And if the missile get away and minimum distance isn't reach -&amp;gt; missile go in &amp;quot;missed mode&amp;quot;)&lt;br /&gt;
The problem with this calculation is when your missile fly at very high speed (like mach 4 ou 5) it travel at more than 1 km/sec. So more than 100 or 200 meter between each frame. It mean the &amp;quot;minimal distance for explosion&amp;quot; could be reach between frame1 and frame2, but nor frame1 neither frame2 had reach the &amp;quot;minimal distance for explosion&amp;quot;. So in that case, &amp;quot;fox2.nas&amp;quot; will not trigger explosion and it should do.&lt;br /&gt;
&amp;quot;missile.nas&amp;quot; calculate the distance between the missile and the target in frame1 and frame to but also &amp;quot;on the line&amp;quot; between frame 1 and 2. So it's more accurate to trigger the explosion...&lt;br /&gt;
&lt;br /&gt;
- Max G limitation. In &amp;quot;fox2.nas&amp;quot; when the missile's maxG is reached, the script compute the missile in &amp;quot;missed mode&amp;quot;). &amp;quot;missile.nas&amp;quot; recalculate the max angle the missile can turn without exceed maxG&lt;br /&gt;
(Perhaps more things, but I have to look the code again)&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;fox2.nas&amp;quot; compute in &amp;quot;missed mode&amp;quot; when the missile go out circle of the HUD (to simulate, when the target go out the radar lightening). this function was directly link to the aircraft. In missile.nas this function is erased. This thing should be important to put this function again, in order to simulate correctly all the passive missile... (like aim-7)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IV) Object needed  ===&lt;br /&gt;
&lt;br /&gt;
missile&lt;br /&gt;
   |--&amp;gt;FDM&lt;br /&gt;
   |--&amp;gt;3D stuff : loading missile with smoke, without when out of fuel, and explosion. In the m2000's &amp;quot;missile.nas&amp;quot;, the missile smoke and the explosion is generic. But 3 different 3D model are loaded at each step -&amp;gt; Not the best way, but couldn't find another that could stay generic)&lt;br /&gt;
   |--&amp;gt;Guidance. The guidance &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Related == &lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=30&amp;amp;t=20857 How would I go about controlling an airplane with nasal?]&lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=30&amp;amp;t=20120 Looping Flight Path]&lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=66&amp;amp;t=19864 F-14B's Weapon System]&lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=4&amp;amp;t=20576 Mirage 2000-5]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://www.cobham.com/about-cobham/mission-systems/about-us/mission-equipment/weapons-carriage-and-release.aspx Cobham Weapons Carriage and Release equipment] Data sheets on some pylons, rails, racks and ejectors.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Missile_guidance Missile guidance] at English Wikipedia.&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Scripted_AI_Objects&amp;diff=66084</id>
		<title>Scripted AI Objects</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Scripted_AI_Objects&amp;diff=66084"/>
		<updated>2013-12-29T20:33:08Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Mentored Volunteer Effort&lt;br /&gt;
|mentors=[http://forum.flightgear.org/memberlist.php?mode=viewprofile&amp;amp;u=884 xiii], [http://forum.flightgear.org/memberlist.php?mode=viewprofile&amp;amp;u=13504 5H1N0B1],[http://forum.flightgear.org/memberlist.php?mode=viewprofile&amp;amp;u=1092 Hooray] [[User:Philosopher|Philosopher]] (get in touch to learn more)&lt;br /&gt;
|skills=[[PropertyList XML File]], [[Property Tree]], [[Nasal|Nasal scripting]], fgcommands, [[AI traffic]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|UL7jQkl1qe4|400}}&lt;br /&gt;
&lt;br /&gt;
== Bombable &amp;amp; Fox2 ==&lt;br /&gt;
Flug's [[bombable]] script implements &amp;quot;dog fighting&amp;quot; support on top of FlightGear, without ANY changes to the C++ side of the code, just by using some fairly advanced scripted code (implemented in the built-in Nasal programming language). You can basically imagine it like a &amp;quot;MOD&amp;quot; of FlightGear.&lt;br /&gt;
&lt;br /&gt;
In other words, the bombable script creates a completely new mode in FlightGear. So it is well worth looking into this script to see how flug has managed to do what he has accomplished. While the script is certainly far from trivial, it is an excellent example for what can be achieved by plugging together distinct FG components in creative ways to create completely new behavior and systems. &lt;br /&gt;
&lt;br /&gt;
Also, there is another related effort - by the forum user &amp;quot;xii&amp;quot;: xiii created an implementation of a &amp;quot;seeking missile&amp;quot; for the f14b aircraft, IIRC the file is called &amp;quot;fox2.nas&amp;quot;. While these two systems are not yet integrated as far as I know, it should be fairly straight forward to do - you would then have a &amp;quot;dog fighting&amp;quot; system with f14 aircraft that can actually shoot seeking missiles.&lt;br /&gt;
&lt;br /&gt;
Integrating these two systems (Nasal scripts in fact!) would probably be an excellent exercise to get to know FlightGear's internal architecture, its built-in extension language (Nasal) and related systems such as the AI traffic system etc.&lt;br /&gt;
&lt;br /&gt;
== Fox2 Implementation ==&lt;br /&gt;
You can check $FGDATA/Aircraft/f-14b/Nasal/fox2.nas (in Git) which models a tiny part of a complex weapons system.&lt;br /&gt;
* It checks for available weapons with respect of the pylon position.&lt;br /&gt;
* checks for missile readiness (all switchs on right position and time to temperature of the IR seeker).&lt;br /&gt;
* activates one missile search function.&lt;br /&gt;
* search for a possible target.&lt;br /&gt;
* locks on the target and check if any lock out condition. Calculate HUD symbology (diamond displayed over the target position in the HUD)&lt;br /&gt;
* checks for fire order&lt;br /&gt;
* calculates exact position/orientation/velocity when fire order so we can spawn a new AI object in the proper place.&lt;br /&gt;
* releases the missile and guides it with a crude FDM&lt;br /&gt;
* if available activates a new searching missile and drives both fired and searching objects (we can guide several fired missile (flying and tracking) and have an additional one in searching state (on its pylon and searching or tracking). Each object can have its own target.&lt;br /&gt;
* checks for (near) impact or lock out condition&lt;br /&gt;
* if impact, creates the properties used by bombable.nas so the target is actually damaged, and some other properties for the explosion graphical animation. Also it displays the distance from the target on the player screen when the missile explode.&lt;br /&gt;
There is a menu item in &amp;quot;Tomcat Controls&amp;quot; with a switch which allows those informations to be displayed as messages over MP. &lt;br /&gt;
&lt;br /&gt;
The script works with Git version. If you are interested in how the impact handled on the target side, you'll have to checkout a modified version of bombable.nas available here&lt;br /&gt;
The weapons system manual is available on the wiki &lt;br /&gt;
&lt;br /&gt;
Sorry, it's all but a simple script but if it can help...&lt;br /&gt;
&lt;br /&gt;
About the trajectory and proximity detection: There is plenty of room to improve the trajectory algorithm. But this would drive us toward a 100% collision chance and this would oblige us to add adverse conditions to downside the success rate and keep a reasonable scoring. Users experience may also be unchanged after adding lot of computations.&lt;br /&gt;
Anyway,I agree with you about the poor more or less 75% score on the level flying tanker. I'll try to think about how to test your idea, but if you can stand my code, you are welcome to play with the algos!&lt;br /&gt;
&lt;br /&gt;
I wonder if building a controler loop wouldn't worth the pain, as for now, functions call themselves in an awful gordian knot... Now if the freeze happens without the weapons system running, even if it is much less often, then will have to search somewhere else.&lt;br /&gt;
&lt;br /&gt;
Well in any case a controler loop might help the reuse of the code, frankly ATM it looks like crap.&lt;br /&gt;
&lt;br /&gt;
I also noticed that the freeze occurs mostly after a cockpit sound play.&lt;br /&gt;
&lt;br /&gt;
About guidance, the steering of a missile is not the most complex thing, at least from a simulation point of view. Now, it is nearly impossible to match exactly a direct hit with the framerates we have, so there is a need of some tricks here and there to give the missile a chance (some kind of funny &amp;quot;post prediction&amp;quot;). The complex thing is rather locking one from several target, assign it to a missile, fire, steer, and while doing this, repeat the operation with a possible other target and another missile. Be able to cancel the operation in case of a lock loss is part of the game. For this part you will have to handle a lot of logic. Now doing a crude FDM, checking how to spawn a new AI missile and apply the FDM is not woodoo science, the hard work is already done and may not need all the radar stuff and weapon system. Same for making it work with bombable.&lt;br /&gt;
&lt;br /&gt;
== Fox2 Generalization ==&lt;br /&gt;
We already talked about this in the &amp;quot;AI guided missiles&amp;quot; thread a couple of weks ago: Basically, xiii has illustrated that this is perfectly possible, and there are plans in place to generalize the existing code to turn it into a reusable Nasal module for the $FG_ROOT/Nasal directory eventually, so that all users can easily create new AI objects that can be controlled from Nasal, just by subclassing an existing Nasal class: viewtopic.php?f=23&amp;amp;t=7791&amp;amp;start=45#p84834&lt;br /&gt;
&lt;br /&gt;
This will all depend on solid background knowledge of Nasal, and the AI system (its properties) however - so the best thing you can do right now, is reading more about Nasal to see how it works. Even if the approach had already been fully documented, and if the module would be available right now - you would still need to know Nasal.&lt;br /&gt;
&lt;br /&gt;
Code reuse is actually a very good idea, especially because there are now three different scripts doing basically the same thing: controlling AI objects and because there were meanwhile so many people also asking how to control AI objects using Nasal, and I haven't yet had the time to write a howto, so a reusable Nasal module might be a good idea.&lt;br /&gt;
&lt;br /&gt;
So I am wondering, if we should take a look at the three addons (your's, Thorsten's local-weather and flug's bombable) and come up with a new generic Nasal module for controlling AI objects? Normally, this would be a task for the Nasal library maintainers. But just looking at the three scripts, it should be possible to come up with an API. This would make it easier for other people to reuse your code and create similar addons.&lt;br /&gt;
&lt;br /&gt;
So here is what I can add to the discussion:&lt;br /&gt;
&lt;br /&gt;
* About people involved: Anders (AndersG) is actually the official Nasal library maintainer, though hopefully Melchior (cptf) isn't far and always have a look at this part of FG he knows better than nobody else.&lt;br /&gt;
* Bombable: I still didn't have time to dive into it (though it is running on my working copy of the data). Now I'm interested into it and I'll be happy to provide what's needed so Flug can re-use my stuff. Also I think an effort should be done to move bombable from an addon to an integrated part of FG. Being an add-on makes working with it more difficult for people working on official data (Git merges on locally modified files, different mp_broadcast module...)&lt;br /&gt;
* My own stuff: I already look forward generic modules even if they may be difficult to implement in a new aircraft (case of the radar screen). ATM the f16 use a generic version of the f-14b radar. I plan to rework the guided missile to make it generic before adding it to the f16, I'd also like to separate it from the radar stuff. Now, sticking to RL systems with accuracy is a nightmare, but how funny. I wouldn't like to see these things used as toys with no care of what could be a real system.&lt;br /&gt;
* AI API: this would be a nice start as being very reusable. I think there is also a possibility to do that in C++ as most of it is already written mostly by Vivian, and know he isn't against some of these ideas. Nevertheless a Nasal prototype is also a good start.&lt;br /&gt;
* What can I do: well during summer time I won't be able to really focus on serious things, I'll have more time during winter. Now I can follow, adapt my own stuff to a future API, test, and commit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So it is probably a good idea to base such an &amp;quot;ai.nas&amp;quot; module on xiii's code, i.e. simply take a look at the code, generalize and abstract it and put it into a new Nasal module. &lt;br /&gt;
Once the original fox2 script can use that module, we can still look at the other addons (bombable ) to see how the ai module needs to be modified to be fully usable by the other scripts.&lt;br /&gt;
&lt;br /&gt;
That in itself should help reduce duplicate code and improve code reuse among Nasal scripts.&lt;br /&gt;
&lt;br /&gt;
Once we have a working ai.nas module, we could start work on porting all existing addons to start using this module then.&lt;br /&gt;
&lt;br /&gt;
I am really convinced that this is the right thing to do, because it is generally better to look at any large portions of code and see how it can be refactored into distinct reusable components. This is something that has been done rather well with the Nasal standard library in $FG_ROOT/Nasal.&lt;br /&gt;
&lt;br /&gt;
Starting this effort right now would help us combine all related projects and unifying the code.&lt;br /&gt;
&lt;br /&gt;
== Supporting other missile types ==&lt;br /&gt;
A Phoenix isn't just a Sidewinder with a different range and callsign - it has a completely different guidance system, a different acceleration, different aerodynamics, is targeted in a different way,...&lt;br /&gt;
&lt;br /&gt;
The maintainer of the F-14b knows these things (and cares for them) and so far no attempt at a realistic modelling of the other missiles has been made - an unrealistic attempt has no real chance of being committed.&lt;br /&gt;
&lt;br /&gt;
FlightGear is not a combat simulator. Thus, I would not mind if there were shortcuts in the weapon-system. Though the AIM 7 and AIM 54 use radar, they could be modeled/coded exactly as the AIM 9, the only difference is range and callsign. Missile aerodynamics in my opinion, is not that important in FlightGear---perhaps something to be worked to in the long, long run.&lt;br /&gt;
&lt;br /&gt;
== Cruise Missiles ==&lt;br /&gt;
A cruise missile is more than a simple AA passive guidance missile, it's rather a one way UAV, in other terms a jet aircraft without landing gear, so it worth something better than the very crude fox2 nasal FDM. Fox2.nas is good at managing several submodels, engaging one or more AI/MP target, managing weapons on different pylons and it only uses a proportional pursuit guidance algorythm which simply change the velocity vector inside a given flight envelope (basicly a G limiter). There is no phisical effect but thrust, gravity and drag. I would say that's less than a FDM :-/&lt;br /&gt;
&lt;br /&gt;
AFAIK, please correct me if I'm wrong, there isn't the possiblity to run 2 real FDMs at the same time in FG but to use 2 instances of FG. Now it's perfectly possible to run a very basic FDM with nasal scripting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Brainstorming ==&lt;br /&gt;
This part is a draft&lt;br /&gt;
On the 2000, we could start some kind of generic missile.So first lets split in different part :&lt;br /&gt;
&lt;br /&gt;
===I)the missile itself:===&lt;br /&gt;
Should be an object. The FDM has to be separated from the missile object itself.&lt;br /&gt;
The loop should loook like : detection-&amp;gt;load management-&amp;gt;firing order-&amp;gt;release missile-&amp;gt;update position-&amp;gt;update guidance with missile capabilities-&amp;gt;proximity detection-&amp;gt;update position&lt;br /&gt;
&lt;br /&gt;
There is few sort of missile : &lt;br /&gt;
We can class them with their FDM : &lt;br /&gt;
1)Engine : Powder prop, statoreactor, simple reactor...&lt;br /&gt;
&lt;br /&gt;
2)Orientation : vectoring thrust, moving wings, both&lt;br /&gt;
&lt;br /&gt;
3)Flying : just falling (dropped bombs), fly with the engine thurst, wings (cruise missiles)&lt;br /&gt;
&lt;br /&gt;
4)Kind of fly : Straight line, High alt cruise and dive, follow 1 low alt (sea missile), folloow the terrain (SCALP), dropped bomb (kind of curve)&lt;br /&gt;
&lt;br /&gt;
5)Detection : Laser, Heat, Missile internal radar, lighted with shooter radar, &amp;quot;target radar&amp;quot; (antiradar missile), &amp;quot;shared data with shooter&amp;quot; (datalink), Hybrids (Like Aim54 : lighted for the first part of the flight and then ue its own radar/ Or datalink for the first part and intern radar/heat for last part)&lt;br /&gt;
&lt;br /&gt;
6)Launch : rail, dropped&lt;br /&gt;
&lt;br /&gt;
7)Physics : Size, weight, warhead weight, fuel weight, max g over load etc...&lt;br /&gt;
&lt;br /&gt;
===II)The detection===&lt;br /&gt;
The way that an aircraft detect a missile. This is independant of the missile itself, but you can't fire the missile without it&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Related == &lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=30&amp;amp;t=20857 How would I go about controlling an airplane with nasal?]&lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=30&amp;amp;t=20120 Looping Flight Path]&lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=66&amp;amp;t=19864 F-14B's Weapon System]&lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=4&amp;amp;t=20576 Mirage 2000-5]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5&amp;diff=62062</id>
		<title>Dassault Mirage 2000-5</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5&amp;diff=62062"/>
		<updated>2013-08-07T15:22:55Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: Add the tutorial video for MFD &amp;amp; navigation. Minor change on keyboard. Description of the HUD.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infobox Aircraft&lt;br /&gt;
|image    	= M20005prespic.png&lt;br /&gt;
|name     	= Mirage 2000-5&lt;br /&gt;
|livery   	=  &lt;br /&gt;
|type     	= Combat and interception aircraft&lt;br /&gt;
|authors  	= Emmanuel Baranger (3D/FDM), Buckaroo (FDM), 5H1N0B1 (Weapons, Systems), F-Sig (3D, Systems)&lt;br /&gt;
|fdm      	= YASim&lt;br /&gt;
|fgname   	= m2000-5&lt;br /&gt;
|status-fdm	= 4&lt;br /&gt;
|status-systems	= 4&lt;br /&gt;
|status-cockpit	= 3&lt;br /&gt;
|status-model	= 4&lt;br /&gt;
|download 	= http://helijah.free.fr/flightgear/les-appareils/m2000/appareil.htm&lt;br /&gt;
}}&lt;br /&gt;
{{Distinguish|Dassault Mirage 2000}}&lt;br /&gt;
The '''Dassault Mirage 2000-5''' is a French multirole, single-engine fourth-generation jet fighter manufactured by Dassault Aviation. It was designed as a lightweight fighter based on the Mirage III in the late 1970s for the French Air Force (Armée de l'Air). The Mirage 2000 evolved into a multirole aircraft with several variants developed, with sales to a number of nations. The variants include the Mirage 2000N and 2000D strike variants, the improved Mirage 2000-5 and several export variants. Over 600 aircraft were built and it is in service in nine countries as of 2009.&lt;br /&gt;
&lt;br /&gt;
== Keyboard Controls ==&lt;br /&gt;
=== Flight Controls ===&lt;br /&gt;
{|&lt;br /&gt;
|{{key press|d}}&lt;br /&gt;
|Open/Close canopy&lt;br /&gt;
|-&lt;br /&gt;
|{{key press| e}}&lt;br /&gt;
|Fire guns/missiles&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|E}}&lt;br /&gt;
|Parachute (landing)&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|Pav Num}}&lt;br /&gt;
|Release the corresponding load (Not anymore on 08/2013 version)&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|0}}&lt;br /&gt;
|Jettison Tank&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|T}}&lt;br /&gt;
|Toggle ECM &amp;amp; RWR&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|t}}&lt;br /&gt;
|Change Radar Distances (10, 20 50, 100, 150)&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|R}}&lt;br /&gt;
|Activate/desactivate targeting the nearest in the HUD (the target has to be bellow radar range)&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|H}}&lt;br /&gt;
|Toggle Armements Circles&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|On/Off Reactor&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|l}}&lt;br /&gt;
|Flare out&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|n}}&lt;br /&gt;
|Next Target&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|Ctrl|N}}&lt;br /&gt;
|Previous Target&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|Ctrl|B}}&lt;br /&gt;
|Air Brake&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|w}}&lt;br /&gt;
|Cycle Stick Weapon Mode Selector&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Afterburners engage when throttle moves past 75%&lt;br /&gt;
&lt;br /&gt;
To fire a guided Missile, select A/A missile with &amp;quot;w&amp;quot;, activate &amp;quot;lock&amp;quot; with R, aim with the HUD and fire with &amp;quot;e&amp;quot;. Beware : it's a bad idea to fire a missile and have negative G...(Don't shoot yourself)&lt;br /&gt;
&lt;br /&gt;
==General characteristics==&lt;br /&gt;
* Crew: 1&lt;br /&gt;
* Length: 14.36 m (47 ft 1 in)&lt;br /&gt;
* Wingspan: 9.13 m (29 ft)&lt;br /&gt;
* Height: 5.20 m (17 ft)&lt;br /&gt;
* Wing area: 41 m² (441.3 ft²)&lt;br /&gt;
&lt;br /&gt;
==Weight==&lt;br /&gt;
* Empty weight: 7,500 kg (16,350 lb)&lt;br /&gt;
* Loaded weight: 13,800 kg (30,420 lb)&lt;br /&gt;
* Max. takeoff weight: 17,000 kg (37,500 lb)&lt;br /&gt;
&lt;br /&gt;
==Engine==&lt;br /&gt;
[[File:M2000-5 EICAS.png|thumb|The new EICAS, for engine mamagement]]&lt;br /&gt;
* Powerplant: 1 × SNECMA M53-P2 afterburning turbofan &lt;br /&gt;
* Dry thrust: 64.3 kN (14,500 lbf)&lt;br /&gt;
* Thrust with afterburner: 95.1 kN (21,400 lbf)&lt;br /&gt;
&lt;br /&gt;
==Performance==&lt;br /&gt;
* Maximum speed: Mach 2.2 (2,530+ km/h, 1,500+ mph) at high altitude/ 1,110 km/h (690 mph) at low altitude&lt;br /&gt;
* Range: 1,550 km (837 nmi, 963 mi) with drop tanks&lt;br /&gt;
* Ferry range: 3,335 km (1,800 nmi, 2,073 mi) with auxiliary fuel&lt;br /&gt;
* Service ceiling: 17,060 m (59,000 ft)&lt;br /&gt;
* Rate of climb: 285 m/s (56,000 ft/min)&lt;br /&gt;
* Wing loading: 337 kg/m² (69 lb/ft²)&lt;br /&gt;
* Thrust/weight: 0.91&lt;br /&gt;
* Roll Rate : 270 deg/sec &lt;br /&gt;
* G load : +9g / -3.2g (override mode : 11 g, structural limit 12 g), &lt;br /&gt;
&lt;br /&gt;
== Weapons ==&lt;br /&gt;
[[File:Mirage-2000-5weapons managment.png|thumb|Graphical weapon selection]]&lt;br /&gt;
&lt;br /&gt;
'''Guns:''' 2× 30 mm (1.18 in) DEFA 554 revolver cannon, 125 rounds per gun&lt;br /&gt;
&lt;br /&gt;
'''Missiles:'''&lt;br /&gt;
: '''Air-to-air missiles''': MBDA MICA IR/RF, Matra R550 Magic-II, Matra R530, AIM120 AMRAAM, AIM9 sidewinder, AIM-54 Phoenix, R74 Vympel (More to come)&lt;br /&gt;
: '''Air-to-surface missiles''': SCALP/APACHE missile (cruise missile Air to ground), Sea Eagle (cruise missile Air to sea), AGM65 Maverick, GBU16,GBU12&lt;br /&gt;
&lt;br /&gt;
'''To fire a guided Missile''' : &lt;br /&gt;
Select your missile on the graphical mfd, with the top button of the left series button.&amp;lt;br /&amp;gt;&lt;br /&gt;
Then, select your weapon mode with ''''w'''' (nothing, guns, missiles...)&amp;lt;br /&amp;gt;&lt;br /&gt;
Press ''''Shift - r'''' and activate the radar illumination. Acquire your target, and fire with ''''e'''' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Notes :''' Missile here are guided. There are lot a different missile, more than what the 2000-5 can carry. It's due to the missile's script, and its future adaption on other aircraft.&lt;br /&gt;
&lt;br /&gt;
== Refueling ==&lt;br /&gt;
[[File:M2000-5 Refueling.png|thumb|Air to Air refueling with an A330-MRTT]]&lt;br /&gt;
[[File:Refueling using RADAR TACAN.png|thumb|This how to refuel, using both TACAN and RADAR]]&lt;br /&gt;
Thanks to Fguk's team who worked on the A330-MRTT, the 2000-5 can refuel with it, as an AI, instead of the KA-6.&lt;br /&gt;
&lt;br /&gt;
When Flightgear gives you the TACAN, you can enter it in the MFD screen (watch the how to video), and then, use both radar and the tacan&lt;br /&gt;
&lt;br /&gt;
Only on mirage 2000-5 feature : in french air force, refuelling is always at 22 000 feets.&lt;br /&gt;
&lt;br /&gt;
== Radar and HUD ==&lt;br /&gt;
[[File:2000-5 new cockpit.png|thumb|More realistic cockpit of the 2000-5.]]&lt;br /&gt;
The Radar have 5 distances, (10, 20 50,100, 150) wich can be switched with {{key press|t}}. This radar can identify multiple spot and show their level (with only 2 digits)&lt;br /&gt;
The HUD show both potential target and actual target.&lt;br /&gt;
It also show if the gear are out, show the ground alt if this on is bellow 5 000 feets, and show mach only if spedd &amp;gt; mach 0.8&lt;br /&gt;
&lt;br /&gt;
== MFD &amp;amp; Navigation ==&lt;br /&gt;
Here is a video to explain how to navigate, use autopilot &amp;amp; MFD&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube | i9FXj03IDfs}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Developpement ==&lt;br /&gt;
&lt;br /&gt;
=== What is done ===&lt;br /&gt;
*A specific and clicable autopilot (see video)&lt;br /&gt;
*multi screen MFD&lt;br /&gt;
*Radio management on mfd&lt;br /&gt;
*An mfd EICAS&lt;br /&gt;
*Cockpit general graphics are improved.&lt;br /&gt;
*A weapons selection on mfd (wich make the numpad free)&lt;br /&gt;
*Better sound, missile script improved (Working aiming missiles)&lt;br /&gt;
*working alert panel&lt;br /&gt;
*a clock&lt;br /&gt;
And lot of other stuff not listed here...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Futures Objectives ===&lt;br /&gt;
*Add more clicable instruments&lt;br /&gt;
*Make the start procedure more realistic&lt;br /&gt;
*Complete the Alert Panel&lt;br /&gt;
*Make a better HUD -&amp;gt; Use canvas (To make multiple Hud, for example, draw a runway on the hUD while landing with low visibility...)&lt;br /&gt;
*Throttle stick,gear green/red light, Jettison all button&lt;br /&gt;
*Checklist&lt;br /&gt;
*Add some &amp;quot;ground&amp;quot; feature&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Improve the missile script&lt;br /&gt;
*Put sound on missiles&lt;br /&gt;
*Make the loads visibles in mp&lt;br /&gt;
*Make the RWR work&lt;br /&gt;
*Put Missiles on a generic folder&lt;br /&gt;
*increase visual on missiles&lt;br /&gt;
*Correct the radar issue due to the generic function radardist and multiplayer ATC&lt;br /&gt;
&lt;br /&gt;
*make high resolution liveries (But keep the old ones)&lt;br /&gt;
*Increase the FDM (correction of some strange behaviour)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Make a working ECM ...&lt;br /&gt;
And more...&lt;br /&gt;
&lt;br /&gt;
== Thanks ==&lt;br /&gt;
'''Helijah''' (for the 3D), '''Buckaroo''' (for the FDM), '''5HIN0B1''' (for woorkiing weapons and systems)  '''Koubi''' (For engine script) , '''FG-TUX''' (for testing), '''Ray''' (for help on MFD), '''Anusil''' (For testing), '''F-Sig''', '''XIII''' (fr the initial missile script), '''the f16 team''' (For the Radar), HUd),  '''the CitationX''' team (for the middle MFD), All those who created all these 3D missiles that could be addeed to the missile script, '''Niko''' (For the wiki and the original ask for the project) , '''Thomas''' (for all these liveries) Gijs (for the wiki) and all those forgotten here.&lt;br /&gt;
'''Thanks to all.'''&lt;br /&gt;
&lt;br /&gt;
== External link ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Dassault_Mirage_2000 Dassault Mirage 2000] (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
{{Dassault}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Delta-wing aircraft]]&lt;br /&gt;
[[Category:Fighter aircraft]]&lt;br /&gt;
[[Category:Interceptor aircraft]]&lt;br /&gt;
[[Category:Single-engined jets]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5&amp;diff=61958</id>
		<title>Dassault Mirage 2000-5</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Dassault_Mirage_2000-5&amp;diff=61958"/>
		<updated>2013-07-31T09:29:39Z</updated>

		<summary type="html">&lt;p&gt;5H1N0B1: Add F-Sig in the authors&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infobox Aircraft&lt;br /&gt;
|image    	= M20005prespic.png&lt;br /&gt;
|name     	= Mirage 2000-5&lt;br /&gt;
|livery   	=  &lt;br /&gt;
|type     	= Combat and interception aircraft&lt;br /&gt;
|authors  	= Emmanuel Baranger (3D/FDM), Buckaroo (FDM), 5H1N0B1 (Weapons, Systems), F-Sig (3D, Systems)&lt;br /&gt;
|fdm      	= YASim&lt;br /&gt;
|fgname   	= m2000-5&lt;br /&gt;
|status-fdm	= 4&lt;br /&gt;
|status-systems	= 4&lt;br /&gt;
|status-cockpit	= 3&lt;br /&gt;
|status-model	= 4&lt;br /&gt;
|download 	= http://helijah.free.fr/flightgear/les-appareils/m2000/appareil.htm&lt;br /&gt;
}}&lt;br /&gt;
{{Distinguish|Dassault Mirage 2000}}&lt;br /&gt;
The '''Dassault Mirage 2000-5''' is a French multirole, single-engine fourth-generation jet fighter manufactured by Dassault Aviation. It was designed as a lightweight fighter based on the Mirage III in the late 1970s for the French Air Force (Armée de l'Air). The Mirage 2000 evolved into a multirole aircraft with several variants developed, with sales to a number of nations. The variants include the Mirage 2000N and 2000D strike variants, the improved Mirage 2000-5 and several export variants. Over 600 aircraft were built and it is in service in nine countries as of 2009.&lt;br /&gt;
&lt;br /&gt;
== Keyboard Controls ==&lt;br /&gt;
=== Flight Controls ===&lt;br /&gt;
{|&lt;br /&gt;
|{{key press|d}}&lt;br /&gt;
|Open/Close canopy&lt;br /&gt;
|-&lt;br /&gt;
|{{key press| e}}&lt;br /&gt;
|Fire guns/missiles&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|E}}&lt;br /&gt;
|Parachute (landing)&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|Pav Num}}&lt;br /&gt;
|Release the corresponding load&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|0}}&lt;br /&gt;
|Jettison Tank&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|T}}&lt;br /&gt;
|Toggle ECM &amp;amp; RWR&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|t}}&lt;br /&gt;
|Change Radar Distances (10, 20 50,100, 150)&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|R}}&lt;br /&gt;
|Activate/desactivate targeting the nearest in the HUD (the target has to be bellow radar range)&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|H}}&lt;br /&gt;
|Toggle Armements Circles&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|On/Off Reactor&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|l}}&lt;br /&gt;
|Flare out&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|n}}&lt;br /&gt;
|Next Target&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|Ctrl|N}}&lt;br /&gt;
|Previous Target&lt;br /&gt;
|-&lt;br /&gt;
|{{key press|w}}&lt;br /&gt;
|Cycle Stick Weapon Mode Selector&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Afterburners engage when throttle moves past 75%&lt;br /&gt;
&lt;br /&gt;
To fire a guided Missile, select A/A missile with &amp;quot;w&amp;quot;, activate &amp;quot;lock&amp;quot; with R, aim with the HUD and fire with &amp;quot;e&amp;quot;. Beware : it's a bad idea to fire a missile and have negative G...(Don't shoot yourself)&lt;br /&gt;
&lt;br /&gt;
==General characteristics==&lt;br /&gt;
* Crew: 1&lt;br /&gt;
* Length: 14.36 m (47 ft 1 in)&lt;br /&gt;
* Wingspan: 9.13 m (29 ft)&lt;br /&gt;
* Height: 5.20 m (17 ft)&lt;br /&gt;
* Wing area: 41 m² (441.3 ft²)&lt;br /&gt;
&lt;br /&gt;
==Weight==&lt;br /&gt;
* Empty weight: 7,500 kg (16,350 lb)&lt;br /&gt;
* Loaded weight: 13,800 kg (30,420 lb)&lt;br /&gt;
* Max. takeoff weight: 17,000 kg (37,500 lb)&lt;br /&gt;
&lt;br /&gt;
==Engine==&lt;br /&gt;
[[File:M2000-5 EICAS.png|thumb|The new EICAS, for engine mamagement]]&lt;br /&gt;
* Powerplant: 1 × SNECMA M53-P2 afterburning turbofan &lt;br /&gt;
* Dry thrust: 64.3 kN (14,500 lbf)&lt;br /&gt;
* Thrust with afterburner: 95.1 kN (21,400 lbf)&lt;br /&gt;
&lt;br /&gt;
==Performance==&lt;br /&gt;
* Maximum speed: Mach 2.2 (2,530+ km/h, 1,500+ mph) at high altitude/ 1,110 km/h (690 mph) at low altitude&lt;br /&gt;
* Range: 1,550 km (837 nmi, 963 mi) with drop tanks&lt;br /&gt;
* Ferry range: 3,335 km (1,800 nmi, 2,073 mi) with auxiliary fuel&lt;br /&gt;
* Service ceiling: 17,060 m (59,000 ft)&lt;br /&gt;
* Rate of climb: 285 m/s (56,000 ft/min)&lt;br /&gt;
* Wing loading: 337 kg/m² (69 lb/ft²)&lt;br /&gt;
* Thrust/weight: 0.91&lt;br /&gt;
* Roll Rate : 270 deg/sec &lt;br /&gt;
* G load : +9g / -3.2g (override mode : 11 g, structural limit 12 g), &lt;br /&gt;
&lt;br /&gt;
== Weapons ==&lt;br /&gt;
[[File:Mirage-2000-5weapons managment.png|thumb|Graphical weapon selection]]&lt;br /&gt;
&lt;br /&gt;
'''Guns:''' 2× 30 mm (1.18 in) DEFA 554 revolver cannon, 125 rounds per gun&lt;br /&gt;
&lt;br /&gt;
'''Missiles:'''&lt;br /&gt;
: '''Air-to-air missiles''': MBDA MICA IR/RF, Matra R550 Magic-II, Matra R530, AIM120 AMRAAM, AIM9 sidewinder, AIM-54 Phoenix, R74 Vympel (More to come)&lt;br /&gt;
: '''Air-to-surface missiles''': SCALP/APACHE missile (cruise missile Air to ground), Sea Eagle (cruise missile Air to sea), AGM65 Maverick, GBU16,GBU12&lt;br /&gt;
&lt;br /&gt;
'''To fire a guided Missile''' : &lt;br /&gt;
Select your missile on the graphical mfd, with the top button of the left series button.&amp;lt;br /&amp;gt;&lt;br /&gt;
Then, select your weapon mode with ''''w'''' (nothing, guns, missiles...)&amp;lt;br /&amp;gt;&lt;br /&gt;
Press ''''Shift - r'''' and activate the radar illumination. Acquire your target, and fire with ''''e'''' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Notes :''' Missile here are guided. There are lot a different missile, more than what the 2000-5 can carry. It's due to the missile's script, and its future adaption on other aircraft.&lt;br /&gt;
&lt;br /&gt;
== Refueling ==&lt;br /&gt;
[[File:M2000-5 Refueling.png|thumb|Air to Air refueling with an A330-MRTT]]&lt;br /&gt;
[[File:Refueling using RADAR TACAN.png|thumb|This how to refuel, using both TACAN and RADAR]]&lt;br /&gt;
Thanks to Fguk's team who worked on the A330-MRTT, the 2000-5 can refuel with it, as an AI, instead of the KA-6.&lt;br /&gt;
&lt;br /&gt;
When Flightgear gives you the TACAN, you can enter it in the MFD screen (watch the how to video), and then, use both radar and the tacan&lt;br /&gt;
&lt;br /&gt;
Only on mirage 2000-5 feature : in french air force, refuelling is always at 22 000 feets.&lt;br /&gt;
&lt;br /&gt;
== Radar and HUD ==&lt;br /&gt;
[[File:2000-5 new cockpit.png|thumb|More realistic cockpit of the 2000-5.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Developpement ==&lt;br /&gt;
&lt;br /&gt;
=== What is done ===&lt;br /&gt;
*A specific and clicable autopilot (see video)&lt;br /&gt;
*multi screen MFD&lt;br /&gt;
*Radio management on mfd&lt;br /&gt;
*An mfd EICAS&lt;br /&gt;
*Cockpit general graphics are improved.&lt;br /&gt;
*A weapons selection on mfd (wich make the numpad free)&lt;br /&gt;
*Better sound, missile script improved (Working aiming missiles)&lt;br /&gt;
*working alert panel&lt;br /&gt;
*a clock&lt;br /&gt;
And lot of other stuff not listed here...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Futures Objectives ===&lt;br /&gt;
*Add more clicable instruments&lt;br /&gt;
*Make the start procedure more realistic&lt;br /&gt;
*Complete the Alert Panel&lt;br /&gt;
*Make a better HUD -&amp;gt; Use canvas (To make multiple Hud, for example, draw a runway on the hUD while landing with low visibility...)&lt;br /&gt;
*Throttle stick,gear green/red light, Jettison all button&lt;br /&gt;
*Checklist&lt;br /&gt;
*Add some &amp;quot;ground&amp;quot; feature&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Improve the missile script&lt;br /&gt;
*Put sound on missiles&lt;br /&gt;
*Make the loads visibles in mp&lt;br /&gt;
*Make the RWR work&lt;br /&gt;
*Put Missiles on a generic folder&lt;br /&gt;
*increase visual on missiles&lt;br /&gt;
*Correct the radar issue due to the generic function radardist and multiplayer ATC&lt;br /&gt;
&lt;br /&gt;
*make high resolution liveries (But keep the old ones)&lt;br /&gt;
*Increase the FDM (correction of some strange behaviour)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Make a working ECM ...&lt;br /&gt;
And more...&lt;br /&gt;
&lt;br /&gt;
== Thanks ==&lt;br /&gt;
'''Helijah''' (for the 3D), '''Buckaroo''' (for the FDM), '''5HIN0B1''' (for woorkiing weapons and systems)  '''Koubi''' (For engine script) , '''FG-TUX''' (for testing), '''Ray''' (for help on MFD), '''Anusil''' (For testing), '''F-Sig''', '''XIII''' (fr the initial missile script), '''the f16 team''' (For the Radar), HUd),  '''the CitationX''' team (for the middle MFD), All those who created all these 3D missiles that could be addeed to the missile script, '''Niko''' (For the wiki and the original ask for the project) , '''Thomas''' (for all these liveries) Gijs (for the wiki) and all those forgotten here.&lt;br /&gt;
'''Thanks to all.'''&lt;br /&gt;
&lt;br /&gt;
== External link ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Dassault_Mirage_2000 Dassault Mirage 2000] (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
{{Dassault}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Delta-wing aircraft]]&lt;br /&gt;
[[Category:Fighter aircraft]]&lt;br /&gt;
[[Category:Interceptor aircraft]]&lt;br /&gt;
[[Category:Single-engined jets]]&lt;/div&gt;</summary>
		<author><name>5H1N0B1</name></author>
	</entry>
</feed>