Merge branch 'work' of D:\Git_New\fgdata
This commit is contained in:
commit
56e2db00a8
59 changed files with 13668 additions and 2540 deletions
73
Aircraft/Generic/flightrecorder/components/controls.xml
Normal file
73
Aircraft/Generic/flightrecorder/components/controls.xml
Normal file
|
@ -0,0 +1,73 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- flight recorder configuration -->
|
||||
<!-- main controls -->
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/flight/aileron</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/flight/elevator</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/flight/rudder</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/flight/aileron-trim</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/flight/elevator-trim</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/flight/rudder-trim</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/flight/flaps</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/flight/speedbrake</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/flight/spoilers</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/gear/brake-left</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/gear/brake-right</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/gear/copilot-brake-left</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/gear/copilot-brake-right</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/gear/brake-parking</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/controls/gear/gear-down</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/controls/switches/master-avionics</property>
|
||||
</signal>
|
||||
|
||||
</PropertyList>
|
72
Aircraft/Generic/flightrecorder/components/engine-jet.xml
Normal file
72
Aircraft/Generic/flightrecorder/components/engine-jet.xml
Normal file
|
@ -0,0 +1,72 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- flight recorder configuration -->
|
||||
<!-- jet engine -->
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/systems/electrical/outputs/fuel-pump[%i]</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/engines/engine[%i]/starter</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/engines/engine[%i]/throttle</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/engines/engine[%i]/condition</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/engines/engine[%i]/running</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/engines/engine[%i]/cranking</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/rpm</property> <!-- YASim -->
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/n1</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/n2</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type><property type="string">/engines/engine[%i]/thrust-lbs</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/egt-degf</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/epr</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/oil-pressure-psi</property> <!-- JSBSim -->
|
||||
</signal>
|
||||
|
||||
</PropertyList>
|
|
@ -0,0 +1,108 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- flight recorder configuration -->
|
||||
<!-- propeller/piston engine -->
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/systems/electrical/outputs/fuel-pump[%i]</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/engines/engine[%i]/starter</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/controls/engines/engine[%i]/master-bat</property> <!-- YASim -->
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/controls/engines/engine[%i]/master-alt</property> <!-- YASim -->
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/engines/engine[%i]/throttle</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/engines/engine[%i]/mixture</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/engines/engine[%i]/propeller-pitch</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/engines/engine[%i]/condition</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/engines/engine[%i]/magnetos</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/engines/engine[%i]/running</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/engines/engine[%i]/cranking</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/rpm</property> <!-- YASim -->
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/fuel-flow-gph</property> <!-- YASim -->
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/fuel-px-psi</property> <!-- YASim -->
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/egt-degf</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/cht-degf</property> <!-- YASim -->
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/mp-osi</property> <!-- YASim -->
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/tit</property> <!-- YASim -->
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/oil-temperature-degf</property> <!-- YASim -->
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/oil-pressure-psi</property>
|
||||
</signal>
|
||||
|
||||
</PropertyList>
|
122
Aircraft/Generic/flightrecorder/components/engine-turboprop.xml
Normal file
122
Aircraft/Generic/flightrecorder/components/engine-turboprop.xml
Normal file
|
@ -0,0 +1,122 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- flight recorder configuration -->
|
||||
<!-- turboprop engine -->
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/systems/electrical/outputs/fuel-pump[%i]</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/engines/engine[%i]/starter</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/controls/engines/engine[%i]/master-bat</property> <!-- YASim -->
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/controls/engines/engine[%i]/master-alt</property> <!-- YASim -->
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/engines/engine[%i]/throttle</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/engines/engine[%i]/mixture</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/engines/engine[%i]/propeller-pitch</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/engines/engine[%i]/condition</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/engines/engine[%i]/running</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/engines/engine[%i]/cranking</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/rpm</property> <!-- YASim -->
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/fuel-flow-gph</property> <!-- YASim -->
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/fuel-px-psi</property> <!-- YASim -->
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/egt-degf</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/cht-degf</property> <!-- YASim -->
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/mp-osi</property> <!-- YASim -->
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/tit</property> <!-- YASim -->
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/oil-temperature-degf</property> <!-- YASim -->
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/oil-pressure-psi</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/n1</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/n2</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type><property type="string">/engines/engine[%i]/thrust-lbs</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/engines/engine[%i]/epr</property>
|
||||
</signal>
|
||||
|
||||
</PropertyList>
|
41
Aircraft/Generic/flightrecorder/components/environment.xml
Normal file
41
Aircraft/Generic/flightrecorder/components/environment.xml
Normal file
|
@ -0,0 +1,41 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- flight recorder configuration -->
|
||||
<!-- environment -->
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/environment/wind-speed-kt</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/environment/wind-from-heading-deg</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/environment/turbulence/magnitude-norm</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/environment/temperature-degc</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/environment/pressure-sea-level-inhg</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/environment/magnetic-variation-deg</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/hazards/icing/wing</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/environment/visibility-m</property>
|
||||
</signal>
|
||||
|
||||
</PropertyList>
|
|
@ -0,0 +1,42 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- flight recorder configuration -->
|
||||
<!-- engine fault properties -->
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/controls/flight/flaps-serviceable</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/controls/engines/engine[%i]/faults/serviceable</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/controls/engines/engine[%i]/faults/left-magneto-serviceable</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/controls/engines/engine[%i]/faults/right-magneto-serviceable</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/controls/engines/engine[%i]/faults/spark-plugs-serviceable</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/controls/engines/engine[%i]/faults/oil-pressure-status</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/controls/engines/engine[%i]/faults/fuel-pump-serviceable</property>
|
||||
</signal>
|
||||
|
||||
</PropertyList>
|
28
Aircraft/Generic/flightrecorder/components/gear-fixed.xml
Normal file
28
Aircraft/Generic/flightrecorder/components/gear-fixed.xml
Normal file
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- flight recorder configuration -->
|
||||
<!-- fixed gear properties -->
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/gear/gear[%i]/steering-norm</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/gear/gear[%i]/compression-norm</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/gear/gear[%i]/wow</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/gear/gear[%i]/rollspeed-ms</property>
|
||||
</signal>
|
||||
|
||||
</PropertyList>
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- flight recorder configuration -->
|
||||
<!-- retractable gear properties -->
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<!-- include fixed gear properties -->
|
||||
<signals include="gear-fixed.xml"/>
|
||||
|
||||
<!-- add position of retractable gear -->
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/gear/gear[%i]/position-norm</property>
|
||||
</signal>
|
||||
</PropertyList>
|
132
Aircraft/Generic/flightrecorder/components/position.xml
Normal file
132
Aircraft/Generic/flightrecorder/components/position.xml
Normal file
|
@ -0,0 +1,132 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- flight recorder configuration -->
|
||||
<!-- position and aero parameters -->
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<signal>
|
||||
<type>double</type>
|
||||
<interpolation type="string">angular-deg</interpolation>
|
||||
<property type="string">/position/longitude-deg</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>double</type>
|
||||
<interpolation type="string">angular-deg</interpolation>
|
||||
<property type="string">/position/latitude-deg</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>double</type>
|
||||
<property type="string">/position/altitude-ft</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>double</type>
|
||||
<property type="string">/position/altitude-agl-ft</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<interpolation type="string">angular-deg</interpolation>
|
||||
<property type="string">/orientation/roll-deg</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<interpolation type="string">angular-deg</interpolation>
|
||||
<property type="string">/orientation/pitch-deg</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<interpolation type="string">angular-deg</interpolation>
|
||||
<property type="string">/orientation/heading-deg</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<interpolation type="string">angular-deg</interpolation>
|
||||
<property type="string">/orientation/alpha-deg</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<interpolation type="string">angular-rad</interpolation>
|
||||
<property type="string">/orientation/side-slip-rad</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<interpolation type="string">angular-deg</interpolation>
|
||||
<property type="string">/orientation/beta-deg</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/orientation/roll-rate-degps</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/orientation/pitch-rate-degps</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/orientation/yaw-rate-degps</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/velocities/airspeed-kt</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/velocities/vertical-speed-fps</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/velocities/speed-north-fps</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/velocities/speed-east-fps</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/velocities/speed-down-fps</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/velocities/vBody-fps</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/velocities/uBody-fps</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/velocities/wBody-fps</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/accelerations/pilot/x-accel-fps_sec</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/accelerations/pilot/y-accel-fps_sec</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/accelerations/pilot/z-accel-fps_sec</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/sim/alarms/stall-warning</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/instrumentation/slip-skid-ball/indicated-slip-skid</property>
|
||||
</signal>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/position/ground-elev-m</property>
|
||||
</signal>
|
||||
|
||||
</PropertyList>
|
41
Aircraft/Generic/flightrecorder/components/rotor.xml
Normal file
41
Aircraft/Generic/flightrecorder/components/rotor.xml
Normal file
|
@ -0,0 +1,41 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- flight recorder configuration -->
|
||||
<!-- flightrecorder properties for a single rotor (YASim).
|
||||
Usage
|
||||
<signals include="Aircraft/Generic/flight-recorder/components/rotor.xml">
|
||||
<property-path type="string">/rotor/main</property-path>
|
||||
</signals>
|
||||
-->
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">roll-deg</property>
|
||||
<interpolation type="string">angular-deg</interpolation>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">rpm</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">stall</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">torque</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">yaw-deg</property>
|
||||
<interpolation type="string">angular-deg</interpolation>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">cone-deg</property>
|
||||
<interpolation type="string">angular-deg</interpolation>
|
||||
</signal>
|
||||
|
||||
</PropertyList>
|
45
Aircraft/Generic/flightrecorder/components/surfaces.xml
Normal file
45
Aircraft/Generic/flightrecorder/components/surfaces.xml
Normal file
|
@ -0,0 +1,45 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- flight recorder configuration -->
|
||||
<!-- surface positions -->
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/surface-positions/elevator-pos-norm</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/surface-positions/elevator-trim-tab-pos-norm</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/surface-positions/flap-pos-norm</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/surface-positions/left-aileron-pos-norm</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/surface-positions/right-aileron-pos-norm</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/surface-positions/rudder-pos-norm</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/surface-positions/speedbrake-pos-norm</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/surface-positions/spoilers-pos-norm</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/surface-positions/nose-wheel-pos-norm</property>
|
||||
</signal>
|
||||
|
||||
</PropertyList>
|
17
Aircraft/Generic/flightrecorder/components/tanks.xml
Normal file
17
Aircraft/Generic/flightrecorder/components/tanks.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- flight recorder configuration -->
|
||||
<!-- tanks -->
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/consumables/fuel/tank[%i]/level-gal_us</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/controls/fuel/tank[%i]/fuel_selector</property>
|
||||
</signal>
|
||||
|
||||
</PropertyList>
|
29
Aircraft/Generic/flightrecorder/generic-glider.xml
Normal file
29
Aircraft/Generic/flightrecorder/generic-glider.xml
Normal file
|
@ -0,0 +1,29 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- Generic flight recorder configuration for gliders (no engines/no tanks/single gear).
|
||||
|
||||
Note: The generic configurations are provided as an example and for convenience only.
|
||||
No need to use a generic configuration. You can copy the settings below to your aircraft's
|
||||
flight recorder configuration and include a better combination of recorder components, if
|
||||
none of the pre-defined configurations fits your aircraft.
|
||||
-->
|
||||
|
||||
<PropertyList>
|
||||
<name type="string">Generic Flight Recorder for Gliders (no engines/no tanks/single non-retractable gear)</name>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/environment.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/position.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/controls.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/surfaces.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/gear-fixed.xml">
|
||||
<count type="int">1</count>
|
||||
</signals>
|
||||
|
||||
<!-- "engine throttle" (usually used as glider's speed brake) -->
|
||||
<signals>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/engines/engine/throttle</property>
|
||||
</signal>
|
||||
</signals>
|
||||
|
||||
</PropertyList>
|
39
Aircraft/Generic/flightrecorder/generic-helicopter.xml
Normal file
39
Aircraft/Generic/flightrecorder/generic-helicopter.xml
Normal file
|
@ -0,0 +1,39 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- Generic flight recorder configuration for helicopters: main + tail rotor, 2 tanks.
|
||||
Tested with YASim helicopters.
|
||||
|
||||
Note: The generic configurations are provided as an example and for convenience only.
|
||||
No need to use a generic configuration. You can copy the settings below to your aircraft's
|
||||
flight recorder configuration and include a better combination of recorder components, if
|
||||
none of the pre-defined configurations fits your aircraft.
|
||||
-->
|
||||
|
||||
<PropertyList>
|
||||
<name type="string">Generic Flight Recorder for Helicopters</name>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/position.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/controls.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/environment.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/tanks.xml">
|
||||
<count type="int">2</count>
|
||||
</signals>
|
||||
|
||||
<!-- main rotor -->
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/rotor.xml">
|
||||
<prefix type="string">/rotors/main</prefix>
|
||||
</signals>
|
||||
|
||||
<!-- tail rotor -->
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/rotor.xml">
|
||||
<prefix type="string">/rotors/tail</prefix>
|
||||
</signals>
|
||||
|
||||
<!-- simple single engine properties -->
|
||||
<signals>
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/engines/engine/throttle</property>
|
||||
</signal>
|
||||
</signals>
|
||||
|
||||
</PropertyList>
|
29
Aircraft/Generic/flightrecorder/generic-jet.xml
Normal file
29
Aircraft/Generic/flightrecorder/generic-jet.xml
Normal file
|
@ -0,0 +1,29 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- Generic flight recorder configuration for jets (2 jet engines/4 tanks/3 retractable gear).
|
||||
|
||||
Note: The generic configurations are provided as an example and for convenience only.
|
||||
No need to use a generic configuration. You can copy the settings below to your aircraft's
|
||||
flight recorder configuration and include a better combination of recorder components, if
|
||||
none of the pre-defined configurations fits your aircraft.
|
||||
-->
|
||||
|
||||
<PropertyList>
|
||||
<name type="string">Generic Flight Recorder for Jets (2 jet engines/4 tanks/3 retractable gear)</name>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/environment.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/position.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/controls.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/surfaces.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/engine-jet.xml">
|
||||
<count type="int">2</count>
|
||||
</signals>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/faults-engines.xml">
|
||||
<count type="int">2</count>
|
||||
</signals>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/tanks.xml">
|
||||
<count type="int">4</count>
|
||||
</signals>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/gear-retractable.xml">
|
||||
<count type="int">3</count>
|
||||
</signals>
|
||||
</PropertyList>
|
|
@ -0,0 +1,29 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- Generic flight recorder configuration: 1 propellers/engine, 2 tanks, 3 fixed gear.
|
||||
|
||||
Note: The generic configurations are provided as an example and for convenience only.
|
||||
No need to use a generic configuration. You can copy the settings below to your aircraft's
|
||||
flight recorder configuration and include a better combination of recorder components, if
|
||||
none of the pre-defined configurations fits your aircraft.
|
||||
-->
|
||||
|
||||
<PropertyList>
|
||||
<name type="string">Generic Flight Recorder (1 piston engine/1 propeller/4 tanks/3 fixed gear)</name>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/environment.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/position.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/controls.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/surfaces.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/engine-piston-prop.xml">
|
||||
<count type="int">1</count>
|
||||
</signals>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/faults-engines.xml">
|
||||
<count type="int">1</count>
|
||||
</signals>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/tanks.xml">
|
||||
<count type="int">2</count>
|
||||
</signals>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/gear-fixed.xml">
|
||||
<count type="int">3</count>
|
||||
</signals>
|
||||
</PropertyList>
|
|
@ -0,0 +1,30 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- Generic flight recorder configuration: 4 propellers/engines, 4 tanks, 3 retractable gear.
|
||||
Records same properties as hard-coded recorder for <=FG2.4.0
|
||||
|
||||
Note: The generic configurations are provided as an example and for convenience only.
|
||||
No need to use a generic configuration. You can copy the settings below to your aircraft's
|
||||
flight recorder configuration and include a better combination of recorder components, if
|
||||
none of the pre-defined configurations fits your aircraft.
|
||||
-->
|
||||
|
||||
<PropertyList>
|
||||
<name type="string">Generic Flight Recorder (4 piston engines/4 propellers/4 tanks/3 retractable gear)</name>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/environment.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/position.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/controls.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/surfaces.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/engine-piston-prop.xml">
|
||||
<count type="int">4</count>
|
||||
</signals>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/faults-engines.xml">
|
||||
<count type="int">4</count>
|
||||
</signals>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/tanks.xml">
|
||||
<count type="int">4</count>
|
||||
</signals>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/gear-retractable.xml">
|
||||
<count type="int">3</count>
|
||||
</signals>
|
||||
</PropertyList>
|
29
Aircraft/Generic/flightrecorder/generic-turboprop-2.xml
Normal file
29
Aircraft/Generic/flightrecorder/generic-turboprop-2.xml
Normal file
|
@ -0,0 +1,29 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- Generic flight recorder configuration: 2 turboprop engines, 4 tanks, 3 retractable gear.
|
||||
|
||||
Note: The generic configurations are provided as an example and for convenience only.
|
||||
No need to use a generic configuration. You can copy the settings below to your aircraft's
|
||||
flight recorder configuration and include a better combination of recorder components, if
|
||||
none of the pre-defined configurations fits your aircraft.
|
||||
-->
|
||||
|
||||
<PropertyList>
|
||||
<name type="string">Generic Flight Recorder (2 turboprop engines/2 propellers/4 tanks/3 retractable gear)</name>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/environment.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/position.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/controls.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/surfaces.xml"/>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/engine-turboprop.xml">
|
||||
<count type="int">2</count>
|
||||
</signals>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/faults-engines.xml">
|
||||
<count type="int">2</count>
|
||||
</signals>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/tanks.xml">
|
||||
<count type="int">4</count>
|
||||
</signals>
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/gear-retractable.xml">
|
||||
<count type="int">3</count>
|
||||
</signals>
|
||||
</PropertyList>
|
Binary file not shown.
After Width: | Height: | Size: 41 KiB |
10434
Aircraft/Instruments-3d/RAF_Mk9_bubble_sextant/RAF_Mk9_bubble_sextant.ac
Normal file
10434
Aircraft/Instruments-3d/RAF_Mk9_bubble_sextant/RAF_Mk9_bubble_sextant.ac
Normal file
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,477 @@
|
|||
###############################################################################
|
||||
##
|
||||
## RAF mk9 bubble sextant.
|
||||
##
|
||||
## Copyright (C) 2007 - 2010 Anders Gidenstam (anders(at)gidenstam.org)
|
||||
## This file is licensed under the GPL license version 2 or later.
|
||||
##
|
||||
###############################################################################
|
||||
|
||||
## NOTE: This module MUST be loaded as RAFmk9sextant;
|
||||
|
||||
## You can override these parameters when loading this file.
|
||||
# Field of view when looking through the sextant
|
||||
var FOV = 25;
|
||||
# Distance from the eye to the sextant when looking through the sextant.
|
||||
var VIEW_DISTANCE = 0.15;
|
||||
# The view in which the sextant will be used.
|
||||
var VIEW_NAME = "Cockpit View";
|
||||
# The storage location and orientation.
|
||||
# The location is relative to the default center for the view.
|
||||
var STOWED = { position : {x:-0.3, y: 0.0, z: -0.2},
|
||||
orientation : {heading : 320.0,
|
||||
pitch : -45.0,
|
||||
roll : 0.0}
|
||||
};
|
||||
|
||||
## Interface functions.
|
||||
var pick_up = func {
|
||||
if (handling.lookthrough) return;
|
||||
|
||||
handling.toggle();
|
||||
if (handling.enabled) {
|
||||
handling.view_angle.setValue(-90.0);
|
||||
handling.view_distance.setValue(2.0*VIEW_DISTANCE);
|
||||
}
|
||||
}
|
||||
|
||||
var toggle_look_through = func {
|
||||
handling.toggle_look_through();
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# Bindings for mouse X and Y movements. Install these to the appropriate
|
||||
# mouse mode and axes, e.g. in the -set file.
|
||||
var mouseX = func {
|
||||
if (!handling.enabled) return;
|
||||
if(__kbd.alt.getValue()) {
|
||||
var delta = 3*cmdarg().getNode("offset").getValue();
|
||||
if(__kbd.shift.getValue() and handling.enabled) {
|
||||
# Roll adjustment
|
||||
var orient = sextant.get_orientation();
|
||||
var roll = orient[2] - delta;
|
||||
if(roll < -180) roll = -180;
|
||||
if(roll > 180) roll = 180;
|
||||
sextant.set_orientation(orient[0], orient[1], roll);
|
||||
} else {
|
||||
var view = "/sim/current-view/heading-offset-deg";
|
||||
var val = getprop(view) - delta;
|
||||
if(val < 0) val = 0;
|
||||
if(val > 360) val = 360;
|
||||
setprop(view, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var mouseY = func {
|
||||
if (!handling.enabled) return;
|
||||
if(__kbd.alt.getValue()) {
|
||||
var delta = 3*cmdarg().getNode("offset").getValue();
|
||||
if(__kbd.shift.getValue() and handling.enabled) {
|
||||
# Altitude adjustment
|
||||
sextant.adjust_altitude_fine(delta);
|
||||
} else {
|
||||
var view = "/sim/current-view/pitch-offset-deg";
|
||||
var val = getprop(view) - delta;
|
||||
if(val < -90) val = -90;
|
||||
if(val > 90) val = 90;
|
||||
setprop(view, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var RAD = math.pi/180;
|
||||
var DEG = 180/math.pi;
|
||||
|
||||
###############################################################################
|
||||
# Class for managing one RAF mk9 bubble sextant instrument.
|
||||
var sextant = {
|
||||
##################################################
|
||||
init : func (n=0) {
|
||||
me.UPDATE_INTERVAL = 0.0;
|
||||
me.loopid = 0;
|
||||
me.base =
|
||||
props.globals.getNode("instrumentation/sextant["~ n ~"]/", 1);
|
||||
|
||||
## Instrument properties
|
||||
me.pitch_err = me.base.getNode("pitch-error-deg", 1);
|
||||
me.pitch_err.setDoubleValue(0);
|
||||
me.roll_err = me.base.getNode("roll-error-deg", 1);
|
||||
me.roll_err.setDoubleValue(0);
|
||||
me.setting_min = me.base.getNode("setting/min", 1);
|
||||
me.setting_min.setDoubleValue(0);
|
||||
me.setting_deg1 = me.base.getNode("setting/deg1", 1);
|
||||
me.setting_deg1.setDoubleValue(0); # 0 - 10 deg fractional.
|
||||
me.setting_deg10 = me.base.getNode("setting/deg10", 1);
|
||||
me.setting_deg10.setDoubleValue(0);
|
||||
me.bubble = me.base.getNode("bubble-norm", 1);
|
||||
me.bubble.setDoubleValue(0);
|
||||
me.serviceable = me.base.getNode("serviceable", 1);
|
||||
me.serviceable.setBoolValue(1);
|
||||
|
||||
## The instrument's orientation in the aircraft frame
|
||||
## and position offset relative its initial position.
|
||||
me.position = [me.base.getNode("offsets/x-m", 1),
|
||||
me.base.getNode("offsets/y-m", 1),
|
||||
me.base.getNode("offsets/z-m", 1)];
|
||||
me.heading = me.base.getNode("offsets/heading-deg", 1);
|
||||
me.pitch = me.base.getNode("offsets/pitch-deg", 1);
|
||||
me.roll = me.base.getNode("offsets/roll-deg", 1);
|
||||
|
||||
me.position[0].setValue(0);
|
||||
me.position[1].setValue(0);
|
||||
me.position[2].setValue(0);
|
||||
me.heading.setValue(0);
|
||||
me.pitch.setValue(0);
|
||||
me.roll.setValue(0);
|
||||
|
||||
me.reset();
|
||||
|
||||
print("RAF Mk9 bubble sextant ... initialized");
|
||||
},
|
||||
##################################################
|
||||
set_position : func (x, y ,z) {
|
||||
me.position[0].setValue(x);
|
||||
me.position[1].setValue(y);
|
||||
me.position[2].setValue(z);
|
||||
},
|
||||
##################################################
|
||||
get_position : func (x, y ,z) {
|
||||
return [me.position[0].getValue(),
|
||||
me.position[1].getValue(),
|
||||
me.position[2].getValue()];
|
||||
},
|
||||
##################################################
|
||||
set_orientation : func (heading, pitch, roll) {
|
||||
me.heading.setValue(heading);
|
||||
me.pitch.setValue(pitch);
|
||||
me.roll.setValue(roll);
|
||||
},
|
||||
##################################################
|
||||
get_orientation : func () {
|
||||
return [me.heading.getValue(),
|
||||
me.pitch.getValue(),
|
||||
me.roll.getValue()];
|
||||
},
|
||||
##################################################
|
||||
step_10deg_knob : func (d) {
|
||||
var val = me.setting_deg10.getValue() + (d < 0 ? -1 : 1);
|
||||
if(val < 0) val = 0;
|
||||
if(val > 8) val = 8;
|
||||
me.setting_deg10.setValue(val);
|
||||
},
|
||||
##################################################
|
||||
step_5deg_knob : func (d) {
|
||||
var val = me.setting_deg1.getValue();
|
||||
var new = val;
|
||||
if (d <= 0 and val >= 5.0) new -= 5.0;
|
||||
if (d >= 0 and val < 5.0) new += 5.0;
|
||||
if(new < 0.0) new = 0;
|
||||
if(new > 10.0) new = 10;
|
||||
me.setting_deg1.setValue(new);
|
||||
},
|
||||
##################################################
|
||||
step_bubble_knob : func (d) {
|
||||
var val = me.bubble.getValue() + d;
|
||||
if(val < 0) val = 0;
|
||||
if(val > 1) val = 1;
|
||||
me.bubble.setValue(val);
|
||||
},
|
||||
##################################################
|
||||
adjust_altitude_fine : func (d) {
|
||||
var val = me.setting_deg1.getValue() - d;
|
||||
if(val < 0) val = 0;
|
||||
if(val > 10) val = 10;
|
||||
|
||||
me.setting_deg1.setValue(val);
|
||||
me.setting_min.setValue(60.0*val - 60*int(val));
|
||||
},
|
||||
##################################################
|
||||
get_altitude : func {
|
||||
return 10.0 * me.setting_deg10.getValue() + me.setting_deg1.getValue();
|
||||
},
|
||||
##################################################
|
||||
reset : func {
|
||||
me.loopid += 1;
|
||||
me._loop_(me.loopid);
|
||||
},
|
||||
##################################################
|
||||
update : func {
|
||||
## State data we need.
|
||||
var heading_ac = getprop("/orientation/heading-deg") * RAD;
|
||||
var pitch_ac = getprop("/orientation/pitch-deg") * RAD;
|
||||
var roll_ac = getprop("/orientation/roll-deg") * RAD;
|
||||
|
||||
var yaw_v = me.heading.getValue() * RAD;
|
||||
var pitch_v = me.pitch.getValue() * RAD;
|
||||
var roll_v = me.roll.getValue() * RAD;
|
||||
|
||||
## Compute local aircraft axes vectors in the local frame
|
||||
## Account for aircraft orientation. (x/y/z = front/left/up)
|
||||
var T_ac = mulMM(mulMM(rotateZ(heading_ac), rotateY(pitch_ac)),
|
||||
rotateX(roll_ac));
|
||||
## Account for view orientation and sextant settings.
|
||||
## The sextant frame is assumed to coincide with the view frame
|
||||
## except that it is pitched down altitude deg around its local
|
||||
## Y axis.
|
||||
var T_bs = mulMM(mulMM(mulMM(mulMM(
|
||||
T_ac,
|
||||
rotateZ(yaw_v)),
|
||||
rotateY(pitch_v)),
|
||||
rotateX(roll_v)),
|
||||
rotateY(-me.get_altitude() * RAD));
|
||||
|
||||
var X_bs = mulMv(T_bs, X);
|
||||
var Y_bs = mulMv(T_bs, Y);
|
||||
var Z_bs = mulMv(T_bs, Z);
|
||||
|
||||
## Transform up in the local frame to the sextant frame.
|
||||
var Up = mulMv([X_bs, Y_bs, Z_bs], Z);
|
||||
var Up_xz = [Up[0], 0, Up[2]];
|
||||
var Up_yz = [0, Up[1], Up[2]];
|
||||
|
||||
## Compute interesting angles in the sextant frame.
|
||||
var p_err = angleV(Z, Up_xz);
|
||||
if (scalar(Up_xz, X) < 0.0) {
|
||||
p_err *= -1;
|
||||
}
|
||||
me.pitch_err.setValue(p_err*DEG);
|
||||
|
||||
var r_err = angleV(Z, Up_yz);
|
||||
if (scalar(Up_yz, Y) < 0.0) {
|
||||
r_err *= -1;
|
||||
}
|
||||
me.roll_err.setValue(r_err*DEG);
|
||||
},
|
||||
##################################################
|
||||
_loop_ : func(id) {
|
||||
id == me.loopid or return;
|
||||
me.update();
|
||||
settimer(func { me._loop_(id); }, me.UPDATE_INTERVAL, 1);
|
||||
}
|
||||
};
|
||||
|
||||
###############################################################################
|
||||
## Singleton class for handling (i.e. moving / rotating) a sextant.
|
||||
var handling = {
|
||||
enabled : 0,
|
||||
##################################################
|
||||
init : func (n=0) {
|
||||
me.UPDATE_INTERVAL = 0.0;
|
||||
me.loopid = 0;
|
||||
me.lookthrough = 0;
|
||||
|
||||
me.base =
|
||||
props.globals.getNode("instrumentation/sextant["~ n ~"]/", 1);
|
||||
|
||||
## Instrument properties
|
||||
me.altitude_deg = me.base.getNode("altitude-deg", 1);
|
||||
me.altitude_deg.setDoubleValue(0);
|
||||
|
||||
## 3d model position properties
|
||||
me.source_view = view.views[view.indexof(VIEW_NAME)];
|
||||
var src = me.source_view.getNode("config");
|
||||
me.offset = {x: src.getNode("z-offset-m").getValue(),
|
||||
y: src.getNode("x-offset-m").getValue(),
|
||||
z: src.getNode("y-offset-m").getValue()};
|
||||
|
||||
me.view_distance = me.base.getNode("view-distance-m", 1);
|
||||
me.view_distance.setDoubleValue(2.0*VIEW_DISTANCE);
|
||||
me.view_angle = me.base.getNode("view-angle-deg", 1);
|
||||
me.view_angle.setDoubleValue(0.0);
|
||||
|
||||
sextant.init();
|
||||
sextant.set_position
|
||||
(STOWED.position.x,
|
||||
STOWED.position.y,
|
||||
STOWED.position.z);
|
||||
sextant.set_orientation
|
||||
(STOWED.orientation.heading,
|
||||
STOWED.orientation.pitch,
|
||||
STOWED.orientation.roll);
|
||||
|
||||
## Instrument "display"
|
||||
me.display = screen.display.new(20, 10);
|
||||
me.display.add(me.altitude_deg,
|
||||
props.globals.getNode("/sim/time/gmt"));
|
||||
|
||||
me.disable();
|
||||
|
||||
print("RAF Mk9 bubble sextant handling ... initialized");
|
||||
},
|
||||
##################################################
|
||||
toggle : func {
|
||||
if (me.enabled) {
|
||||
me.disable();
|
||||
} else {
|
||||
me.enable();
|
||||
}
|
||||
},
|
||||
##################################################
|
||||
enable : func {
|
||||
me.enabled = 1;
|
||||
me.display.toggle();
|
||||
|
||||
me.loopid += 1;
|
||||
me._loop_(me.loopid);
|
||||
},
|
||||
##################################################
|
||||
toggle_look_through : func {
|
||||
if (!me.enabled) return;
|
||||
if (!me.lookthrough) {
|
||||
me.lookthrough = 1;
|
||||
|
||||
me.view_distance.setDoubleValue(VIEW_DISTANCE);
|
||||
me.view_angle.setValue(0.0);
|
||||
|
||||
me.old_view = view.point.save();
|
||||
setprop("/sim/current-view/field-of-view", FOV);
|
||||
} else {
|
||||
me.lookthrough = 0;
|
||||
setprop("/sim/current-view/field-of-view",
|
||||
me.old_view.getChild("field-of-view").getValue());
|
||||
# view.point.restore();
|
||||
me.view_angle.setValue(-90.0);
|
||||
me.view_distance.setValue(2.0*VIEW_DISTANCE);
|
||||
}
|
||||
},
|
||||
##################################################
|
||||
disable : func {
|
||||
me.enabled = 0;
|
||||
me.lookthrough = 0;
|
||||
me.display.toggle();
|
||||
|
||||
sextant.set_position
|
||||
(STOWED.position.x,
|
||||
STOWED.position.y,
|
||||
STOWED.position.z);
|
||||
sextant.set_orientation
|
||||
(STOWED.orientation.heading,
|
||||
STOWED.orientation.pitch,
|
||||
STOWED.orientation.roll);
|
||||
me.view_distance.setDoubleValue(0.0);
|
||||
me.view_angle.setValue(0.0);
|
||||
|
||||
if (me.lookthrough) {
|
||||
me.toggle_look_through();
|
||||
}
|
||||
},
|
||||
##################################################
|
||||
update : func {
|
||||
## Move the 3d model.
|
||||
if (view.current == me.source_view) {
|
||||
var src = props.globals.getNode("/sim/current-view");
|
||||
sextant.set_position
|
||||
(src.getNode("z-offset-m").getValue() - me.offset.x,
|
||||
src.getNode("x-offset-m").getValue() - me.offset.y,
|
||||
src.getNode("y-offset-m").getValue() - me.offset.z);
|
||||
var old = sextant.get_orientation();
|
||||
sextant.set_orientation
|
||||
(getprop("/sim/current-view/heading-offset-deg"),
|
||||
getprop("/sim/current-view/pitch-offset-deg"),
|
||||
old[2]);
|
||||
me.altitude_deg.setValue(sextant.get_altitude());
|
||||
}
|
||||
},
|
||||
##################################################
|
||||
_loop_ : func(id) {
|
||||
id == me.loopid and me.enabled or return;
|
||||
me.update();
|
||||
settimer(func { me._loop_(id); }, me.UPDATE_INTERVAL, 1);
|
||||
}
|
||||
};
|
||||
|
||||
###############################################################################
|
||||
setlistener("/sim/signals/fdm-initialized", func {
|
||||
handling.init();
|
||||
});
|
||||
|
||||
###############################################################################
|
||||
## Ugly matrix math as needed.
|
||||
## Probably horribly inefficient matrix representation:
|
||||
## M[row][col] = [[row1], [row2], [row3]]
|
||||
## v[row] = [x, y, z]
|
||||
|
||||
var X = [1, 0, 0];
|
||||
var Y = [0, 1, 0];
|
||||
var Z = [0, 0, 1];
|
||||
var id = [X, Y, Z];
|
||||
|
||||
var mulMv = func(M, v) {
|
||||
return [M[0][0]*v[0] + M[0][1]*v[1] + M[0][2]*v[2],
|
||||
M[1][0]*v[0] + M[1][1]*v[1] + M[1][2]*v[2],
|
||||
M[2][0]*v[0] + M[2][1]*v[1] + M[2][2]*v[2]];
|
||||
}
|
||||
|
||||
var mulMM = func(A, B) {
|
||||
return [[A[0][0]*B[0][0] + A[0][1]*B[1][0] + A[0][2]*B[2][0],
|
||||
A[0][0]*B[0][1] + A[0][1]*B[1][1] + A[0][2]*B[2][1],
|
||||
A[0][0]*B[0][2] + A[0][1]*B[1][2] + A[0][2]*B[2][2]],
|
||||
[A[1][0]*B[0][0] + A[1][1]*B[1][0] + A[1][2]*B[2][0],
|
||||
A[1][0]*B[0][1] + A[1][1]*B[1][1] + A[1][2]*B[2][1],
|
||||
A[1][0]*B[0][2] + A[1][1]*B[1][2] + A[1][2]*B[2][2]],
|
||||
[A[2][0]*B[0][0] + A[2][1]*B[1][0] + A[2][2]*B[2][0],
|
||||
A[2][0]*B[0][1] + A[2][1]*B[1][1] + A[2][2]*B[2][1],
|
||||
A[2][0]*B[0][2] + A[2][1]*B[1][2] + A[2][2]*B[2][2]]];
|
||||
}
|
||||
|
||||
var scalar = func(a, b) {
|
||||
return a[0]*b[0] + a[1]*b[1] + a[2]*b[2];
|
||||
}
|
||||
|
||||
var absV = func(a) {
|
||||
return math.sqrt(scalar(a, a));
|
||||
}
|
||||
|
||||
var crossV = func(a, b) {
|
||||
return [a[1]*b[2] - a[2]*b[1],
|
||||
a[2]*b[0] - a[0]*b[2],
|
||||
a[0]*b[1] - a[1]*b[0]];
|
||||
}
|
||||
|
||||
var rotateX = func (r) {
|
||||
return [[1, 0, 0],
|
||||
[0, math.cos(-r), -math.sin(-r)],
|
||||
[0, math.sin(-r), math.cos(-r)]];
|
||||
}
|
||||
|
||||
var rotateY = func (r) {
|
||||
return [[math.cos(-r), 0, math.sin(-r)],
|
||||
[0, 1, 0],
|
||||
[-math.sin(-r), 0, math.cos(-r)]];
|
||||
}
|
||||
|
||||
var rotateZ = func (r) {
|
||||
return [[math.cos(r), -math.sin(r), 0],
|
||||
[math.sin(r), math.cos(r), 0],
|
||||
[0, 0, 1]];
|
||||
}
|
||||
|
||||
var printMat = func (m) {
|
||||
foreach (var e; m) {
|
||||
if (typeof(e) == "scalar") {
|
||||
print(" " ~ e);
|
||||
} else {
|
||||
var line = "";
|
||||
foreach (var ee; e) {
|
||||
line = line ~ " " ~ ee;
|
||||
}
|
||||
print(line);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var angleV = func (a, b) {
|
||||
return math.acos(math.abs(scalar(a,b)) / (absV(a) * absV(b)));
|
||||
}
|
||||
|
||||
#print("id*id=");
|
||||
#printMat(mulMM(id,id));
|
||||
|
||||
#print("X=");
|
||||
#printMat(X);
|
||||
|
||||
#print("RotY(45)*X=");
|
||||
#printMat(mulMv(rotateY(45*math.pi/180),X));
|
||||
|
||||
#print("Y*X= " ~scalar(Y,X));
|
|
@ -0,0 +1,520 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
RAF Mk9 bubble sextant.
|
||||
|
||||
Copyright (C) 2008 - 2010 Anders Gidenstam (anders(at)gidenstam.org)
|
||||
This file is licensed under the GPL license version 2 or later.
|
||||
-->
|
||||
<PropertyList>
|
||||
|
||||
<path>RAF_Mk9_bubble_sextant.ac</path>
|
||||
<!-- x/y/z == back/right/up -->
|
||||
|
||||
<!-- =========================================================================
|
||||
Instrument function animations.
|
||||
===================================================================== -->
|
||||
|
||||
<!-- ===================================================================== -->
|
||||
<!-- Bubble movement -->
|
||||
<animation>
|
||||
<type>translate</type>
|
||||
<object-name>bubble</object-name>
|
||||
<property>instrumentation/sextant/roll-error-deg</property>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
<interpolation>
|
||||
<entry>
|
||||
<ind>-4</ind>
|
||||
<dep>0.008</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>0</ind>
|
||||
<dep>0</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>4</ind>
|
||||
<dep>-0.008</dep>
|
||||
</entry>
|
||||
</interpolation>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>translate</type>
|
||||
<object-name>bubble</object-name>
|
||||
<property>instrumentation/sextant/pitch-error-deg</property>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>1</z>
|
||||
</axis>
|
||||
<interpolation>
|
||||
<entry>
|
||||
<ind>-4</ind>
|
||||
<dep>0.008</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>0</ind>
|
||||
<dep>0</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>4</ind>
|
||||
<dep>-0.008</dep>
|
||||
</entry>
|
||||
</interpolation>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>scale</type>
|
||||
<object-name>bubble</object-name>
|
||||
<property>instrumentation/sextant/bubble-norm</property>
|
||||
<x-factor>0.0</x-factor>
|
||||
<x-offset>1.0</x-offset>
|
||||
<y-factor>1.0</y-factor>
|
||||
<y-offset>0.0</y-offset>
|
||||
<z-factor>1.0</z-factor>
|
||||
<z-offset>0.0</z-offset>
|
||||
<center>
|
||||
<x-m> -0.060 </x-m>
|
||||
<y-m> 0.000 </y-m>
|
||||
<z-m> 0.000 </z-m>
|
||||
</center>
|
||||
</animation>
|
||||
|
||||
<!-- If the bubble is gone the instrument is unserviceable. -->
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>bubble</object-name>
|
||||
<condition>
|
||||
<property>instrumentation/sextant/serviceable</property>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<!-- ===================================================================== -->
|
||||
<!-- 10 deg setting knob -->
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>10_setting_knob</object-name>
|
||||
<property>instrumentation/sextant/setting/deg10</property>
|
||||
<factor>5.0</factor>
|
||||
<offset-deg>-15.0</offset-deg>
|
||||
<center>
|
||||
<x-m> -0.057 </x-m>
|
||||
<y-m> 0.035 </y-m>
|
||||
<z-m> 0.038 </z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x> 0.0 </x>
|
||||
<y> 1.0 </y>
|
||||
<z> 0.0 </z>
|
||||
</axis>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>10_setting_knob_scale</object-name>
|
||||
<property>instrumentation/sextant/setting/deg10</property>
|
||||
<factor>5.0</factor>
|
||||
<offset-deg>-15.0</offset-deg>
|
||||
<center>
|
||||
<x-m> -0.057 </x-m>
|
||||
<y-m> 0.035 </y-m>
|
||||
<z-m> 0.038 </z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x> 0.0 </x>
|
||||
<y> 1.0 </y>
|
||||
<z> 0.0 </z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<!-- ===================================================================== -->
|
||||
<!-- Degree drum -->
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>degree_drum</object-name>
|
||||
<property>instrumentation/sextant/setting/deg1</property>
|
||||
<factor>36.0</factor>
|
||||
<offset-deg>18</offset-deg>
|
||||
<center>
|
||||
<x-m> -0.1110 </x-m>
|
||||
<y-m> 0.0150 </y-m>
|
||||
<z-m> -0.0450 </z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x> 1.0 </x>
|
||||
<y> 0.0 </y>
|
||||
<z> 0.0 </z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<!-- ===================================================================== -->
|
||||
<!-- Minute drum -->
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>minute_drum</object-name>
|
||||
<property>instrumentation/sextant/setting/min</property>
|
||||
<factor>6.0</factor>
|
||||
<offset-deg>30.0</offset-deg>
|
||||
<center>
|
||||
<x-m> -0.1270 </x-m>
|
||||
<y-m> 0.0040 </y-m>
|
||||
<z-m> -0.0315 </z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>-1.0 </x>
|
||||
<y> 0.0 </y>
|
||||
<z> 0.0 </z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<!-- ===================================================================== -->
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>slow_motion_knob</object-name>
|
||||
<property>instrumentation/sextant/setting/deg1</property>
|
||||
<factor>120.0</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<center>
|
||||
<x-m> -0.0680 </x-m>
|
||||
<y-m> 0.0230 </y-m>
|
||||
<z-m> 0.0090 </z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x> 0.0 </x>
|
||||
<y> 1.0 </y>
|
||||
<z> 0.0 </z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<!-- ===================================================================== -->
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>bubble_knob</object-name>
|
||||
<property>instrumentation/sextant/bubble-norm</property>
|
||||
<factor>360.0</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<center>
|
||||
<x-m> -0.0350 </x-m>
|
||||
<y-m> -0.0230 </y-m>
|
||||
<z-m> 0.0390 </z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x> 0.0 </x>
|
||||
<y> 1.0 </y>
|
||||
<z> 0.0 </z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<!-- ===================================================================== -->
|
||||
<!-- Instrument control pick animations. -->
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>10_setting_knob</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
RAFmk9sextant.sextant.step_10deg_knob(1);
|
||||
</script>
|
||||
</binding>
|
||||
</action>
|
||||
<action>
|
||||
<button>1</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
RAFmk9sextant.sextant.step_10deg_knob(-1);
|
||||
</script>
|
||||
</binding>
|
||||
</action>
|
||||
<action>
|
||||
<button>3</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
RAFmk9sextant.sextant.step_10deg_knob(-1);
|
||||
</script>
|
||||
</binding>
|
||||
</action>
|
||||
<action>
|
||||
<button>4</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
RAFmk9sextant.sextant.step_10deg_knob(1);
|
||||
</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>slow_motion_knob</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>true</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
RAFmk9sextant.sextant.adjust_altitude_fine(0.01667);
|
||||
</script>
|
||||
</binding>
|
||||
</action>
|
||||
<action>
|
||||
<button>1</button>
|
||||
<repeatable>true</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
RAFmk9sextant.sextant.adjust_altitude_fine(-0.01667);
|
||||
</script>
|
||||
</binding>
|
||||
</action>
|
||||
<action>
|
||||
<button>3</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
RAFmk9sextant.sextant.adjust_altitude_fine(-0.01667);
|
||||
</script>
|
||||
</binding>
|
||||
</action>
|
||||
<action>
|
||||
<button>4</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
RAFmk9sextant.sextant.adjust_altitude_fine(0.01667);
|
||||
</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>5_deg_knob</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
RAFmk9sextant.sextant.step_5deg_knob(0);
|
||||
</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>bubble_knob</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>true</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
RAFmk9sextant.sextant.step_bubble_knob(0.01);
|
||||
</script>
|
||||
</binding>
|
||||
</action>
|
||||
<action>
|
||||
<button>1</button>
|
||||
<repeatable>true</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
RAFmk9sextant.sextant.step_bubble_knob(-0.01);
|
||||
</script>
|
||||
</binding>
|
||||
</action>
|
||||
<action>
|
||||
<button>3</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
RAFmk9sextant.sextant.step_bubble_knob(-0.01);
|
||||
</script>
|
||||
</binding>
|
||||
</action>
|
||||
<action>
|
||||
<button>4</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
RAFmk9sextant.sextant.step_bubble_knob(0.01);
|
||||
</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
<!-- =========================================================================
|
||||
Instrument handling animations.
|
||||
===================================================================== -->
|
||||
|
||||
<!-- ===================================================================== -->
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<property>instrumentation/sextant/view-angle-deg</property>
|
||||
<factor>1.0</factor>
|
||||
<center>
|
||||
<x-m> -0.10 </x-m>
|
||||
<y-m> 0.00 </y-m>
|
||||
<z-m> 0.00 </z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x> 0.0 </x>
|
||||
<y> 0.3 </y>
|
||||
<z> 1.0 </z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<!-- ===================================================================== -->
|
||||
<!-- Offset from eye position -->
|
||||
<animation>
|
||||
<type>translate</type>
|
||||
<property>instrumentation/sextant/view-distance-m</property>
|
||||
<axis>
|
||||
<x>-1.0 </x>
|
||||
<y> 0.0 </y>
|
||||
<z> 0.0 </z>
|
||||
</axis>
|
||||
<factor>1.0</factor>
|
||||
</animation>
|
||||
|
||||
<!-- ===================================================================== -->
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<property>instrumentation/sextant/offsets/roll-deg</property>
|
||||
<factor>1.0</factor>
|
||||
<center>
|
||||
<x-m> 0.00 </x-m>
|
||||
<y-m> 0.00 </y-m>
|
||||
<z-m> 0.00 </z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x> 1.0 </x>
|
||||
<y> 0.0 </y>
|
||||
<z> 0.0 </z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<property>instrumentation/sextant/offsets/pitch-deg</property>
|
||||
<factor>1.0</factor>
|
||||
<center>
|
||||
<x-m> 0.00 </x-m>
|
||||
<y-m> 0.00 </y-m>
|
||||
<z-m> 0.00 </z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x> 0.0 </x>
|
||||
<y> 1.0 </y>
|
||||
<z> 0.0 </z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<property>instrumentation/sextant/offsets/heading-deg</property>
|
||||
<factor>1.0</factor>
|
||||
<center>
|
||||
<x-m> 0.00 </x-m>
|
||||
<y-m> 0.00 </y-m>
|
||||
<z-m> 0.00 </z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x> 0.0 </x>
|
||||
<y> 0.0 </y>
|
||||
<z> 1.0 </z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<!-- ===================================================================== -->
|
||||
<!-- Translations for user's view. -->
|
||||
<animation>
|
||||
<type>translate</type>
|
||||
<property>instrumentation/sextant/offsets/x-m</property>
|
||||
<axis>
|
||||
<x>1</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
<factor>1.0</factor>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>translate</type>
|
||||
<property>instrumentation/sextant/offsets/y-m</property>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
<factor>1.0</factor>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>translate</type>
|
||||
<property>instrumentation/sextant/offsets/z-m</property>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>1</z>
|
||||
</axis>
|
||||
<factor>1.0</factor>
|
||||
</animation>
|
||||
|
||||
<!-- ===================================================================== -->
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>eye_piece</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
RAFmk9sextant.toggle_look_through();
|
||||
</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>left_handle</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
RAFmk9sextant.pick_up();
|
||||
</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>right_handle</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
RAFmk9sextant.pick_up();
|
||||
</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
</PropertyList>
|
210
Aircraft/Instruments-3d/RAF_Mk9_bubble_sextant/README
Normal file
210
Aircraft/Instruments-3d/RAF_Mk9_bubble_sextant/README
Normal file
|
@ -0,0 +1,210 @@
|
|||
|
||||
Bubble sextant for Celestial Navigation in FlightGear
|
||||
-----------------------------------------------------
|
||||
|
||||
Copyright 2007 - 2010 Anders Gidenstam
|
||||
|
||||
* These programs are free software; you can redistribute them and/or modify
|
||||
* them under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Yes, the stars on the night sky in FlightGear can be used for navigation.
|
||||
This short text gives a hint to how it is done. The references explain it
|
||||
much better, though, so have a look there both for introduction and more
|
||||
advanced topics.
|
||||
|
||||
|
||||
Part 0 - Installing the tools: 3d bubble sextant model for FlightGear
|
||||
---------------------------------------------------------------------
|
||||
|
||||
- The bubble sextant 3d model RAF_Mk9_bubble_sextant.xml need to be
|
||||
loaded from the aircraft 3d model file and placed at the center of
|
||||
the view it is intended to be used from. For example for a view located
|
||||
2.5 meter behind and 2.0 meter above the aircraft origin:
|
||||
(Note that any offsets of the main 3d model needs to be accounted for
|
||||
in translating the view position to a 3d model position and that the
|
||||
axes order differs.)
|
||||
|
||||
<!-- Star observer's instruments -->
|
||||
<model>
|
||||
<name>Bubble_sextant</name>
|
||||
<path>Aircraft/Short_Empire/Instruments/BubbleSextant/RAF_Mk9_bubble_sextant.xml</path>
|
||||
<offsets>
|
||||
<x-m> 2.50 </x-m>
|
||||
<y-m> 0.50 </y-m>
|
||||
<z-m> 2.00 </z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
|
||||
- The Nasal module needs to be loaded from the main aircraft -set file.
|
||||
The name of the view in which the sextant will be used and
|
||||
the stowed (= inactive) location of the instrument needs to be set.
|
||||
The stored location is specified in a frame axis parallel with the
|
||||
aircraft frame but centered at the location given for the sextant
|
||||
3d model in the 3d model file.
|
||||
For example:
|
||||
<nasal>
|
||||
<RAFmk9sextant>
|
||||
<file>Aircraft/Short_Empire/Instruments/BubbleSextant/RAF_Mk9_bubble_sextant.nas</file>
|
||||
<script>
|
||||
var VIEW_NAME = "Star Observation View";
|
||||
var STOWED = { position : {x:-0.3, y: 0.0, z: -0.2},
|
||||
orientation : {heading : 320.0,
|
||||
pitch : -45.0,
|
||||
roll : 0.0}
|
||||
};
|
||||
</script>
|
||||
</RAFmk9sextant>
|
||||
</nasal>
|
||||
|
||||
- To allow fine control of the sextant using the mouse add the following
|
||||
XML snippet to the aircraft's -set file.
|
||||
It binds moves movements in mode 0/pointer mode to the sextant.
|
||||
alt + move mouse - precision movement of view direction.
|
||||
alt + shift + move mouse - up/down changes the altitude setting of the
|
||||
sextant.
|
||||
- left/right tilts the sextant to align with
|
||||
the horizon.
|
||||
|
||||
<input>
|
||||
<!-- Install the sextant controls in mouse mode 0. -->
|
||||
<mice n="0">
|
||||
<mouse n="0">
|
||||
<mode n="0">
|
||||
<x-axis>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
RAFmk9sextant.mouseX();
|
||||
</script>
|
||||
</binding>
|
||||
</x-axis>
|
||||
<y-axis>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
RAFmk9sextant.mouseY();
|
||||
</script>
|
||||
</binding>
|
||||
</y-axis>
|
||||
</mode>
|
||||
</mouse>
|
||||
</mice>
|
||||
</input>
|
||||
|
||||
|
||||
To correctly measure the altitude of a heavenly body the instrument
|
||||
must be level, i.e. the bubble must be centered.
|
||||
The instrument is configured for an aim-then-level method, i.e.
|
||||
one first center the view on the desired object then change the altitude
|
||||
and tilt settings until the instrument is level. (I.e. changing altitude
|
||||
behaves as if the user changes the setting and rotates the instrument so
|
||||
that it remains aimed in the same direction).
|
||||
|
||||
NOTE: Tilting of the instrument might still be somewhat buggy.
|
||||
|
||||
|
||||
Part 1 - Taking sextant sights in FlightGear
|
||||
-------------------------------------
|
||||
|
||||
What is needed?
|
||||
- The celestial altitude (~angle from the horizon) for some (at least 2)
|
||||
stars and the precise time of observation.
|
||||
|
||||
How?
|
||||
|
||||
- Pick up the sextant by clicking on either of its handles.
|
||||
|
||||
- Enter the sextant view by clicking on the sextant eye piece.
|
||||
|
||||
- Obtain a bubble by turning the bubble knob on the left side of
|
||||
the instrument. It is possible to reach the bubble knob while in
|
||||
sextant view.
|
||||
|
||||
- Aim the center of the view on the star. Alt + move mouse in pointer mode
|
||||
enables high precision view rotation.
|
||||
|
||||
- Level the instrument. This is done by changing the altitude setting,
|
||||
first in 10 degree steps by the coarse motion knob on the right side
|
||||
of the instrument (reachable also while in sextant view) and then
|
||||
with the slow motion knob (or alt+shift+move mouse up/down).
|
||||
Tilt the instrument (alt+shift+move mouse right/left) as needed to
|
||||
center the bubble.
|
||||
|
||||
- Time + celestial altitude constitutes a sighting. Make sure that
|
||||
the instrument is level and aimed at the star when you note the time
|
||||
and altitude.
|
||||
|
||||
|
||||
But where are those bl**dy stars?
|
||||
|
||||
- I use the star charts around page 256 in "The American Practical Navigator",
|
||||
http://www.nga.mil/MSISiteContent/StaticFiles/NAV_PUBS/APN/pub9.zip
|
||||
to find some. For me the ones in Ursa Major was easiest to find (though
|
||||
one should use a wider spread).
|
||||
|
||||
Suggestion (northern hemisphere):
|
||||
* Dubhe (Right upper corner star of the Ursa Major "wagon".)
|
||||
* Alkaid (Third and last (leftmost) star in the Ursa Major "wagon" handle.)
|
||||
* Arcturus (Brightest star found to the "left" of Alkaid just below the
|
||||
extended line between Alkaid and the star immediately to the
|
||||
right in the Ursa Major "wagon" handle.
|
||||
See star chart in [Bowditch] page 256.)
|
||||
|
||||
|
||||
Part 2 - Computing a position
|
||||
-----------------------------
|
||||
|
||||
The Intercept method
|
||||
|
||||
- Assume a position. It should be close to ones actual position - usually one
|
||||
has a dead reckoning position to start from. (The assumed position need
|
||||
not be equal to the DR one - one can choose a more convenient one e.g.
|
||||
when using tables.)
|
||||
|
||||
- Compute the expected locations of the observed stars for
|
||||
that position.
|
||||
Use a program/website, like http://www.tecepe.com.br/cgi-win/cgiasvis.exe ,
|
||||
or a Nautical Almenac + tables.
|
||||
- Compare the observed star locations with the computed ones.
|
||||
This gives a position line for each star. Plot the position
|
||||
lines to (hopefully) get a fix.
|
||||
Further info and plotting sheets: http://www.efalk.org/Navigation/
|
||||
|
||||
|
||||
References
|
||||
----------
|
||||
|
||||
http://www.celestialnavigation.net/
|
||||
Good place to start.
|
||||
|
||||
http://www.efalk.org/Navigation/
|
||||
Intercept method tutorial and downloadable plot sheets.
|
||||
|
||||
http://www.ludd.luth.se/users/kavli/peck_celestial/space.html
|
||||
Longer tutorial and description. Focuses on the use of tables for sight
|
||||
reductions.
|
||||
|
||||
http://www.tecepe.com.br/cgi-win/cgiasvis.exe
|
||||
Computes star locations. Use instead of tables.
|
||||
|
||||
[Bowditch]
|
||||
"The American Practical Navigator",
|
||||
http://www.nga.mil/MSISiteContent/StaticFiles/NAV_PUBS/APN/pub9.zip
|
||||
For those that really really want to learn it all :)
|
||||
|
||||
RAF Mk9 bubble sextant manuals and more information
|
||||
http://www.users.bigpond.com/bgrobler/sextant/RAF_Mk9_manual.pdf
|
||||
http://www.users.bigpond.com/bgrobler/sextant/sextant.html
|
||||
http://www.physics.uq.edu.au/physics_museum/bblsex.html
|
||||
|
BIN
Aircraft/Instruments-3d/RAF_Mk9_bubble_sextant/degree_drum.png
Normal file
BIN
Aircraft/Instruments-3d/RAF_Mk9_bubble_sextant/degree_drum.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.8 KiB |
BIN
Aircraft/Instruments-3d/RAF_Mk9_bubble_sextant/leatherette.png
Normal file
BIN
Aircraft/Instruments-3d/RAF_Mk9_bubble_sextant/leatherette.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 61 KiB |
BIN
Aircraft/Instruments-3d/RAF_Mk9_bubble_sextant/minute_drum.png
Normal file
BIN
Aircraft/Instruments-3d/RAF_Mk9_bubble_sextant/minute_drum.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
|
@ -108,7 +108,14 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net
|
|||
<int type="int">0</int>
|
||||
</generic>
|
||||
</multiplay>
|
||||
|
||||
|
||||
<flight-recorder>
|
||||
<replay-config type="int">0</replay-config>
|
||||
<config n="0" include="/Aircraft/Generic/flightrecorder/generic-piston-propeller-1.xml">
|
||||
<name type="string">C172p Flight Recorder</name>
|
||||
</config>
|
||||
</flight-recorder>
|
||||
|
||||
<menubar include="Dialogs/c172p-menu.xml"/>
|
||||
|
||||
</sim>
|
||||
|
|
292
Docs/README.flightrecorder
Normal file
292
Docs/README.flightrecorder
Normal file
|
@ -0,0 +1,292 @@
|
|||
FlightGear Flight Recorder Mini-HOWTO
|
||||
|
||||
Thorsten Brehm
|
||||
Started in August 2011
|
||||
Last revised: 2011-09-26
|
||||
|
||||
|
||||
FlightGear provides a customizable flight recorder capable of capturing
|
||||
any selection of properties described via XML configuration files.
|
||||
The recorder is currently used for the replay system.
|
||||
|
||||
|
||||
Feature Brief
|
||||
-------------
|
||||
* Generic recording system, adaptable to any aircraft/data, provided that
|
||||
data is accessible via the property tree. No hard-coded selections or
|
||||
assumptions on properties to be recorded.
|
||||
* Configuration read from XML files or the property tree itself.
|
||||
* Interpolation method configurable per recorded/replayed signal.
|
||||
* Adaptable recording resolution per signal.
|
||||
* Multiple configurations supported.
|
||||
|
||||
|
||||
Quick Start: Basic Configuration
|
||||
--------------------------------
|
||||
To configure and adapt the flight recorder, add a "/sim/flight-recorder"
|
||||
section to your aircraft -set.xml file.
|
||||
|
||||
Example:
|
||||
|
||||
<sim>
|
||||
|
||||
<!-- ... -->
|
||||
|
||||
<flight-recorder>
|
||||
<replay-config type="int">0</replay-config>
|
||||
<config n="0" include="/Aircraft/Generic/flightrecorder/generic-piston-propeller-1.xml">
|
||||
<name type="string">My Aircraft's Flight Recorder</name>
|
||||
<!-- Custom properties -->
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/gear/nosegear-steering-cmd-norm</property>
|
||||
<interpolation>linear</interpolation>
|
||||
</signal>
|
||||
<!-- More custom signals here -->
|
||||
</config>
|
||||
</flight-recorder>
|
||||
|
||||
<!-- ... -->
|
||||
|
||||
</sim>
|
||||
|
||||
Default type for each signal is "float". Default "interpolation" method
|
||||
is "linear" (for float/double). Default values may be omitted. See
|
||||
configuration details below.
|
||||
|
||||
|
||||
Generic Configuration Files
|
||||
---------------------------
|
||||
Select one of the default configuration files to specify the basic
|
||||
properties to be recorded. It's not recommended to specify all
|
||||
properties to be recorded individually.
|
||||
The following generic files are provided:
|
||||
|
||||
* /Aircraft/Generic/flightrecorder/generic-piston-propeller-4.xml
|
||||
Matches propeller aircraft with 4 piston engines, 4 tanks,
|
||||
3 retractable gear.
|
||||
It is the same configuration that was hard-coded for the replay system
|
||||
up to FlightGear 2.4.0. To provide backward compatibility this
|
||||
configuration is loaded by default, unless an aircraft provides a
|
||||
specific flight recorder configuration.
|
||||
|
||||
* /Aircraft/Generic/flightrecorder/generic-piston-propeller-1.xml
|
||||
Matches propeller aircraft with 1 piston engines, 2 tanks, 3 fixed
|
||||
gear.
|
||||
|
||||
* /Aircraft/Generic/flightrecorder/generic-turboprop-2.xml
|
||||
Matches turboprop aircraft with 2 turbines/propellers, 4 tanks,
|
||||
3 retractable gear.
|
||||
|
||||
* /Aircraft/Generic/flightrecorder/generic-jet.xml
|
||||
Matches jet aircraft with 2 jet engines, 4 tanks.
|
||||
|
||||
* /Aircraft/Generic/flightrecorder/generic-glider.xml
|
||||
Matches gliders (no engines, no tanks, single fixed gear).
|
||||
|
||||
* /Aircraft/Generic/flightrecorder/generic-helicopter.xml
|
||||
Matches helicopters with main and tail rotor (tested with YASim).
|
||||
|
||||
If none of the generic files matches your aircraft, simply use a
|
||||
configuration which covers more than you need. Alternatively, copy the
|
||||
contents of one of these generic files to your aircraft, and adapt as
|
||||
needed (see below).
|
||||
|
||||
FDM experts are welcome to add more generic configuration files to
|
||||
/Aircraft/Generic/flightrecorder - such as YASim-/JSBSim-specific
|
||||
configurations, and configurations for other types of aircraft
|
||||
(balloons, airships, ...).
|
||||
|
||||
|
||||
Generic Components
|
||||
-----------------
|
||||
The generic configuration files in turn include a set of generic
|
||||
components. If you copy the contents of a generic file to your aircraft,
|
||||
you can adapt the components to your needs. See examples.
|
||||
It is not recommended to copy the contents of the _component_ files to
|
||||
an aircraft though (causes too much hassle and dependencies).
|
||||
|
||||
Engine Selection:
|
||||
* /Aircraft/Generic/flightrecorder/components/engine-jet.xml
|
||||
Records properties of a single jet engine.
|
||||
For multiple jet engines, use "count". Example for 4 jets:
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/engine-jet.xml">
|
||||
<count>4</count>
|
||||
</signals>
|
||||
|
||||
* /Aircraft/Generic/flightrecorder/components/engine-piston.xml
|
||||
Records properties of a single piston engine and propeller.
|
||||
For multiple piston engines, use "count" (see "jet" example).
|
||||
|
||||
* /Aircraft/Generic/flightrecorder/components/rotor.xml
|
||||
Records properties of a single helicopter rotor (tested with YASim).
|
||||
To use this, provide the base property path to the rotor as "prefix".
|
||||
Example recording the rotor below "/rotors/main":
|
||||
<signals include="/Aircraft/Generic/flightrecorder/components/rotor.xml">
|
||||
<prefix type="string">/rotors/main</prefix>
|
||||
</signals>
|
||||
|
||||
Gear Selection:
|
||||
* /Aircraft/Generic/flightrecorder/components/gear-fixed.xml
|
||||
Records properties of a single non-retractable gear.
|
||||
For multiple fixed gear, use "count" (see "jet" example).
|
||||
|
||||
* /Aircraft/Generic/flightrecorder/components/gear-retractable.xml
|
||||
Records properties of a single retractable gear.
|
||||
For multiple retractable gear, use "count" (see "jet" example).
|
||||
|
||||
Tanks:
|
||||
* /Aircraft/Generic/flightrecorder/components/tanks.xml
|
||||
Records properties of a single fuel tank.
|
||||
For multiple fuel tanks, use "count" (see "jet" example).
|
||||
|
||||
Other:
|
||||
* /Aircraft/Generic/flightrecorder/components/surfaces.xml
|
||||
Records properties of flight control surfaces. Include this
|
||||
for aircraft (with wings). Not useful for helicopters,
|
||||
balloons, ...
|
||||
|
||||
* /Aircraft/Generic/flightrecorder/components/faults-engines.xml
|
||||
Records fault properties of a single engine. Only include this
|
||||
if your aircraft supports fault simulation.
|
||||
For multiple engines, use "count" (see "jet" example). If used,
|
||||
it should be compined with piston or jet engine.
|
||||
|
||||
* /Aircraft/Generic/flightrecorder/components/environment.xml
|
||||
Records properties of environment/weather (visibility,
|
||||
temperature - but _not_ cloud position...).
|
||||
|
||||
* /Aircraft/Generic/flightrecorder/components/position.xml
|
||||
Records properties of a the aircrafts main position (latitude,
|
||||
longitude, velocities, ...).
|
||||
This is the most important component. Always include this.
|
||||
|
||||
* /Aircraft/Generic/flightrecorder/components/controls.xml
|
||||
Records most important flight controls (rudder, aileron,
|
||||
elevator, ...). Always include this.
|
||||
|
||||
|
||||
Custom Properties
|
||||
-----------------
|
||||
When the generic or component files are not be sufficient to record or
|
||||
replay aircraft-specific effects, you can add custom properties (signals
|
||||
to be recorded) to the configuration.
|
||||
Each signal consits of a recording type/resolution (which does _not_
|
||||
need to match the actual type in the property tree!), the path to the
|
||||
property and interpolation type.
|
||||
|
||||
Example recording some additional custom properties:
|
||||
<sim>
|
||||
<flight-recorder>
|
||||
<config n="0" include="/Aircraft/Generic/flightrecorder/generic-piston-propeller-1.xml">
|
||||
<!-- Add custom properties here -->
|
||||
<signal>
|
||||
<type>float</type>
|
||||
<property type="string">/controls/gear/nosegear-steering-cmd-norm</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>double</type>
|
||||
<interpolation>rotational-deg</interpolation>
|
||||
<property type="string">/ai/model/carrier/alpha-angle-deg</property>
|
||||
</signal>
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<property type="string">/controls/panel/custom-switch</property>
|
||||
</signal>
|
||||
</config>
|
||||
</flight-recorder>
|
||||
</sim>
|
||||
|
||||
|
||||
Signal Configuration
|
||||
--------------------
|
||||
Template:
|
||||
<signal>
|
||||
<type>bool</type>
|
||||
<interpolation>angular-deg</interpolation>
|
||||
<property type="string">/controls/panel/custom-switch</property>
|
||||
</signal>
|
||||
|
||||
* type: The signal's type specifies the recording resolution - not the
|
||||
type of the original property. The following types are supported:
|
||||
|
||||
- double: 8 byte/sample
|
||||
- float: 4 byte/sample (default)
|
||||
- int: 4 byte/sample, integer
|
||||
- int16: 2 byte/sample, integer
|
||||
- int8: 1 byte/sample, integer
|
||||
- bool: 1 bit/sample (yes, 1 bit. 8 bools per byte).
|
||||
|
||||
String type is unsupported (too expensive).
|
||||
|
||||
* interpolation: Specifies how values are interpolated during replay, i.e.
|
||||
when replay is in slow-motion mode and more frames/second are required
|
||||
than recorded, or when replaying data from the medium/long term memory.
|
||||
Supported methods:
|
||||
- discrete: No interpolation. Default for integer/bool types.
|
||||
- linear: Standard linear interpolation. Default for float/double.
|
||||
- angular-rad (or angular): Angular values in radians (0-2pi).
|
||||
- angular-deg: Angular values in degrees (0-360).
|
||||
|
||||
* property: Path to the property to be recorded.
|
||||
|
||||
|
||||
Advanced Configuration
|
||||
----------------------
|
||||
- Multipe recorder configurations for a single aircraft are supported
|
||||
(multiple "<config n=..>" sections for n=0,1,...).
|
||||
Active configuration to be used for the replay system is selected via
|
||||
/sim/flight-recorder/replay-config (= 0,1,...).
|
||||
This can be useful for specific recorders for specific scenarios,
|
||||
which should not be used by default. For example, a specific recorder
|
||||
configuration could be provided which also records the position of
|
||||
an aircraft carrier, of other AI aircraft, ...
|
||||
This may also be useful for future use, i.e. to select another flight
|
||||
recorded configuration for a different purpose, such as for the
|
||||
multiplayer system.
|
||||
|
||||
- Flight recorder configuration can be adapted during run-time
|
||||
(configuration is visible in the property browser below
|
||||
/sim/flight-recorder). However it is necessary to reset (reinit) the
|
||||
replay subsystem first - which also erases earlier recordings. It is
|
||||
not possible to mix recordings of different configurations on to a
|
||||
single "tape".
|
||||
|
||||
- Each configuration should be given a name. Useful for a (future)
|
||||
selection GUI, when multiple configurations are available.
|
||||
|
||||
|
||||
Optimizing Performance
|
||||
----------------------
|
||||
- Recording properties consumes memory and also CPU time. A few
|
||||
additional properties don't matter much, but avoid execessive numbers.
|
||||
Reduce the resolution (type) of signals to the minimum necessary to
|
||||
save space.
|
||||
- Use "bool" types where possible, they are most efficient.
|
||||
- Avoid recording with "double" resolution (type "double"). Use "float"
|
||||
instead - even if the original property in the property tree is a
|
||||
"double" (almost all of them do). "float" precision is almost always
|
||||
sufficient for recording/replay purposes, with few exceptions (like
|
||||
latitude/longitude properties).
|
||||
- Use int16/int8 for "small" integer values.
|
||||
|
||||
|
||||
Recording/Replay Limits
|
||||
-----------------------
|
||||
- All properties can be recorded, however, only writable properties can
|
||||
be replayed. Properties marked as read-only, or tied properties not
|
||||
implementing the "set" method cannot be replayed.
|
||||
- Replaying a property overwrites the property's value. However, other
|
||||
sources may also write to the same property - such as Nasal code,
|
||||
autopilot rules etc. When multiple sources "fight" over a property's
|
||||
value then the last update "wins" - resulting in a dependency to an
|
||||
unknown/random sequence. Hence, during deplay, try to disable other
|
||||
sources writing to properties which were recorded and should be
|
||||
replayed.
|
||||
If the other source cannot be disabled, check if you're recording the
|
||||
right property. It may be better to record the input properties of the
|
||||
other source instead (i.e. the inputs processed by the Nasal or
|
||||
autopilot rule).
|
||||
|
||||
__end__
|
||||
|
|
@ -33,3 +33,75 @@ axis definition uses the same index as the master file. The n-th
|
|||
uses <number><unix> etc. Nasal blocks are properly executed in the
|
||||
namespace of the master file, so you can access all its functions
|
||||
and variables.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Joystick configuration from within FlightGear under Linux:
|
||||
--------------------------------------------------------------------------------
|
||||
This allows to set backlight brightness and LEDs from within FlightGear
|
||||
without requiring any config application, by directly writing to the devices
|
||||
via raw HID support.
|
||||
|
||||
|
||||
|
||||
(1) Make sure your kernel has hidraw support compiled in: check if there is at
|
||||
least one file listed with
|
||||
|
||||
$ ls /dev/hidraw*
|
||||
|
||||
or if your kernel .config contains:
|
||||
|
||||
CONFIG_HIDRAW=y
|
||||
|
||||
|
||||
|
||||
(2) To get a reliable, persistent file name for your Warthog devices, create
|
||||
a file /etc/udev/rules.d/00-local.rules and add these lines:
|
||||
|
||||
SUBSYSTEM=="input", ENV{ID_INPUT_JOYSTICK}!="?*", IMPORT{program}="input_id %p"
|
||||
SUBSYSTEM=="hidraw", ENV{ID_SERIAL}!="?*", IMPORT{program}="usb_id --export %p"
|
||||
SUBSYSTEM=="hidraw", SYMLINK+="input/hidraw/%E{ID_SERIAL}"
|
||||
SUBSYSTEM=="hidraw", ENV{ID_INPUT_JOYSTICK}!="0", GROUP:="js"
|
||||
|
||||
If you don't have a user group "js" (for joystick hardware access) either
|
||||
create one or, in the fourth line, use a group instead where all joystick
|
||||
users are member, e.g. GROUP:="users". Then plug your Warthog devices out
|
||||
and in again and check if this created two device links:
|
||||
|
||||
$ ls -l /dev/input/hidraw/*
|
||||
lrwxrwxrwx 1 root root 10 Oct 2 14:23 Thrustmaster_Throttle_-_HOTAS_Warthog -> ../hidraw1
|
||||
lrwxrwxrwx 1 root root 10 Oct 2 14:23 Thustmaster_Joystick_-_HOTAS_Warthog -> ../hidraw0
|
||||
|
||||
Also check if the linked-to hidraw devices have proper permissions (rw for "js"):
|
||||
|
||||
$ ls -l /dev/hidraw*
|
||||
crw-rw---- 1 root js 251, 0 Oct 2 09:11 /dev/hidraw0
|
||||
crw-rw---- 1 root js 251, 1 Oct 2 14:23 /dev/hidraw1
|
||||
^^ ^^
|
||||
|
||||
|
||||
(3) Allow FlightGear to write to the two devices. The best way to do this is
|
||||
to edit a local copy of the global IOrules. Just copy the global file
|
||||
to your FG_HOME directory:
|
||||
|
||||
$ mkdir -p ~/.fgfs/Nasal
|
||||
$ cp $FG_ROOT/Nasal/IOrules ~/.fgfs/Nasal
|
||||
|
||||
Now add these two lines there:
|
||||
|
||||
WRITE ALLOW /dev/input/hidraw/Thustmaster_Joystick_-_HOTAS_Warthog
|
||||
WRITE ALLOW /dev/input/hidraw/Thrustmaster_Throttle_-_HOTAS_Warthog
|
||||
|
||||
CAVE: Don't fix the bad spelling of "Thrustmaster", unless your stick
|
||||
really uses that!
|
||||
|
||||
|
||||
|
||||
|
||||
DISCLAIMER: Of course, you take all responsibility for any possible
|
||||
damages to your hardware if you make these changes. Neither the
|
||||
FlightGear project nor any of its developers and contributors are in
|
||||
any way liable.
|
||||
|
|
14
Input/Joysticks/ThrustMaster/Warthog/Throttle/seahawk.xml
Normal file
14
Input/Joysticks/ThrustMaster/Warthog/Throttle/seahawk.xml
Normal file
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- fix broken seahawk speedbrake -->
|
||||
|
||||
<PropertyList>
|
||||
<nasal>
|
||||
<script>
|
||||
jslistener("/controls/flight/speedbrake", func(n) {
|
||||
print(n.getValue());
|
||||
setprop("/controls/flight/speedbrake-lever", n.getValue());
|
||||
seahawk.adjustFlaps();
|
||||
});
|
||||
</script>
|
||||
</nasal>
|
||||
</PropertyList>
|
|
@ -11,12 +11,16 @@
|
|||
|
||||
<PropertyList>
|
||||
<name>Thustmaster Joystick - HOTAS Warthog</name>
|
||||
<name>Thrustmaster Joystick - HOTAS Warthog</name> <!-- in case they ever manage to fix their name -->
|
||||
|
||||
<nasal>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
var this = cmdarg().getParent();
|
||||
var init = !contains(caller(0)[0], "init");
|
||||
if (!contains(globals, "warthog"))
|
||||
io.load_nasal(getprop("/sim/fg-root") ~ "/Input/Joysticks/ThrustMaster/Warthog/warthog.nas");
|
||||
|
||||
var jslistener = func init and call(setlistener, arg);
|
||||
var popup = func gui.popupTip(call(sprintf, arg));
|
||||
var is_helicopter = (func {(var n = props.globals.getNode("rotors", 0)) != nil and n.getAttribute("children")})();
|
||||
var aircraft_type = getprop("/sim/type");
|
||||
|
@ -27,7 +31,7 @@
|
|||
var file = dir ~ "/Input/Joysticks/ThrustMaster/Warthog/Stick/" ~ name ~ ".xml";
|
||||
if (io.stat(file) != nil) {
|
||||
printlog("info", "WARTHOG: loading overlay " ~ file);
|
||||
cmdarg().getNode("script").setValue("");
|
||||
cmdarg().setValues({command: "nasal", script: ""});
|
||||
io.read_properties(file, this);
|
||||
props.runBinding(cmdarg());
|
||||
break;
|
||||
|
@ -43,14 +47,12 @@
|
|||
}
|
||||
|
||||
var mod = 0;
|
||||
if (init) {
|
||||
var n = props.globals.initNode("/devices/status/joysticks/warthog/modifier", mod, "INT");
|
||||
setlistener(n, func(n) mod = n.getValue());
|
||||
}
|
||||
var m = props.globals.initNode("/devices/status/joysticks/warthog/modifier", mod, "INT");
|
||||
jslistener(m, func(n) mod = n.getValue());
|
||||
|
||||
var trimstep = 0.75;
|
||||
var viewstep = 0.5;
|
||||
var button = { 18: { id: 0 }};
|
||||
var button = {18: {id: 0}};
|
||||
|
||||
var reset_zoom = func setprop("/sim/current-view/field-of-view", 55);
|
||||
var viewdir = props.globals.getNode("/sim").getChildren("view");
|
||||
|
@ -160,6 +162,16 @@
|
|||
|
||||
<button n="2">
|
||||
<name>Nosewheel Steering Button</name>
|
||||
<desc>toggle nosewheel steering/tailwheel lock</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
var i = !(getprop("/controls/gear/nose-wheel-steering") or 0);
|
||||
setprop("/controls/gear/nose-wheel-steering", i);
|
||||
setprop("/controls/gear/tailwheel-lock", !i);
|
||||
popup("Tail Wheel %sLOCKED!", i ? "UN" : "");
|
||||
</script>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<button n="3">
|
||||
|
@ -212,7 +224,6 @@
|
|||
if (mod) {
|
||||
var i = controls.applyParkingBrake(1);
|
||||
popup("Parking Brake %s", i ? "ON" : "OFF");
|
||||
controls.applyBrakes(0);
|
||||
}
|
||||
controls.applyBrakes(0)
|
||||
</script>
|
||||
|
@ -249,7 +260,6 @@
|
|||
if (mod) {
|
||||
var i = controls.applyParkingBrake(1);
|
||||
popup("Parking Brake %s", i ? "ON" : "OFF");
|
||||
controls.applyBrakes(0);
|
||||
}
|
||||
controls.applyBrakes(0)
|
||||
</script>
|
||||
|
@ -380,8 +390,8 @@
|
|||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
view.resetView();
|
||||
button[18].id += 1;
|
||||
view.resetView();
|
||||
</script>
|
||||
</binding>
|
||||
</mod-up>
|
||||
|
|
|
@ -9,10 +9,13 @@
|
|||
<name>Thrustmaster Throttle - HOTAS Warthog</name>
|
||||
|
||||
<nasal>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
var this = cmdarg().getParent();
|
||||
var init = !contains(caller(0)[0], "init");
|
||||
if (!contains(globals, "warthog"))
|
||||
io.load_nasal(getprop("/sim/fg-root") ~ "/Input/Joysticks/ThrustMaster/Warthog/warthog.nas");
|
||||
|
||||
var jslistener = func init and call(setlistener, arg);
|
||||
var popup = func gui.popupTip(call(sprintf, arg));
|
||||
var is_helicopter = (func {(var n = props.globals.getNode("rotors", 0)) != nil and n.getAttribute("children")})();
|
||||
var aircraft_type = getprop("/sim/type");
|
||||
|
@ -23,7 +26,7 @@
|
|||
var file = dir ~ "/Input/Joysticks/ThrustMaster/Warthog/Throttle/" ~ name ~ ".xml";
|
||||
if (io.stat(file) != nil) {
|
||||
printlog("info", "WARTHOG: loading overlay " ~ file);
|
||||
cmdarg().getNode("script").setValue("");
|
||||
cmdarg().setValues({command: "nasal", script: ""});
|
||||
io.read_properties(file, this);
|
||||
props.runBinding(cmdarg());
|
||||
break;
|
||||
|
@ -38,11 +41,21 @@
|
|||
}
|
||||
}
|
||||
|
||||
var gearcheck = func {
|
||||
var agl = getprop("/position/altitude-agl-ft");
|
||||
var geardown = getprop("/controls/gear/gear-down");
|
||||
if (agl < 500 and !geardown)
|
||||
warthog.throttle.toggle_leds(1, 2, 3, 4, 5);
|
||||
else
|
||||
warthog.throttle.set_leds(0, 1, 2, 3, 4, 5);
|
||||
settimer(gearcheck, 0.5);
|
||||
};
|
||||
if (init)
|
||||
gearcheck();
|
||||
|
||||
var mod = 0;
|
||||
if (init) {
|
||||
var n = props.globals.initNode("/devices/status/joysticks/warthog/modifier", mod, "INT");
|
||||
setlistener(n, func(n) mod = n.getValue());
|
||||
}
|
||||
var m = props.globals.initNode("/devices/status/joysticks/warthog/modifier", mod, "INT");
|
||||
jslistener(m, func(n) mod = n.getValue());
|
||||
|
||||
var left_engines = [0, 2, 4, 6, 8, 10];
|
||||
var right_engines = [1, 3, 5, 7, 9, 11];
|
||||
|
@ -191,7 +204,20 @@
|
|||
</button>
|
||||
|
||||
<button n="6">
|
||||
<name>Speedbrake Forward</name>
|
||||
<name>Speedbrake Forward (right throttle, top grey)</name>
|
||||
<desc>apply speed brake</desc>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>/controls/flight/speedbrake</property>
|
||||
<value>1</value>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>/controls/flight/speedbrake</property>
|
||||
<value>0</value>
|
||||
</binding>
|
||||
</mod-up>
|
||||
</button>
|
||||
|
||||
<button n="7">
|
||||
|
@ -204,14 +230,41 @@
|
|||
|
||||
<button n="9">
|
||||
<name>Boat Switch Aft</name>
|
||||
<desc>apply thrust reverser</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>props.setAll("/controls/engines/engine", "reverser", 1)</script>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>props.setAll("/controls/engines/engine", "reverser", 0)</script>
|
||||
</binding>
|
||||
</mod-up>
|
||||
</button>
|
||||
|
||||
<button n="10">
|
||||
<name>China Hat Forward</name>
|
||||
<desc>+mod: increase LED brightness (see README)</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
if (mod)
|
||||
warthog.throttle.brighter();
|
||||
</script>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<button n="11">
|
||||
<name>China Hat Aft</name>
|
||||
<desc>+mod: decrease LED brightness (see README)</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
if (mod)
|
||||
warthog.throttle.darker();
|
||||
</script>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<button n="12">
|
||||
|
|
61
Input/Joysticks/ThrustMaster/Warthog/warthog.nas
Normal file
61
Input/Joysticks/ThrustMaster/Warthog/warthog.nas
Normal file
|
@ -0,0 +1,61 @@
|
|||
# Hardware Interface (currently Linux/HIDRAW-only; see README)
|
||||
|
||||
var device = {
|
||||
new: func(path, bufsize) {
|
||||
var m = { parents: [device] };
|
||||
m.path = path;
|
||||
m.bufsize = bufsize;
|
||||
m.leds = 0;
|
||||
m.bright = 0;
|
||||
var stat = io.stat(m.path);
|
||||
if (stat == nil or stat[11] != "chr")
|
||||
m.send = func { nil };
|
||||
return m;
|
||||
},
|
||||
send: func {
|
||||
var buf = bits.buf(me.bufsize);
|
||||
buf[0] = 1;
|
||||
forindex (var i; arg)
|
||||
buf[i + 1] = arg[i];
|
||||
var file = io.open(me.path, "wb");
|
||||
io.write(file, buf);
|
||||
io.close(file);
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
var joystick = {
|
||||
parents: [device.new("/dev/input/hidraw/Thustmaster_Joystick_-_HOTAS_Warthog", 12)],
|
||||
};
|
||||
|
||||
|
||||
var throttle = {
|
||||
parents: [device.new("/dev/input/hidraw/Thrustmaster_Throttle_-_HOTAS_Warthog", 36)],
|
||||
set_leds: func(state, which...) { # on/off, list of leds (0: background, 1-5)
|
||||
foreach (var w; which)
|
||||
me.leds = bits.switch(me.leds, me._ledmap[w], state);
|
||||
me.send(6, me.leds, me.bright);
|
||||
},
|
||||
toggle_leds: func(which...) {
|
||||
foreach (var w; which)
|
||||
me.leds = bits.toggle(me.leds, me._ledmap[w]);
|
||||
me.send(6, me.leds, me.bright);
|
||||
},
|
||||
set_brightness: func(v) { # clamped to [0,5], where 0 is off and 5 is bright
|
||||
me.send(6, me.leds, me.bright = v < 0 ? 0 : v > 5 ? 5 : v);
|
||||
},
|
||||
brighter: func {
|
||||
me.leds = bits.set(me.leds, me._ledmap[0]);
|
||||
me.set_brightness(me.bright + 1);
|
||||
},
|
||||
darker: func {
|
||||
me.leds = bits.set(me.leds, me._ledmap[0]);
|
||||
me.set_brightness(me.bright - 1);
|
||||
},
|
||||
_ledmap: {0: 3, 1: 2, 2: 1, 3: 4, 4: 0, 5: 6},
|
||||
};
|
||||
|
||||
|
||||
throttle.set_brightness(1); # LEDs dark (but on)
|
||||
throttle.set_leds(1, 0); # backlight on
|
||||
setlistener("/sim/signals/exit", func throttle.set_leds(0, 1, 2, 3, 4, 5), 1); # other LEDs off (now and at exit)
|
|
@ -470,3 +470,33 @@ _setlistener("/sim/signals/fdm-initialized", func {
|
|||
}
|
||||
});
|
||||
|
||||
var replaySkip = func(skip_time)
|
||||
{
|
||||
var t = getprop("/sim/replay/time");
|
||||
if (t != "")
|
||||
{
|
||||
t+=skip_time;
|
||||
if (t>getprop("/sim/replay/end-time"))
|
||||
t = getprop("/sim/replay/end-time");
|
||||
if (t<0)
|
||||
t=0;
|
||||
setprop("/sim/replay/time", t);
|
||||
}
|
||||
}
|
||||
|
||||
var speedup = func(speed_up)
|
||||
{
|
||||
var t = getprop("/sim/speed-up");
|
||||
if (speed_up < 0)
|
||||
{
|
||||
t = (t > 1/32) ? t/2 : 1/32;
|
||||
if ((t<1)and(0==getprop("/sim/freeze/replay-state")))
|
||||
t=1;
|
||||
}
|
||||
else
|
||||
{
|
||||
t = (t < 32) ? t*2 : 32;
|
||||
}
|
||||
setprop("/sim/speed-up", t);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<trafficlist>
|
||||
<airline include="KLM/MD11/MD11.xml"/>
|
||||
</trafficlist>
|
|
@ -1,10 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<trafficlist>
|
||||
<traffic include="KLM/MD11/PH-KCA.xml"/>
|
||||
<traffic include="KLM/MD11/PH-KCB.xml"/>
|
||||
<traffic include="KLM/MD11/PH-KCC.xml"/>
|
||||
<traffic include="KLM/MD11/PH-KCD.xml"/>
|
||||
<traffic include="KLM/MD11/PH-KCE.xml"/>
|
||||
<traffic include="KLM/MD11/PH-KCF.xml"/>
|
||||
<traffic include="KLM/MD11/PH-KCG.xml"/>
|
||||
</trafficlist>
|
|
@ -1,231 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<trafficlist>
|
||||
<aircraft>
|
||||
<model>Aircraft/MD11/Models/KLMmd11-ai.xml</model>
|
||||
<livery>KLM</livery>
|
||||
<airline>KLM</airline>
|
||||
<actype>MD11</actype>
|
||||
<offset>19</offset>
|
||||
<radius>39</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-KCA</registration>
|
||||
<heavy>true</heavy>
|
||||
|
||||
|
||||
<!-- Day one: Amsterdam to San Fransisco, CA, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0605</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>0/09:45:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>0/20:55:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Return Flight: Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0606</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KSFO</port>
|
||||
<time>0/23:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>1/09:35:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Day two: Amsterdam to Accra, Ghana -->
|
||||
<flight>
|
||||
<callsign>KLM0589</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>1/12:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>DGAA</port>
|
||||
<time>1/19:00:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Day two Return Flight: Arrive the next Day -->
|
||||
<flight>
|
||||
<callsign>KLM0590</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>DGAA</port>
|
||||
<time>1/21:15:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>2/04:10:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Day three: Amsterdam to Vancouver, BC, Canada -->
|
||||
<flight>
|
||||
<callsign>KLM0681</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>2/08:25:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>CYVR</port>
|
||||
<time>2/18:20:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day three: return Flight: Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0682</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>CYVR</port>
|
||||
<time>2/20:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>3/05:40:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day four: Amsterdam to Delhi, India -->
|
||||
<flight>
|
||||
<callsign>KLM0871</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>3/09:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>VIDP</port>
|
||||
<time>3/17:20:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day four: Return Flight: Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0872</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>VIDP</port>
|
||||
<time>3/19:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>350</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>4/04:00:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day five: Amsterdam to Lagos, Nigeria -->
|
||||
<flight>
|
||||
<callsign>KLM0587</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>4/10:30:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>DNMM</port>
|
||||
<time>4/16:55:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day five: Return Flight, Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0588</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>DNMM</port>
|
||||
<time>4/21:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>5/06:10:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day Six: Amsterdam to Montreal, Quebec, Canada -->
|
||||
<flight>
|
||||
<callsign>KLM0671</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>5/12:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>CYUL</port>
|
||||
<time>5/19:50:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day Six: Return Flight. Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0672</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>CYUL</port>
|
||||
<time>5/22:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>6/04:45:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day Seven: Minneapolis/St. Paul, MN, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0667</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>6/12:05:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KMSP</port>
|
||||
<time>6/20:50:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day Seven: Return Flight, Arrive the next day. -->
|
||||
<flight>
|
||||
<callsign>KLM0668</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KMSP</port>
|
||||
<time>6/23:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>0/07:15:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
</trafficlist>
|
|
@ -1,231 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<trafficlist>
|
||||
<aircraft>
|
||||
<!-- The PH-KCB is a KLM MD-11, named Amy Johnson -->
|
||||
<model>Aircraft/MD11/Models/KLMmd11-ai.xml</model>
|
||||
<livery>KLM</livery>
|
||||
<airline>KLM</airline>
|
||||
<actype>MD11</actype>
|
||||
<offset>19</offset>
|
||||
<radius>39</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-KCB</registration>
|
||||
<heavy>true</heavy>
|
||||
|
||||
<!-- Day two: Amsterdam to San Fransisco, CA, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0605</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>1/09:45:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>1/20:55:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Return Flight: Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0606</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KSFO</port>
|
||||
<time>1/23:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>2/09:35:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Day three: Amsterdam to Accra, Ghana -->
|
||||
<flight>
|
||||
<callsign>KLM0589</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>2/12:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>DGAA</port>
|
||||
<time>2/19:00:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Day three Return Flight: Arrive the next Day -->
|
||||
<flight>
|
||||
<callsign>KLM0590</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>DGAA</port>
|
||||
<time>2/21:15:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>3/04:10:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Day four: Amsterdam to Vancouver, BC, Canada -->
|
||||
<flight>
|
||||
<callsign>KLM0681</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>3/08:25:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>CYVR</port>
|
||||
<time>3/18:20:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day four: return Flight: Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0682</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>CYVR</port>
|
||||
<time>3/20:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>4/05:40:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day five: Amsterdam to Delhi, India -->
|
||||
<flight>
|
||||
<callsign>KLM0871</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>4/09:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>VIDP</port>
|
||||
<time>4/17:20:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day five: Return Flight: Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0872</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>VIDP</port>
|
||||
<time>4/19:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>350</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>5/04:00:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day six: Amsterdam to Lagos, Nigeria -->
|
||||
<flight>
|
||||
<callsign>KLM0587</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>5/10:30:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>DNMM</port>
|
||||
<time>5/16:55:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day six: Return Flight, Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0588</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>DNMM</port>
|
||||
<time>5/21:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>6/06:10:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day Seven: Amsterdam to Montreal, Quebec, Canada -->
|
||||
<flight>
|
||||
<callsign>KLM0671</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>6/12:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>CYUL</port>
|
||||
<time>6/19:50:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day Seven: Return Flight. Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0672</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>CYUL</port>
|
||||
<time>6/22:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>0/04:45:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day One: Minneapolis/St. Paul, MN, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0667</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>0/12:05:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KMSP</port>
|
||||
<time>0/20:50:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day One: Return Flight, Arrive the next day. -->
|
||||
<flight>
|
||||
<callsign>KLM0668</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KMSP</port>
|
||||
<time>0/23:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>1/07:15:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
</trafficlist>
|
|
@ -1,230 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<trafficlist>
|
||||
<aircraft>
|
||||
<model>Aircraft/MD11/Models/KLMmd11-ai.xml</model>
|
||||
<livery>KLM</livery>
|
||||
<airline>KLM</airline>
|
||||
<actype>MD11</actype>
|
||||
<offset>19</offset>
|
||||
<radius>39</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-KCC</registration>
|
||||
<heavy>true</heavy>
|
||||
|
||||
<!-- Day three: Amsterdam to San Fransisco, CA, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0605</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>2/09:45:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>2/20:55:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Return Flight: Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0606</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KSFO</port>
|
||||
<time>2/23:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>3/09:35:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Day four: Amsterdam to Accra, Ghana -->
|
||||
<flight>
|
||||
<callsign>KLM0589</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>3/12:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>DGAA</port>
|
||||
<time>3/19:00:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Day four Return Flight: Arrive the next Day -->
|
||||
<flight>
|
||||
<callsign>KLM0590</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>DGAA</port>
|
||||
<time>3/21:15:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>4/04:10:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Day five: Amsterdam to Vancouver, BC, Canada -->
|
||||
<flight>
|
||||
<callsign>KLM0681</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>4/08:25:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>CYVR</port>
|
||||
<time>4/18:20:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day five: return Flight: Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0682</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>CYVR</port>
|
||||
<time>4/20:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>5/05:40:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day six: Amsterdam to Delhi, India -->
|
||||
<flight>
|
||||
<callsign>KLM0871</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>5/09:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>VIDP</port>
|
||||
<time>5/17:20:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day six: Return Flight: Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0872</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>VIDP</port>
|
||||
<time>5/19:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>350</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>6/04:00:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day seven: Amsterdam to Lagos, Nigeria -->
|
||||
<flight>
|
||||
<callsign>KLM0587</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>6/10:30:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>DNMM</port>
|
||||
<time>6/16:55:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day seven: Return Flight, Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0588</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>DNMM</port>
|
||||
<time>6/21:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>0/06:10:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day One: Amsterdam to Montreal, Quebec, Canada -->
|
||||
<flight>
|
||||
<callsign>KLM0671</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>0/12:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>CYUL</port>
|
||||
<time>0/19:50:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day One: Return Flight. Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0672</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>CYUL</port>
|
||||
<time>0/22:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>1/04:45:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day Two: Minneapolis/St. Paul, MN, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0667</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>1/12:05:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KMSP</port>
|
||||
<time>1/20:50:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day Two: Return Flight, Arrive the next day. -->
|
||||
<flight>
|
||||
<callsign>KLM0668</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KMSP</port>
|
||||
<time>1/23:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>2/07:15:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
</trafficlist>
|
|
@ -1,231 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<trafficlist>
|
||||
<aircraft>
|
||||
<!-- The PH-KCD is a KLM MD-11, named Florence Nightingale -->
|
||||
<model>Aircraft/MD11/Models/KLMmd11-ai.xml</model>
|
||||
<livery>KLM</livery>
|
||||
<airline>KLM</airline>
|
||||
<actype>MD11</actype>
|
||||
<offset>19</offset>
|
||||
<radius>39</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-KCD</registration>
|
||||
<heavy>true</heavy>
|
||||
|
||||
<!-- Day four: Amsterdam to San Fransisco, CA, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0605</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>3/09:45:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>3/20:55:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Return Flight: Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0606</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KSFO</port>
|
||||
<time>3/23:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>4/09:35:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Day five: Amsterdam to Accra, Ghana -->
|
||||
<flight>
|
||||
<callsign>KLM0589</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>4/12:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>DGAA</port>
|
||||
<time>4/19:00:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Day five Return Flight: Arrive the next Day -->
|
||||
<flight>
|
||||
<callsign>KLM0590</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>DGAA</port>
|
||||
<time>4/21:15:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>5/04:10:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Day six: Amsterdam to Vancouver, BC, Canada -->
|
||||
<flight>
|
||||
<callsign>KLM0681</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>5/08:25:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>CYVR</port>
|
||||
<time>5/18:20:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day six: return Flight: Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0682</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>CYVR</port>
|
||||
<time>5/20:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>6/05:40:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day seven: Amsterdam to Delhi, India -->
|
||||
<flight>
|
||||
<callsign>KLM0871</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>6/09:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>VIDP</port>
|
||||
<time>6/17:20:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day seven: Return Flight: Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0872</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>VIDP</port>
|
||||
<time>6/19:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>350</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>0/04:00:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day one: Amsterdam to Lagos, Nigeria -->
|
||||
<flight>
|
||||
<callsign>KLM0587</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>0/10:30:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>DNMM</port>
|
||||
<time>0/16:55:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day one: Return Flight, Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0588</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>DNMM</port>
|
||||
<time>0/21:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>1/06:10:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day two: Amsterdam to Montreal, Quebec, Canada -->
|
||||
<flight>
|
||||
<callsign>KLM0671</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>1/12:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>CYUL</port>
|
||||
<time>1/19:50:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day two: Return Flight. Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0672</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>CYUL</port>
|
||||
<time>1/22:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>2/04:45:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day Three: Minneapolis/St. Paul, MN, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0667</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>2/12:05:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KMSP</port>
|
||||
<time>2/20:50:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day Three: Return Flight, Arrive the next day. -->
|
||||
<flight>
|
||||
<callsign>KLM0668</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KMSP</port>
|
||||
<time>2/23:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>3/07:15:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
</trafficlist>
|
|
@ -1,231 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<trafficlist>
|
||||
<!-- The PH-KCE is a KLM MD-11, named Audry Hepburn -->
|
||||
<aircraft>
|
||||
<model>Aircraft/MD11/Models/KLMmd11-ai.xml</model>
|
||||
<livery>KLM</livery>
|
||||
<airline>KLM</airline>
|
||||
<actype>MD11</actype>
|
||||
<offset>19</offset>
|
||||
<radius>39</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-KCE</registration>
|
||||
<heavy>true</heavy>
|
||||
|
||||
<!-- Day five: Amsterdam to San Fransisco, CA, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0605</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>4/09:45:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>4/20:55:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Return Flight: Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0606</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KSFO</port>
|
||||
<time>4/23:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>5/09:35:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Day six: Amsterdam to Accra, Ghana -->
|
||||
<flight>
|
||||
<callsign>KLM0589</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>5/12:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>DGAA</port>
|
||||
<time>5/19:00:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Day six Return Flight: Arrive the next Day -->
|
||||
<flight>
|
||||
<callsign>KLM0590</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>DGAA</port>
|
||||
<time>5/21:15:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>6/04:10:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Day seven: Amsterdam to Vancouver, BC, Canada -->
|
||||
<flight>
|
||||
<callsign>KLM0681</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>6/08:25:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>CYVR</port>
|
||||
<time>6/18:20:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day seven: return Flight: Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0682</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>CYVR</port>
|
||||
<time>6/20:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>0/05:40:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day one: Amsterdam to Delhi, India -->
|
||||
<flight>
|
||||
<callsign>KLM0871</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>0/09:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>VIDP</port>
|
||||
<time>0/17:20:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day one: Return Flight: Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0872</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>VIDP</port>
|
||||
<time>0/19:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>350</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>1/04:00:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day two: Amsterdam to Lagos, Nigeria -->
|
||||
<flight>
|
||||
<callsign>KLM0587</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>1/10:30:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>DNMM</port>
|
||||
<time>1/16:55:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day two: Return Flight, Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0588</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>DNMM</port>
|
||||
<time>1/21:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>2/06:10:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day three: Amsterdam to Montreal, Quebec, Canada -->
|
||||
<flight>
|
||||
<callsign>KLM0671</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>2/12:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>CYUL</port>
|
||||
<time>2/19:50:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day three: Return Flight. Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0672</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>CYUL</port>
|
||||
<time>2/22:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>3/04:45:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day Four: Minneapolis/St. Paul, MN, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0667</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>3/12:05:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KMSP</port>
|
||||
<time>3/20:50:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day Four: Return Flight, Arrive the next day. -->
|
||||
<flight>
|
||||
<callsign>KLM0668</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KMSP</port>
|
||||
<time>3/23:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>4/07:15:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
</trafficlist>
|
|
@ -1,231 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<trafficlist>
|
||||
<!-- The PH-KCF is a KLM MD-11, named Annie Romijn -->
|
||||
<aircraft>
|
||||
<model>Aircraft/MD11/Models/KLMmd11-ai.xml</model>
|
||||
<livery>KLM</livery>
|
||||
<airline>KLM</airline>
|
||||
<actype>MD11</actype>
|
||||
<offset>19</offset>
|
||||
<radius>39</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-KCF</registration>
|
||||
<heavy>true</heavy>
|
||||
|
||||
<!-- Day six Amsterdam to San Fransisco, CA, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0605</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>5/09:45:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>5/20:55:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Return Flight: Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0606</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KSFO</port>
|
||||
<time>5/23:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>6/09:35:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Day seven amsterdam to Accra, Ghana -->
|
||||
<flight>
|
||||
<callsign>KLM0589</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>6/12:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>DGAA</port>
|
||||
<time>6/19:00:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Day seven: return Flight: Arrive the next Day -->
|
||||
<flight>
|
||||
<callsign>KLM0590</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>DGAA</port>
|
||||
<time>6/21:15:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>0/04:10:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Day one: Amsterdam to Vancouver, BC, Canada -->
|
||||
<flight>
|
||||
<callsign>KLM0681</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>0/08:25:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>CYVR</port>
|
||||
<time>0/18:20:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day one: return Flight: Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0682</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>CYVR</port>
|
||||
<time>0/20:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>1/05:40:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day two: Amsterdam to Delhi, India -->
|
||||
<flight>
|
||||
<callsign>KLM0871</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>1/09:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>VIDP</port>
|
||||
<time>1/17:20:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day two: Return Flight: Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0872</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>VIDP</port>
|
||||
<time>1/19:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>350</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>2/04:00:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day three: Amsterdam to Lagos, Nigeria -->
|
||||
<flight>
|
||||
<callsign>KLM0587</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>2/10:30:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>DNMM</port>
|
||||
<time>2/16:55:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day three: Return Flight, Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0588</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>DNMM</port>
|
||||
<time>2/21:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>3/06:10:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day four: Amsterdam to Montreal, Quebec, Canada -->
|
||||
<flight>
|
||||
<callsign>KLM0671</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>3/12:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>CYUL</port>
|
||||
<time>3/19:50:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day four: Return Flight. Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0672</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>CYUL</port>
|
||||
<time>3/22:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>4/04:45:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day Five: Minneapolis/St. Paul, MN, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0667</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>4/12:05:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KMSP</port>
|
||||
<time>4/20:50:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day Five: Return Flight, Arrive the next day. -->
|
||||
<flight>
|
||||
<callsign>KLM0668</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KMSP</port>
|
||||
<time>4/23:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>5/07:15:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
</trafficlist>
|
|
@ -1,231 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<trafficlist>
|
||||
<!-- The PH-KCG is a KLM MD-11, named Maria Callas -->
|
||||
<aircraft>
|
||||
<model>Aircraft/MD11/Models/KLMmd11-ai.xml</model>
|
||||
<livery>KLM</livery>
|
||||
<airline>KLM</airline>
|
||||
<actype>MD11</actype>
|
||||
<offset>19</offset>
|
||||
<radius>39</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-KCG</registration>
|
||||
<heavy>true</heavy>
|
||||
|
||||
<!-- Day seven Amsterdam to San Fransisco, CA, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0605</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>6/09:45:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>6/20:55:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Return Flight: Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0606</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KSFO</port>
|
||||
<time>6/23:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>0/09:35:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Day one amsterdam to Accra, Ghana -->
|
||||
<flight>
|
||||
<callsign>KLM0589</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>0/12:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>DGAA</port>
|
||||
<time>0/19:00:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Day one: return Flight: Arrive the next Day -->
|
||||
<flight>
|
||||
<callsign>KLM0590</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>DGAA</port>
|
||||
<time>0/21:15:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>1/04:10:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
|
||||
<!-- Day two: Amsterdam to Vancouver, BC, Canada -->
|
||||
<flight>
|
||||
<callsign>KLM0681</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>1/08:25:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>CYVR</port>
|
||||
<time>1/18:20:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day two: return Flight: Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0682</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>CYVR</port>
|
||||
<time>1/20:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>2/05:40:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day three: Amsterdam to Delhi, India -->
|
||||
<flight>
|
||||
<callsign>KLM0871</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>2/09:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>VIDP</port>
|
||||
<time>2/17:20:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day three: Return Flight: Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0872</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>VIDP</port>
|
||||
<time>2/19:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>350</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>3/04:00:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day four: Amsterdam to Lagos, Nigeria -->
|
||||
<flight>
|
||||
<callsign>KLM0587</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>3/10:30:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>DNMM</port>
|
||||
<time>3/16:55:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day four: Return Flight, Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0588</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>DNMM</port>
|
||||
<time>3/21:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>4/06:10:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day five: Amsterdam to Montreal, Quebec, Canada -->
|
||||
<flight>
|
||||
<callsign>KLM0671</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>4/12:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>CYUL</port>
|
||||
<time>4/19:50:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day five: Return Flight. Arrive the next day -->
|
||||
<flight>
|
||||
<callsign>KLM0672</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>CYUL</port>
|
||||
<time>4/22:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>5/04:45:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day six: Minneapolis/St. Paul, MN, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0667</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>5/12:05:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KMSP</port>
|
||||
<time>5/20:50:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
<!-- Day six: Return Flight, Arrive the next day. -->
|
||||
<flight>
|
||||
<callsign>KLM0668</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KMSP</port>
|
||||
<time>5/23:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>340</cruise-alt>
|
||||
<arrival>
|
||||
<port>EHAM</port>
|
||||
<time>6/07:15:00</time>
|
||||
</arrival>
|
||||
<repeat>WEEK</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
</trafficlist>
|
|
@ -1,7 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<trafficlist>
|
||||
<traffic include="UAL/737/N376UA.xml"/>
|
||||
<Traffic include="UAL/737/N377UA.xml"/>
|
||||
<TRaffic include="UAL/737/N388UA.xml"/>
|
||||
<traffic include="UAL/737/N390UA.xml"/>
|
||||
</trafficlist>
|
|
@ -1,90 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<trafficlist>
|
||||
<aircraft>
|
||||
<model>Aircraft/737-300/Models/737-300.xml</model>
|
||||
<livery>UAL</livery>
|
||||
<airline>UAL</airline>
|
||||
<actype>737-300</actype>
|
||||
<offset>10</offset>
|
||||
<radius>23</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>N376UA</registration>
|
||||
<heavy>false</heavy>
|
||||
|
||||
<flight>
|
||||
<callsign>United0309</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KSFO</port>
|
||||
<time>16:19:00</time>
|
||||
</departure>
|
||||
<cruise-alt>300</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSAN</port>
|
||||
<time>17:47:00</time>
|
||||
</arrival>
|
||||
<repeat>24Hr</repeat>
|
||||
</flight>
|
||||
|
||||
<flight>
|
||||
<callsign>United0580</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KSAN</port>
|
||||
<time>18:32:00</time>
|
||||
</departure>
|
||||
<cruise-alt>310</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>19:55:00</time>
|
||||
</arrival>
|
||||
<repeat>24Hr</repeat>
|
||||
</flight>
|
||||
|
||||
<flight>
|
||||
<callsign>United07940</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KSFO</port>
|
||||
<time>20:55:00</time>
|
||||
</departure>
|
||||
<cruise-alt>310</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSEA</port>
|
||||
<time>22:48:00</time>
|
||||
</arrival>
|
||||
<repeat>24Hr</repeat>
|
||||
</flight>
|
||||
|
||||
<flight>
|
||||
<callsign>United1175</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KSEA</port>
|
||||
<time>00:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>310</cruise-alt>
|
||||
<arrival>
|
||||
<port>KLAX</port>
|
||||
<time>02:56:00</time>
|
||||
</arrival>
|
||||
<repeat>24Hr</repeat>
|
||||
</flight>
|
||||
|
||||
<flight>
|
||||
<callsign>United0996</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KLAX</port>
|
||||
<time>04:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>310</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>05:19:00</time>
|
||||
</arrival>
|
||||
<repeat>24Hr</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
</trafficlist>
|
|
@ -1,77 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<trafficlist>
|
||||
<aircraft>
|
||||
<model>Aircraft/737-300/Models/737-300.xml</model>
|
||||
<livery>UAL</livery>
|
||||
<airline>UAL</airline>
|
||||
<actype>737-300</actype>
|
||||
<offset>10</offset>
|
||||
<radius>23</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>N390UA</registration>
|
||||
<heavy>false</heavy>
|
||||
|
||||
<flight>
|
||||
<callsign>United0788</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KSFO</port>
|
||||
<time>16:37:00</time>
|
||||
</departure>
|
||||
<cruise-alt>300</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSEA</port>
|
||||
<time>18:35:00</time>
|
||||
</arrival>
|
||||
<repeat>24Hr</repeat>
|
||||
</flight>
|
||||
|
||||
<flight>
|
||||
<callsign>United1053</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KSEA</port>
|
||||
<time>19:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>310</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>21:20:00</time>
|
||||
</arrival>
|
||||
<repeat>24Hr</repeat>
|
||||
</flight>
|
||||
|
||||
<flight>
|
||||
<callsign>United1053</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KSFO</port>
|
||||
<time>22:10:00</time>
|
||||
</departure>
|
||||
<cruise-alt>310</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSAN</port>
|
||||
<time>23:40:00</time>
|
||||
</arrival>
|
||||
<repeat>24Hr</repeat>
|
||||
</flight>
|
||||
|
||||
<flight>
|
||||
<callsign>United0992</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KSAN</port>
|
||||
<time>00:25:00</time>
|
||||
</departure>
|
||||
<cruise-alt>310</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>01:25:00</time>
|
||||
</arrival>
|
||||
<repeat>24Hr</repeat>
|
||||
</flight>
|
||||
|
||||
|
||||
</aircraft>
|
||||
</trafficlist>
|
|
@ -1,60 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<trafficlist>
|
||||
<aircraft>
|
||||
<model>Aircraft/737-300/Models/737-300.xml</model>
|
||||
<livery>UAL</livery>
|
||||
<airline>UAL</airline>
|
||||
<actype>737-300</actype>
|
||||
<offset>10</offset>
|
||||
<radius>23</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>N376UA</registration>
|
||||
<heavy>false</heavy>
|
||||
|
||||
<flight>
|
||||
<callsign>United1232</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KBUR</port>
|
||||
<time>15:45:00</time>
|
||||
</departure>
|
||||
<cruise-alt>300</cruise-alt>
|
||||
<arrival>
|
||||
<port>KDEN</port>
|
||||
<time>17:55:00</time>
|
||||
</arrival>
|
||||
<repeat>24Hr</repeat>
|
||||
</flight>
|
||||
|
||||
<flight>
|
||||
<callsign>United0549</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KDEN</port>
|
||||
<time>20:45:00</time>
|
||||
</departure>
|
||||
<cruise-alt>310</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>23:13:00</time>
|
||||
</arrival>
|
||||
<repeat>24Hr</repeat>
|
||||
</flight>
|
||||
|
||||
<flight>
|
||||
<callsign>United07940</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KSFO</port>
|
||||
<time>02:30:00</time>
|
||||
</departure>
|
||||
<cruise-alt>310</cruise-alt>
|
||||
<arrival>
|
||||
<port>KBUR</port>
|
||||
<time>03:35:00</time>
|
||||
</arrival>
|
||||
<repeat>24Hr</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
</trafficlist>
|
|
@ -1,89 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<trafficlist>
|
||||
<aircraft>
|
||||
<model>Aircraft/737-300/Models/737-300.xml</model>
|
||||
<livery>UAL</livery>
|
||||
<airline>UAL</airline>
|
||||
<actype>737-300</actype>
|
||||
<offset>10</offset>
|
||||
<radius>23</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<heavy>false</heavy>
|
||||
|
||||
<flight>
|
||||
<callsign>United0346</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KSFO</port>
|
||||
<time>15:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>300</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSEA</port>
|
||||
<time>16:52:00</time>
|
||||
</arrival>
|
||||
<repeat>24Hr</repeat>
|
||||
</flight>
|
||||
|
||||
<flight>
|
||||
<callsign>United1243</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KSEA</port>
|
||||
<time>17:45:00</time>
|
||||
</departure>
|
||||
<cruise-alt>310</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>19:52:00</time>
|
||||
</arrival>
|
||||
<repeat>24Hr</repeat>
|
||||
</flight>
|
||||
|
||||
<flight>
|
||||
<callsign>United0580</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KSFO</port>
|
||||
<time>20:45:00</time>
|
||||
</departure>
|
||||
<cruise-alt>310</cruise-alt>
|
||||
<arrival>
|
||||
<port>KPDX</port>
|
||||
<time>22:24:00</time>
|
||||
</arrival>
|
||||
<repeat>24Hr</repeat>
|
||||
</flight>
|
||||
|
||||
<flight>
|
||||
<callsign>United0459</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KPDX</port>
|
||||
<time>23:10:00</time>
|
||||
</departure>
|
||||
<cruise-alt>310</cruise-alt>
|
||||
<arrival>
|
||||
<port>KLAX</port>
|
||||
<time>01:27:00</time>
|
||||
</arrival>
|
||||
<repeat>24Hr</repeat>
|
||||
</flight>
|
||||
|
||||
<flight>
|
||||
<callsign>United1214</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KLAX</port>
|
||||
<time>03:30:00</time>
|
||||
</departure>
|
||||
<cruise-alt>310</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>04:49:00</time>
|
||||
</arrival>
|
||||
<repeat>24Hr</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
</trafficlist>
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<trafficlist>
|
||||
<airline include="UAL/737/737.xml"/>
|
||||
</trafficlist>
|
|
@ -1,7 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<trafficlist>
|
||||
<!-- <traffic include="KLM/KLM.xml"/> -->
|
||||
<traffic include="UAL/UAL.xml"/>
|
||||
<!-- <traffic include="general/KSFO/c172.xml"/> -->
|
||||
<!-- <traffic include="traffic.xml"/> -->
|
||||
</trafficlist>
|
|
@ -1,39 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<trafficlist>
|
||||
<aircraft>
|
||||
<model>Aircraft/c172/Models/c172-dpm.xml</model>
|
||||
<livery>UAL</livery>
|
||||
<registration>C-DPM</registration>
|
||||
<heavy>false</heavy>
|
||||
|
||||
<flight>
|
||||
<callsign>C-DPM</callsign>
|
||||
<fltrules>VFR</fltrules>
|
||||
<departure>
|
||||
<port>KSFO</port>
|
||||
<time>15:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>300</cruise-alt>
|
||||
<arrival>
|
||||
<port>KOAK</port>
|
||||
<time>15:30:00</time>
|
||||
</arrival>
|
||||
<repeat>2Hr</repeat>
|
||||
</flight>
|
||||
|
||||
<flight>
|
||||
<callsign>C-DPM</callsign>
|
||||
<fltrules>VFR</fltrules>
|
||||
<departure>
|
||||
<port>KOAK</port>
|
||||
<time>16:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>310</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>16:30:00</time>
|
||||
</arrival>
|
||||
<repeat>2Hr</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
</trafficlist>
|
|
@ -1,39 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<trafficlist>
|
||||
<aircraft>
|
||||
<model>Aircraft/c172/Models/c172-dpm.xml</model>
|
||||
<livery>UAL</livery>
|
||||
<registration>C-DPM</registration>
|
||||
<heavy>false</heavy>
|
||||
|
||||
<flight>
|
||||
<callsign>C-DPM</callsign>
|
||||
<fltrules>VFR</fltrules>
|
||||
<departure>
|
||||
<port>KSFO</port>
|
||||
<time>15:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>300</cruise-alt>
|
||||
<arrival>
|
||||
<port>KOAK</port>
|
||||
<time>15:30:00</time>
|
||||
</arrival>
|
||||
<repeat>2Hr</repeat>
|
||||
</flight>
|
||||
|
||||
<flight>
|
||||
<callsign>C-DPM</callsign>
|
||||
<fltrules>VFR</fltrules>
|
||||
<departure>
|
||||
<port>KOAK</port>
|
||||
<time>16:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>310</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>16:30:00</time>
|
||||
</arrival>
|
||||
<repeat>2Hr</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
</trafficlist>
|
280
Traffic/test.xml
280
Traffic/test.xml
|
@ -1,280 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<trafficlist>
|
||||
<aircraft>
|
||||
<type>MD11</type>
|
||||
<livery>KLM</livery>
|
||||
<registration>PH-KCA</registration>
|
||||
<heavy>true</heavy>
|
||||
|
||||
<!-- Day one: Amsterdam to San Fransisco, CA, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0605</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>00:00:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>01:00:00</time>
|
||||
</arrival>
|
||||
<repeat>1Hr</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
|
||||
|
||||
<aircraft>
|
||||
<type>MD11</type>
|
||||
<livery>KLM</livery>
|
||||
<registration>PH-KCA</registration>
|
||||
<heavy>true</heavy>
|
||||
|
||||
<!-- Day one: Amsterdam to San Fransisco, CA, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0605</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>00:05:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>01:05:00</time>
|
||||
</arrival>
|
||||
<repeat>1Hr</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
|
||||
<aircraft>
|
||||
<type>MD11</type>
|
||||
<livery>KLM</livery>
|
||||
<registration>PH-KCA</registration>
|
||||
<heavy>true</heavy>
|
||||
|
||||
<!-- Day one: Amsterdam to San Fransisco, CA, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0605</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>00:10:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>01:10:00</time>
|
||||
</arrival>
|
||||
<repeat>1Hr</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
|
||||
<aircraft>
|
||||
<type>MD11</type>
|
||||
<livery>KLM</livery>
|
||||
<registration>PH-KCA</registration>
|
||||
<heavy>true</heavy>
|
||||
|
||||
<!-- Day one: Amsterdam to San Fransisco, CA, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0605</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>00:15:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>01:15:00</time>
|
||||
</arrival>
|
||||
<repeat>1Hr</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
|
||||
<aircraft>
|
||||
<type>MD11</type>
|
||||
<livery>KLM</livery>
|
||||
<registration>PH-KCA</registration>
|
||||
<heavy>true</heavy>
|
||||
|
||||
<!-- Day one: Amsterdam to San Fransisco, CA, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0605</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>00:20:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>01:20:00</time>
|
||||
</arrival>
|
||||
<repeat>1Hr</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
|
||||
<aircraft>
|
||||
<type>MD11</type>
|
||||
<livery>KLM</livery>
|
||||
<registration>PH-KCA</registration>
|
||||
<heavy>true</heavy>
|
||||
|
||||
<!-- Day one: Amsterdam to San Fransisco, CA, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0605</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>00:25:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>01:25:00</time>
|
||||
</arrival>
|
||||
<repeat>1Hr</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
|
||||
<aircraft>
|
||||
<type>MD11</type>
|
||||
<livery>KLM</livery>
|
||||
<registration>PH-KCA</registration>
|
||||
<heavy>true</heavy>
|
||||
|
||||
<!-- Day one: Amsterdam to San Fransisco, CA, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0605</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>00:30:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>01:30:00</time>
|
||||
</arrival>
|
||||
<repeat>1Hr</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
|
||||
<aircraft>
|
||||
<type>MD11</type>
|
||||
<livery>KLM</livery>
|
||||
<registration>PH-KCA</registration>
|
||||
<heavy>true</heavy>
|
||||
|
||||
<!-- Day one: Amsterdam to San Fransisco, CA, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0605</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>00:35:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>01:35:00</time>
|
||||
</arrival>
|
||||
<repeat>1Hr</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
|
||||
<aircraft>
|
||||
<type>MD11</type>
|
||||
<livery>KLM</livery>
|
||||
<registration>PH-KCA</registration>
|
||||
<heavy>true</heavy>
|
||||
|
||||
<!-- Day one: Amsterdam to San Fransisco, CA, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0605</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>00:40:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>01:40:00</time>
|
||||
</arrival>
|
||||
<repeat>1Hr</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
|
||||
<aircraft>
|
||||
<type>MD11</type>
|
||||
<livery>KLM</livery>
|
||||
<registration>PH-KCA</registration>
|
||||
<heavy>true</heavy>
|
||||
|
||||
<!-- Day one: Amsterdam to San Fransisco, CA, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0605</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>00:45:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>01:45:00</time>
|
||||
</arrival>
|
||||
<repeat>1Hr</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
|
||||
<aircraft>
|
||||
<type>MD11</type>
|
||||
<livery>KLM</livery>
|
||||
<registration>PH-KCA</registration>
|
||||
<heavy>true</heavy>
|
||||
|
||||
<!-- Day one: Amsterdam to San Fransisco, CA, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0605</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>00:50:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>01:50:00</time>
|
||||
</arrival>
|
||||
<repeat>1Hr</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
|
||||
<aircraft>
|
||||
<type>MD11</type>
|
||||
<livery>KLM</livery>
|
||||
<registration>PH-KCA</registration>
|
||||
<heavy>true</heavy>
|
||||
|
||||
<!-- Day one: Amsterdam to San Fransisco, CA, USA -->
|
||||
<flight>
|
||||
<callsign>KLM0605</callsign>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>EHAM</port>
|
||||
<time>00:55:00</time>
|
||||
</departure>
|
||||
<cruise-alt>330</cruise-alt>
|
||||
<arrival>
|
||||
<port>KSFO</port>
|
||||
<time>01:55:00</time>
|
||||
</arrival>
|
||||
<repeat>1Hr</repeat>
|
||||
</flight>
|
||||
</aircraft>
|
||||
|
||||
</trafficlist>
|
|
@ -1,205 +1,487 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<PropertyList>
|
||||
<name>replay</name>
|
||||
<modal>false</modal>
|
||||
<layout>vbox</layout>
|
||||
<name>replay</name>
|
||||
<layout>vbox</layout>
|
||||
<modal>false</modal>
|
||||
<default-padding>1</default-padding>
|
||||
<y>5</y>
|
||||
<color>
|
||||
<red>0.2</red>
|
||||
<green>0.2</green>
|
||||
<blue>0.2</blue>
|
||||
<alpha>0.7</alpha>
|
||||
</color>
|
||||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
<empty><stretch>1</stretch></empty>
|
||||
<nasal>
|
||||
<open><![CDATA[
|
||||
var ReplayDialogController = {
|
||||
|
||||
<text>
|
||||
<label>Instant Replay</label>
|
||||
</text>
|
||||
new : func( dlgRoot ) {
|
||||
var obj = { parents: [ReplayDialogController] };
|
||||
obj.dlgRoot = dlgRoot;
|
||||
return obj;
|
||||
},
|
||||
|
||||
<empty><stretch>1</stretch></empty>
|
||||
open : func {
|
||||
var replaySlider = me.findElementByName( me.dlgRoot, "replay-time-slider" );
|
||||
me.maxProp = replaySlider.getChild("max");
|
||||
me.minProp = replaySlider.getChild("min");
|
||||
me.maxListenerId = setlistener( "/sim/speed-up", func(n) { me.updateListener(n); }, 1, 1 );
|
||||
if (getprop("/sim/replay/end-time")!=nil)
|
||||
{
|
||||
# update max/min range of replay-time slider
|
||||
me.maxProp.setValue(getprop("/sim/replay/end-time"));
|
||||
me.minProp.setValue(getprop("/sim/replay/start-time"));
|
||||
}
|
||||
me.updateListener(1);
|
||||
},
|
||||
|
||||
<button>
|
||||
<pref-width>16</pref-width>
|
||||
<pref-height>16</pref-height>
|
||||
<legend></legend>
|
||||
<keynum>27</keynum>
|
||||
<border>2</border>
|
||||
<binding>
|
||||
<command>dialog-close</command>
|
||||
</binding>
|
||||
</button>
|
||||
</group>
|
||||
updateListener : func( n ) {
|
||||
var SpeedUp = getprop("/sim/speed-up");
|
||||
if (SpeedUp<0.9)
|
||||
{
|
||||
SpeedUp=1/SpeedUp;
|
||||
SpeedUp = "1/" ~ SpeedUp;
|
||||
}
|
||||
setprop("/sim/gui/dialogs/replay/time-factor","" ~ SpeedUp ~ "x");
|
||||
},
|
||||
|
||||
<hrule/>
|
||||
close : func {
|
||||
#removelistener( me.maxListenerId );
|
||||
},
|
||||
|
||||
<nasal>
|
||||
<open>
|
||||
# Populate the view combo box with a list of the available views
|
||||
var combo = cmdarg().getChildren("group")[1].getNode("combo");
|
||||
combo.removeChildren("value");
|
||||
findElementByName : func(base,name) {
|
||||
foreach( var child; base.getChildren() ) {
|
||||
var n = child.getNode( "name" );
|
||||
if( n != nil and n.getValue() == name )
|
||||
return child;
|
||||
var f = me.findElementByName(child,name);
|
||||
if( f != nil ) return f;
|
||||
}
|
||||
return nil;
|
||||
},
|
||||
|
||||
var current_view = getprop("/sim/current-view/view-number");
|
||||
var i = 0;
|
||||
foreach (var v; view.views) {
|
||||
};
|
||||
|
||||
var name = "Unnamed view " ~ v.getIndex();
|
||||
var controller = ReplayDialogController.new( cmdarg() );
|
||||
controller.open();
|
||||
]]></open>
|
||||
|
||||
if (v.getNode("name") != nil) {
|
||||
name = v.getNode("name").getValue();
|
||||
}
|
||||
<close><![CDATA[
|
||||
controller.close();
|
||||
]]></close>
|
||||
</nasal>
|
||||
|
||||
# Pre-populate the combo box selected value
|
||||
if (v.getIndex() == current_view) {
|
||||
setprop("/sim/replay/view-name", name);
|
||||
}
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
<halign>fill</halign>
|
||||
<pref-height>28</pref-height>
|
||||
|
||||
combo.getNode("value[" ~ i ~ "]", 1).setValue(name);
|
||||
i = i + 1;
|
||||
}
|
||||
</open>
|
||||
</nasal>
|
||||
<text>
|
||||
<font>
|
||||
<name>SANS_12B</name>
|
||||
</font>
|
||||
<label>REPLAY</label>
|
||||
<color>
|
||||
<red>0.9</red>
|
||||
<green>0.9</green>
|
||||
<blue>0.9</blue>
|
||||
<alpha>1</alpha>
|
||||
</color>
|
||||
<pref-width>70</pref-width>
|
||||
</text>
|
||||
|
||||
<group>
|
||||
<layout>table</layout>
|
||||
<text>
|
||||
<label>Loop:</label>
|
||||
<color>
|
||||
<red>0.7</red>
|
||||
<green>0.7</green>
|
||||
<blue>0.7</blue>
|
||||
<alpha>1</alpha>
|
||||
</color>
|
||||
</text>
|
||||
|
||||
<text>
|
||||
<row>0</row><col>0</col>
|
||||
<halign>right</halign>
|
||||
<label>Duration:</label>
|
||||
</text>
|
||||
<checkbox>
|
||||
<name>replay-looped</name>
|
||||
<halign>left</halign>
|
||||
<color-highlight>
|
||||
<red type="float">0.6</red>
|
||||
<green type="float">0.6</green>
|
||||
<blue type="float">0.6</blue>
|
||||
<alpha type="float">0.8</alpha>
|
||||
</color-highlight>
|
||||
<property>/sim/replay/looped</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
<object-name>replay-looped</object-name>
|
||||
</binding>
|
||||
</checkbox>
|
||||
<input>
|
||||
<name>replay-duration</name>
|
||||
<pref-width>40</pref-width>
|
||||
<color>
|
||||
<red>0.5</red>
|
||||
<green>0.5</green>
|
||||
<blue>0.5</blue>
|
||||
<alpha type="float">0.8</alpha>
|
||||
</color>
|
||||
<property>/sim/replay/duration</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
<object-name>replay-duration</object-name>
|
||||
</binding>
|
||||
</input>
|
||||
|
||||
<input>
|
||||
<row>0</row><col>1</col>
|
||||
<pref-width>40</pref-width>
|
||||
<halign>left</halign>
|
||||
<property>/sim/replay/duration</property>
|
||||
</input>
|
||||
<empty><pref-width>40</pref-width></empty>
|
||||
|
||||
<text>
|
||||
<row>1</row><col>0</col>
|
||||
<halign>right</halign>
|
||||
<label>View:</label>
|
||||
</text>
|
||||
<text>
|
||||
<label>Time: 99:99:99.9</label>
|
||||
<format>Time: %s</format>
|
||||
<color>
|
||||
<red>0.7</red>
|
||||
<green>0.7</green>
|
||||
<blue>0.7</blue>
|
||||
<alpha>1</alpha>
|
||||
</color>
|
||||
<live>true</live>
|
||||
<property>/sim/replay/time-str</property>
|
||||
</text>
|
||||
|
||||
<combo>
|
||||
<row>1</row><col>1</col>
|
||||
<halign>left</halign>
|
||||
<pref-width>200</pref-width>
|
||||
<property>/sim/replay/view-name</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</combo>
|
||||
<empty><pref-width>10</pref-width></empty>
|
||||
|
||||
<checkbox>
|
||||
<row>2</row><col>1</col>
|
||||
<halign>left</halign>
|
||||
<property>/sim/replay/looped</property>
|
||||
<label>Looped replay</label>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</checkbox>
|
||||
</group>
|
||||
<text>
|
||||
<label>Size: 999.9MB</label>
|
||||
<format>Size: %.1fMB</format>
|
||||
<color>
|
||||
<red>0.7</red>
|
||||
<green>0.7</green>
|
||||
<blue>0.7</blue>
|
||||
<alpha>1</alpha>
|
||||
</color>
|
||||
<property>/sim/replay/buffer-size-mbyte</property>
|
||||
</text>
|
||||
|
||||
<hrule/>
|
||||
<empty><pref-width>40</pref-width></empty>
|
||||
|
||||
<text>
|
||||
<halign>left</halign>
|
||||
<label>During replay:</label>
|
||||
</text>
|
||||
<text>
|
||||
<label>Speed:</label>
|
||||
<color>
|
||||
<red>0.7</red>
|
||||
<green>0.7</green>
|
||||
<blue>0.7</blue>
|
||||
<alpha>1</alpha>
|
||||
</color>
|
||||
</text>
|
||||
<button>
|
||||
<legend><![CDATA[-]]></legend>
|
||||
<pref-width>20</pref-width>
|
||||
<border>1</border>
|
||||
<color>
|
||||
<red type="float">0.3</red>
|
||||
<green type="float">0.3</green>
|
||||
<blue type="float">0.3</blue>
|
||||
<alpha type="float">0.8</alpha>
|
||||
</color>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>controls.speedup(-1);</script>
|
||||
</binding>
|
||||
</button>
|
||||
<text>
|
||||
<label>1/16x</label>
|
||||
<pref-width>28</pref-width>
|
||||
<format>%s</format>
|
||||
<color>
|
||||
<red>0.7</red>
|
||||
<green>0.7</green>
|
||||
<blue>0.7</blue>
|
||||
<alpha>1</alpha>
|
||||
</color>
|
||||
<live>true</live>
|
||||
<property>/sim/gui/dialogs/replay/time-factor</property>
|
||||
</text>
|
||||
<button>
|
||||
<legend><![CDATA[+]]></legend>
|
||||
<pref-width>20</pref-width>
|
||||
<border>1</border>
|
||||
<color>
|
||||
<red type="float">0.3</red>
|
||||
<green type="float">0.3</green>
|
||||
<blue type="float">0.3</blue>
|
||||
<alpha type="float">0.8</alpha>
|
||||
</color>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>controls.speedup(1);</script>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<group>
|
||||
<layout>table</layout>
|
||||
<empty><stretch>1</stretch></empty>
|
||||
<!--
|
||||
<button>
|
||||
<pref-width>16</pref-width>
|
||||
<pref-height>16</pref-height>
|
||||
<color>
|
||||
<red type="float">0.3</red>
|
||||
<green type="float">0.3</green>
|
||||
<blue type="float">0.3</blue>
|
||||
<alpha type="float">0.8</alpha>
|
||||
</color>
|
||||
<legend></legend>
|
||||
<keynum>27</keynum>
|
||||
<border>2</border>
|
||||
<binding>
|
||||
<command>dialog-close</command>
|
||||
</binding>
|
||||
</button>
|
||||
-->
|
||||
<button>
|
||||
<legend>Hide</legend>
|
||||
<border>1</border>
|
||||
<color>
|
||||
<red type="float">0.3</red>
|
||||
<green type="float">0.3</green>
|
||||
<blue type="float">0.3</blue>
|
||||
<alpha type="float">0.8</alpha>
|
||||
</color>
|
||||
<pref-width>40</pref-width>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script><![CDATA[
|
||||
setprop("/sim/messages/copilot", "Replay active. 'Esc' to stop. 'Ctrl-R' to show replay controls.");
|
||||
]]></script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>dialog-close</command>
|
||||
</binding>
|
||||
</button>
|
||||
</group>
|
||||
|
||||
<text>
|
||||
<row>1</row><col>0</col>
|
||||
<halign>center</halign>
|
||||
<label>v/V</label>
|
||||
</text>
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
<halign>center</halign>
|
||||
|
||||
<text>
|
||||
<row>1</row><col>1</col>
|
||||
<halign>left</halign>
|
||||
<label>Change view</label>
|
||||
</text>
|
||||
<button>
|
||||
<legend><![CDATA[<<]]></legend>
|
||||
<pref-width>30</pref-width>
|
||||
<border>1</border>
|
||||
<color>
|
||||
<red type="float">0.3</red>
|
||||
<green type="float">0.3</green>
|
||||
<blue type="float">0.3</blue>
|
||||
<alpha type="float">0.8</alpha>
|
||||
</color>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>controls.replaySkip(-30);</script>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<text>
|
||||
<row>2</row><col>0</col>
|
||||
<halign>center</halign>
|
||||
<label>Ctrl-v</label>
|
||||
</text>
|
||||
<button>
|
||||
<legend><![CDATA[<]]></legend>
|
||||
<pref-width>30</pref-width>
|
||||
<border>1</border>
|
||||
<color>
|
||||
<red type="float">0.3</red>
|
||||
<green type="float">0.3</green>
|
||||
<blue type="float">0.3</blue>
|
||||
<alpha type="float">0.8</alpha>
|
||||
</color>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>controls.replaySkip(-5);</script>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<text>
|
||||
<row>2</row><col>1</col>
|
||||
<halign>left</halign>
|
||||
<label>Reset view</label>
|
||||
</text>
|
||||
<text>
|
||||
<label>9:99:99</label>
|
||||
<color>
|
||||
<red>0.7</red>
|
||||
<green>0.7</green>
|
||||
<blue>0.7</blue>
|
||||
<alpha>1</alpha>
|
||||
</color>
|
||||
<format>%8s</format>
|
||||
<halign>right</halign>
|
||||
<live>true</live>
|
||||
<property>/sim/replay/start-time-str</property>
|
||||
</text>
|
||||
|
||||
<text>
|
||||
<row>3</row><col>0</col>
|
||||
<halign>center</halign>
|
||||
<label>p p</label>
|
||||
</text>
|
||||
<slider>
|
||||
<name>replay-time-slider</name>
|
||||
<border>0</border>
|
||||
<color>
|
||||
<red>0.4</red>
|
||||
<green>0.4</green>
|
||||
<blue>0.4</blue>
|
||||
<alpha>1</alpha>
|
||||
</color>
|
||||
<halign>left</halign>
|
||||
<pref-width>350</pref-width>
|
||||
<min>0</min><!-- property is updated on "dialog open" -->
|
||||
<max>1.0</max><!-- property is updated on "dialog open" -->
|
||||
<property>/sim/replay/time</property>
|
||||
<live>true</live>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
<object-name>replay-time-slider</object-name>
|
||||
</binding>
|
||||
</slider>
|
||||
|
||||
<text>
|
||||
<row>3</row><col>1</col>
|
||||
<halign>left</halign>
|
||||
<label>End replay</label>
|
||||
</text>
|
||||
</group>
|
||||
<text>
|
||||
<label>9:99:99</label>
|
||||
<color>
|
||||
<red>0.7</red>
|
||||
<green>0.7</green>
|
||||
<blue>0.7</blue>
|
||||
<alpha>1</alpha>
|
||||
</color>
|
||||
<format>%s</format>
|
||||
<halign>left</halign>
|
||||
<live>true</live>
|
||||
<property>/sim/replay/end-time-str</property>
|
||||
</text>
|
||||
|
||||
<hrule/>
|
||||
<button>
|
||||
<legend><![CDATA[>]]></legend>
|
||||
<pref-width>30</pref-width>
|
||||
<border>1</border>
|
||||
<color>
|
||||
<red type="float">0.3</red>
|
||||
<green type="float">0.3</green>
|
||||
<blue type="float">0.3</blue>
|
||||
<alpha type="float">0.8</alpha>
|
||||
</color>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>controls.replaySkip(5);</script>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
<empty><stretch>true</stretch></empty>
|
||||
<button>
|
||||
<legend>Start</legend>
|
||||
<default>true</default>
|
||||
<equal>true</equal>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
var index = view.indexof(getprop("/sim/replay/view-name"));
|
||||
setprop("/sim/current-view/view-number", index);
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>replay</command>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>dialog-close</command>
|
||||
</binding>
|
||||
</button>
|
||||
<empty><stretch>true</stretch></empty>
|
||||
<button>
|
||||
<legend>Stop</legend>
|
||||
<equal>true</equal>
|
||||
<enable>
|
||||
<greater-than>
|
||||
<property>/sim/freeze/replay-state</property>
|
||||
<value>0</value>
|
||||
</greater-than>
|
||||
</enable>
|
||||
<binding>
|
||||
<property>/sim/replay/disable</property>
|
||||
<command>property-assign</command>
|
||||
<value type="bool">true</value>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>dialog-close</command>
|
||||
</binding>
|
||||
</button>
|
||||
<empty><stretch>true</stretch></empty>
|
||||
<button>
|
||||
<legend>Cancel</legend>
|
||||
<equal>true</equal>
|
||||
<key>Esc</key>
|
||||
<binding>
|
||||
<command>dialog-close</command>
|
||||
</binding>
|
||||
</button>
|
||||
<empty><stretch>true</stretch></empty>
|
||||
</group>
|
||||
<button>
|
||||
<legend><![CDATA[>>]]></legend>
|
||||
<pref-width>30</pref-width>
|
||||
<border>1</border>
|
||||
<color>
|
||||
<red type="float">0.3</red>
|
||||
<green type="float">0.3</green>
|
||||
<blue type="float">0.3</blue>
|
||||
<alpha type="float">0.8</alpha>
|
||||
</color>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>controls.replaySkip(30);</script>
|
||||
</binding>
|
||||
</button>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
<halign>center</halign>
|
||||
<stretch>false</stretch>
|
||||
<default-padding>3</default-padding>
|
||||
|
||||
<button>
|
||||
<legend>Pause</legend>
|
||||
<default>true</default>
|
||||
<border>2</border>
|
||||
<color>
|
||||
<red type="float">0.3</red>
|
||||
<green type="float">0.3</green>
|
||||
<blue type="float">0.3</blue>
|
||||
<alpha type="float">0.8</alpha>
|
||||
</color>
|
||||
<property>/sim/freeze/master</property>
|
||||
<live>true</live>
|
||||
<pref-width>47</pref-width>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/sim/freeze/clock</property>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/sim/freeze/master</property>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<button>
|
||||
<legend>End Replay</legend>
|
||||
<key>Esc</key>
|
||||
<border>1</border>
|
||||
<color>
|
||||
<red type="float">0.3</red>
|
||||
<green type="float">0.3</green>
|
||||
<blue type="float">0.3</blue>
|
||||
<alpha type="float">0.8</alpha>
|
||||
</color>
|
||||
<!--<pref-width>47</pref-width>-->
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>/sim/replay/disable</property>
|
||||
<value type="bool">true</value>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>dialog-close</command>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<!-- Future features...
|
||||
<button>
|
||||
<legend>My controls!</legend>
|
||||
<border>1</border>
|
||||
<color>
|
||||
<red>1</red>
|
||||
<green>0.3</green>
|
||||
<blue>0.3</blue>
|
||||
<alpha>0.8</alpha>
|
||||
</color>
|
||||
<pref-width>80</pref-width>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>/sim/freeze/replay-state</property>
|
||||
<value type="int">3</value>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>/sim/replay/disable</property>
|
||||
<value type="bool">true</value>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>dialog-close</command>
|
||||
</binding>
|
||||
</button>
|
||||
<button>
|
||||
<legend>Save</legend>
|
||||
<border>1</border>
|
||||
<color>
|
||||
<red type="float">0.3</red>
|
||||
<green type="float">0.3</green>
|
||||
<blue type="float">0.3</blue>
|
||||
<alpha type="float">0.8</alpha>
|
||||
</color>
|
||||
<pref-width>43</pref-width>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>gui.popupTip("Not implemented yet. Comming soon.");</script>
|
||||
</binding>
|
||||
</button>
|
||||
<button>
|
||||
<legend>Load</legend>
|
||||
<border>1</border>
|
||||
<enable>0</enable>
|
||||
<color>
|
||||
<red type="float">0.3</red>
|
||||
<green type="float">0.3</green>
|
||||
<blue type="float">0.3</blue>
|
||||
<alpha type="float">0.8</alpha>
|
||||
</color>
|
||||
<pref-width>40</pref-width>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>gui.popupTip("Not implemented yet. Comming soon.");</script>
|
||||
</binding>
|
||||
</button>
|
||||
-->
|
||||
</group>
|
||||
</PropertyList>
|
||||
|
|
|
@ -33,46 +33,67 @@
|
|||
<halign>center</halign>
|
||||
|
||||
<text>
|
||||
<row>0</row><col>1</col>
|
||||
<label>Max. Range (m)</label>
|
||||
<row>0</row><col>1</col><colspan>3</colspan>
|
||||
<label>Max. Ranges (m)</label>
|
||||
</text>
|
||||
|
||||
<text>
|
||||
<row>1</row><col>0</col>
|
||||
<halign>right</halign>
|
||||
<row>1</row><col>1</col>
|
||||
<label>Detailed</label>
|
||||
</text>
|
||||
|
||||
<input>
|
||||
<row>1</row><col>1</col>
|
||||
<halign>fill</halign>
|
||||
<property>/sim/rendering/static-lod/detailed</property>
|
||||
</input>
|
||||
<text>
|
||||
<row>1</row><col>2</col>
|
||||
<label>Rough</label>
|
||||
</text>
|
||||
<text>
|
||||
<row>1</row><col>3</col>
|
||||
<label>Bare</label>
|
||||
</text>
|
||||
|
||||
<text>
|
||||
<row>2</row><col>0</col>
|
||||
<halign>right</halign>
|
||||
<label>Rough</label>
|
||||
<label>Scenery</label>
|
||||
</text>
|
||||
|
||||
<input>
|
||||
<row>2</row><col>1</col>
|
||||
<halign>fill</halign>
|
||||
<property>/sim/rendering/static-lod/detailed</property>
|
||||
</input>
|
||||
|
||||
<input>
|
||||
<row>2</row><col>2</col>
|
||||
<halign>fill</halign>
|
||||
<property>/sim/rendering/static-lod/rough</property>
|
||||
</input>
|
||||
|
||||
<input>
|
||||
<row>2</row><col>3</col>
|
||||
<halign>fill</halign>
|
||||
<property>/sim/rendering/static-lod/bare</property>
|
||||
</input>
|
||||
|
||||
<text>
|
||||
<row>3</row><col>0</col>
|
||||
<halign>right</halign>
|
||||
<label>Bare</label>
|
||||
<label>AI/MP Aircraft</label>
|
||||
</text>
|
||||
|
||||
<input>
|
||||
<row>3</row><col>1</col>
|
||||
<halign>fill</halign>
|
||||
<property>/sim/rendering/static-lod/bare</property>
|
||||
<property>/sim/rendering/static-lod/ai-detailed</property>
|
||||
</input>
|
||||
|
||||
<!-- // meaningless for now...
|
||||
<input>
|
||||
<row>3</row><col>3</col>
|
||||
<halign>fill</halign>
|
||||
<property>/sim/rendering/static-lod/ai-bare</property>
|
||||
</input>
|
||||
-->
|
||||
|
||||
</group>
|
||||
|
||||
<hrule/>
|
||||
|
|
|
@ -86,10 +86,8 @@
|
|||
<button>
|
||||
<legend>-</legend>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/sim/speed-up</property>
|
||||
<min>1</min>
|
||||
<step type="double">-1</step>
|
||||
<command>nasal</command>
|
||||
<script>controls.speedup(-1);</script>
|
||||
</binding>
|
||||
</button>
|
||||
<button>
|
||||
|
@ -104,10 +102,8 @@
|
|||
<button>
|
||||
<legend>+</legend>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/sim/speed-up</property>
|
||||
<min>1</min>
|
||||
<step type="double">1</step>
|
||||
<command>nasal</command>
|
||||
<script>controls.speedup(1);</script>
|
||||
</binding>
|
||||
</button>
|
||||
</group>
|
||||
|
|
|
@ -190,6 +190,9 @@
|
|||
|
||||
<item>
|
||||
<label>Instant Replay (Ctrl-R)</label>
|
||||
<binding>
|
||||
<command>replay</command>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>dialog-show</command>
|
||||
<dialog-name>replay</dialog-name>
|
||||
|
|
37
keyboard.xml
37
keyboard.xml
|
@ -168,6 +168,10 @@ top down before the key bindings are parsed.
|
|||
<binding>
|
||||
<command>replay</command>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>dialog-show</command>
|
||||
<dialog-name>replay</dialog-name>
|
||||
</binding>
|
||||
</key>
|
||||
|
||||
<key n="19">
|
||||
|
@ -268,9 +272,22 @@ top down before the key bindings are parsed.
|
|||
<name>ESC</name>
|
||||
<desc>Prompt and quit FlightGear</desc>
|
||||
<binding>
|
||||
<condition>
|
||||
<not>
|
||||
<property>/sim/freeze/replay-state</property>
|
||||
</not>
|
||||
</condition>
|
||||
<command>dialog-show</command>
|
||||
<dialog-name>exit</dialog-name>
|
||||
</binding>
|
||||
<binding>
|
||||
<condition>
|
||||
<property>/sim/freeze/replay-state</property>
|
||||
</condition>
|
||||
<command>property-assign</command>
|
||||
<property>/sim/replay/disable</property>
|
||||
<value type="bool">true</value>
|
||||
</binding>
|
||||
<mod-shift>
|
||||
<desc>Reset FlightGear</desc>
|
||||
<binding>
|
||||
|
@ -1242,7 +1259,10 @@ top down before the key bindings are parsed.
|
|||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
controls.incAileron(-0.05, -1.0)
|
||||
if (getprop("/sim/freeze/replay-state"))
|
||||
controls.replaySkip(-5);
|
||||
else
|
||||
controls.incAileron(-0.05, -1.0)
|
||||
</script>
|
||||
</binding>
|
||||
<mod-shift>
|
||||
|
@ -1262,7 +1282,10 @@ top down before the key bindings are parsed.
|
|||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
controls.incElevator(0.05, -100)
|
||||
if (getprop("/sim/freeze/replay-state"))
|
||||
controls.speedup(1);
|
||||
else
|
||||
controls.incElevator(0.05, -100)
|
||||
</script>
|
||||
</binding>
|
||||
<mod-shift>
|
||||
|
@ -1282,7 +1305,10 @@ top down before the key bindings are parsed.
|
|||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
controls.incAileron(0.05, 1.0)
|
||||
if (getprop("/sim/freeze/replay-state"))
|
||||
controls.replaySkip(5);
|
||||
else
|
||||
controls.incAileron(0.05, 1.0)
|
||||
</script>
|
||||
<step type="double">0.05</step>
|
||||
</binding>
|
||||
|
@ -1303,7 +1329,10 @@ top down before the key bindings are parsed.
|
|||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
controls.incElevator(-0.05, 100)
|
||||
if (getprop("/sim/freeze/replay-state"))
|
||||
controls.speedup(-1);
|
||||
else
|
||||
controls.incElevator(-0.05, 100)
|
||||
</script>
|
||||
</binding>
|
||||
<mod-shift>
|
||||
|
|
|
@ -85,13 +85,13 @@ Started September 2000 by David Megginson, david@megginson.com
|
|||
DrawThreadPerContext
|
||||
CullDrawThreadPerContext
|
||||
CullThreadPerCameraDrawThreadPerContext
|
||||
|
||||
NOTE: Enabling this option currently breaks the screenshot function.
|
||||
-->
|
||||
<static-lod>
|
||||
<detailed userarchive="y">1500</detailed>
|
||||
<rough userarchive="y">9000</rough>
|
||||
<bare userarchive="y">30000</bare>
|
||||
<ai-detailed userarchive="y">10000</ai-detailed>
|
||||
<!-- ai-bare userarchive="y">10000</ai-bare -->
|
||||
</static-lod>
|
||||
<random-objects type="bool"
|
||||
userarchive="y">true</random-objects>
|
||||
|
@ -677,6 +677,17 @@ Started September 2000 by David Megginson, david@megginson.com
|
|||
<duration type="double">90</duration>
|
||||
<view type="int">1</view>
|
||||
<looped type="bool" userarchive="y">true</looped>
|
||||
<buffer> <!-- replay buffer configuration -->
|
||||
<!-- 1st buffer level: short term -->
|
||||
<high-res-time type="double">60.0</high-res-time> <!-- 60 seconds -->
|
||||
<!-- short term sample rate is as every frame (fixed) -->
|
||||
<!-- 2nd buffer level: medium term -->
|
||||
<medium-res-sample-dt type="double">0.5</medium-res-sample-dt>
|
||||
<medium-res-time type="double">600.0</medium-res-time><!-- 10 mins -->
|
||||
<!-- 3rd buffer level: long term -->
|
||||
<low-res-sample-dt type="double">5.0</low-res-sample-dt>
|
||||
<low-res-time type="double">3600.0</low-res-time><!-- 1 h -->
|
||||
</buffer>
|
||||
</replay>
|
||||
|
||||
<airport>
|
||||
|
@ -729,6 +740,7 @@ Started September 2000 by David Megginson, david@megginson.com
|
|||
userarchive="y">true</chat-display>
|
||||
<chat-menu include="ATC/chat-menu-entries.xml"/>
|
||||
<write-message-log type="bool">false</write-message-log>
|
||||
<freeze-on-replay type="bool">true</freeze-on-replay>
|
||||
<default-model type="string">Models/Geometry/glider.ac</default-model>
|
||||
</multiplay>
|
||||
|
||||
|
@ -768,6 +780,11 @@ Started September 2000 by David Megginson, david@megginson.com
|
|||
<ext-svn-utility type="string">svn</ext-svn-utility> <!-- use absolute path if "svn"
|
||||
isn't on system PATH (external SVN only)-->
|
||||
</terrasync>
|
||||
|
||||
<flight-recorder>
|
||||
<default-config type="string">/Aircraft/Generic/flightrecorder/generic-piston-propeller-4.xml</default-config>
|
||||
</flight-recorder>
|
||||
|
||||
</sim>
|
||||
<!-- mouse mode -->
|
||||
<devices>
|
||||
|
|
Loading…
Reference in a new issue