Translation: Disable Chinese translation for in-sim menu due to lack of font support and minor translation updates
64128
AI/Aircraft/727/Models/727-200.ac
Normal file
1238
AI/Aircraft/727/Models/727-200.xml
Normal file
BIN
AI/Aircraft/727/Models/727-230.png
Normal file
After Width: | Height: | Size: 258 KiB |
9
AI/Aircraft/747/74F-UPS.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList include="74F-main.xml">
|
||||
|
||||
<texture-path>Textures/UPS</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
9
AI/Aircraft/747/74N-AirBridgeCargo.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList include="74N-main.xml">
|
||||
|
||||
<texture-path>Textures/AirBridgeCargo</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
9
AI/Aircraft/747/74N-CargoLogicAir.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList include="74N-main.xml">
|
||||
|
||||
<texture-path>Textures/CargoLogicAir</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
9
AI/Aircraft/747/74N-Cargolux.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList include="74N-main.xml">
|
||||
|
||||
<texture-path>Textures/Cargolux</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
9
AI/Aircraft/747/74N-CathayPacific.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList include="74N-main.xml">
|
||||
|
||||
<texture-path>Textures/CathayPacific</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
9
AI/Aircraft/747/74N-Default.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList include="74N-main.xml">
|
||||
|
||||
<texture-path>Textures/Default</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
9
AI/Aircraft/747/74N-Korean.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList include="74N-main.xml">
|
||||
|
||||
<texture-path>Textures/Korean</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
9
AI/Aircraft/747/74N-UPS.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList include="74N-main.xml">
|
||||
|
||||
<texture-path>Textures/UPS</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
31
AI/Aircraft/747/74N-main.xml
Normal file
|
@ -0,0 +1,31 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList>
|
||||
<description>Boeing 747-8 Freighter</description>
|
||||
<author>Ian(Yves) Tolosa. Dec 2016 </author>
|
||||
<path>Models/74N.ac</path>
|
||||
<!-- Pitch Forward so nosewheel on ground -->
|
||||
<offsets>
|
||||
<pitch-deg>-0.5</pitch-deg>
|
||||
</offsets>
|
||||
<!-- Gear Showed only < 180 knotspeed -->
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>Gear</object-name>
|
||||
<condition>
|
||||
<less-than>
|
||||
<property>velocities/true-airspeed-kt</property>
|
||||
<value>180</value>
|
||||
</less-than>
|
||||
</condition>
|
||||
</animation>
|
||||
<!-- Tail and Windows Lightmap Effect -->
|
||||
<effect>
|
||||
<inherits-from>AI/Aircraft/747/Effects/74N-LightMap</inherits-from>
|
||||
<object-name>74N</object-name>
|
||||
<object-name>Gear</object-name>
|
||||
</effect>
|
||||
<!-- Add Navigation Lights Objects -->
|
||||
<model>
|
||||
<path>Lights/74N-NavLights.xml</path>
|
||||
</model>
|
||||
</PropertyList>
|
9
AI/Aircraft/747/74Y-UPS.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList include="74Y-main.xml">
|
||||
|
||||
<texture-path>Textures/UPS</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
36
AI/Aircraft/747/Effects/74N-LightMap.eff
Normal file
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Lighting of Tail, Flanks and Windows -->
|
||||
<PropertyList>
|
||||
<name>74N-LightMap</name>
|
||||
<inherits-from>Effects/model-combined-deferred</inherits-from>
|
||||
<parameters>
|
||||
<normalmap-enabled type="int">0</normalmap-enabled>
|
||||
<reflection-enabled type="int">0</reflection-enabled>
|
||||
<reflection-dynamic type="int">0</reflection-dynamic>
|
||||
<reflect_map-enabled type="int">0</reflect_map-enabled>
|
||||
<reflection-correction type="float">0</reflection-correction>
|
||||
<!-- Enable 3 colors RGB LigntMap -->
|
||||
<lightmap-enabled type="int"><use>/environment/lightmap-factor</use></lightmap-enabled>
|
||||
<lightmap-multi type="int">1</lightmap-multi>
|
||||
<!-- Red Channel (Tail) - Night Activation and Color -->
|
||||
<lightmap-factor type="float" n="0">1</lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
<!-- Green Channel (Windows) Multiplying Factor and Color -->
|
||||
<lightmap-factor type="float" n="1">1.5</lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="1">1.0 1.0 1.0</lightmap-color>
|
||||
<!-- Blue Channel (OFF) Multiplying Factor and Color -->
|
||||
<lightmap-factor type="float" n="2">0</lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="2">1.0 1.0 1.0</lightmap-color>
|
||||
<!-- Alpha Channel (OFF) Multiplying Factor and Color -->
|
||||
<lightmap-factor type="float" n="3">0.0</lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="3">1.0 1.0 1.0</lightmap-color>
|
||||
<!-- LightMap Image Location -->
|
||||
<texture n="3">
|
||||
<image>AI/Aircraft/747/Effects/74N-LightMap.png</image>
|
||||
<filter>linear-mipmap-linear</filter>
|
||||
<wrap-s>clamp</wrap-s>
|
||||
<wrap-t>clamp</wrap-t>
|
||||
<internal-format>normalized</internal-format>
|
||||
</texture>
|
||||
</parameters>
|
||||
</PropertyList>
|
BIN
AI/Aircraft/747/Effects/74N-LightMap.png
Normal file
After Width: | Height: | Size: 129 KiB |
122
AI/Aircraft/747/Lights/74N-NavLights.xml
Normal file
|
@ -0,0 +1,122 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- Author Ian (Yves Tolosa) - DEC 2018 -->
|
||||
<PropertyList>
|
||||
<!-- Position ALS Navigation Lights -->
|
||||
<model>
|
||||
<name>nav-right</name>
|
||||
<path>AI/Lights/procedural_light_nav_right.xml</path>
|
||||
<offsets>
|
||||
<x-m>17.1706</x-m>
|
||||
<y-m>34.2893</y-m>
|
||||
<z-m>7.33728</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<model>
|
||||
<name>nav-left</name>
|
||||
<path>AI/Lights/procedural_light_nav_left.xml</path>
|
||||
<offsets>
|
||||
<x-m>17.1706</x-m>
|
||||
<y-m>-34.2893</y-m>
|
||||
<z-m>7.33728</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<model>
|
||||
<name>nav-tail</name>
|
||||
<path>AI/Lights/procedural_light_nav_tail.xml</path>
|
||||
<offsets>
|
||||
<x-m>36.7564</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>8.78049</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<!-- Position ALS Strobes -->
|
||||
<model>
|
||||
<name>strobe-right</name>
|
||||
<path>AI/Lights/procedural_light_strobe_right.xml</path>
|
||||
<offsets>
|
||||
<x-m>18.2081</x-m>
|
||||
<y-m>34.2893</y-m>
|
||||
<z-m>7.33728</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<model>
|
||||
<name>strobe-left</name>
|
||||
<path>AI/Lights/procedural_light_strobe_left.xml</path>
|
||||
<offsets>
|
||||
<x-m>18.2081</x-m>
|
||||
<y-m>-34.2893</y-m>
|
||||
<z-m>7.33728</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<model>
|
||||
<name>strobe-tail</name>
|
||||
<path>AI/Lights/procedural_light_strobe_tail.xml</path>
|
||||
<offsets>
|
||||
<x-m>36.2309</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>9.19356</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<!-- Position Beacons -->
|
||||
<model>
|
||||
<name>beacon-top</name>
|
||||
<path>AI/Lights/procedural_light_beacon_top.xml</path>
|
||||
<offsets>
|
||||
<x-m>-25.176</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>10.1285</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<model>
|
||||
<name>beacon-bottom</name>
|
||||
<path>AI/Lights/procedural_light_beacon_bottom.xml</path>
|
||||
<offsets>
|
||||
<x-m>-9.59593</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>2.0173</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<!-- Group Lights for Shared Animations -->
|
||||
<animation>
|
||||
<name>StaticGrouped</name>
|
||||
<object-name>nav-right</object-name>
|
||||
<object-name>nav-left</object-name>
|
||||
<object-name>nav-tail</object-name>
|
||||
</animation>
|
||||
<animation>
|
||||
<name>StrobeGrouped</name>
|
||||
<object-name>strobe-right</object-name>
|
||||
<object-name>strobe-left</object-name>
|
||||
<object-name>strobe-tail</object-name>
|
||||
</animation>
|
||||
<animation>
|
||||
<name>BeaconGrouped</name>
|
||||
<object-name>beacon-top</object-name>
|
||||
<object-name>beacon-bottom</object-name>
|
||||
</animation>
|
||||
<!-- Show Static Lights & Beacons when aircraft is moving -->
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>StaticGrouped</object-name>
|
||||
<object-name>BeaconGrouped</object-name>
|
||||
<nopreview />
|
||||
<condition>
|
||||
<greater-than>
|
||||
<property>transponder-id</property>
|
||||
<value type="string">0</value>
|
||||
</greater-than>
|
||||
</condition>
|
||||
</animation>
|
||||
<!-- Show Strobes when Aircraft on runway or airborne -->
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>StrobeGrouped</object-name>
|
||||
<nopreview />
|
||||
<condition>
|
||||
<greater-than>
|
||||
<property>velocities/true-airspeed-kt</property>
|
||||
<value>40</value>
|
||||
</greater-than>
|
||||
</condition>
|
||||
</animation>
|
||||
</PropertyList>
|
65584
AI/Aircraft/747/Models/74N.ac
Normal file
BIN
AI/Aircraft/747/Textures/AirBridgeCargo/74N-tex.png
Normal file
After Width: | Height: | Size: 99 KiB |
BIN
AI/Aircraft/747/Textures/CargoLogicAir/74N-tex.png
Normal file
After Width: | Height: | Size: 100 KiB |
BIN
AI/Aircraft/747/Textures/Cargolux/74N-tex.png
Normal file
After Width: | Height: | Size: 88 KiB |
BIN
AI/Aircraft/747/Textures/CathayPacific/74N-tex.png
Normal file
After Width: | Height: | Size: 80 KiB |
BIN
AI/Aircraft/747/Textures/Default/74N-tex.png
Normal file
After Width: | Height: | Size: 96 KiB |
BIN
AI/Aircraft/747/Textures/Korean/74N-tex.png
Normal file
After Width: | Height: | Size: 82 KiB |
BIN
AI/Aircraft/747/Textures/UPS/74F-tex.png
Normal file
After Width: | Height: | Size: 106 KiB |
BIN
AI/Aircraft/747/Textures/UPS/74N-tex.png
Normal file
After Width: | Height: | Size: 83 KiB |
BIN
AI/Aircraft/747/Textures/UPS/74Y-tex.png
Normal file
After Width: | Height: | Size: 115 KiB |
9
AI/Aircraft/767/76Y-UPS.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList include="76Y-main.xml">
|
||||
|
||||
<texture-path>Textures/UPS</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
BIN
AI/Aircraft/767/Textures/UPS/76Y-tex.png
Normal file
After Width: | Height: | Size: 122 KiB |
9
AI/Aircraft/ABY/ABY-Default.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList include="ABY-main.xml">
|
||||
|
||||
<texture-path>Textures/Default</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
31
AI/Aircraft/ABY/ABY-main.xml
Normal file
|
@ -0,0 +1,31 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList>
|
||||
<description>Airbus A300-600 Freighter (A300F4-600) </description>
|
||||
<author>Ian(Yves) Tolosa. Dec 2018 </author>
|
||||
<path>Models/ABY.ac</path>
|
||||
<!-- Pitch Forward so nosewheel on ground -->
|
||||
<offsets>
|
||||
<pitch-deg>-1.1</pitch-deg>
|
||||
</offsets>
|
||||
<!-- Gear Showed only < 180 knotspeed -->
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>Gear</object-name>
|
||||
<condition>
|
||||
<less-than>
|
||||
<property>velocities/true-airspeed-kt</property>
|
||||
<value>180</value>
|
||||
</less-than>
|
||||
</condition>
|
||||
</animation>
|
||||
<!-- Tail and Windows Lightmap Effect -->
|
||||
<effect>
|
||||
<inherits-from>AI/Aircraft/ABY/Effects/ABY-LightMap</inherits-from>
|
||||
<object-name>ABY</object-name>
|
||||
<object-name>Gear</object-name>
|
||||
</effect>
|
||||
<!-- Add Navigation Lights Objects -->
|
||||
<model>
|
||||
<path>Lights/ABY-NavLights.xml</path>
|
||||
</model>
|
||||
</PropertyList>
|
36
AI/Aircraft/ABY/Effects/ABY-LightMap.eff
Normal file
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Lighting of Tail, Flanks and Windows -->
|
||||
<PropertyList>
|
||||
<name>ABY-LightMap</name>
|
||||
<inherits-from>Effects/model-combined-deferred</inherits-from>
|
||||
<parameters>
|
||||
<normalmap-enabled type="int">0</normalmap-enabled>
|
||||
<reflection-enabled type="int">0</reflection-enabled>
|
||||
<reflection-dynamic type="int">0</reflection-dynamic>
|
||||
<reflect_map-enabled type="int">0</reflect_map-enabled>
|
||||
<reflection-correction type="float">0</reflection-correction>
|
||||
<!-- Enable 3 colors RGB LigntMap -->
|
||||
<lightmap-enabled type="int"><use>/environment/lightmap-factor</use></lightmap-enabled>
|
||||
<lightmap-multi type="int">1</lightmap-multi>
|
||||
<!-- Red Channel (Tail) - Night Activation and Color -->
|
||||
<lightmap-factor type="float" n="0">1</lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
<!-- Green Channel (Windows) Multiplying Factor and Color -->
|
||||
<lightmap-factor type="float" n="1">1.0</lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="1">1.0 1.0 1.0</lightmap-color>
|
||||
<!-- Blue Channel (OFF) Multiplying Factor and Color -->
|
||||
<lightmap-factor type="float" n="2">0</lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="2">1.0 1.0 1.0</lightmap-color>
|
||||
<!-- Alpha Channel (OFF) Multiplying Factor and Color -->
|
||||
<lightmap-factor type="float" n="3">0.0</lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="3">1.0 1.0 1.0</lightmap-color>
|
||||
<!-- LightMap Image Location -->
|
||||
<texture n="3">
|
||||
<image>AI/Aircraft/ABY/Effects/ABY-LightMap.png</image>
|
||||
<filter>linear-mipmap-linear</filter>
|
||||
<wrap-s>clamp</wrap-s>
|
||||
<wrap-t>clamp</wrap-t>
|
||||
<internal-format>normalized</internal-format>
|
||||
</texture>
|
||||
</parameters>
|
||||
</PropertyList>
|
BIN
AI/Aircraft/ABY/Effects/ABY-LightMap.png
Normal file
After Width: | Height: | Size: 143 KiB |
122
AI/Aircraft/ABY/Lights/ABY-NavLights.xml
Normal file
|
@ -0,0 +1,122 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- Author Ian (Yves Tolosa) - AUG 2018 -->
|
||||
<PropertyList>
|
||||
<!-- Position ALS Navigation Lights -->
|
||||
<model>
|
||||
<name>nav-right</name>
|
||||
<path>AI/Lights/procedural_light_nav_right.xml</path>
|
||||
<offsets>
|
||||
<x-m>4.53724</x-m>
|
||||
<y-m>22.3162</y-m>
|
||||
<z-m>5.83779</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<model>
|
||||
<name>nav-left</name>
|
||||
<path>AI/Lights/procedural_light_nav_left.xml</path>
|
||||
<offsets>
|
||||
<x-m>4.53724</x-m>
|
||||
<y-m>-22.3162</y-m>
|
||||
<z-m>5.83779</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<model>
|
||||
<name>nav-tail</name>
|
||||
<path>AI/Lights/procedural_light_nav_tail.xml</path>
|
||||
<offsets>
|
||||
<x-m>28</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>7.40789</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<!-- Position ALS Strobes -->
|
||||
<model>
|
||||
<name>strobe-right</name>
|
||||
<path>AI/Lights/procedural_light_strobe_right.xml</path>
|
||||
<offsets>
|
||||
<x-m>7.3405</x-m>
|
||||
<y-m>22.3162</y-m>
|
||||
<z-m>6.11534</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<model>
|
||||
<name>strobe-left</name>
|
||||
<path>AI/Lights/procedural_light_strobe_left.xml</path>
|
||||
<offsets>
|
||||
<x-m>7.3405</x-m>
|
||||
<y-m>-22.3162</y-m>
|
||||
<z-m>6.11534</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<model>
|
||||
<name>strobe-tail</name>
|
||||
<path>AI/Lights/procedural_light_strobe_tail.xml</path>
|
||||
<offsets>
|
||||
<x-m>28.5</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>7.40789</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<!-- Position Beacons -->
|
||||
<model>
|
||||
<name>beacon-top</name>
|
||||
<path>AI/Lights/procedural_light_beacon_top.xml</path>
|
||||
<offsets>
|
||||
<x-m>-3.58606</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>7.84224</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<model>
|
||||
<name>beacon-bottom</name>
|
||||
<path>AI/Lights/procedural_light_beacon_bottom.xml</path>
|
||||
<offsets>
|
||||
<x-m>8.80994</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>2.1917</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<!-- Group Lights for Shared Animations -->
|
||||
<animation>
|
||||
<name>StaticGrouped</name>
|
||||
<object-name>nav-right</object-name>
|
||||
<object-name>nav-left</object-name>
|
||||
<object-name>nav-tail</object-name>
|
||||
</animation>
|
||||
<animation>
|
||||
<name>StrobeGrouped</name>
|
||||
<object-name>strobe-right</object-name>
|
||||
<object-name>strobe-left</object-name>
|
||||
<object-name>strobe-tail</object-name>
|
||||
</animation>
|
||||
<animation>
|
||||
<name>BeaconGrouped</name>
|
||||
<object-name>beacon-top</object-name>
|
||||
<object-name>beacon-bottom</object-name>
|
||||
</animation>
|
||||
<!-- Show Static Lights & Beacons when aircraft is moving -->
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>StaticGrouped</object-name>
|
||||
<object-name>BeaconGrouped</object-name>
|
||||
<nopreview />
|
||||
<condition>
|
||||
<greater-than>
|
||||
<property>transponder-id</property>
|
||||
<value type="string">0</value>
|
||||
</greater-than>
|
||||
</condition>
|
||||
</animation>
|
||||
<!-- Show Strobes when Aircraft on runway or airborne -->
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>StrobeGrouped</object-name>
|
||||
<nopreview />
|
||||
<condition>
|
||||
<greater-than>
|
||||
<property>velocities/true-airspeed-kt</property>
|
||||
<value>40</value>
|
||||
</greater-than>
|
||||
</condition>
|
||||
</animation>
|
||||
</PropertyList>
|
36738
AI/Aircraft/ABY/Models/ABY.ac
Normal file
BIN
AI/Aircraft/ABY/Textures/Default/ABY-tex.png
Normal file
After Width: | Height: | Size: 98 KiB |
BIN
AI/Aircraft/F-18/Models/F-18-model-atlas-0.png
Normal file
After Width: | Height: | Size: 92 KiB |
28662
AI/Aircraft/F-18/Models/F-18-model.ac
Normal file
228
AI/Aircraft/F-18/Models/F-18.xml
Normal file
|
@ -0,0 +1,228 @@
|
|||
<PropertyList>
|
||||
<path>F-18-model.ac</path>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>FrontDoor</object-name>
|
||||
<object-name>LeftDoor</object-name>
|
||||
<object-name>RightDoor</object-name>
|
||||
<object-name>FrontWheel</object-name>
|
||||
<object-name>LeftWheel</object-name>
|
||||
<object-name>RightWheel</object-name>
|
||||
<condition>
|
||||
<greater-than>
|
||||
<property>gear/gear[0]/position-norm</property>
|
||||
<value>0</value>
|
||||
</greater-than>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>FrontDoor_TopLeft</object-name>
|
||||
<object-name>FrontDoor_TopRight</object-name>
|
||||
<object-name>LeftDoor_RearLeft</object-name>
|
||||
<object-name>LeftDoor_RearRight</object-name>
|
||||
<object-name>RightDoor_RearLeft</object-name>
|
||||
<object-name>RightDoor_RearRight</object-name>
|
||||
<condition>
|
||||
<greater-than>
|
||||
<property>gear/gear[0]/position-norm</property>
|
||||
<value>0.8</value>
|
||||
</greater-than>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>FrontWheel</object-name>
|
||||
<property>gear/gear[0]/position-norm</property>
|
||||
<factor>90</factor>
|
||||
<min-deg>-50</min-deg>
|
||||
<max-deg>0</max-deg>
|
||||
<offset-deg>-90</offset-deg>
|
||||
<center>
|
||||
<x-m>-1.40</x-m>
|
||||
<y-m>0.0</y-m>
|
||||
<z-m>-0.6</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>-1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>FrontDoor</object-name>
|
||||
<property>gear/gear[0]/position-norm</property>
|
||||
<factor>90</factor>
|
||||
<offset-deg>-90</offset-deg>
|
||||
<center>
|
||||
<x-m>-3.88</x-m>
|
||||
<y-m>0.16</y-m>
|
||||
<z-m>-0.4</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>1</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>LeftWheel</object-name>
|
||||
<property>gear/gear[0]/position-norm</property>
|
||||
<factor>90</factor>
|
||||
<offset-deg>-90</offset-deg>
|
||||
<min-deg>-60</min-deg>
|
||||
<max-deg>0</max-deg>
|
||||
<center>
|
||||
<x-m>1.21208</x-m>
|
||||
<y-m>-0.927292</y-m>
|
||||
<z-m>-0.498899</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>-0.4</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>RightWheel</object-name>
|
||||
<property>gear/gear[0]/position-norm</property>
|
||||
<factor>90</factor>
|
||||
<offset-deg>-90</offset-deg>
|
||||
<min-deg>-60</min-deg>
|
||||
<max-deg>0</max-deg>
|
||||
<center>
|
||||
<x-m>1.21208</x-m>
|
||||
<y-m>0.927292</y-m>
|
||||
<z-m>-0.498899</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0.4</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>LeftDoor</object-name>
|
||||
<property>gear/gear[0]/position-norm</property>
|
||||
<factor>90</factor>
|
||||
<offset-deg>-90</offset-deg>
|
||||
<center>
|
||||
<x-m>1.20195</x-m>
|
||||
<y-m>-0.45533</y-m>
|
||||
<z-m>-0.54</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>1</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>RightDoor</object-name>
|
||||
<property>gear/gear[0]/position-norm</property>
|
||||
<factor>90</factor>
|
||||
<offset-deg>-90</offset-deg>
|
||||
<center>
|
||||
<x-m>1.20195</x-m>
|
||||
<y-m>0.45533</y-m>
|
||||
<z-m>-0.54</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>-1</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>AileronLeft</object-name>
|
||||
<property>surface-positions/left-aileron-pos-norm</property>
|
||||
<factor>-30</factor>
|
||||
<axis>
|
||||
<x1-m>2.67178</x1-m>
|
||||
<y1-m>-3.74241</y1-m>
|
||||
<z1-m>0.470943</z1-m>
|
||||
<x2-m>2.67178</x2-m>
|
||||
<y2-m>-5.42703</y2-m>
|
||||
<z2-m>0.470943</z2-m>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>AileronRight</object-name>
|
||||
<property>surface-positions/left-aileron-pos-norm</property>
|
||||
<factor>-30</factor>
|
||||
<axis>
|
||||
<x1-m>2.67178</x1-m>
|
||||
<y1-m>3.74241</y1-m>
|
||||
<z1-m>0.470943</z1-m>
|
||||
<x2-m>2.67178</x2-m>
|
||||
<y2-m>5.42703</y2-m>
|
||||
<z2-m>0.470943</z2-m>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>RudderLeft</object-name>
|
||||
<property>surface-positions/rudder-pos-norm</property>
|
||||
<factor>30</factor>
|
||||
<axis>
|
||||
<x1-m>4.46901</x1-m>
|
||||
<y1-m>-1.03207</y1-m>
|
||||
<z1-m>0.670875</z1-m>
|
||||
<x2-m>4.84972</x2-m>
|
||||
<y2-m>-1.39064</y2-m>
|
||||
<z2-m>1.71914</z2-m>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>RudderRight</object-name>
|
||||
<property>surface-positions/rudder-pos-norm</property>
|
||||
<factor>30</factor>
|
||||
<axis>
|
||||
<x1-m>4.46901</x1-m>
|
||||
<y1-m>1.03207</y1-m>
|
||||
<z1-m>0.670875</z1-m>
|
||||
<x2-m>4.84972</x2-m>
|
||||
<y2-m>1.39064</y2-m>
|
||||
<z2-m>1.71914</z2-m>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>ElevatorLeft</object-name>
|
||||
<object-name>ElevatorRight</object-name>
|
||||
<property>surface-positions/elevator-pos-norm</property>
|
||||
<factor>25</factor>
|
||||
<center>
|
||||
<x-m>5.22371</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>-0.0314742</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
</PropertyList>
|
BIN
AI/Aircraft/F-4/F-4-model-atlas-0.png
Normal file
After Width: | Height: | Size: 112 KiB |
15
AI/Aircraft/F-4/F-4.xml
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<PropertyList>
|
||||
<path>F-4_lowpoly.ac</path>
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>landing-gear</object-name>
|
||||
<condition>
|
||||
<greater-than>
|
||||
<property>gear/gear[0]/position-norm</property>
|
||||
<value>0.6</value>
|
||||
</greater-than>
|
||||
</condition>
|
||||
</animation>
|
||||
</PropertyList>
|
104341
AI/Aircraft/F-4/F-4_lowpoly.ac
Normal file
63019
AI/Aircraft/JA37/Models/JA-37-lowpoly.ac
Normal file
BIN
AI/Aircraft/JA37/Models/JA-37-model-atlas-0.png
Normal file
After Width: | Height: | Size: 276 KiB |
1757
AI/Aircraft/JA37/Models/JA-37.xml
Normal file
96
AI/Aircraft/JA37/Models/scissor-interpolation-retract.xml
Normal file
|
@ -0,0 +1,96 @@
|
|||
<?xml version = '1.0' encoding = 'UTF-8' ?>
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>1.000</ind>
|
||||
|
||||
<dep>0.000</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.9</ind>
|
||||
|
||||
<dep>5.963</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.8</ind>
|
||||
|
||||
<dep>11.415</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.7</ind>
|
||||
|
||||
<dep>16.510</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.6</ind>
|
||||
|
||||
<dep>21.344</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.5</ind>
|
||||
|
||||
<dep>25.983</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.4</ind>
|
||||
|
||||
<dep>30.477</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.3</ind>
|
||||
|
||||
<dep>34.865</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.2</ind>
|
||||
|
||||
<dep>39.176</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.1</ind>
|
||||
|
||||
<dep>43.440</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.000</ind>
|
||||
|
||||
<dep>47.681</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
</PropertyList>
|
173
AI/Aircraft/JA37/Models/scissor-interpolation.xml
Normal file
|
@ -0,0 +1,173 @@
|
|||
<?xml version = '1.0' encoding = 'UTF-8' ?>
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.000</ind>
|
||||
|
||||
<dep>0.000</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.050</ind>
|
||||
|
||||
<dep>3.058</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.100</ind>
|
||||
|
||||
<dep>5.963</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.150</ind>
|
||||
|
||||
<dep>8.742</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.200</ind>
|
||||
|
||||
<dep>11.415</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.250</ind>
|
||||
|
||||
<dep>14.001</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.300</ind>
|
||||
|
||||
<dep>16.510</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.350</ind>
|
||||
|
||||
<dep>18.955</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.400</ind>
|
||||
|
||||
<dep>21.344</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.450</ind>
|
||||
|
||||
<dep>23.685</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.500</ind>
|
||||
|
||||
<dep>25.983</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.550</ind>
|
||||
|
||||
<dep>28.246</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.600</ind>
|
||||
|
||||
<dep>30.477</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.650</ind>
|
||||
|
||||
<dep>32.682</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.700</ind>
|
||||
|
||||
<dep>34.865</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.750</ind>
|
||||
|
||||
<dep>37.028</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.800</ind>
|
||||
|
||||
<dep>39.176</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.850</ind>
|
||||
|
||||
<dep>41.313</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.900</ind>
|
||||
|
||||
<dep>43.440</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>0.950</ind>
|
||||
|
||||
<dep>45.562</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
|
||||
<ind>1.000</ind>
|
||||
|
||||
<dep>47.681</dep>
|
||||
|
||||
</entry>
|
||||
|
||||
</PropertyList>
|
36
AI/Aircraft/M11/Effects/M1F-LightMap.eff
Normal file
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Lighting of Tail, Flanks and Windows -->
|
||||
<PropertyList>
|
||||
<name>M1F-LightMap</name>
|
||||
<inherits-from>Effects/model-combined-deferred</inherits-from>
|
||||
<parameters>
|
||||
<normalmap-enabled type="int">0</normalmap-enabled>
|
||||
<reflection-enabled type="int">0</reflection-enabled>
|
||||
<reflection-dynamic type="int">0</reflection-dynamic>
|
||||
<reflect_map-enabled type="int">0</reflect_map-enabled>
|
||||
<reflection-correction type="float">0</reflection-correction>
|
||||
<!-- Enable 3 colors RGB LigntMap -->
|
||||
<lightmap-enabled type="int"><use>/environment/lightmap-factor</use></lightmap-enabled>
|
||||
<lightmap-multi type="int">1</lightmap-multi>
|
||||
<!-- Red Channel (Tail) - Night Activation and Color -->
|
||||
<lightmap-factor type="float" n="0">1</lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
<!-- Green Channel (Windows) Multiplying Factor and Color -->
|
||||
<lightmap-factor type="float" n="1">1.3</lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="1">1.0 1.0 1.0</lightmap-color>
|
||||
<!-- Blue Channel (OFF) Multiplying Factor and Color -->
|
||||
<lightmap-factor type="float" n="2">0</lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="2">1.0 1.0 1.0</lightmap-color>
|
||||
<!-- Alpha Channel (OFF) Multiplying Factor and Color -->
|
||||
<lightmap-factor type="float" n="3">0.0</lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="3">1.0 1.0 1.0</lightmap-color>
|
||||
<!-- LightMap Image Location -->
|
||||
<texture n="3">
|
||||
<image>AI/Aircraft/M11/Effects/M1F-LightMap.png</image>
|
||||
<filter>linear-mipmap-linear</filter>
|
||||
<wrap-s>clamp</wrap-s>
|
||||
<wrap-t>clamp</wrap-t>
|
||||
<internal-format>normalized</internal-format>
|
||||
</texture>
|
||||
</parameters>
|
||||
</PropertyList>
|
BIN
AI/Aircraft/M11/Effects/M1F-LightMap.png
Normal file
After Width: | Height: | Size: 17 KiB |
121
AI/Aircraft/M11/Lights/M11-NavLights.xml
Normal file
|
@ -0,0 +1,121 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList>
|
||||
<!-- Position ALS Navigation Lights -->
|
||||
<model>
|
||||
<name>nav-right</name>
|
||||
<path>AI/Lights/procedural_light_nav_right.xml</path>
|
||||
<offsets>
|
||||
<x-m>8.76227</x-m>
|
||||
<y-m>25.2622</y-m>
|
||||
<z-m>5.05602</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<model>
|
||||
<name>nav-left</name>
|
||||
<path>AI/Lights/procedural_light_nav_left.xml</path>
|
||||
<offsets>
|
||||
<x-m>8.76227</x-m>
|
||||
<y-m>-25.2622</y-m>
|
||||
<z-m>5.05602</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<model>
|
||||
<name>nav-tail</name>
|
||||
<path>AI/Lights/procedural_light_nav_tail.xml</path>
|
||||
<offsets>
|
||||
<x-m>25.6177</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>6.51922</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<!-- Position ALS Strobes -->
|
||||
<model>
|
||||
<name>strobe-right</name>
|
||||
<path>AI/Lights/procedural_light_strobe_right.xml</path>
|
||||
<offsets>
|
||||
<x-m>12.1482</x-m>
|
||||
<y-m>25.8989</y-m>
|
||||
<z-m>7.158</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<model>
|
||||
<name>strobe-left</name>
|
||||
<path>AI/Lights/procedural_light_strobe_left.xml</path>
|
||||
<offsets>
|
||||
<x-m>12.1482</x-m>
|
||||
<y-m>-25.8989</y-m>
|
||||
<z-m>7.158</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<model>
|
||||
<name>strobe-tail</name>
|
||||
<path>AI/Lights/procedural_light_strobe_tail.xml</path>
|
||||
<offsets>
|
||||
<x-m>27.5</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>6.51922</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<!-- Position Beacons -->
|
||||
<model>
|
||||
<name>beacon-top</name>
|
||||
<path>AI/Lights/procedural_light_beacon_top.xml</path>
|
||||
<offsets>
|
||||
<x-m>-8.11963</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>8.31134</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<model>
|
||||
<name>beacon-bottom</name>
|
||||
<path>AI/Lights/procedural_light_beacon_bottom.xml</path>
|
||||
<offsets>
|
||||
<x-m>10.4795</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>2.23712</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
<!-- Group Lights for Shared Animations -->
|
||||
<animation>
|
||||
<name>StaticGrouped</name>
|
||||
<object-name>nav-right</object-name>
|
||||
<object-name>nav-left</object-name>
|
||||
<object-name>nav-tail</object-name>
|
||||
</animation>
|
||||
<animation>
|
||||
<name>StrobeGrouped</name>
|
||||
<object-name>strobe-right</object-name>
|
||||
<object-name>strobe-left</object-name>
|
||||
<object-name>strobe-tail</object-name>
|
||||
</animation>
|
||||
<animation>
|
||||
<name>BeaconGrouped</name>
|
||||
<object-name>beacon-top</object-name>
|
||||
<object-name>beacon-bottom</object-name>
|
||||
</animation>
|
||||
<!-- Show Static Lights & Beacons when aircraft is moving -->
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>StaticGrouped</object-name>
|
||||
<object-name>BeaconGrouped</object-name>
|
||||
<nopreview />
|
||||
<condition>
|
||||
<greater-than>
|
||||
<property>transponder-id</property>
|
||||
<value type="string">0</value>
|
||||
</greater-than>
|
||||
</condition>
|
||||
</animation>
|
||||
<!-- Show Strobes when Aircraft on runway or airborne -->
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>StrobeGrouped</object-name>
|
||||
<nopreview />
|
||||
<condition>
|
||||
<greater-than>
|
||||
<property>velocities/true-airspeed-kt</property>
|
||||
<value>40</value>
|
||||
</greater-than>
|
||||
</condition>
|
||||
</animation>
|
||||
</PropertyList>
|
9
AI/Aircraft/M11/M1F-Default.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList include="M1F-main.xml">
|
||||
|
||||
<texture-path>Textures/Default</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
9
AI/Aircraft/M11/M1F-FedEx.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList include="M1F-main.xml">
|
||||
|
||||
<texture-path>Textures/FedEx</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
9
AI/Aircraft/M11/M1F-LufthansaCargo.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList include="M1F-main.xml">
|
||||
|
||||
<texture-path>Textures/LufthansaCargo</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
9
AI/Aircraft/M11/M1F-UPS.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList include="M1F-main.xml">
|
||||
|
||||
<texture-path>Textures/UPS</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
27
AI/Aircraft/M11/M1F-main.xml
Normal file
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList>
|
||||
<description>McDonnell Douglas MD-11</description>
|
||||
<author>Ian (Yves) Tolosa, Nov 2018 - with parts of FDM model by jormapaappa1235, tikibar, and Joshua Davidson</author>
|
||||
<path>Models/M1F.ac</path>
|
||||
<!-- Gear Showed only < 170 knotspeed -->
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>Gear</object-name>
|
||||
<condition>
|
||||
<less-than>
|
||||
<property>velocities/true-airspeed-kt</property>
|
||||
<value>170</value>
|
||||
</less-than>
|
||||
</condition>
|
||||
</animation>
|
||||
<!-- Tail and Windows Lightmap Effect -->
|
||||
<effect>
|
||||
<inherits-from>AI/Aircraft/M11/Effects/M1F-LightMap</inherits-from>
|
||||
<object-name>M1F</object-name>
|
||||
<object-name>Gear</object-name>
|
||||
</effect>
|
||||
<!-- Add Navigation Lights Objects -->
|
||||
<model>
|
||||
<path>Lights/M11-NavLights.xml</path>
|
||||
</model>
|
||||
</PropertyList>
|
74469
AI/Aircraft/M11/Models/M1F.ac
Normal file
BIN
AI/Aircraft/M11/Paintkit/M1F-Paintkit.png
Normal file
After Width: | Height: | Size: 554 KiB |
BIN
AI/Aircraft/M11/Paintkit/M1F-UV-mapt.png
Normal file
After Width: | Height: | Size: 356 KiB |
BIN
AI/Aircraft/M11/Textures/Default/M1F-tex.png
Normal file
After Width: | Height: | Size: 71 KiB |
BIN
AI/Aircraft/M11/Textures/FedEx/M1F-tex.png
Normal file
After Width: | Height: | Size: 107 KiB |
BIN
AI/Aircraft/M11/Textures/LufthansaCargo/M1F-tex.png
Normal file
After Width: | Height: | Size: 101 KiB |
BIN
AI/Aircraft/M11/Textures/UPS/M1F-tex.png
Normal file
After Width: | Height: | Size: 110 KiB |
45418
AI/Aircraft/MiG-21bis/Models/MiG-21bis-lowpoly.ac
Normal file
BIN
AI/Aircraft/MiG-21bis/Models/MiG-21bis-model-atlas-0.png
Normal file
After Width: | Height: | Size: 187 KiB |
1019
AI/Aircraft/MiG-21bis/Models/MiG-21bis.xml
Normal file
594
AI/Aircraft/T-38/Models/F-5.xml
Normal file
|
@ -0,0 +1,594 @@
|
|||
<!-- A wrapper file for the T-38 3D model -->
|
||||
|
||||
<PropertyList>
|
||||
<path>T38.ac</path>
|
||||
|
||||
<!-- no shadows -->
|
||||
<animation>
|
||||
<type>noshadow</type>
|
||||
<object-name>markings</object-name>
|
||||
<object-name>left_flame</object-name>
|
||||
<object-name>left_internal_flame</object-name>
|
||||
<object-name>right_flame</object-name>
|
||||
<object-name>right_internal_flame</object-name>
|
||||
<object-name>red_light</object-name>
|
||||
<object-name>green_light</object-name>
|
||||
<object-name>lhcondensation cone</object-name>
|
||||
<object-name>rhcondensation cone</object-name>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<!--<object-name>left_flame</object-name>-->
|
||||
<object-name>left_internal_flame</object-name>
|
||||
<condition>
|
||||
<property>engines/engine[0]/augmentation</property>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<!--<object-name>right_flame</object-name>-->
|
||||
<object-name>right_internal_flame</object-name>
|
||||
<condition>
|
||||
<property>engines/engine[1]/augmentation</property>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>nose_wheel</object-name>
|
||||
<object-name>front_lower_strut</object-name>
|
||||
<object-name>front_upper_strut</object-name>
|
||||
<object-name>front_fwd_strut</object-name>
|
||||
<condition>
|
||||
<greater-than>
|
||||
<property>gear/gear[0]/position-norm</property>
|
||||
<value>0</value>
|
||||
</greater-than>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<!-- oleo hack -->
|
||||
<animation>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>gear/gear[0]/position-norm</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</condition>
|
||||
<type>translate</type>
|
||||
<object-name>nose_wheel</object-name>
|
||||
<object-name>front_lower_strut</object-name>
|
||||
<property>gear/gear[0]/compression-norm</property>
|
||||
<factor>0.3048</factor> <!-- feet to meters -->
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>1</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>nose_wheel</object-name>
|
||||
<object-name>front_lower_strut</object-name>
|
||||
<property>surface-positions/rudder-pos-norm</property>
|
||||
<factor>-25</factor>
|
||||
<center>
|
||||
<x-m>-6.26</x-m>
|
||||
<y-m>0.0</y-m>
|
||||
<z-m>0.03</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>1</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>nose_wheel</object-name>
|
||||
<object-name>front_lower_strut</object-name>
|
||||
<object-name>front_upper_strut</object-name>
|
||||
<object-name>front_fwd_strut</object-name>
|
||||
<property>gear/gear[0]/position-norm</property>
|
||||
<factor>-130</factor>
|
||||
<offset-deg>130</offset-deg>
|
||||
<min-deg>0</min-deg>
|
||||
<max-deg>90</max-deg>
|
||||
<center>
|
||||
<x-m>-6.26</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>0.03</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>front_fwd_strut</object-name>
|
||||
<property>gear/gear[0]/position-norm</property>
|
||||
<factor>150</factor>
|
||||
<offset-deg>-150</offset-deg>
|
||||
<center>
|
||||
<x-m>-6.28</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>-0.38</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>front_door_aft</object-name>
|
||||
<property>gear/gear[0]/position-norm</property>
|
||||
<factor>-88</factor>
|
||||
<offset-deg>88</offset-deg>
|
||||
<center>
|
||||
<x-m>-6.19</x-m>
|
||||
<y-m>0.0</y-m>
|
||||
<z-m>-0.19</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>front_door_fwd</object-name>
|
||||
<property>gear/gear[0]/position-norm</property>
|
||||
<factor>200</factor>
|
||||
<offset-deg>-90</offset-deg>
|
||||
<min-deg>-90</min-deg>
|
||||
<max-deg>2</max-deg>
|
||||
<center>
|
||||
<x-m>-6.945</x-m>
|
||||
<y-m>0.11</y-m>
|
||||
<z-m>-0.16</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0.999115</x>
|
||||
<y>0</y>
|
||||
<z>-0.042068</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>leftgear</object-name>
|
||||
<object-name>left_lower_strut</object-name>
|
||||
<object-name>left_upper_strut</object-name>
|
||||
<object-name>left_inner_strut</object-name>
|
||||
<condition>
|
||||
<greater-than>
|
||||
<property>gear/gear[1]/position-norm</property>
|
||||
<value>0</value>
|
||||
</greater-than>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>leftgear</object-name>
|
||||
<object-name>left_lower_strut</object-name>
|
||||
<object-name>left_upper_strut</object-name>
|
||||
<object-name>left_inner_strut</object-name>
|
||||
<property>gear/gear[1]/position-norm</property>
|
||||
<factor>130</factor>
|
||||
<offset-deg>-100</offset-deg>
|
||||
<min-deg>-90</min-deg>
|
||||
<max-deg>0</max-deg>
|
||||
<center>
|
||||
<x-m>0.385</x-m>
|
||||
<y-m>-1.6</y-m>
|
||||
<z-m>-0.08</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>-1</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>left_inner_strut</object-name>
|
||||
<property>gear/gear[1]/position-norm</property>
|
||||
<factor>195</factor>
|
||||
<offset-deg>-130</offset-deg>
|
||||
<min-deg>-140</min-deg>
|
||||
<max-deg>0</max-deg>
|
||||
<center>
|
||||
<x-m>0.445</x-m>
|
||||
<y-m>-1.54</y-m>
|
||||
<z-m>-0.26</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>1</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<!-- oleo hack -->
|
||||
<animation>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>gear/gear[1]/position-norm</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</condition>
|
||||
<type>translate</type>
|
||||
<object-name>leftgear</object-name>
|
||||
<object-name>left_lower_strut</object-name>
|
||||
<object-name>left_inner_strut</object-name>
|
||||
<property>gear/gear[1]/compression-norm</property>
|
||||
<factor>0.3048</factor> <!-- feet to meters -->
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>1</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>leftgeardoor</object-name>
|
||||
<property>gear/gear[1]/position-norm</property>
|
||||
<factor>-450</factor>
|
||||
<offset-deg>90</offset-deg>
|
||||
<min-deg>0</min-deg>
|
||||
<max-deg>90</max-deg>
|
||||
<center>
|
||||
<x-m>0.390</x-m>
|
||||
<y-m>-0.15</y-m>
|
||||
<z-m>-0.17</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>-1</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>leftgeardoor2</object-name>
|
||||
<object-name>leftgeardoor2_inside</object-name>
|
||||
<property>gear/gear[1]/position-norm</property>
|
||||
<factor>130</factor>
|
||||
<offset-deg>-95</offset-deg>
|
||||
<min-deg>-90</min-deg>
|
||||
<max-deg>0</max-deg>
|
||||
<center>
|
||||
<x-m>0.385</x-m>
|
||||
<y-m>-1.7</y-m>
|
||||
<z-m>-0.03</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>-1</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>rightgear</object-name>
|
||||
<object-name>right_lower_strut</object-name>
|
||||
<object-name>right_upper_strut</object-name>
|
||||
<object-name>right_inner_strut</object-name>
|
||||
<condition>
|
||||
<greater-than>
|
||||
<property>gear/gear[2]/position-norm</property>
|
||||
<value>0</value>
|
||||
</greater-than>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>rightgear</object-name>
|
||||
<object-name>right_lower_strut</object-name>
|
||||
<object-name>right_upper_strut</object-name>
|
||||
<object-name>right_inner_strut</object-name>
|
||||
<property>gear/gear[2]/position-norm</property>
|
||||
<factor>-130</factor>
|
||||
<offset-deg>100</offset-deg>
|
||||
<min-deg>0</min-deg>
|
||||
<max-deg>90</max-deg>
|
||||
<center>
|
||||
<x-m>0.385</x-m>
|
||||
<y-m>1.6</y-m>
|
||||
<z-m>-0.01</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>-1</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>right_inner_strut</object-name>
|
||||
<property>gear/gear[2]/position-norm</property>
|
||||
<factor>-195</factor>
|
||||
<offset-deg>135</offset-deg>
|
||||
<min-deg>0</min-deg>
|
||||
<max-deg>140</max-deg>
|
||||
<center>
|
||||
<x-m>0.445</x-m>
|
||||
<y-m>1.54</y-m>
|
||||
<z-m>-0.26</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>1</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<!-- oleo hack -->
|
||||
<animation>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>gear/gear[2]/position-norm</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</condition>
|
||||
<type>translate</type>
|
||||
<object-name>rightgear</object-name>
|
||||
<object-name>right_lower_strut</object-name>
|
||||
<object-name>right_inner_strut</object-name>
|
||||
<property>gear/gear[2]/compression-norm</property>
|
||||
<factor>0.3048</factor> <!-- feet to meters -->
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>1</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>rightgeardoor</object-name>
|
||||
<property>gear/gear[2]/position-norm</property>
|
||||
<factor>450</factor>
|
||||
<offset-deg>-100</offset-deg>
|
||||
<min-deg>-90</min-deg>
|
||||
<max-deg>0</max-deg>
|
||||
<center>
|
||||
<x-m>0.390</x-m>
|
||||
<y-m>0.15</y-m>
|
||||
<z-m>-0.17</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>-1</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>rightgeardoor2</object-name>
|
||||
<property>gear/gear[2]/position-norm</property>
|
||||
<factor>-130</factor>
|
||||
<offset-deg>95</offset-deg>
|
||||
<min-deg>0</min-deg>
|
||||
<max-deg>90</max-deg>
|
||||
<center>
|
||||
<x-m>0.385</x-m>
|
||||
<y-m>1.7</y-m>
|
||||
<z-m>-0.03</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>-1</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>leftelevator</object-name>
|
||||
<property>surface-positions/elevator-pos-norm</property>
|
||||
<factor>15</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<center>
|
||||
<x-m>3.11</x-m>
|
||||
<y-m>-1.515</y-m>
|
||||
<z-m>-0.07</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>-0.176858</x>
|
||||
<y>0.979034</y>
|
||||
<z>0.101062</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>rightelevator</object-name>
|
||||
<property>surface-positions/elevator-pos-norm</property>
|
||||
<factor>-15</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<center>
|
||||
<x-m>3.31</x-m>
|
||||
<y-m>1.515</y-m>
|
||||
<z-m>-0.07</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>-0.176858</x>
|
||||
<y>-0.979034</y>
|
||||
<z>0.101062</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>leftaileron</object-name>
|
||||
<property>surface-positions/left-aileron-pos-norm</property>
|
||||
<factor>15</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<center>
|
||||
<x-m>0.75</x-m>
|
||||
<y-m>-2.555</y-m>
|
||||
<z-m>0.02</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>rightaileron</object-name>
|
||||
<property>surface-positions/right-aileron-pos-norm</property>
|
||||
<factor>15</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<center>
|
||||
<x-m>0.75</x-m>
|
||||
<y-m>2.555</y-m>
|
||||
<z-m>0.02</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>rudder</object-name>
|
||||
<property>surface-positions/rudder-pos-norm</property>
|
||||
<factor>15</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<center>
|
||||
<x-m>3.65</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>1.285</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>1</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>leftflap</object-name>
|
||||
<property>surface-positions/flap-pos-norm</property>
|
||||
<factor>40</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<center>
|
||||
<x-m>0.75</x-m>
|
||||
<y-m>-1.44</y-m>
|
||||
<z-m>0.02</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>rightflap</object-name>
|
||||
<property>surface-positions/flap-pos-norm</property>
|
||||
<factor>40</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<center>
|
||||
<x-m>0.75</x-m>
|
||||
<y-m>1.44</y-m>
|
||||
<z-m>0.02</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>lhcondensation cone</object-name>
|
||||
<condition>
|
||||
<greater-than>
|
||||
<property>orientation/alpha-deg</property>
|
||||
<value>9.0</value>
|
||||
</greater-than>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>rhcondensation cone</object-name>
|
||||
<condition>
|
||||
<greater-than>
|
||||
<property>orientation/alpha-deg</property>
|
||||
<value>9.0</value>
|
||||
</greater-than>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>rhspeedbrake</object-name>
|
||||
<object-name>rhspeedbrake_ext</object-name>
|
||||
<property>surface-positions/speedbrake-pos-norm</property>
|
||||
<factor>70</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<center>
|
||||
<x-m>-0.66</x-m>
|
||||
<y-m>-0.535</y-m>
|
||||
<z-m>-0.14</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>lhspeedbrake</object-name>
|
||||
<object-name>lhspeedbrake_ext</object-name>
|
||||
<property>surface-positions/speedbrake-pos-norm</property>
|
||||
<factor>70</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<center>
|
||||
<x-m>-0.66</x-m>
|
||||
<y-m>0.535</y-m>
|
||||
<z-m>-0.14</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
|
||||
</PropertyList>
|
||||
|
594
AI/Aircraft/T-38/Models/T38-model.xml
Normal file
|
@ -0,0 +1,594 @@
|
|||
<!-- A wrapper file for the T-38 3D model -->
|
||||
|
||||
<PropertyList>
|
||||
<path>T38.ac</path>
|
||||
|
||||
<!-- no shadows -->
|
||||
<animation>
|
||||
<type>noshadow</type>
|
||||
<object-name>markings</object-name>
|
||||
<object-name>left_flame</object-name>
|
||||
<object-name>left_internal_flame</object-name>
|
||||
<object-name>right_flame</object-name>
|
||||
<object-name>right_internal_flame</object-name>
|
||||
<object-name>red_light</object-name>
|
||||
<object-name>green_light</object-name>
|
||||
<object-name>lhcondensation cone</object-name>
|
||||
<object-name>rhcondensation cone</object-name>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<!--<object-name>left_flame</object-name>-->
|
||||
<object-name>left_internal_flame</object-name>
|
||||
<condition>
|
||||
<property>engines/engine[0]/augmentation</property>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<!--<object-name>right_flame</object-name>-->
|
||||
<object-name>right_internal_flame</object-name>
|
||||
<condition>
|
||||
<property>engines/engine[1]/augmentation</property>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>nose_wheel</object-name>
|
||||
<object-name>front_lower_strut</object-name>
|
||||
<object-name>front_upper_strut</object-name>
|
||||
<object-name>front_fwd_strut</object-name>
|
||||
<condition>
|
||||
<greater-than>
|
||||
<property>gear/gear[0]/position-norm</property>
|
||||
<value>0</value>
|
||||
</greater-than>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<!-- oleo hack -->
|
||||
<animation>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>gear/gear[0]/position-norm</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</condition>
|
||||
<type>translate</type>
|
||||
<object-name>nose_wheel</object-name>
|
||||
<object-name>front_lower_strut</object-name>
|
||||
<property>gear/gear[0]/compression-norm</property>
|
||||
<factor>0.3048</factor> <!-- feet to meters -->
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>1</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>nose_wheel</object-name>
|
||||
<object-name>front_lower_strut</object-name>
|
||||
<property>surface-positions/rudder-pos-norm</property>
|
||||
<factor>-25</factor>
|
||||
<center>
|
||||
<x-m>-6.26</x-m>
|
||||
<y-m>0.0</y-m>
|
||||
<z-m>0.03</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>1</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>nose_wheel</object-name>
|
||||
<object-name>front_lower_strut</object-name>
|
||||
<object-name>front_upper_strut</object-name>
|
||||
<object-name>front_fwd_strut</object-name>
|
||||
<property>gear/gear[0]/position-norm</property>
|
||||
<factor>-130</factor>
|
||||
<offset-deg>130</offset-deg>
|
||||
<min-deg>0</min-deg>
|
||||
<max-deg>90</max-deg>
|
||||
<center>
|
||||
<x-m>-6.26</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>0.03</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>front_fwd_strut</object-name>
|
||||
<property>gear/gear[0]/position-norm</property>
|
||||
<factor>150</factor>
|
||||
<offset-deg>-150</offset-deg>
|
||||
<center>
|
||||
<x-m>-6.28</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>-0.38</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>front_door_aft</object-name>
|
||||
<property>gear/gear[0]/position-norm</property>
|
||||
<factor>-88</factor>
|
||||
<offset-deg>88</offset-deg>
|
||||
<center>
|
||||
<x-m>-6.19</x-m>
|
||||
<y-m>0.0</y-m>
|
||||
<z-m>-0.19</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>front_door_fwd</object-name>
|
||||
<property>gear/gear[0]/position-norm</property>
|
||||
<factor>200</factor>
|
||||
<offset-deg>-90</offset-deg>
|
||||
<min-deg>-90</min-deg>
|
||||
<max-deg>2</max-deg>
|
||||
<center>
|
||||
<x-m>-6.945</x-m>
|
||||
<y-m>0.11</y-m>
|
||||
<z-m>-0.16</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0.999115</x>
|
||||
<y>0</y>
|
||||
<z>-0.042068</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>leftgear</object-name>
|
||||
<object-name>left_lower_strut</object-name>
|
||||
<object-name>left_upper_strut</object-name>
|
||||
<object-name>left_inner_strut</object-name>
|
||||
<condition>
|
||||
<greater-than>
|
||||
<property>gear/gear[1]/position-norm</property>
|
||||
<value>0</value>
|
||||
</greater-than>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>leftgear</object-name>
|
||||
<object-name>left_lower_strut</object-name>
|
||||
<object-name>left_upper_strut</object-name>
|
||||
<object-name>left_inner_strut</object-name>
|
||||
<property>gear/gear[1]/position-norm</property>
|
||||
<factor>130</factor>
|
||||
<offset-deg>-100</offset-deg>
|
||||
<min-deg>-90</min-deg>
|
||||
<max-deg>0</max-deg>
|
||||
<center>
|
||||
<x-m>0.385</x-m>
|
||||
<y-m>-1.6</y-m>
|
||||
<z-m>-0.08</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>-1</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>left_inner_strut</object-name>
|
||||
<property>gear/gear[1]/position-norm</property>
|
||||
<factor>195</factor>
|
||||
<offset-deg>-130</offset-deg>
|
||||
<min-deg>-140</min-deg>
|
||||
<max-deg>0</max-deg>
|
||||
<center>
|
||||
<x-m>0.445</x-m>
|
||||
<y-m>-1.54</y-m>
|
||||
<z-m>-0.26</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>1</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<!-- oleo hack -->
|
||||
<animation>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>gear/gear[1]/position-norm</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</condition>
|
||||
<type>translate</type>
|
||||
<object-name>leftgear</object-name>
|
||||
<object-name>left_lower_strut</object-name>
|
||||
<object-name>left_inner_strut</object-name>
|
||||
<property>gear/gear[1]/compression-norm</property>
|
||||
<factor>0.3048</factor> <!-- feet to meters -->
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>1</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>leftgeardoor</object-name>
|
||||
<property>gear/gear[1]/position-norm</property>
|
||||
<factor>-450</factor>
|
||||
<offset-deg>90</offset-deg>
|
||||
<min-deg>0</min-deg>
|
||||
<max-deg>90</max-deg>
|
||||
<center>
|
||||
<x-m>0.390</x-m>
|
||||
<y-m>-0.15</y-m>
|
||||
<z-m>-0.17</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>-1</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>leftgeardoor2</object-name>
|
||||
<object-name>leftgeardoor2_inside</object-name>
|
||||
<property>gear/gear[1]/position-norm</property>
|
||||
<factor>130</factor>
|
||||
<offset-deg>-95</offset-deg>
|
||||
<min-deg>-90</min-deg>
|
||||
<max-deg>0</max-deg>
|
||||
<center>
|
||||
<x-m>0.385</x-m>
|
||||
<y-m>-1.7</y-m>
|
||||
<z-m>-0.03</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>-1</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>rightgear</object-name>
|
||||
<object-name>right_lower_strut</object-name>
|
||||
<object-name>right_upper_strut</object-name>
|
||||
<object-name>right_inner_strut</object-name>
|
||||
<condition>
|
||||
<greater-than>
|
||||
<property>gear/gear[2]/position-norm</property>
|
||||
<value>0</value>
|
||||
</greater-than>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>rightgear</object-name>
|
||||
<object-name>right_lower_strut</object-name>
|
||||
<object-name>right_upper_strut</object-name>
|
||||
<object-name>right_inner_strut</object-name>
|
||||
<property>gear/gear[2]/position-norm</property>
|
||||
<factor>-130</factor>
|
||||
<offset-deg>100</offset-deg>
|
||||
<min-deg>0</min-deg>
|
||||
<max-deg>90</max-deg>
|
||||
<center>
|
||||
<x-m>0.385</x-m>
|
||||
<y-m>1.6</y-m>
|
||||
<z-m>-0.01</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>-1</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>right_inner_strut</object-name>
|
||||
<property>gear/gear[2]/position-norm</property>
|
||||
<factor>-195</factor>
|
||||
<offset-deg>135</offset-deg>
|
||||
<min-deg>0</min-deg>
|
||||
<max-deg>140</max-deg>
|
||||
<center>
|
||||
<x-m>0.445</x-m>
|
||||
<y-m>1.54</y-m>
|
||||
<z-m>-0.26</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>1</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<!-- oleo hack -->
|
||||
<animation>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>gear/gear[2]/position-norm</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</condition>
|
||||
<type>translate</type>
|
||||
<object-name>rightgear</object-name>
|
||||
<object-name>right_lower_strut</object-name>
|
||||
<object-name>right_inner_strut</object-name>
|
||||
<property>gear/gear[2]/compression-norm</property>
|
||||
<factor>0.3048</factor> <!-- feet to meters -->
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>1</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>rightgeardoor</object-name>
|
||||
<property>gear/gear[2]/position-norm</property>
|
||||
<factor>450</factor>
|
||||
<offset-deg>-100</offset-deg>
|
||||
<min-deg>-90</min-deg>
|
||||
<max-deg>0</max-deg>
|
||||
<center>
|
||||
<x-m>0.390</x-m>
|
||||
<y-m>0.15</y-m>
|
||||
<z-m>-0.17</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>-1</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>rightgeardoor2</object-name>
|
||||
<property>gear/gear[2]/position-norm</property>
|
||||
<factor>-130</factor>
|
||||
<offset-deg>95</offset-deg>
|
||||
<min-deg>0</min-deg>
|
||||
<max-deg>90</max-deg>
|
||||
<center>
|
||||
<x-m>0.385</x-m>
|
||||
<y-m>1.7</y-m>
|
||||
<z-m>-0.03</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>-1</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>leftelevator</object-name>
|
||||
<property>surface-positions/elevator-pos-norm</property>
|
||||
<factor>15</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<center>
|
||||
<x-m>3.11</x-m>
|
||||
<y-m>-1.515</y-m>
|
||||
<z-m>-0.07</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>-0.176858</x>
|
||||
<y>0.979034</y>
|
||||
<z>0.101062</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>rightelevator</object-name>
|
||||
<property>surface-positions/elevator-pos-norm</property>
|
||||
<factor>-15</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<center>
|
||||
<x-m>3.31</x-m>
|
||||
<y-m>1.515</y-m>
|
||||
<z-m>-0.07</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>-0.176858</x>
|
||||
<y>-0.979034</y>
|
||||
<z>0.101062</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>leftaileron</object-name>
|
||||
<property>surface-positions/left-aileron-pos-norm</property>
|
||||
<factor>15</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<center>
|
||||
<x-m>0.75</x-m>
|
||||
<y-m>-2.555</y-m>
|
||||
<z-m>0.02</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>rightaileron</object-name>
|
||||
<property>surface-positions/right-aileron-pos-norm</property>
|
||||
<factor>15</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<center>
|
||||
<x-m>0.75</x-m>
|
||||
<y-m>2.555</y-m>
|
||||
<z-m>0.02</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>rudder</object-name>
|
||||
<property>surface-positions/rudder-pos-norm</property>
|
||||
<factor>15</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<center>
|
||||
<x-m>3.65</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>1.285</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>1</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>leftflap</object-name>
|
||||
<property>surface-positions/flap-pos-norm</property>
|
||||
<factor>40</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<center>
|
||||
<x-m>0.75</x-m>
|
||||
<y-m>-1.44</y-m>
|
||||
<z-m>0.02</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>rightflap</object-name>
|
||||
<property>surface-positions/flap-pos-norm</property>
|
||||
<factor>40</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<center>
|
||||
<x-m>0.75</x-m>
|
||||
<y-m>1.44</y-m>
|
||||
<z-m>0.02</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>lhcondensation cone</object-name>
|
||||
<condition>
|
||||
<greater-than>
|
||||
<property>orientation/alpha-deg</property>
|
||||
<value>9.0</value>
|
||||
</greater-than>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>rhcondensation cone</object-name>
|
||||
<condition>
|
||||
<greater-than>
|
||||
<property>orientation/alpha-deg</property>
|
||||
<value>9.0</value>
|
||||
</greater-than>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>rhspeedbrake</object-name>
|
||||
<object-name>rhspeedbrake_ext</object-name>
|
||||
<property>surface-positions/speedbrake-pos-norm</property>
|
||||
<factor>70</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<center>
|
||||
<x-m>-0.66</x-m>
|
||||
<y-m>-0.535</y-m>
|
||||
<z-m>-0.14</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>lhspeedbrake</object-name>
|
||||
<object-name>lhspeedbrake_ext</object-name>
|
||||
<property>surface-positions/speedbrake-pos-norm</property>
|
||||
<factor>70</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<center>
|
||||
<x-m>-0.66</x-m>
|
||||
<y-m>0.535</y-m>
|
||||
<z-m>-0.14</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
|
||||
</PropertyList>
|
||||
|
12648
AI/Aircraft/T-38/Models/T38.ac
Normal file
BIN
AI/Aircraft/T-38/Models/t38.rgb
Normal file
Before Width: | Height: | Size: 367 KiB After Width: | Height: | Size: 119 KiB |
|
@ -4,7 +4,7 @@
|
|||
<path>f-16_lowpoly.ac</path>
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>gear</object-name>
|
||||
<object-name>landing-gear</object-name>
|
||||
<condition>
|
||||
<greater-than>
|
||||
<property>gear/gear[0]/position-norm</property>
|
||||
|
|
|
@ -95,8 +95,9 @@
|
|||
<model n="219" type="string">AI/Aircraft/MD80/MD80-Iberia.xml</model>
|
||||
<model n="220" type="string">AI/Aircraft/MD90/MD90-JAL.xml</model>
|
||||
<model n="221" type="string">AI/Aircraft/tu154b/Model/tu154b-model.xml</model>
|
||||
<model n="222" type="string">AI/Aircraft/727/Models/727-200.xml</model>
|
||||
|
||||
<!-- 251-300 Twin engined wide body jet airliners -->
|
||||
<!-- 251-300 Twin engined wide body jet airliners -->
|
||||
<model n="251" type="string">AI/Aircraft/767/767-JAL.xml</model>
|
||||
<model n="252" type="string">AI/Aircraft/777/777-AirFrance.xml</model>
|
||||
<model n="253" type="string">AI/Aircraft/787/788-Qatar.xml</model>
|
||||
|
@ -140,6 +141,12 @@
|
|||
<model n="514" type="string">AI/Aircraft/f-14b/Models/f-14b.xml</model>
|
||||
<model n="515" type="string">AI/Aircraft/F-15/Models/F-15.xml</model>
|
||||
<model n="516" type="string">AI/Aircraft/f16/Models/f-16.xml</model>
|
||||
<model n="518" type="string">AI/Aircraft/F-18/Models/F-18.xml</model>
|
||||
<model n="519" type="string">AI/Aircraft/F-4/F-4.xml</model>
|
||||
<model n="520" type="string">AI/Aircraft/T-38/Models/T38-model.xml</model> <!-- T-38 is 520-->
|
||||
<model n="521" type="string">AI/Aircraft/MiG-21bis/Models/MiG-21bis.xml</model>
|
||||
<model n="522" type="string">AI/Aircraft/JA37/Models/JA-37.xml</model>
|
||||
<model n="525" type="string">AI/Aircraft/T-38/Models/F-5.xml</model>
|
||||
|
||||
<!-- 551-600 Military large aircraft (tankers, transports) -->
|
||||
<model n="551" type="string">AI/Aircraft/E-2C/Models/E-2C-model.xml</model>
|
||||
|
|
|
@ -184,6 +184,7 @@
|
|||
</aircraft>
|
||||
<alias>
|
||||
<match>74</match>
|
||||
<match>74N</match>
|
||||
<match>Boeing_74</match>
|
||||
<alias>747</alias>
|
||||
</alias>
|
||||
|
@ -339,6 +340,7 @@
|
|||
</aircraft>
|
||||
<alias>
|
||||
<match>MD11</match>
|
||||
<match>MF1</match>
|
||||
<alias>M11</alias>
|
||||
</alias>
|
||||
<!-- McDonnell Douglas 80 all versions -->
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- Author Ian (Yves) Tolosa - Timetable Week of 14 MAY 2018 - 747-8F mapped to 747-400ERF -->
|
||||
<!-- Author Ian (Yves) Tolosa - Timetable Week of 14 MAY 2018 -->
|
||||
<trafficlist>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-AirBridgeCargo.xml</model>
|
||||
|
@ -100,7 +100,7 @@
|
|||
<heavy>Yes</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-AirBridgeCargo.xml</model>
|
||||
<model>Aircraft/747/74N-AirBridgeCargo.xml</model>
|
||||
<livery>ABW</livery>
|
||||
<airline>ABW</airline>
|
||||
<home-port>UUEE</home-port>
|
||||
|
@ -114,7 +114,7 @@
|
|||
<heavy>Yes</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-AirBridgeCargo.xml</model>
|
||||
<model>Aircraft/747/74N-AirBridgeCargo.xml</model>
|
||||
<livery>ABW</livery>
|
||||
<airline>ABW</airline>
|
||||
<home-port>UUEE</home-port>
|
||||
|
@ -128,7 +128,7 @@
|
|||
<heavy>Yes</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-AirBridgeCargo.xml</model>
|
||||
<model>Aircraft/747/74N-AirBridgeCargo.xml</model>
|
||||
<livery>ABW</livery>
|
||||
<airline>ABW</airline>
|
||||
<home-port>UUEE</home-port>
|
||||
|
@ -142,7 +142,7 @@
|
|||
<heavy>Yes</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-AirBridgeCargo.xml</model>
|
||||
<model>Aircraft/747/74N-AirBridgeCargo.xml</model>
|
||||
<livery>ABW</livery>
|
||||
<airline>ABW</airline>
|
||||
<home-port>UUEE</home-port>
|
||||
|
@ -156,7 +156,7 @@
|
|||
<heavy>Yes</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-AirBridgeCargo.xml</model>
|
||||
<model>Aircraft/747/74N-AirBridgeCargo.xml</model>
|
||||
<livery>ABW</livery>
|
||||
<airline>ABW</airline>
|
||||
<home-port>UUEE</home-port>
|
||||
|
@ -170,7 +170,7 @@
|
|||
<heavy>Yes</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-AirBridgeCargo.xml</model>
|
||||
<model>Aircraft/747/74N-AirBridgeCargo.xml</model>
|
||||
<livery>ABW</livery>
|
||||
<airline>ABW</airline>
|
||||
<home-port>UUEE</home-port>
|
||||
|
@ -184,7 +184,7 @@
|
|||
<heavy>Yes</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-AirBridgeCargo.xml</model>
|
||||
<model>Aircraft/747/74N-AirBridgeCargo.xml</model>
|
||||
<livery>ABW</livery>
|
||||
<airline>ABW</airline>
|
||||
<home-port>UUEE</home-port>
|
||||
|
@ -198,7 +198,7 @@
|
|||
<heavy>Yes</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-AirBridgeCargo.xml</model>
|
||||
<model>Aircraft/747/74N-AirBridgeCargo.xml</model>
|
||||
<livery>ABW</livery>
|
||||
<airline>ABW</airline>
|
||||
<home-port>UUEE</home-port>
|
||||
|
@ -212,7 +212,7 @@
|
|||
<heavy>Yes</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-AirBridgeCargo.xml</model>
|
||||
<model>Aircraft/747/74N-AirBridgeCargo.xml</model>
|
||||
<livery>ABW</livery>
|
||||
<airline>ABW</airline>
|
||||
<home-port>UUEE</home-port>
|
||||
|
@ -226,7 +226,7 @@
|
|||
<heavy>Yes</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-AirBridgeCargo.xml</model>
|
||||
<model>Aircraft/747/74N-AirBridgeCargo.xml</model>
|
||||
<livery>ABW</livery>
|
||||
<airline>ABW</airline>
|
||||
<home-port>UUEE</home-port>
|
||||
|
@ -240,7 +240,7 @@
|
|||
<heavy>Yes</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-AirBridgeCargo.xml</model>
|
||||
<model>Aircraft/747/74N-AirBridgeCargo.xml</model>
|
||||
<livery>ABW</livery>
|
||||
<airline>ABW</airline>
|
||||
<home-port>UUEE</home-port>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- Author Ian (Yves) Tolosa - Weekly Timetable of 16 MAY 2018 - 747-8F mapped to 747-400F -->
|
||||
<!-- Author Ian (Yves) Tolosa - Weekly Timetable of 16 MAY 2018 -->
|
||||
<trafficlist>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-CargoLogicAir.xml</model>
|
||||
|
@ -30,7 +30,7 @@
|
|||
<heavy>Yes</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-CargoLogicAir.xml</model>
|
||||
<model>Aircraft/747/74N-CargoLogicAir.xml</model>
|
||||
<livery>CLU</livery>
|
||||
<airline>CLU</airline>
|
||||
<home-port>UUEE</home-port>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- Author Ian (Yves) Tolosa - timetable of AUG18 - Incl. CargoluxAlitalia - 74N mapped to 74Y -->
|
||||
<!-- Author Ian (Yves) Tolosa - timetable of AUG18 - Incl. CargoluxAlitalia -->
|
||||
<trafficlist>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-Cargolux.xml</model>
|
||||
<model>Aircraft/747/74N-Cargolux.xml</model>
|
||||
<livery>CLX</livery>
|
||||
<airline>CLX</airline>
|
||||
<home-port>ELLX</home-port>
|
||||
|
@ -16,7 +16,7 @@
|
|||
<heavy>true</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-Cargolux.xml</model>
|
||||
<model>Aircraft/747/74N-Cargolux.xml</model>
|
||||
<livery>CLX</livery>
|
||||
<airline>CLX</airline>
|
||||
<home-port>ELLX</home-port>
|
||||
|
@ -30,7 +30,7 @@
|
|||
<heavy>true</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-Cargolux.xml</model>
|
||||
<model>Aircraft/747/74N-Cargolux.xml</model>
|
||||
<livery>CLX</livery>
|
||||
<airline>CLX</airline>
|
||||
<home-port>ELLX</home-port>
|
||||
|
@ -44,7 +44,7 @@
|
|||
<heavy>true</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-Cargolux.xml</model>
|
||||
<model>Aircraft/747/74N-Cargolux.xml</model>
|
||||
<livery>CLX</livery>
|
||||
<airline>CLX</airline>
|
||||
<home-port>ELLX</home-port>
|
||||
|
@ -58,7 +58,7 @@
|
|||
<heavy>true</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-Cargolux.xml</model>
|
||||
<model>Aircraft/747/74N-Cargolux.xml</model>
|
||||
<livery>CLX</livery>
|
||||
<airline>CLX</airline>
|
||||
<home-port>ELLX</home-port>
|
||||
|
@ -72,7 +72,7 @@
|
|||
<heavy>true</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-Cargolux.xml</model>
|
||||
<model>Aircraft/747/74N-Cargolux.xml</model>
|
||||
<livery>CLX</livery>
|
||||
<airline>CLX</airline>
|
||||
<home-port>ELLX</home-port>
|
||||
|
@ -86,7 +86,7 @@
|
|||
<heavy>true</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-Cargolux.xml</model>
|
||||
<model>Aircraft/747/74N-Cargolux.xml</model>
|
||||
<livery>CLX</livery>
|
||||
<airline>CLX</airline>
|
||||
<home-port>ELLX</home-port>
|
||||
|
@ -100,7 +100,7 @@
|
|||
<heavy>true</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-Cargolux.xml</model>
|
||||
<model>Aircraft/747/74N-Cargolux.xml</model>
|
||||
<livery>CLX</livery>
|
||||
<airline>CLX</airline>
|
||||
<home-port>ELLX</home-port>
|
||||
|
@ -114,7 +114,7 @@
|
|||
<heavy>true</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-Cargolux.xml</model>
|
||||
<model>Aircraft/747/74N-Cargolux.xml</model>
|
||||
<livery>CLX</livery>
|
||||
<airline>CLX</airline>
|
||||
<home-port>ELLX</home-port>
|
||||
|
@ -128,7 +128,7 @@
|
|||
<heavy>true</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-Cargolux.xml</model>
|
||||
<model>Aircraft/747/74N-Cargolux.xml</model>
|
||||
<livery>CLX</livery>
|
||||
<airline>CLX</airline>
|
||||
<home-port>ELLX</home-port>
|
||||
|
@ -142,7 +142,7 @@
|
|||
<heavy>true</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-Cargolux.xml</model>
|
||||
<model>Aircraft/747/74N-Cargolux.xml</model>
|
||||
<livery>CLX</livery>
|
||||
<airline>CLX</airline>
|
||||
<home-port>ELLX</home-port>
|
||||
|
@ -156,7 +156,7 @@
|
|||
<heavy>true</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-Cargolux.xml</model>
|
||||
<model>Aircraft/747/74N-Cargolux.xml</model>
|
||||
<livery>CLX</livery>
|
||||
<airline>CLX</airline>
|
||||
<home-port>ELLX</home-port>
|
||||
|
@ -170,7 +170,7 @@
|
|||
<heavy>true</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-Cargolux.xml</model>
|
||||
<model>Aircraft/747/74N-Cargolux.xml</model>
|
||||
<livery>CLX</livery>
|
||||
<airline>CLX</airline>
|
||||
<home-port>ELLX</home-port>
|
||||
|
@ -184,7 +184,7 @@
|
|||
<heavy>true</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-Cargolux.xml</model>
|
||||
<model>Aircraft/747/74N-Cargolux.xml</model>
|
||||
<livery>CLX</livery>
|
||||
<airline>CLX</airline>
|
||||
<home-port>ELLX</home-port>
|
||||
|
|
|
@ -1,9 +1,5 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
|
||||
<!-- Author Marcin Kuzniar - Fleet & Timetable of NOV and DEC 2017 -->
|
||||
|
||||
|
||||
<trafficlist>
|
||||
<aircraft>
|
||||
<model>Aircraft/738/738-Norwegian.xml</model>
|
||||
|
@ -541,7 +537,7 @@
|
|||
<model>Aircraft/738/738-Norwegian.xml</model>
|
||||
<livery>NAX</livery>
|
||||
<airline>NAX</airline>
|
||||
<home-port>ENGM</home-port>
|
||||
<home-port>TFFR</home-port>
|
||||
<required-aircraft>NAX-738</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
|
@ -555,7 +551,7 @@
|
|||
<model>Aircraft/738/738-Norwegian.xml</model>
|
||||
<livery>NAX</livery>
|
||||
<airline>NAX</airline>
|
||||
<home-port>ENGM</home-port>
|
||||
<home-port>TFFR</home-port>
|
||||
<required-aircraft>NAX-738</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
|
@ -47298,7 +47294,7 @@
|
|||
<required-aircraft>NAX-738</required-aircraft>
|
||||
<fltrules>IFR</fltrules>
|
||||
<departure>
|
||||
<port>KFJK</port>
|
||||
<port>KJFK</port>
|
||||
<time>18:10:00</time>
|
||||
</departure>
|
||||
<cruise-alt>370</cruise-alt>
|
||||
|
@ -56039,5 +56035,3 @@
|
|||
<repeat>24Hr</repeat>
|
||||
</flight>
|
||||
</trafficlist>
|
||||
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
Hydrodynamics section for JSBSim.
|
||||
|
||||
Copyright (C) 2008 - 2017 Anders Gidenstam (anders(at)gidenstam.org)
|
||||
Copyright (C) 2008 - 2018 Anders Gidenstam (anders(at)gidenstam.org)
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -38,7 +38,7 @@
|
|||
- Fbz - local up (the same as -Z in the local frame).
|
||||
- Drag - opposing the relative water flow.
|
||||
- Side - 90 degrees right from the relative water flow in the surface plane.
|
||||
The moments are split into the hydrodynamic body frame channels
|
||||
The moments are split into the body frame channels
|
||||
(with the same sense as the normal body frame moments):
|
||||
- Pitch
|
||||
- Yaw
|
||||
|
@ -78,12 +78,13 @@
|
|||
Unused properties also have to be declared (and set to zero).
|
||||
|
||||
- Functions computing the moments in the hydrodynamic body frame.
|
||||
FIXME: Yaw is applied in the standard body frame.
|
||||
FIXME(?): All moments are applied in the standard body frame.
|
||||
- hydro/yaw-moment-lbsft
|
||||
- hydro/pitch-moment-lbsft
|
||||
- hydro/roll-moment-lbsft
|
||||
|
||||
Define the following external forces in the main FDM file of your aircraft:
|
||||
Define the following external forces and moments in the main FDM file of
|
||||
your aircraft:
|
||||
|
||||
<force name="hydro-X" frame="LOCAL">
|
||||
<location unit="M">
|
||||
|
@ -116,6 +117,31 @@
|
|||
</direction>
|
||||
</force>
|
||||
|
||||
<moment name="hydro-pitch" frame="BODY" unit="LBSFT">
|
||||
<direction>
|
||||
<x> 0.0 </x>
|
||||
<y> 1.0 </y>
|
||||
<z> 0.0 </z>
|
||||
</direction>
|
||||
</moment>
|
||||
<moment name="hydro-roll" frame="BODY" unit="LBSFT">
|
||||
<direction>
|
||||
<x> 1.0 </x>
|
||||
<y> 0.0 </y>
|
||||
<z> 0.0 </z>
|
||||
</direction>
|
||||
</moment>
|
||||
<moment name="hydro-yaw" frame="BODY" unit="LBSFT">
|
||||
<direction>
|
||||
<x> 0.0 </x>
|
||||
<y> 0.0 </y>
|
||||
<z> 1.0 </z>
|
||||
</direction>
|
||||
</moment>
|
||||
|
||||
The old deprecated force based external moment implementation below is still
|
||||
supported. Beware of reference frame differences for the moments.
|
||||
|
||||
<force name="hydro-pitch[0]" frame="LOCAL">
|
||||
<location unit="M">
|
||||
<x> HRP X - 0.3048 </x>
|
||||
|
@ -919,6 +945,11 @@
|
|||
|
||||
<channel name="Implementation Pitch Moment">
|
||||
|
||||
<pure_gain name="hydro/pitch-moment/moment-lbsft">
|
||||
<input>hydro/pitch-moment-lbsft</input>
|
||||
<gain>1.0</gain>
|
||||
<output>external_reactions/hydro-pitch/magnitude-lbsft</output>
|
||||
</pure_gain>
|
||||
<pure_gain name="hydro/pitch-moment/force-lbs[0]">
|
||||
<input> hydro/pitch-moment-lbsft </input>
|
||||
<gain> 0.5</gain>
|
||||
|
@ -934,6 +965,11 @@
|
|||
|
||||
<channel name="Implementation Roll Moment">
|
||||
|
||||
<pure_gain name="hydro/roll-moment/moment-lbsft">
|
||||
<input>hydro/roll-moment-lbsft</input>
|
||||
<gain>1.0</gain>
|
||||
<output>external_reactions/hydro-roll/magnitude-lbsft</output>
|
||||
</pure_gain>
|
||||
<pure_gain name="hydro/roll-moment/force-lbs[0]">
|
||||
<input> hydro/roll-moment-lbsft </input>
|
||||
<gain> 0.5</gain>
|
||||
|
@ -949,6 +985,11 @@
|
|||
|
||||
<channel name="Implementation Yaw Moment">
|
||||
|
||||
<pure_gain name="hydro/yaw-moment/moment-lbsft">
|
||||
<input>hydro/yaw-moment-lbsft</input>
|
||||
<gain>1.0</gain>
|
||||
<output>external_reactions/hydro-yaw/magnitude-lbsft</output>
|
||||
</pure_gain>
|
||||
<pure_gain name="hydro/yaw-moment/force-lbs[0]">
|
||||
<input> hydro/yaw-moment-lbsft </input>
|
||||
<gain> 0.5</gain>
|
||||
|
|
|
@ -59,9 +59,9 @@ var update_loop = func {
|
|||
|
||||
contactN.setBoolValue(refueling);
|
||||
|
||||
if (fuel_freeze)
|
||||
return settimer(update_loop, UPDATE_PERIOD);
|
||||
|
||||
if (fuel_freeze){
|
||||
return;
|
||||
}
|
||||
|
||||
# sum up consumed fuel
|
||||
var consumed = 0;
|
||||
|
@ -174,7 +174,6 @@ var update_loop = func {
|
|||
foreach (var e; engines)
|
||||
e.getNode("out-of-fuel", 1).setBoolValue(out_of_fuel);
|
||||
|
||||
aarTimer.restart(UPDATE_PERIOD);
|
||||
}
|
||||
|
||||
var aarTimer = maketimer(UPDATE_PERIOD, update_loop);
|
||||
|
|
|
@ -156,7 +156,7 @@ displayGUI : func(index, scale=1.0) {
|
|||
}
|
||||
|
||||
var mfd_canvas = me.displays[index].getCanvas();
|
||||
mfd_canvas.getCanvas().set("visible", visible);
|
||||
mfd_canvas.set("visible", 1);
|
||||
var gui = fg1000.GUI.new(me.displays[index], mfd_canvas, index, scale);
|
||||
},
|
||||
|
||||
|
|
|
@ -103,7 +103,8 @@ var GUI =
|
|||
device_id : device_id,
|
||||
};
|
||||
|
||||
obj.window = canvas.Window.new([obj.scale*obj.width,obj.scale*obj.height],"dialog").set('title',"FG1000 MFD" ~ device_id);
|
||||
obj.window = canvas.Window.new([obj.scale*obj.width,obj.scale*obj.height],"dialog");
|
||||
obj.window.set('title',"FG1000 Device " ~ device_id ~ " (" ~ int(scale * 100) ~ "%)");
|
||||
|
||||
obj.window.del = func() {
|
||||
# Over-ride the window.del function so we clean up when the user closes the window
|
||||
|
|
636
Aircraft/Instruments-3d/ISFD/ISFD.nas
Normal file
|
@ -0,0 +1,636 @@
|
|||
|
||||
|
||||
var nasal_dir = getprop("/sim/fg-root") ~ "/Aircraft/Instruments-3d/ISFD/";
|
||||
io.load_nasal(nasal_dir ~ 'ISFD_gui.nas', "isfd");
|
||||
io.load_nasal(nasal_dir ~ 'ISFDGenericController.nas', "isfd");
|
||||
|
||||
# main wrapper object
|
||||
var ISFD = {
|
||||
|
||||
baseSize: 512,
|
||||
halfSize: 256,
|
||||
hsiHeight: 358,
|
||||
hsiWidth: 306,
|
||||
speedTapeWidth: 92,
|
||||
altTapeWidth: 114,
|
||||
pitchLadderDegreeSpacing: 8,
|
||||
rollBaseRadius: 160,
|
||||
roseRadius: 512,
|
||||
boxHeight: 48,
|
||||
|
||||
new : func() {
|
||||
var obj = {
|
||||
parents : [ISFD],
|
||||
_mode : ''
|
||||
};
|
||||
|
||||
ISFD.hsiLeft = ISFD.speedTapeWidth - ISFD.halfSize;
|
||||
ISFD.hsiXCenter = ISFD.hsiLeft + ISFD.hsiWidth/2;
|
||||
ISFD.hsiRight = ISFD.halfSize - ISFD.altTapeWidth;
|
||||
ISFD.hsiBottom = ISFD.hsiHeight/2;
|
||||
ISFD.modeBoxHeight = (ISFD.baseSize - ISFD.hsiHeight)/2;
|
||||
|
||||
obj.canvas = canvas.new({
|
||||
"name" : "ISFD Canvas",
|
||||
"size" : [ISFD.baseSize, ISFD.baseSize],
|
||||
"view" : [ISFD.baseSize, ISFD.baseSize],
|
||||
"mipmapping": 0,
|
||||
});
|
||||
|
||||
obj.root = obj.canvas.createGroup();
|
||||
# centering transform
|
||||
obj.root.setTranslation(ISFD.halfSize, ISFD.halfSize);
|
||||
|
||||
obj._controller = isfd.GenericController.new();
|
||||
obj.createContents();
|
||||
obj._updateTimer = maketimer(0.05, func obj.update(); );
|
||||
obj._updateTimer.start();
|
||||
|
||||
return obj;
|
||||
},
|
||||
|
||||
del: func()
|
||||
{
|
||||
print('Deleting ISFD');
|
||||
me._updateTimer.stop();
|
||||
},
|
||||
|
||||
# display the ISFD canvas on the specified object
|
||||
display : func(target_object) {
|
||||
me.canvas.addPlacement({"node": target_object});
|
||||
},
|
||||
|
||||
displayGUI : func(my_isfd, scale=1.0) {
|
||||
var gui = isfd.GUI.new(my_isfd, my_isfd.canvas, scale);
|
||||
},
|
||||
|
||||
createContents : func()
|
||||
{
|
||||
me.createPitchLadder();
|
||||
me.createRollTicks();
|
||||
me.createCompassRose();
|
||||
me.createAltitudeTape();
|
||||
me.createSpeedTape();
|
||||
|
||||
me.createSpeedBox();
|
||||
me.createAltitudeBox();
|
||||
|
||||
me.createAltimeterSetting();
|
||||
# mach readout - not on the B737 model?
|
||||
me.createModeText();
|
||||
|
||||
# if ILS is tuned!
|
||||
# glideslope marker
|
||||
# localizer marker
|
||||
|
||||
me.createAirplaneMarker();
|
||||
|
||||
},
|
||||
|
||||
createAirplaneMarker : func()
|
||||
{
|
||||
var markerGroup = me.root.createChild("group", "airplane-indicator-group");
|
||||
markerGroup.setTranslation(ISFD.hsiXCenter, 0);
|
||||
|
||||
var m = markerGroup.createChild("path", "airplane-indicator");
|
||||
m.setColorFill(0, 0, 0);
|
||||
m.setStrokeLineWidth(2);
|
||||
m.setColor(1, 1, 1);
|
||||
|
||||
var markerWidth = 8;
|
||||
var hw = markerWidth / 2;
|
||||
var horWidth = 80;
|
||||
var vertExtension = markerWidth * 1.5;
|
||||
|
||||
m.moveTo(-hw, -hw);
|
||||
m.line(markerWidth, 0);
|
||||
m.line(0, markerWidth);
|
||||
m.line(-markerWidth, 0);
|
||||
m.close();
|
||||
|
||||
# left L
|
||||
m.moveTo(-hw - markerWidth, -hw);
|
||||
m.line(-horWidth, 0);
|
||||
m.line(0, markerWidth);
|
||||
m.line(horWidth - markerWidth, 0);
|
||||
m.line(0, vertExtension);
|
||||
m.line(markerWidth, 0);
|
||||
m.close();
|
||||
|
||||
|
||||
# right L
|
||||
m.moveTo(hw + markerWidth, -hw);
|
||||
m.line(horWidth, 0);
|
||||
m.line(0, markerWidth);
|
||||
m.line(markerWidth - horWidth, 0);
|
||||
m.line(0, vertExtension);
|
||||
m.line(-markerWidth, 0);
|
||||
m.close();
|
||||
},
|
||||
|
||||
# add a single radially aligned tick mark between radiui one and two
|
||||
addPolarTick : func(path, angle, r1, r2)
|
||||
{
|
||||
var horAngle = angle + 90; # angle from +ve X axis
|
||||
var sa = math.sin(horAngle * D2R);
|
||||
var ca = math.cos(horAngle * D2R);
|
||||
|
||||
path.moveTo(ca * r1, sa * r1);
|
||||
path.lineTo(ca * r2, sa * r2);
|
||||
return path;
|
||||
},
|
||||
|
||||
addHorizontalSymmetricPolarTick : func(path, angle, r1, r2)
|
||||
{
|
||||
var horAngle = angle + 90; # angle from +ve X axis
|
||||
var sa = -math.sin(horAngle * D2R);
|
||||
var ca = math.cos(horAngle * D2R);
|
||||
|
||||
path.moveTo(ca * r1, sa * r1);
|
||||
path.lineTo(ca * r2, sa * r2);
|
||||
path.moveTo(-ca * r1, sa * r1);
|
||||
path.lineTo(-ca * r2, sa * r2);
|
||||
return path;
|
||||
},
|
||||
|
||||
addHorizontalSymmetricLine : func(path, positiveLength, y)
|
||||
{
|
||||
path.moveTo(-positiveLength, y);
|
||||
path.lineTo(positiveLength, y);
|
||||
return path;
|
||||
},
|
||||
|
||||
createDigitTape : func(parent, name, suffix = nil)
|
||||
{
|
||||
var t = parent.createChild('text', name);
|
||||
# 'top' zero (above 9)
|
||||
var s = '0' ~ chr(10);
|
||||
if (suffix != nil) {
|
||||
s = '0' ~ suffix ~ chr(10);
|
||||
}
|
||||
|
||||
for (var i=9; i>=0; i-=1) {
|
||||
if (suffix != nil) {
|
||||
s = s ~ i ~ suffix ~ chr(10);
|
||||
} else {
|
||||
s = s ~ i ~ chr(10);
|
||||
}
|
||||
}
|
||||
t.setText(s);
|
||||
t.setFont("LiberationFonts/LiberationMono-Regular.ttf");
|
||||
t.setFontSize(44);
|
||||
# t.set('line-height', 0.9);
|
||||
t.setAlignment("left-bottom");
|
||||
return t;
|
||||
},
|
||||
|
||||
createRollTicks : func()
|
||||
{
|
||||
# these don't move!
|
||||
# center filled white arrow pointing down
|
||||
# large tick at 30 deg
|
||||
# minor tick at 10, 20 deg
|
||||
# minor tick at 45?
|
||||
# and major tick at 60 by the looks of it
|
||||
|
||||
me._rollGroup = me.root.createChild("group", "roll-group");
|
||||
me._rollGroup.setTranslation(ISFD.hsiXCenter, 0);
|
||||
me._rollGroup.set("clip-frame", canvas.Element.GLOBAL);
|
||||
me._rollGroup.set("clip", "rect(77px, 398px, 435px, 92px)");
|
||||
|
||||
var rollScale = me.root.createChild("path", "roll-scale");
|
||||
rollScale.setTranslation(ISFD.hsiXCenter, 0);
|
||||
|
||||
rollScale.setStrokeLineWidth(2);
|
||||
rollScale.setColor(1, 1, 1);
|
||||
var baseR = ISFD.rollBaseRadius;
|
||||
var minorTick = 16;
|
||||
var majorTick = 30;
|
||||
|
||||
me.addHorizontalSymmetricPolarTick(rollScale, 10, baseR, baseR + minorTick);
|
||||
me.addHorizontalSymmetricPolarTick(rollScale, 20, baseR, baseR + minorTick);
|
||||
me.addHorizontalSymmetricPolarTick(rollScale, 30, baseR, baseR + majorTick);
|
||||
me.addHorizontalSymmetricPolarTick(rollScale, 45, baseR, baseR + minorTick);
|
||||
|
||||
# we cap the length of these to avoid sticking into the speed/alt tapes
|
||||
me.addHorizontalSymmetricPolarTick(rollScale, 60, baseR, baseR + minorTick);
|
||||
rollScale.close();
|
||||
|
||||
# add filled path for the zero arrow
|
||||
rollZeroArrow = me.root.createChild("path", "roll-zero-mark");
|
||||
rollZeroArrow.setColorFill(1, 1, 1);
|
||||
rollZeroArrow.setTranslation(ISFD.hsiXCenter, 0);
|
||||
|
||||
# arrow extends from the roll radius to the top of HSI
|
||||
var arrowHeight = (ISFD.hsiHeight / 2) - ISFD.rollBaseRadius;
|
||||
var arrowHWidth = arrowHeight * (2/3);
|
||||
|
||||
rollZeroArrow.moveTo(0, -baseR);
|
||||
rollZeroArrow.line(arrowHWidth, -arrowHeight);
|
||||
rollZeroArrow.line(-arrowHWidth * 2, 0);
|
||||
rollZeroArrow.close();
|
||||
|
||||
# and the moving arrow
|
||||
var rollMarker = me._rollGroup.createChild("path", "roll-indicator");
|
||||
rollMarker.setColorFill(0, 0, 0);
|
||||
rollMarker.setStrokeLineWidth(2);
|
||||
rollMarker.setColor(1, 1, 1);
|
||||
rollMarker.moveTo(0, -baseR);
|
||||
rollMarker.line(arrowHWidth, arrowHeight);
|
||||
rollMarker.line(-arrowHWidth * 2, 0);
|
||||
rollMarker.close();
|
||||
},
|
||||
|
||||
createPitchLadder : func()
|
||||
{
|
||||
# sky rect
|
||||
var box = me.root.rect(ISFD.hsiLeft, -ISFD.hsiHeight/2,
|
||||
ISFD.hsiWidth, ISFD.hsiHeight);
|
||||
box.setColorFill('#69B3F4');
|
||||
|
||||
me._pitchRotation = me.root.createChild("group", "pitch-rotation");
|
||||
me.pitchGroup = me._pitchRotation.createChild("group", "pitch-group");
|
||||
|
||||
var bkGroup = me.root.createChild("group", "hsi-clip-group");
|
||||
|
||||
|
||||
# ground rect
|
||||
var box = me.pitchGroup.rect(-1000, 0, 2000, 2000);
|
||||
box.setColorFill('#8F9552');
|
||||
box.set("clip-frame", canvas.Element.GLOBAL);
|
||||
box.set("clip", "rect(77px, 398px, 435px, 92px)");
|
||||
|
||||
var ladderGroup = me.pitchGroup.createChild("group", "pitch-ladder");
|
||||
ladderGroup.set("clip-frame", canvas.Element.GLOBAL);
|
||||
ladderGroup.set("clip", "rect(140px, 368px, 435px, 122px)");
|
||||
|
||||
var pitchLadder = ladderGroup.createChild("path", "pitch-ladder-ticks");
|
||||
pitchLadder.setStrokeLineWidth(2);
|
||||
pitchLadder.setColor(1, 1, 1);
|
||||
|
||||
var sp = ISFD.pitchLadderDegreeSpacing; # shorthand
|
||||
var tenDegreeWidth = 64;
|
||||
var fiveDegreeWidth = 32;
|
||||
var twoFiveDegreeWidth = 24;
|
||||
|
||||
# add line at zero
|
||||
me.addHorizontalSymmetricLine(pitchLadder, ISFD.halfSize, 0);
|
||||
|
||||
for (var i=1; i<=9; i+=1)
|
||||
{
|
||||
var d = i * 10;
|
||||
me.addHorizontalSymmetricLine(pitchLadder, tenDegreeWidth, d * sp);
|
||||
me.addHorizontalSymmetricLine(pitchLadder, tenDegreeWidth, -d * sp);
|
||||
|
||||
me.addHorizontalSymmetricLine(pitchLadder, fiveDegreeWidth, (d - 5) * sp);
|
||||
me.addHorizontalSymmetricLine(pitchLadder, fiveDegreeWidth, (5 - d) * sp);
|
||||
|
||||
# 2.5 and 7.5 degree lines
|
||||
me.addHorizontalSymmetricLine(pitchLadder, twoFiveDegreeWidth, (d - 2.5) * sp);
|
||||
me.addHorizontalSymmetricLine(pitchLadder, twoFiveDegreeWidth, (2.5 - d) * sp);
|
||||
me.addHorizontalSymmetricLine(pitchLadder, twoFiveDegreeWidth, (d - 7.5) * sp);
|
||||
me.addHorizontalSymmetricLine(pitchLadder, twoFiveDegreeWidth, (7.5 - d) * sp);
|
||||
|
||||
# add text as well
|
||||
var textUp = ladderGroup.createChild("text", "pitch-ladder-legend-" ~ d);
|
||||
textUp.setText(d);
|
||||
textUp.setAlignment("right-center");
|
||||
textUp.setTranslation(-tenDegreeWidth, d * sp);
|
||||
textUp.setFontSize(36);
|
||||
textUp.setFont("LiberationFonts/LiberationMono-Bold.ttf");
|
||||
|
||||
var textDown = ladderGroup.createChild("text", "pitch-ladder-legend-" ~ d);
|
||||
textDown.setText(d);
|
||||
textDown.setAlignment("right-center");
|
||||
textDown.setTranslation(-tenDegreeWidth, -d * sp);
|
||||
textDown.setFontSize(36);
|
||||
textDown.setFont("LiberationFonts/LiberationMono-Bold.ttf");
|
||||
}
|
||||
},
|
||||
|
||||
createSpeedTape : func()
|
||||
{
|
||||
# background box
|
||||
var box = me.root.rect(0, -ISFD.halfSize, ISFD.speedTapeWidth - 1, ISFD.baseSize);
|
||||
box.setColorFill('#738A7E');
|
||||
box.setTranslation(-256, 0);
|
||||
box.set('z-index', -1);
|
||||
|
||||
# short lines for text
|
||||
# long lines for 'odd' tens
|
||||
# 3 digit monospace text fits exactly between left side and short tick
|
||||
# maximum 5 (6?) visible text pieces
|
||||
|
||||
me._speedTapeGroup = me.root.createChild("group", "speed-tape-group");
|
||||
me._speedTapeGroup.setTranslation(ISFD.hsiLeft, 0);
|
||||
me._speedTapeGroup.set('z-index', 2);
|
||||
|
||||
var tapePath = me._speedTapeGroup.createChild("path", "speed-tape");
|
||||
tapePath.setStrokeLineWidth(2);
|
||||
tapePath.setColor(1, 1, 1);
|
||||
|
||||
var knotSpacing = 4;
|
||||
var tenKnotWidth = 16;
|
||||
var twentyKnotWidth = 8;
|
||||
|
||||
for (var i=0; i<=25; i+=1)
|
||||
{
|
||||
var tenKnotY = ((i * 20) + 10) * knotSpacing;
|
||||
var twentyKnot = ((i+1) * 20);
|
||||
|
||||
tapePath.moveTo(0, -tenKnotY).line(-tenKnotWidth, 0);
|
||||
tapePath.moveTo(0, -twentyKnot * knotSpacing).line(-twentyKnotWidth, 0);
|
||||
|
||||
var text = me._speedTapeGroup.createChild("text", "speed-tape-legend-" ~ twentyKnot);
|
||||
text.setText(twentyKnot);
|
||||
text.setAlignment("right-center");
|
||||
text.setFont("LiberationFonts/LiberationMono-Bold.ttf");
|
||||
text.setFontSize(36);
|
||||
text.setTranslation(-twentyKnotWidth-2, -twentyKnot * knotSpacing);
|
||||
}
|
||||
},
|
||||
|
||||
updateSpeedTape : func()
|
||||
{
|
||||
# special case when speed is close to zero (show 'bottom' only)
|
||||
# translate based on start value
|
||||
# update digits in text
|
||||
|
||||
# given it's a 100kt range, maybe fixed graphic for the tape reduces updates?
|
||||
|
||||
var yOffset = 4 * me._controller.getIndicatedAirspeedKnots();
|
||||
me._speedTapeGroup.setTranslation(ISFD.hsiLeft, yOffset);
|
||||
},
|
||||
|
||||
createAltitudeTape : func()
|
||||
{
|
||||
# tick every 50' interval
|
||||
# text, monospace, 5 digits, ever 100'
|
||||
|
||||
# background box
|
||||
var box = me.root.rect(ISFD.hsiRight + 1, -ISFD.halfSize,
|
||||
ISFD.altTapeWidth, ISFD.baseSize);
|
||||
box.setColorFill('#738A7E');
|
||||
box.set('z-index', -1);
|
||||
|
||||
me._altTapeGroup = me.root.createChild("group", "altitude-tape-group");
|
||||
me._altTapeGroup.setTranslation(ISFD.hsiRight, 0);
|
||||
|
||||
var tapePath = me._altTapeGroup.createChild("path", "altitude-tape");
|
||||
tapePath.setStrokeLineWidth(2);
|
||||
tapePath.setColor(1, 1, 1);
|
||||
|
||||
var hundredFtSpacing = 64;
|
||||
var twoHundredFtSpacing = hundredFtSpacing * 2;
|
||||
var twoHundredFtWidth = 20;
|
||||
|
||||
# empty array to hold altitude tape texts for easy updating
|
||||
me._altitudeTapeTexts = [];
|
||||
|
||||
for (var i=0; i<=12; i+=1)
|
||||
{
|
||||
var y = (i - 6) * twoHundredFtSpacing;
|
||||
var tickY = y + hundredFtSpacing;
|
||||
|
||||
tapePath.moveTo(0, -tickY).line(twoHundredFtWidth, 0);
|
||||
|
||||
var text = me._altTapeGroup.createChild("text", "altitude-tape-legend-" ~ i);
|
||||
text.setText(text);
|
||||
text.setFontSize(36);
|
||||
text.setAlignment("left-center");
|
||||
text.setFont("LiberationFonts/LiberationMono-Regular.ttf");
|
||||
text.setTranslation(2, -y);
|
||||
|
||||
# we will update the text very often, ensure we only do
|
||||
# real work if it actually changes
|
||||
text.enableUpdate();
|
||||
|
||||
# save for later updating
|
||||
append(me._altitudeTapeTexts, text);
|
||||
}
|
||||
},
|
||||
|
||||
updateAltitudeTape : func()
|
||||
{
|
||||
var altFt = me._controller.getAltitudeFt();
|
||||
var alt200 = int(altFt/200);
|
||||
var altMod200 = altFt - (alt200 * 200);
|
||||
|
||||
var offset = 128 * (altMod200 / 200.0);
|
||||
me._altTapeGroup.setTranslation(ISFD.hsiRight, offset);
|
||||
|
||||
# compute this as current alt - half altitude range
|
||||
var lowestAlt = (alt200 - 6) * 200;
|
||||
|
||||
for (var i=0; i<=12; i+=1)
|
||||
{
|
||||
var alt = lowestAlt + (i * 200);
|
||||
# printf with 5 digits
|
||||
var s = sprintf("%05i", alt);
|
||||
me._altitudeTapeTexts[i].updateText(s);
|
||||
}
|
||||
|
||||
# compute transform on group to put the actual altitude on centre
|
||||
},
|
||||
|
||||
createCompassRose : func()
|
||||
{
|
||||
|
||||
|
||||
|
||||
# clip group for numerals
|
||||
var clipGroup = me.root.createChild("group", "rose-clip-group");
|
||||
clipGroup.set("clip-frame", canvas.Element.LOCAL);
|
||||
clipGroup.set("clip", "rect(176px, 142px, 256px, -164px)");
|
||||
clipGroup.set('z-index', 2);
|
||||
|
||||
var roseBoxHeight = ISFD.modeBoxHeight;
|
||||
var hh = roseBoxHeight / 2;
|
||||
|
||||
# background of the compass
|
||||
var p = clipGroup.createChild('path', 'rose-background');
|
||||
p.moveTo(ISFD.hsiXCenter - ISFD.roseRadius, ISFD.hsiBottom + 12 + ISFD.roseRadius);
|
||||
p.arcSmallCW(ISFD.roseRadius, ISFD.roseRadius, 0,
|
||||
ISFD.roseRadius * 2, 0);
|
||||
p.close();
|
||||
p.setColorFill('#738A7E');
|
||||
|
||||
# add path for the heading arrow
|
||||
var arrow = me.root.createChild("path", "rose-arrow");
|
||||
arrow.setTranslation(ISFD.hsiXCenter, ISFD.hsiBottom);
|
||||
arrow.setStrokeLineWidth(2);
|
||||
arrow.setColor(1, 1, 1);
|
||||
|
||||
# same size as the roll arrow
|
||||
var arrowHeight = (ISFD.hsiHeight / 2) - ISFD.rollBaseRadius;
|
||||
var arrowHWidth = arrowHeight * (2/3);
|
||||
|
||||
arrow.moveTo(0, arrowHeight);
|
||||
arrow.line(arrowHWidth, -arrowHeight);
|
||||
arrow.line(-arrowHWidth * 2, 0);
|
||||
arrow.close();
|
||||
arrow.set('z-index', 4);
|
||||
|
||||
me._roseGroup = clipGroup.createChild('group', 'rose-group');
|
||||
me._roseGroup.setTranslation(ISFD.hsiXCenter, ISFD.hsiBottom + 12 + ISFD.roseRadius);
|
||||
|
||||
var roseTicks = me._roseGroup.createChild('path', 'rose-ticks');
|
||||
roseTicks.setStrokeLineWidth(2);
|
||||
roseTicks.setColor(1, 1, 1);
|
||||
roseTicks.set('z-index', 2);
|
||||
|
||||
var textR = (ISFD.roseRadius) - 16;
|
||||
for (var i=0; i<36; i+=1) {
|
||||
# create ten degree text
|
||||
# TODO: 30 degree sizes should be bigger
|
||||
|
||||
var text = me._roseGroup.createChild("text", "compass-rose-" ~ i);
|
||||
text.setText(i);
|
||||
text.setFontSize(36);
|
||||
text.setAlignment("center-top");
|
||||
text.setFont("LiberationFonts/LiberationMono-Bold.ttf");
|
||||
|
||||
var horAngle = 90 - (i * 10); # angle from +ve X axis
|
||||
var sa = math.sin(horAngle * D2R);
|
||||
var ca = math.cos(horAngle * D2R);
|
||||
text.setTranslation(ca * textR, -sa * textR);
|
||||
text.setRotation(i * 10 * D2R);
|
||||
|
||||
me.addPolarTick(roseTicks, i * 10, ISFD.roseRadius, ISFD.roseRadius - 8);
|
||||
me.addPolarTick(roseTicks, (i * 10) + 5, ISFD.roseRadius, ISFD.roseRadius - 16);
|
||||
}
|
||||
|
||||
roseTicks.close();
|
||||
|
||||
},
|
||||
|
||||
createAltitudeBox : func()
|
||||
{
|
||||
var halfBoxHeight = ISFD.boxHeight / 2;
|
||||
var box = me.root.rect(ISFD.hsiRight - 10, -halfBoxHeight,
|
||||
ISFD.altTapeWidth + 10, ISFD.boxHeight);
|
||||
box.setColorFill('#000000');
|
||||
box.setColor('#ffffff');
|
||||
box.setStrokeLineWidth(2);
|
||||
box.set('z-index', 2);
|
||||
|
||||
var clipGroup = me.root.createChild('group', 'altitude-box-clip');
|
||||
clipGroup.set("clip-frame", canvas.Element.LOCAL);
|
||||
clipGroup.set("clip", "rect(-24px," ~ (ISFD.altTapeWidth + 10) ~ "px, 24px, 0px)");
|
||||
clipGroup.setTranslation(ISFD.hsiRight - 10, 0);
|
||||
clipGroup.set('z-index', 3);
|
||||
|
||||
var text = clipGroup.createChild('text', 'altitude-box-text');
|
||||
me._altitudeBoxText = text;
|
||||
|
||||
text.setText('88 ');
|
||||
text.setFontSize(44);
|
||||
text.setAlignment("left-center");
|
||||
text.setFont("LiberationFonts/LiberationMono-Regular.ttf");
|
||||
|
||||
me._altitudeDigits00 = me.createDigitTape(clipGroup, 'altitude-digits00', '0');
|
||||
me._altitudeDigits00.setFontSize(32);
|
||||
me._altitudeDigits00.set('z-index', 4);
|
||||
},
|
||||
|
||||
createSpeedBox : func()
|
||||
{
|
||||
var halfBoxHeight = ISFD.boxHeight / 2;
|
||||
var box = me.root.rect(-ISFD.halfSize - 2, -halfBoxHeight,
|
||||
ISFD.speedTapeWidth + 4, ISFD.boxHeight);
|
||||
box.setColorFill('#000000');
|
||||
box.setColor('#ffffff');
|
||||
box.setStrokeLineWidth(2);
|
||||
box.set('z-index', 2);
|
||||
|
||||
var clipGroup = me.root.createChild('group', 'speed-box-clip');
|
||||
clipGroup.set("clip-frame", canvas.Element.LOCAL);
|
||||
clipGroup.set("clip", "rect(-24px," ~ (ISFD.speedTapeWidth + 4) ~ "px, 24px, 0px)");
|
||||
clipGroup.setTranslation(-ISFD.halfSize, 0);
|
||||
clipGroup.set('z-index', 3);
|
||||
|
||||
var text = clipGroup.createChild('text', 'speed-box-text');
|
||||
me._speedBoxText = text;
|
||||
|
||||
text.setText('88 ');
|
||||
text.setFontSize(44);
|
||||
text.setAlignment("left-center");
|
||||
text.setFont("LiberationFonts/LiberationMono-Regular.ttf");
|
||||
|
||||
me._speedDigit0 = me.createDigitTape(clipGroup, 'speed-digit0');
|
||||
me._speedDigit0.set('z-index', 4);
|
||||
},
|
||||
|
||||
createAltimeterSetting: func()
|
||||
{
|
||||
me._altimeterText = me.root.createChild('text', 'altimeter-setting-text');
|
||||
me._altimeterText.setText('1013');
|
||||
me._altimeterText.setFontSize(44);
|
||||
me._altimeterText.setAlignment("right-center");
|
||||
me._altimeterText.setFont("LiberationFonts/LiberationMono-Regular.ttf");
|
||||
me._altimeterText.setColor('#00ff00');
|
||||
|
||||
var midTextY = -ISFD.halfSize + (ISFD.modeBoxHeight * 0.5);
|
||||
me._altimeterText.setTranslation(ISFD.hsiRight - 2, midTextY);
|
||||
},
|
||||
|
||||
createModeText : func()
|
||||
{
|
||||
me._modeText = me.root.createChild('text', 'mode-text');
|
||||
me._modeText.setFontSize(44);
|
||||
me._modeText.setText('APP');
|
||||
me._modeText.setAlignment("left-center");
|
||||
me._modeText.setFont("LiberationFonts/LiberationMono-Regular.ttf");
|
||||
me._modeText.setColor('#00ff00');
|
||||
|
||||
var midTextY = -ISFD.halfSize + (ISFD.modeBoxHeight * 0.5);
|
||||
me._modeText.setTranslation(ISFD.hsiLeft + 2, midTextY);
|
||||
},
|
||||
|
||||
pressButtonAPP : func()
|
||||
{
|
||||
if (me._mode == 'app') {
|
||||
me._mode = '';
|
||||
me._modeText.setVisible(0);
|
||||
} else {
|
||||
me._mode = 'app';
|
||||
me._modeText.setText('APP');
|
||||
me._modeText.setVisible(1);
|
||||
}
|
||||
},
|
||||
|
||||
update : func()
|
||||
{
|
||||
# read LOC/GS deviation
|
||||
# read Mach for some options
|
||||
me._controller.update();
|
||||
|
||||
# pitch and roll
|
||||
var roll = me._controller.getBankAngleDeg() * D2R;
|
||||
var pitch = me._controller.getPitchDeg();
|
||||
me.pitchGroup.setTranslation(ISFD.hsiXCenter, pitch * me.pitchLadderDegreeSpacing);
|
||||
me._pitchRotation.setRotation(-roll);
|
||||
me._rollGroup.setRotation(-roll);
|
||||
|
||||
# heading
|
||||
me._roseGroup.setRotation(-me._controller.getHeadingDeg() * D2R);
|
||||
|
||||
me.updateAltitudeTape();
|
||||
me.updateSpeedTape();
|
||||
|
||||
# speed box
|
||||
var spd = me._controller.getIndicatedAirspeedKnots();
|
||||
var spdDigit0 = math.mod(spd, 10);
|
||||
me._speedDigit0.setTranslation(53, 16 + spdDigit0 * 44);
|
||||
var s = sprintf("%02i ", math.floor(spd / 10));
|
||||
me._speedBoxText.setText(s);
|
||||
|
||||
# altitude box
|
||||
var alt = me._controller.getAltitudeFt();
|
||||
var altDigits00 = math.mod(alt / 10, 10);
|
||||
me._altitudeDigits00.setTranslation(80, 16 + altDigits00 * 32);
|
||||
var s = sprintf("%03i ", math.floor(alt / 100));
|
||||
me._altitudeBoxText.setText(s);
|
||||
}
|
||||
|
||||
};
|
70
Aircraft/Instruments-3d/ISFD/ISFDGenericController.nas
Normal file
|
@ -0,0 +1,70 @@
|
|||
|
||||
|
||||
var GenericController =
|
||||
{
|
||||
|
||||
# COLORS : {
|
||||
# green : [0, 1, 0],
|
||||
# white : [1, 1, 1],
|
||||
# black : [0, 0, 0],
|
||||
# lightblue : [0, 1, 1],
|
||||
# darkblue : [0, 0, 1],
|
||||
# red : [1, 0, 0],
|
||||
# magenta : [1, 0, 1],
|
||||
# },
|
||||
|
||||
new : func ()
|
||||
{
|
||||
var obj = {
|
||||
parents : [GenericController],
|
||||
};
|
||||
# IFSD does its own barometric altititde independant of the acft ADIRUs
|
||||
#me.altitudeProp = props.globals.getNode('/instruments/')
|
||||
|
||||
return obj;
|
||||
},
|
||||
|
||||
update : func()
|
||||
{
|
||||
|
||||
},
|
||||
|
||||
getAltitudeFt : func()
|
||||
{
|
||||
return getprop("/position/altitude-ft");
|
||||
},
|
||||
|
||||
getIndicatedAirspeedKnots : func()
|
||||
{
|
||||
return getprop("/velocities/airspeed-kt");
|
||||
},
|
||||
|
||||
getHeadingDeg : func()
|
||||
{
|
||||
# compass / gyro source for this?
|
||||
return getprop("/orientation/heading-deg");
|
||||
},
|
||||
|
||||
getPitchDeg : func()
|
||||
{
|
||||
return getprop("/orientation/pitch-deg");
|
||||
#return getprop("/instrumentation/attitude-indicator/indicated-pitch-deg");
|
||||
# obj.addPropMap("ADCTurnRate", "/instrumentation/turn-indicator/indicated-turn-rate");
|
||||
# obj.addPropMap("ADCSlipSkid", "/instrumentation/slip-skid-ball/indicated-slip-skid");
|
||||
|
||||
},
|
||||
|
||||
getBankAngleDeg : func()
|
||||
{
|
||||
return getprop("/orientation/roll-deg");
|
||||
# return getprop("/instrumentation/attitude-indicator/indicated-roll-deg");
|
||||
},
|
||||
|
||||
getBarometricPressureSetting : func()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
# also a setter
|
||||
# set inHg / hPA units
|
||||
}
|
52
Aircraft/Instruments-3d/ISFD/ISFD_gui.nas
Normal file
|
@ -0,0 +1,52 @@
|
|||
var GUI =
|
||||
{
|
||||
|
||||
new : func(isfd, isfd_canvas, scale = 1.0)
|
||||
{
|
||||
var obj = {
|
||||
parents : [ GUI ],
|
||||
isfd : isfd,
|
||||
width : 528,
|
||||
height : 528,
|
||||
scale : scale
|
||||
};
|
||||
|
||||
obj.window = canvas.Window.new([obj.scale*obj.width,obj.scale*obj.height],"dialog").set('title',"ISFD");
|
||||
|
||||
obj.window.del = func() {
|
||||
# Over-ride the window.del function so we clean up when the user closes the window
|
||||
# Use call method to ensure we have the correct closure.
|
||||
call(obj.cleanup, [], obj);
|
||||
};
|
||||
|
||||
# creating the top-level/root group which will contain all other elements/group
|
||||
obj.myCanvas = obj.window.createCanvas();
|
||||
obj.myCanvas.set("name", "ISFD");
|
||||
obj.root = obj.myCanvas.createGroup();
|
||||
|
||||
# Project the canvas onto the dialog
|
||||
var mfd_child = obj.root.createChild("image")
|
||||
.setFile(isfd_canvas.getPath())
|
||||
.set("z-index", 150)
|
||||
.setTranslation(obj.scale*8,obj.scale*8)
|
||||
.setSize(obj.scale*512, obj.scale*512);
|
||||
|
||||
|
||||
# Create the surround fascia, which is just a PNG image;
|
||||
var child = obj.root.createChild("image")
|
||||
.setFile("Aircraft/Instruments-3d/ISFD/fascia.png")
|
||||
.set("z-index", 100)
|
||||
.setTranslation(0, 0)
|
||||
.setSize(obj.scale*obj.width,obj.scale*obj.height);
|
||||
|
||||
|
||||
return obj;
|
||||
},
|
||||
|
||||
cleanup : func()
|
||||
{
|
||||
me.isfd.del();
|
||||
# Clean up the window itself
|
||||
call(canvas.Window.del, [], me.window);
|
||||
},
|
||||
};
|
0
Aircraft/Instruments-3d/ISFD/README.md
Normal file
|
@ -605,6 +605,7 @@ var CDU = {
|
|||
m._oleoSwitchNode = props.globals.getNode('instrumentation/fmc/discretes/oleo-switch-flight', 1);
|
||||
|
||||
m._setupCanvas(placement);
|
||||
m._setupCommands();
|
||||
|
||||
m._page = nil;
|
||||
m._model = nil;
|
||||
|
@ -680,6 +681,50 @@ var CDU = {
|
|||
}
|
||||
},
|
||||
|
||||
_buttonCallbackTable: {
|
||||
'exec': func() { Boeing.cdu.button_exec(); },
|
||||
'prog': func() { Boeing.cdu.displayPageByTag('progress'); },
|
||||
'hold': func() { print("Not implemented yet");},
|
||||
'cruise': func() { Boeing.cdu.displayPageByTag('cruise'); },
|
||||
'dep-arr': func() { Boeing.cdu.button_dep_arr(); },
|
||||
'legs': func() { Boeing.cdu.button_legs(); },
|
||||
'menu': func() { Boeing.cdu.displayPageByTag('menu'); },
|
||||
'climb': func() { Boeing.cdu.displayPageByTag('climb'); },
|
||||
'fix': func() { Boeing.cdu.displayPageByTag('fix'); },
|
||||
'n1-limit': func() { print("Not implemented yet");},
|
||||
'route': func() { Boeing.cdu.button_route(); },
|
||||
'next-page': func() { Boeing.cdu.next_page(); },
|
||||
'prev-page': func() { Boeing.cdu.prev_page(); },
|
||||
'descent': func() { Boeing.cdu.displayPageByTag('descent'); },
|
||||
'init-ref': func() { Boeing.cdu.displayPageByTag('index'); },
|
||||
'clear': func() { Boeing.cdu.clear(); },
|
||||
'delete': func() { Boeing.cdu.delete(); },
|
||||
'plus-minus': func() { Boeing.cdu.plusminus(); }
|
||||
},
|
||||
|
||||
_keyCommandCallback: func(node)
|
||||
{
|
||||
var k = node.getChild("key").getValue();
|
||||
Boeing.cdu.input(chr(k));
|
||||
},
|
||||
|
||||
_lskCommandCallback: func(node)
|
||||
{
|
||||
var keyName = node.getChild("lsk").getValue();
|
||||
Boeing.cdu.lsk(keyName);
|
||||
},
|
||||
|
||||
# register commands used for interfacing external CDU hardware
|
||||
_setupCommands: func()
|
||||
{
|
||||
addcommand('cdu-key', me._keyCommandCallback);
|
||||
addcommand('cdu-lsk', me._lskCommandCallback);
|
||||
|
||||
foreach(var b; keys(me._buttonCallbackTable)) {
|
||||
addcommand('cdu-button-' ~ b , me._buttonCallbackTable[b]);
|
||||
}
|
||||
},
|
||||
|
||||
rowForLine: func(line)
|
||||
{
|
||||
return (line * 2) + 2;
|
||||
|
|
BIN
Aircraft/ufo/Models/grid.png
Normal file
After Width: | Height: | Size: 127 B |
|
@ -17,6 +17,19 @@
|
|||
</condition>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<condition>
|
||||
<property>/sim/model/display-grid</property>
|
||||
</condition>
|
||||
<object-name>GridBottom</object-name>
|
||||
<object-name>GridFront</object-name>
|
||||
<object-name>GridPort</object-name>
|
||||
<object-name>GridRear</object-name>
|
||||
<object-name>GridStarboard</object-name>
|
||||
<object-name>GridTop</object-name>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>blend</type>
|
||||
<object-name>body</object-name>
|
||||
|
|
|
@ -223,6 +223,10 @@
|
|||
<name>=</name>
|
||||
<desc>open/close cursor dialog</desc>
|
||||
</key>
|
||||
<key>
|
||||
<name>Ctrl + G</name>
|
||||
<desc>Show/hide 8x8x8m box grid around ufo for screen alignment</desc>
|
||||
</key>
|
||||
|
||||
<line>Pre-select initial model (path relative to $FG_ROOT):</line>
|
||||
<line>  --prop:cursor=Model/path.xml</line>
|
||||
|
@ -255,15 +259,9 @@
|
|||
<name>Ctrl-G</name>
|
||||
<desc>Gear Up.</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>controls.gearDown(-1)</script>
|
||||
<command>property-toggle</command>
|
||||
<property>/sim/model/display-grid</property>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>controls.gearDown(0)</script>
|
||||
</binding>
|
||||
</mod-up>
|
||||
</key>
|
||||
|
||||
<key n="61">
|
||||
|
|
|
@ -35,6 +35,8 @@ Contents
|
|||
|
||||
9. Nasal API
|
||||
|
||||
10. Add-on development; in-sim reload of Nasal code
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
@ -827,6 +829,48 @@ Read-only data members (attributes) of addons.Maintainer objects:
|
|||
to a web page from which people can subscribe to
|
||||
that mailing-list (string)
|
||||
|
||||
|
||||
10. Add-on development; in-sim reload of Nasal code
|
||||
---------------------------------------------------
|
||||
|
||||
!!! WARNING:
|
||||
!!! The reload feature is meant for developers only, it should not be made
|
||||
!!! visible to end users. Unexpected side effects may occur due to reload,
|
||||
!!! if not implemented correctly.
|
||||
!!! We really don't want users to send bug reports due to reload going wrong.
|
||||
|
||||
To make development of add-ons less time consuming, you can reload the
|
||||
Nasal part of your add-on without having to restart FlightGear. When an
|
||||
add-on is loaded, setlistener() and maketimer() wrappers are installed
|
||||
in the add-on's own namespace; these wrappers shadow and call themselves
|
||||
the standard setlistener() and maketimer() functions. The setlistener()
|
||||
and maketimer() wrapper functions keep track of every listener and timer
|
||||
they create. When the add-on is removed (e.g., as part of its reload
|
||||
sequence), removelistener() is called for each of these listeners, and
|
||||
each timer has its stop() method called.
|
||||
_
|
||||
For the time being, you have to track any other resources outside the
|
||||
namespace of your add-on by yourself and clean them up in the unload()
|
||||
function, e.g. delete canvas or close any files you opened.
|
||||
|
||||
You can define this unload() function in the addon-main.nas file. When
|
||||
your add-on is reloaded, its unload() function, if defined, will be
|
||||
called with one argument: the addons.Addon object (a Nasal ghost)
|
||||
corresponding to your add-on. unload() is run in the add-on's own
|
||||
namespace.
|
||||
|
||||
The reload is triggered by setting the property
|
||||
/addon/by-id/ADDON_ID/reload to true (replace ADDON_ID with your
|
||||
particular add-on identifier). A listener will react to that property,
|
||||
reset it to false and attempt to reload the addon-main.nas file for your
|
||||
add-on (doing the aforementioned cleanup before). You can add a menu
|
||||
item to trigger the reload easily, but it should be removed before
|
||||
publishing your add-on to users (see the above warning).
|
||||
|
||||
Please have a look at the skeleton add-on at
|
||||
https://sourceforge.net/p/flightgear/fgaddon/HEAD/tree/trunk/Addons/Skeleton/
|
||||
|
||||
|
||||
Footnotes
|
||||
---------
|
||||
|
||||
|
|
|
@ -12,9 +12,13 @@ Contents ----------------------------------------------------------------------
|
|||
3 stg files
|
||||
3.1 OBJECT_BASE
|
||||
3.2 OBJECT
|
||||
3.4 OBJECT_SHARED
|
||||
3.3 OBJECT_STATIC
|
||||
3.5 OBJECT_SIGN
|
||||
3.4 OBJECT_SHARED / OBJECT_SHARED_AGL
|
||||
3.3 OBJECT_STATIC / OBJECT_STATIC_AGL
|
||||
3.5 OBJECT_SIGN /OBJECT_SIGN_AGL
|
||||
3.6 BUILDING_ROUGH / BUILDING_DETAILED
|
||||
3.7 ROAD_ROUGH / ROAD_DETAILED
|
||||
3.8 RAILWAY_ROUGH / RAILWAY_DETAILED
|
||||
3.9 BUILDING_LIST
|
||||
|
||||
4 model manager ("/models/model")
|
||||
4.1 static objects
|
||||
|
@ -194,8 +198,8 @@ so you'll find that file stored as KSFO.btg.gz.
|
|||
|
||||
|
||||
|
||||
3.3 OBJECT_SHARED
|
||||
------------------
|
||||
3.3 OBJECT_SHARED / OBJECT_SHARED_AGL
|
||||
--------------------------------------
|
||||
|
||||
add static object to the tile.
|
||||
|
||||
|
@ -216,11 +220,11 @@ the /orientation/heading-deg entry in the property system, which is clockwise.
|
|||
OBJECT_SHARED models are cached and reused. They are only once in memory
|
||||
and never freed. (See also the next section.)
|
||||
|
||||
OBJECT_SHARED_AGL places the object relative to the ground elevation. Note that
|
||||
this is an expensive operation and is strongly discouraged.
|
||||
|
||||
|
||||
|
||||
3.4 OBJECT_STATIC
|
||||
------------------
|
||||
3.4 OBJECT_STATIC / OBJECT_STATIC_AGL
|
||||
--------------------------------------
|
||||
|
||||
add static objects to the tile, just like OBJECT_SHARED. There are three
|
||||
differences to OBJECT_SHARED (apart from the name):
|
||||
|
@ -241,10 +245,12 @@ Example:
|
|||
OBJECT_STATIC ggb-fb.xml -122.4760494 37.81876042 0 105 0.00 0.00
|
||||
|
||||
|
||||
OBJECT_STATIC_AGL places the object relative to the ground elevation. Note that
|
||||
this is an expensive operation and is strongly discouraged.
|
||||
|
||||
|
||||
3.5 OBJECT_SIGN
|
||||
---------------
|
||||
3.5 OBJECT_SIGN / OBJECT_SIGN_AGL
|
||||
---------------------------------
|
||||
|
||||
defines taxiway or runway sign. The syntax is much like that of OBJECT_SHARED
|
||||
entries, except that the path is replaced with a sign contents specification
|
||||
|
@ -333,9 +339,82 @@ group. You can use this command line to filter out such messages:
|
|||
|
||||
$ fgfs --log-level=debug 2>&1|grep OBJECT_SIGN
|
||||
|
||||
OBJECT_SIGN_AGL places the sign relative to the ground elevation. Note that
|
||||
this is an expensive operation and is strongly discouraged.
|
||||
|
||||
3.6 BUILDING_ROUGH / BUILDING_DETAILED
|
||||
---------------------------------------
|
||||
|
||||
defines building meshes, typically based on OSM data.
|
||||
|
||||
Example:
|
||||
|
||||
BUILDING_ROUGH buildings.ac -122.501090 37.514830 15.5 0.00 0.00 0.00
|
||||
|
||||
Syntax:
|
||||
|
||||
BUILDING_ROUGH <object-path> <lon> <lat> <elev-m> <hdg-deg> <pitch-deg> <roll-deg>
|
||||
|
||||
Note that only bare .ac files should be referenced. The material definition for
|
||||
"OSM_Building" will be used to determine the texture and Effects.
|
||||
|
||||
BUILDING_ROUGH uses the "rough" LOD range, while BUILDING_DETAILED uses the
|
||||
"detailed" LOD range. Some randomness is applied so that building meshes
|
||||
gradually fade in
|
||||
|
||||
3.7 ROAD_ROUGH / ROAD_DETAILED
|
||||
-------------------------------
|
||||
|
||||
Identical to BUILDING_ROUGH / BIULDING_DETAILED above, except used for roads.
|
||||
the material definition "OSM_Road" is applied.
|
||||
|
||||
3.8 RAILWAY_ROUGH / RAILWAY_DETAILED
|
||||
-------------------------------
|
||||
|
||||
Identical to BUILDING_ROUGH / BIULDING_DETAILED above, except used for roads.
|
||||
the material definition "OSM_Railway" is applied.
|
||||
|
||||
3.9 BUILDING_LIST
|
||||
------------------
|
||||
|
||||
Defines a file containing building coordinates that should be rendered using
|
||||
the building shader (aka Random Buildings).
|
||||
|
||||
Example:
|
||||
|
||||
BUILDING_LIST buildings.txt OSM_Building -2.72943543 56.00080606 36.1
|
||||
|
||||
Syntax
|
||||
|
||||
BUILDING_LIST <filename> <material name> <lon> <lat> <elev>
|
||||
|
||||
Where:
|
||||
- <filename> is the name of a file containing building positions
|
||||
- <material name> is the name of the material that will be referenced to find
|
||||
random building parameters.
|
||||
- <lat>, <lon>, <elev> defines the center of the set of buildings, and also
|
||||
the point at which the material definition will be evaluated (for regional
|
||||
materials).
|
||||
|
||||
See README.materials for details on configuring the random building parameters.
|
||||
|
||||
The referenced <filename> (in the example buildings.txt) contains lines of the form
|
||||
|
||||
<x> <y> <z> <rot> <type>
|
||||
|
||||
where :
|
||||
- (<x>,<y>,<z>) define the bottom left corner of the building in cartesian space (+X is North, +Y is East, +Z is up), with (0,0,0) being the position referenced above
|
||||
- <rot> is the clockwise rotation around the Z-axis in degrees, rotating around the bottom left (SW) corner of the building
|
||||
- <type> is {0,1,2} which map to small, medium and large buildings respectively, as per random buildings.
|
||||
|
||||
For example, the following entries generates 3 small, 2 medium and 2 large buildings in an easterly line:
|
||||
|
||||
0 0 0 0 0
|
||||
0 100 0 0 0
|
||||
0 200 0 0 0
|
||||
0 300 0 0 1
|
||||
0 400 0 0 1
|
||||
0 500 0 0 2
|
||||
|
||||
4 model manager ("/models/model") --------------------------------------------
|
||||
|
||||
|
@ -575,6 +654,3 @@ are:
|
|||
<load>print("my data are under ", cmdarg().getPath())</load>
|
||||
<unload>print("Currently I'm only called at fgfs exit!")</unload>
|
||||
</nasal>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,23 +1,70 @@
|
|||
<PropertyList>
|
||||
|
||||
<name>GoFlight GF EFIS</name>
|
||||
<debug-events type="bool">true</debug-events>
|
||||
<debug-events type="bool">false</debug-events>
|
||||
|
||||
<nasal>
|
||||
<open>
|
||||
<![CDATA[
|
||||
|
||||
var basePath = "/instrumentation/efis[0]/";
|
||||
|
||||
# value is 0..8 for the konb on 738, GF only goes to 10
|
||||
var efisRangeKnobNode = props.globals.getNode(basePath ~ "inputs/range-knob");
|
||||
efisRangeKnobNode.setIntValue(0);
|
||||
|
||||
# value is absolute integer for each click, hmmmm
|
||||
var efisBaroKnobNode = props.globals.getNode(basePath ~ "inputs/baro-knob");
|
||||
|
||||
var setRangeBit = func(bit) {
|
||||
var b = efisRangeKnobNode.getValue() - 1;
|
||||
efisRangeKnobNode.setIntValue(bits.set(b, bit) + 1);
|
||||
}
|
||||
|
||||
var clearRangeBit = func(bit) {
|
||||
var b = efisRangeKnobNode.getValue() - 1;
|
||||
efisRangeKnobNode.setIntValue(bits.clear(b, bit) + 1);
|
||||
}
|
||||
|
||||
var efisNDModeNode = props.globals.getNode(basePath ~ "mfd/mode-num");
|
||||
var setModeBit = func(bit) {
|
||||
var mode = efisNDModeNode.getValue();
|
||||
efisNDModeNode.setIntValue(bits.set(mode, bit));
|
||||
}
|
||||
|
||||
var clearModeBit = func(bit) {
|
||||
var mode = efisNDModeNode.getValue();
|
||||
efisNDModeNode.setIntValue(bits.clear(mode, bit));
|
||||
}
|
||||
]]>
|
||||
</open>
|
||||
</nasal>
|
||||
|
||||
<hid-descriptor>
|
||||
<report>
|
||||
<type>input</type>
|
||||
<id>1</id>
|
||||
<unused-bits><size type="int">16</size></unused-bits>
|
||||
<rel-dial-0>
|
||||
<size type="int">8</size>
|
||||
<count type="int">2</count>
|
||||
<is-signed type="bool">true</is-signed>
|
||||
</rel-dial-0>
|
||||
<button-0>
|
||||
<count type="int">24</count>
|
||||
</button-0>
|
||||
</report>
|
||||
</hid-descriptor>
|
||||
|
||||
<event>
|
||||
<name>rel-dial-4</name>
|
||||
<name>rel-dial-0</name>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/input/goflight/efis/height</property>
|
||||
<min type="double">0.0</min>
|
||||
</binding>
|
||||
<interpolater>
|
||||
<mirrored type="bool">true</mirrored>
|
||||
<entry><ind>0</ind><dep>0</dep></entry>
|
||||
<entry><ind>1</ind><dep>1</dep></entry>
|
||||
<entry><ind>2</ind><dep>2</dep></entry>
|
||||
|
@ -26,146 +73,17 @@
|
|||
</interpolater>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>rel-dial-5</name>
|
||||
<event>
|
||||
<name>rel-dial-1</name>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/input/goflight/efis/baro</property>
|
||||
<min type="double">108.0</min>
|
||||
<max type="double">117.95</max>
|
||||
<wrap type="bool">true</wrap>
|
||||
</binding>
|
||||
<interpolater>
|
||||
<entry><ind>0</ind><dep>0</dep></entry>
|
||||
<entry><ind>1</ind><dep>1</dep></entry>
|
||||
<entry><ind>2</ind><dep>2</dep></entry>
|
||||
<entry><ind>3</ind><dep>4</dep></entry>
|
||||
<entry><ind>4</ind><dep>8</dep></entry>
|
||||
</interpolater>
|
||||
</event>
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
<event>
|
||||
<name>led-misc</name>
|
||||
<setting>
|
||||
<value>4</value>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>/input/goflight/mfr/active</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
</condition>
|
||||
</setting>
|
||||
<setting>
|
||||
<value>7</value>
|
||||
<condition>
|
||||
<not-equals>
|
||||
<property>/input/goflight/mfr/active</property>
|
||||
<value>0</value>
|
||||
</not-equals>
|
||||
</condition>
|
||||
</setting>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>led-misc-1</name>
|
||||
<setting>
|
||||
<value>7</value>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>/input/goflight/mfr/active</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</condition>
|
||||
</setting>
|
||||
<setting>
|
||||
<value>0</value>
|
||||
<condition>
|
||||
<not-equals>
|
||||
<property>/input/goflight/mfr/active</property>
|
||||
<value>1</value>
|
||||
</not-equals>
|
||||
</condition>
|
||||
</setting>
|
||||
</event>
|
||||
-->
|
||||
<event>
|
||||
<desc>STA Button</desc>
|
||||
<name>button-1</name>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/instrumentation/efis/inputs/sta</property>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>WXR Button</desc>
|
||||
<name>button-2</name>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/instrumentation/efis/inputs/wxr</property>
|
||||
<property>/instrumentation/efis[0]/inputs/baro-knob</property>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>TERR Button</desc>
|
||||
<name>button-3</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>debug.dump("Button 3");</script>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>ARPT Button</desc>
|
||||
<name>button-4</name>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/instrumentation/efis/inputs/arpt</property>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>ARPT Button</desc>
|
||||
<name>button-5</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>debug.dump("Button 5");</script>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>ARPT Button</desc>
|
||||
<name>button-6</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>debug.dump("Button 6");</script>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>ARPT Button</desc>
|
||||
<name>button-7</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>debug.dump("Button 7");</script>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>ARPT Button</desc>
|
||||
<name>button-8</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>debug.dump("Button 8");</script>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>TERR Button</desc>
|
||||
<name>button-9</name>
|
||||
<name>button-0</name>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/instrumentation/efis/inputs/terr</property>
|
||||
|
@ -174,7 +92,7 @@
|
|||
|
||||
<event>
|
||||
<desc>POS Button</desc>
|
||||
<name>button-10</name>
|
||||
<name>button-1</name>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/instrumentation/efis/inputs/pos</property>
|
||||
|
@ -183,7 +101,7 @@
|
|||
|
||||
<event>
|
||||
<desc>DATA Button</desc>
|
||||
<name>button-11</name>
|
||||
<name>button-2</name>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/instrumentation/efis/inputs/data</property>
|
||||
|
@ -192,7 +110,7 @@
|
|||
|
||||
<event>
|
||||
<desc>ARPT Button</desc>
|
||||
<name>button-12</name>
|
||||
<name>button-3</name>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/instrumentation/efis/inputs/arpt</property>
|
||||
|
@ -201,7 +119,7 @@
|
|||
|
||||
<event>
|
||||
<desc>WPT Button</desc>
|
||||
<name>button-13</name>
|
||||
<name>button-4</name>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/instrumentation/efis/inputs/wpt</property>
|
||||
|
@ -210,7 +128,7 @@
|
|||
|
||||
<event>
|
||||
<desc>STA Button</desc>
|
||||
<name>button-14</name>
|
||||
<name>button-5</name>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/instrumentation/efis/inputs/sta</property>
|
||||
|
@ -219,7 +137,7 @@
|
|||
|
||||
<event>
|
||||
<desc>WXR Button</desc>
|
||||
<name>button-15</name>
|
||||
<name>button-6</name>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/instrumentation/efis/inputs/wxr</property>
|
||||
|
@ -227,44 +145,56 @@
|
|||
</event>
|
||||
|
||||
<event>
|
||||
<desc>ARPT Button</desc>
|
||||
<name>button-16</name>
|
||||
<desc></desc>
|
||||
<name>button-7</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>debug.dump("Button 16");</script>
|
||||
<script>debug.dump("Button 7");</script>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>ARPT Button</desc>
|
||||
<name>button-17</name>
|
||||
<desc></desc>
|
||||
<name>button-8</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>debug.dump("Button 17");</script>
|
||||
<script>setModeBit(0)</script>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>clearModeBit(0)</script>
|
||||
</binding>
|
||||
</mod-up>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>ARPT Button</desc>
|
||||
<name>button-18</name>
|
||||
<desc></desc>
|
||||
<name>button-9</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>debug.dump("Button 18");</script>
|
||||
<script>setModeBit(1)</script>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>clearModeBit(1)</script>
|
||||
</binding>
|
||||
</mod-up>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>ARPT Button</desc>
|
||||
<name>button-19</name>
|
||||
<desc></desc>
|
||||
<name>button-10</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>debug.dump("Button 19");</script>
|
||||
<script>debug.dump("Button 10");</script>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>in/HPA toggle</desc>
|
||||
<name>button-20</name>
|
||||
<name>button-11</name>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/instrumentation/efis/inputs/kpa-mode</property>
|
||||
|
@ -272,48 +202,71 @@
|
|||
</event>
|
||||
|
||||
<event>
|
||||
<desc>ARPT Button</desc>
|
||||
<name>button-21</name>
|
||||
<desc>DH/MCA knob push</desc>
|
||||
<name>button-12</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>debug.dump("Button 21");</script>
|
||||
<script>debug.dump("DH/MCA toggle");</script>
|
||||
</binding>
|
||||
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/instrumentation/efis/inputs/minimums-mode</property>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>ARPT Button</desc>
|
||||
<name>button-22</name>
|
||||
<desc></desc>
|
||||
<name>button-13</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>debug.dump("Button 22");</script>
|
||||
<script>setRangeBit(0)</script>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>clearRangeBit(0)</script>
|
||||
</binding>
|
||||
</mod-up>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>ARPT Button</desc>
|
||||
<name>button-23</name>
|
||||
<desc></desc>
|
||||
<name>button-14</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>debug.dump("Button 23");</script>
|
||||
<script>setRangeBit(1)</script>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>clearRangeBit(1)</script>
|
||||
</binding>
|
||||
</mod-up>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>ARPT Button</desc>
|
||||
<name>button-24</name>
|
||||
<desc></desc>
|
||||
<name>button-15</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>debug.dump("Button 24");</script>
|
||||
<script>setRangeBit(2)</script>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>clearRangeBit(2)</script>
|
||||
</binding>
|
||||
</mod-up>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>ADF-L switch</desc>
|
||||
<name>button-25</name>
|
||||
<name>button-16</name>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>/instrumentation/efis/inputs/lh-vor-adf</property>
|
||||
<value>2</value>
|
||||
<value>-1</value>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
|
@ -327,7 +280,7 @@
|
|||
|
||||
<event>
|
||||
<desc>VOR-L switch</desc>
|
||||
<name>button-26</name>
|
||||
<name>button-17</name>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>/instrumentation/efis/inputs/lh-vor-adf</property>
|
||||
|
@ -344,11 +297,11 @@
|
|||
|
||||
<event>
|
||||
<desc>ADF-R switch</desc>
|
||||
<name>button-27</name>
|
||||
<name>button-18</name>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>/instrumentation/efis/inputs/rh-vor-adf</property>
|
||||
<value>2</value>
|
||||
<value>-1</value>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
|
@ -361,7 +314,7 @@
|
|||
|
||||
<event>
|
||||
<desc>VOR-R switch</desc>
|
||||
<name>button-28</name>
|
||||
<name>button-19</name>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>/instrumentation/efis/inputs/rh-vor-adf</property>
|
||||
|
@ -378,7 +331,7 @@
|
|||
|
||||
<event>
|
||||
<desc>MTRS Button</desc>
|
||||
<name>button-29</name>
|
||||
<name>button-20</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>debug.dump("Button MTRS");</script>
|
||||
|
@ -391,8 +344,8 @@
|
|||
</event>
|
||||
|
||||
<event>
|
||||
<desc>MTRS Button</desc>
|
||||
<name>button-30</name>
|
||||
<desc>FPV Button</desc>
|
||||
<name>button-21</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>debug.dump("Button FPV");</script>
|
||||
|
@ -404,17 +357,4 @@
|
|||
</binding>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>DH/MCA knob push</desc>
|
||||
<name>button-21</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>debug.dump("DH/MCA toggle");</script>
|
||||
</binding>
|
||||
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/instrumentation/efis/inputs/minimums-mode</property>
|
||||
</binding>
|
||||
</event>
|
||||
</PropertyList>
|
||||
|
|
175
Input/Event/GoFlight/GF46.xml
Normal file
|
@ -0,0 +1,175 @@
|
|||
<PropertyList>
|
||||
|
||||
<name>GoFlight GF-46</name>
|
||||
<debug-events type="bool">false</debug-events>
|
||||
|
||||
<nasal>
|
||||
<open>
|
||||
<![CDATA[
|
||||
|
||||
var transponderNode = props.globals.getNode("/instrumentation/transponder/id-code", 1);
|
||||
var modeNode = props.globals.getNode("/instrumentation/transponder/inputs/knob-mode", 1);
|
||||
var identNode = props.globals.getNode("/instrumentation/transponder/inputs/ident-btn", 1);
|
||||
var brightnessNode = props.globals.getNode("/input/goflight/gf46/brightness", 8);
|
||||
|
||||
var formatTransponder = func(squawk)
|
||||
{
|
||||
var s = sprintf("%04d ", squawk);
|
||||
return goflight.reverseBytes(goflight.bytesForString(s, 6));
|
||||
}
|
||||
|
||||
var displaySevenSegment = func() {
|
||||
if (modeNode.getValue() == 0) {
|
||||
# OFF, blank display
|
||||
return goflight.bytesForString(" ", 6);
|
||||
}
|
||||
return formatTransponder(transponderNode.getValue());
|
||||
}
|
||||
|
||||
var modeNames = ['OFF ', 'STBY', 'TEST', 'XPDR', ' TA ', 'TARA'];
|
||||
var displayFourteenSegment = func() {
|
||||
var mode = modeNode.getValue();
|
||||
return goflight.formatFourteenSegment(modeNames[mode], 4);
|
||||
}
|
||||
|
||||
var powerOfTen = [1, 10, 100, 1000];
|
||||
var powerOfEight = [1, 8, 64, 512];
|
||||
|
||||
# adapted from gui/dialogs/radios.xml
|
||||
var extractDigit = func(code, index) {
|
||||
return math.mod(code / powerOfTen[index], 10);
|
||||
}
|
||||
|
||||
var extractOctal = func(code, index) {
|
||||
return math.mod(code / powerOfEight[index], 8);
|
||||
}
|
||||
|
||||
var adjustIdCode = func(offset) {
|
||||
var code = transponderNode.getValue();
|
||||
|
||||
# convert ID code to decimal
|
||||
var decCode = 0;
|
||||
for (var i=0; i<3; i +=1) {
|
||||
decCode += extractDigit(code, i) * powerOfEight[i];
|
||||
}
|
||||
|
||||
# apply offset and clamp
|
||||
decCode = math.clamp(decCode + offset, 0, 4095);
|
||||
|
||||
# convert back to octal-as-decimal
|
||||
code = 0;
|
||||
for (var i=0; i<3; i +=1) {
|
||||
code += extractOctal(decCode, i) * powerOfTen[i];
|
||||
}
|
||||
|
||||
transponderNode.setIntValue(code);
|
||||
}
|
||||
|
||||
]]>
|
||||
</open>
|
||||
</nasal>
|
||||
|
||||
|
||||
<!--
|
||||
adding item:rel-dial, bits: 0:8, report=1
|
||||
adding item:rel-dial-1, bits: 8:8, report=1
|
||||
adding item:button-1, bits: 16:1, report=1
|
||||
adding item:undefined-0, bits: 17:1, report=1
|
||||
adding item:undefined-0-1, bits: 18:1, report=1
|
||||
adding item:undefined-0-2, bits: 19:1, report=1
|
||||
adding item:undefined-0-3, bits: 20:1, report=1
|
||||
adding item:undefined-0-4, bits: 21:1, report=1
|
||||
adding item:undefined-0-5, bits: 22:1, report=1
|
||||
adding item:undefined-0-6, bits: 23:1, report=1
|
||||
|
||||
|
||||
adding item:undefined-0-5, bits: 22:1, report=1
|
||||
adding item:undefined-0-6, bits: 23:1, report=1
|
||||
Unhandled HID alphanumeric usage:54
|
||||
adding item:unknown, bits: 0:4, report=2
|
||||
Unhandled HID alphanumeric usage:53
|
||||
adding item:unknown-1, bits: 4:4, report=2
|
||||
Unhandled HID alphanumeric usage:69
|
||||
adding item:unknown-2, bits: 8:1, report=2
|
||||
adding item:undefined-0-7, bits: 9:1, report=2
|
||||
adding item:undefined-0-8, bits: 10:1, report=2
|
||||
adding item:undefined-0-9, bits: 11:1, report=2
|
||||
adding item:undefined-0-10, bits: 12:1, report=2
|
||||
adding item:undefined-0-11, bits: 13:1, report=2
|
||||
adding item:undefined-0-12, bits: 14:1, report=2
|
||||
adding item:undefined-0-13, bits: 15:1, report=2
|
||||
adding item:display-data, bits: 0:16, report=3
|
||||
adding item:display-data-1, bits: 16:16, report=3
|
||||
adding item:display-data-2, bits: 32:16, report=3
|
||||
adding item:display-data-3, bits: 48:16, report=3
|
||||
Unhandled HID alphanumeric usage:54
|
||||
adding item:unknown-3, bits: 0:4, report=4
|
||||
Unhandled HID alphanumeric usage:53
|
||||
adding item:unknown-4, bits: 4:4, report=4
|
||||
Unhandled HID alphanumeric usage:67
|
||||
adding item:unknown-5, bits: 8:1, report=4
|
||||
|
||||
-->
|
||||
<event>
|
||||
<name>rel-dial-0</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>adjustIdCode(cmdarg().getNode("setting").getValue())</script>
|
||||
</binding>
|
||||
|
||||
<interpolater>
|
||||
<mirrored type="bool">true</mirrored>
|
||||
<entry><ind>0</ind><dep>0</dep></entry>
|
||||
<entry><ind>1</ind><dep>1</dep></entry>
|
||||
<entry><ind>2</ind><dep>10</dep></entry>
|
||||
<entry><ind>3</ind><dep>100</dep></entry>
|
||||
<entry><ind>4</ind><dep>1000</dep></entry>
|
||||
</interpolater>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>rel-dial-1</name>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/instrumentation/transponder/inputs/knob-mode</property>
|
||||
<min>0</min>
|
||||
<max>5</max>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
<report>
|
||||
<report-id type="int">3</report-id>
|
||||
<watch>/instrumentation/transponder/inputs/knob-mode</watch>
|
||||
<nasal-function>displayFourteenSegment</nasal-function>
|
||||
</report>
|
||||
|
||||
<report>
|
||||
<report-id type="int">5</report-id>
|
||||
<watch>/instrumentation/transponder/id-code</watch>
|
||||
<watch>/instrumentation/transponder/inputs/knob-mode</watch>
|
||||
<nasal-function>displaySevenSegment</nasal-function>
|
||||
</report>
|
||||
|
||||
<event>
|
||||
<name>display-brightness</name>
|
||||
<setting>
|
||||
<property>/input/goflight/gf46/brightness</property>
|
||||
</setting>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>Ident</desc>
|
||||
<name>button-1</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>identNode.setBoolValue(1);</script>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>identNode.setBoolValue(0);</script>
|
||||
</binding>
|
||||
</mod-up>
|
||||
</event>
|
||||
|
||||
</PropertyList>
|
|
@ -1,102 +1,34 @@
|
|||
<PropertyList>
|
||||
|
||||
<name>GoFlight MCP Pro</name>
|
||||
<debug-events type="bool">true</debug-events>
|
||||
<name>MCP Pro</name>
|
||||
<debug-events type="bool">false</debug-events>
|
||||
|
||||
<nasal>
|
||||
<open>
|
||||
<![CDATA[
|
||||
# map decimal digits 0..9 to standard 7-segment LCD pattern
|
||||
# 2 should be 5b
|
||||
# 3 should be 4f
|
||||
var translateDigitToSevenSegment = [0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x67];
|
||||
|
||||
var encodeString = func(s, fieldWidth, padChar = nil)
|
||||
{
|
||||
var padCount = fieldWidth - size(s);
|
||||
var r = "";
|
||||
if (padChar == nil) padChar = chr(0);
|
||||
var altitudeAlphanumeric = func() { return goflight.mcp.altitudeData(); }
|
||||
var headingAlphanumeric = func() { return goflight.mcp.headingData(); }
|
||||
var courseAlphanumeric = func() { return goflight.mcp.course1Data(); }
|
||||
var course2Alphanumeric = func() { return goflight.mcp.course2Data(); }
|
||||
var speedAlphanumeric = func() { return goflight.mcp.speedData(); }
|
||||
var vspeedAlphanumeric = func() { return goflight.mcp.vsData(); }
|
||||
|
||||
while (padCount > 0) {
|
||||
r ~= padChar;
|
||||
padCount -=1;
|
||||
}
|
||||
|
||||
for (var i=0; i < size(s); i += 1) {
|
||||
if (s[i] == `.`) {
|
||||
# set the high bit to correspond to the decimal
|
||||
var lastIndex = size(r) - 1;
|
||||
r[lastIndex] = r[lastIndex] + 0x80;
|
||||
} elsif (s[i] == `-`) {
|
||||
r ~= chr(0x40);
|
||||
} else {
|
||||
var digitCode = s[i] - `0`;
|
||||
r ~= chr(translateDigitToSevenSegment[digitCode]);
|
||||
}
|
||||
}
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
var altitudeAlphanumeric = func() {
|
||||
var alt = getprop("/autopilot/settings/target-altitude-ft");
|
||||
var altStr = sprintf("%d", alt);
|
||||
return encodeString(altStr, 5);
|
||||
}
|
||||
|
||||
var headingAlphanumeric = func() {
|
||||
var hdg = getprop("/autopilot/settings/heading-bug-deg");
|
||||
return encodeString(sprintf("%d", hdg), 3);
|
||||
}
|
||||
|
||||
var courseAlphanumeric = func() {
|
||||
var crs = getprop("/instrumentation/nav[0]/radials/selected-deg");
|
||||
return encodeString(sprintf("%d", crs), 3);
|
||||
}
|
||||
|
||||
var course2Alphanumeric = func() {
|
||||
var crs = getprop("/instrumentation/nav[1]/radials/selected-deg");
|
||||
return encodeString(sprintf("%d", crs), 3);
|
||||
}
|
||||
|
||||
var speedAlphanumeric = func() {
|
||||
var spd = getprop("/autopilot/settings/target-speed-kt");
|
||||
return encodeString(sprintf("%d", spd), 5);
|
||||
}
|
||||
|
||||
var vspeedAlphanumeric = func() {
|
||||
var vs = getprop("/autopilot/settings/vertical-speed-fpm");
|
||||
return encodeString(sprintf("%d", vs), 5);
|
||||
}
|
||||
|
||||
var ledState = func()
|
||||
{
|
||||
if (activeChannel == 1) return chr(0x04);
|
||||
return chr(0x2);
|
||||
}
|
||||
]]>
|
||||
</open>
|
||||
</nasal>
|
||||
|
||||
<event>
|
||||
<name>rel-dial</name>
|
||||
<interpolater>
|
||||
<entry><ind>0</ind><dep>0</dep></entry>
|
||||
<entry><ind>1</ind><dep>1</dep></entry>
|
||||
<entry><ind>2</ind><dep>5</dep></entry>
|
||||
<entry><ind>3</ind><dep>10</dep></entry>
|
||||
<entry><ind>4</ind><dep>20</dep></entry>
|
||||
</interpolater>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/autopilot/settings/target-altitude-ft</property>
|
||||
<factor type="double">100</factor>
|
||||
<min>0</min>
|
||||
</binding>
|
||||
<name>display-brightness</name>
|
||||
<setting>
|
||||
<property>/input/goflight/mcp/brightness</property>
|
||||
</setting>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>rel-dial-1</name>
|
||||
|
||||
<event>
|
||||
<name>rel-dial-0</name>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/autopilot/settings/heading-bug-deg</property>
|
||||
|
@ -105,16 +37,32 @@
|
|||
<max>359</max>
|
||||
</binding>
|
||||
<interpolater>
|
||||
<entry><ind>0</ind><dep>0</dep></entry>
|
||||
<entry><ind>1</ind><dep>1</dep></entry>
|
||||
<entry><ind>2</ind><dep>5</dep></entry>
|
||||
<entry><ind>3</ind><dep>10</dep></entry>
|
||||
<entry><ind>4</ind><dep>20</dep></entry>
|
||||
<mirrored type="bool">true</mirrored>
|
||||
<entry>
|
||||
<ind>0</ind>
|
||||
<dep>0</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>1</ind>
|
||||
<dep>1</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>2</ind>
|
||||
<dep>5</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>3</ind>
|
||||
<dep>10</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>4</ind>
|
||||
<dep>30</dep>
|
||||
</entry>
|
||||
</interpolater>
|
||||
</event>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>rel-dial-2</name>
|
||||
<event>
|
||||
<name>rel-dial-1</name>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/instrumentation/nav[0]/radials/selected-deg</property>
|
||||
|
@ -123,47 +71,100 @@
|
|||
<max>359</max>
|
||||
</binding>
|
||||
<interpolater>
|
||||
<entry><ind>0</ind><dep>0</dep></entry>
|
||||
<entry><ind>1</ind><dep>1</dep></entry>
|
||||
<entry><ind>2</ind><dep>5</dep></entry>
|
||||
<entry><ind>3</ind><dep>10</dep></entry>
|
||||
<entry><ind>4</ind><dep>20</dep></entry>
|
||||
<mirrored type="bool">true</mirrored>
|
||||
<entry>
|
||||
<ind>0</ind>
|
||||
<dep>0</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>1</ind>
|
||||
<dep>1</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>2</ind>
|
||||
<dep>5</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>3</ind>
|
||||
<dep>10</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>4</ind>
|
||||
<dep>30</dep>
|
||||
</entry>
|
||||
</interpolater>
|
||||
</event>
|
||||
<event>
|
||||
<name>rel-dial-3</name>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>rel-dial-2</name>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/autopilot/settings/vertical-speed-fpm</property>
|
||||
<factor type="double">10</factor>
|
||||
<factor type="double">-50</factor>
|
||||
<min>-8000</min>
|
||||
<max>12000</max>
|
||||
</binding>
|
||||
<interpolater>
|
||||
<entry><ind>0</ind><dep>0</dep></entry>
|
||||
<entry><ind>1</ind><dep>1</dep></entry>
|
||||
<entry><ind>2</ind><dep>5</dep></entry>
|
||||
<entry><ind>3</ind><dep>10</dep></entry>
|
||||
<entry><ind>4</ind><dep>20</dep></entry>
|
||||
</interpolater>
|
||||
</event>
|
||||
<mirrored type="bool">true</mirrored>
|
||||
|
||||
<event>
|
||||
<name>rel-dial-4</name>
|
||||
<entry>
|
||||
<ind>0</ind>
|
||||
<dep>0</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>1</ind>
|
||||
<dep>1</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>2</ind>
|
||||
<dep>2</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>3</ind>
|
||||
<dep>4</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>4</ind>
|
||||
<dep>10</dep>
|
||||
</entry>
|
||||
</interpolater>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>rel-dial-3</name>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/autopilot/settings/target-speed-kt</property>
|
||||
<min>0</min>
|
||||
<command>nasal</command>
|
||||
<script>goflight.mcp.adjustSpeed(cmdarg().getNode("offset").getValue())</script>
|
||||
</binding>
|
||||
<interpolater>
|
||||
<entry><ind>0</ind><dep>0</dep></entry>
|
||||
<entry><ind>1</ind><dep>1</dep></entry>
|
||||
<entry><ind>2</ind><dep>5</dep></entry>
|
||||
<entry><ind>3</ind><dep>10</dep></entry>
|
||||
<entry><ind>4</ind><dep>20</dep></entry>
|
||||
</interpolater>
|
||||
</event>
|
||||
<mirrored type="bool">true</mirrored>
|
||||
|
||||
<event>
|
||||
<name>rel-dial-5</name>
|
||||
<entry>
|
||||
<ind>0</ind>
|
||||
<dep>0</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>1</ind>
|
||||
<dep>1</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>2</ind>
|
||||
<dep>5</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>3</ind>
|
||||
<dep>10</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>4</ind>
|
||||
<dep>20</dep>
|
||||
</entry>
|
||||
</interpolater>
|
||||
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>rel-dial-4</name>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/instrumentation/nav[1]/radials/selected-deg</property>
|
||||
|
@ -172,80 +173,131 @@
|
|||
<max>359</max>
|
||||
</binding>
|
||||
<interpolater>
|
||||
<entry><ind>0</ind><dep>0</dep></entry>
|
||||
<entry><ind>1</ind><dep>1</dep></entry>
|
||||
<entry><ind>2</ind><dep>5</dep></entry>
|
||||
<entry><ind>3</ind><dep>10</dep></entry>
|
||||
<entry><ind>4</ind><dep>20</dep></entry>
|
||||
<mirrored type="bool">true</mirrored>
|
||||
|
||||
<entry>
|
||||
<ind>0</ind>
|
||||
<dep>0</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>1</ind>
|
||||
<dep>1</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>2</ind>
|
||||
<dep>5</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>3</ind>
|
||||
<dep>10</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>4</ind>
|
||||
<dep>30</dep>
|
||||
</entry>
|
||||
</interpolater>
|
||||
</event>
|
||||
</event>
|
||||
|
||||
|
||||
<report>
|
||||
<report-id type="int">9</report-id>
|
||||
<watch>/autopilot/settings/target-altitude-ft</watch>
|
||||
<nasal-function>altitudeAlphanumeric</nasal-function>
|
||||
</report>
|
||||
|
||||
<report>
|
||||
<report-id type="int">7</report-id>
|
||||
<watch>/autopilot/settings/heading-bug-deg</watch>
|
||||
<nasal-function>headingAlphanumeric</nasal-function>
|
||||
</report>
|
||||
|
||||
<report>
|
||||
<report-id type="int">3</report-id>
|
||||
<watch>/instrumentation/nav[0]/radials/selected-deg</watch>
|
||||
<nasal-function>courseAlphanumeric</nasal-function>
|
||||
</report>
|
||||
|
||||
<report>
|
||||
<report-id type="int">11</report-id>
|
||||
<watch>/autopilot/settings/vertical-speed-fpm</watch>
|
||||
<nasal-function>vspeedAlphanumeric</nasal-function>
|
||||
</report>
|
||||
|
||||
<report>
|
||||
<report-id type="int">5</report-id>
|
||||
<watch>/autopilot/settings/target-speed-kt</watch>
|
||||
<nasal-function>speedAlphanumeric</nasal-function>
|
||||
</report>
|
||||
|
||||
<report>
|
||||
<report-id type="int">13</report-id>
|
||||
<watch>/instrumentation/nav[1]/radials/selected-deg</watch>
|
||||
<nasal-function>course2Alphanumeric</nasal-function>
|
||||
</report>
|
||||
|
||||
<!-- set LED from nose gear indicator -->
|
||||
<event>
|
||||
<name>led-misc</name>
|
||||
<name>rel-dial-5</name>
|
||||
<interpolater>
|
||||
<mirrored type="bool">true</mirrored>
|
||||
|
||||
<entry>
|
||||
<ind>0</ind>
|
||||
<dep>0</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>1</ind>
|
||||
<dep>1</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>2</ind>
|
||||
<dep>10</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>3</ind>
|
||||
<dep>20</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>4</ind>
|
||||
<dep>40</dep>
|
||||
</entry>
|
||||
</interpolater>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
var x = cmdarg().getNode("offset").getValue();
|
||||
goflight.mcp.adjustAltitude(x * 50);
|
||||
</script>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
<report>
|
||||
<report-id type="int">9</report-id>
|
||||
<watch>/input/goflight/mcp/refresh</watch>
|
||||
<nasal-function>altitudeAlphanumeric</nasal-function>
|
||||
</report>
|
||||
|
||||
<report>
|
||||
<report-id type="int">7</report-id>
|
||||
<watch>/input/goflight/mcp/refresh-headings</watch>
|
||||
<nasal-function>headingAlphanumeric</nasal-function>
|
||||
</report>
|
||||
|
||||
<report>
|
||||
<report-id type="int">3</report-id>
|
||||
<watch>/input/goflight/mcp/refresh-headings</watch>
|
||||
<nasal-function>courseAlphanumeric</nasal-function>
|
||||
</report>
|
||||
|
||||
<report>
|
||||
<report-id type="int">11</report-id>
|
||||
<watch>/input/goflight/mcp/refresh</watch>
|
||||
<nasal-function>vspeedAlphanumeric</nasal-function>
|
||||
</report>
|
||||
|
||||
<report>
|
||||
<report-id type="int">5</report-id>
|
||||
<watch>/input/goflight/mcp/refresh</watch>
|
||||
<nasal-function>speedAlphanumeric</nasal-function>
|
||||
</report>
|
||||
|
||||
<report>
|
||||
<report-id type="int">13</report-id>
|
||||
<watch>/input/goflight/mcp/refresh-headings</watch>
|
||||
<nasal-function>course2Alphanumeric</nasal-function>
|
||||
</report>
|
||||
|
||||
<!-- LED driver properties - these are generated from individual
|
||||
bool properties by the LEDWatcher helper class above -->
|
||||
<event>
|
||||
<name>led-misc-0</name>
|
||||
<setting>
|
||||
<value>1</value>
|
||||
<condition>
|
||||
<property>/gear/gear[0]/indicator-servicable</property>
|
||||
<greater-than>
|
||||
<property>/gear/gear[0]/position-norm</property>
|
||||
<value>0.9</value>
|
||||
</greater-than>
|
||||
</condition>
|
||||
</setting>
|
||||
<setting>
|
||||
<value>0</value>
|
||||
<condition>
|
||||
<not>
|
||||
<and>
|
||||
<property>/gear/gear[0]/indicator-servicable</property>
|
||||
<greater-than>
|
||||
<property>/gear/gear[0]/position-norm</property>
|
||||
<value>0.9</value>
|
||||
</greater-than>
|
||||
</and>
|
||||
</not>
|
||||
</condition>
|
||||
<property>/input/goflight/mcp/led[0]</property>
|
||||
</setting>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>led-misc-1</name>
|
||||
<setting>
|
||||
<property>/input/goflight/mcp/led[1]</property>
|
||||
</setting>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>led-misc-2</name>
|
||||
<setting>
|
||||
<property>/input/goflight/mcp/led[2]</property>
|
||||
</setting>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>led-misc-3</name>
|
||||
<setting>
|
||||
<property>/input/goflight/mcp/led[3]</property>
|
||||
</setting>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>button-1</name>
|
||||
|
@ -260,7 +312,7 @@
|
|||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("Button 2")</script>
|
||||
</binding>
|
||||
</binding>enable
|
||||
</event>
|
||||
|
||||
<event>
|
||||
|
@ -315,8 +367,8 @@
|
|||
<desc>Speed</desc>
|
||||
<name>button-9</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("SPD")</script>
|
||||
<command>goflight-mcp-button</command>
|
||||
<button>speed</button>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
|
@ -324,8 +376,8 @@
|
|||
<name>button-10</name>
|
||||
<desc>Level Change</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("LVL CHG")</script>
|
||||
<command>goflight-mcp-button</command>
|
||||
<button>level-change</button>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
|
@ -333,8 +385,8 @@
|
|||
<name>button-11</name>
|
||||
<desc>Heading</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("HDG")</script>
|
||||
<command>goflight-mcp-button</command>
|
||||
<button>heading</button>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
|
@ -342,8 +394,8 @@
|
|||
<name>button-12</name>
|
||||
<desc>Approach</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("APP")</script>
|
||||
<command>goflight-mcp-button</command>
|
||||
<button>approach</button>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
|
@ -351,8 +403,8 @@
|
|||
<name>button-13</name>
|
||||
<desc>Altitude</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("ALT")</script>
|
||||
<command>goflight-mcp-button</command>
|
||||
<button>altitude-hold</button>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
|
@ -360,8 +412,8 @@
|
|||
<name>button-14</name>
|
||||
<desc>Vertical Speed</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("VS")</script>
|
||||
<command>goflight-mcp-button</command>
|
||||
<button>vs</button>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
|
@ -369,9 +421,17 @@
|
|||
<name>button-15</name>
|
||||
<desc>Disengage Bar</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("Disengage")</script>
|
||||
<command>property-assign</command>
|
||||
<property>/input/goflight/mcp/ap-disengage</property>
|
||||
<value>1</value>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>/input/goflight/mcp/ap-disengage</property>
|
||||
<value>0</value>
|
||||
</binding>
|
||||
</mod-up>
|
||||
</event>
|
||||
|
||||
|
||||
|
@ -379,17 +439,25 @@
|
|||
<name>button-16</name>
|
||||
<desc>F/O FD Enable</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("F/O FD")</script>
|
||||
<command>property-assign</command>
|
||||
<property>/input/goflight/mcp/fo-fd-enabled</property>
|
||||
<value>1</value>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>/input/goflight/mcp/fo-fd-enabled</property>
|
||||
<value>0</value>
|
||||
</binding>
|
||||
</mod-up>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>button-17</name>
|
||||
<desc>Altitude Intervention</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("ALT INTV")</script>
|
||||
<command>goflight-mcp-button</command>
|
||||
<button>altitude-intervention</button>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
|
@ -397,8 +465,8 @@
|
|||
<name>button-18</name>
|
||||
<desc>CWS-A</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("CWS-A")</script>
|
||||
<command>goflight-mcp-button</command>
|
||||
<button>cws-a</button>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
|
@ -406,8 +474,8 @@
|
|||
<name>button-19</name>
|
||||
<desc>CWS-B</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("CWS-B")</script>
|
||||
<command>goflight-mcp-button</command>
|
||||
<button>cws-b</button>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
|
@ -415,8 +483,8 @@
|
|||
<name>button-20</name>
|
||||
<desc>IAS knob push</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("IAS push")</script>
|
||||
<command>goflight-mcp-button</command>
|
||||
<button>speed-push</button>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
|
@ -424,8 +492,8 @@
|
|||
<name>button-21</name>
|
||||
<desc>HDG knob push</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("HDG push")</script>
|
||||
<command>goflight-mcp-button</command>
|
||||
<button>heading-push</button>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
|
@ -433,8 +501,8 @@
|
|||
<name>button-22</name>
|
||||
<desc>Altitude Knob Push</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("ALT SEL")</script>
|
||||
<command>goflight-mcp-button</command>
|
||||
<button>altitude-select</button>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
|
@ -442,17 +510,25 @@
|
|||
<name>button-23</name>
|
||||
<desc>Captain's FD Enable</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("CAP FD")</script>
|
||||
<command>property-assign</command>
|
||||
<property>/input/goflight/mcp/captain-fd-enabled</property>
|
||||
<value>1</value>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>/input/goflight/mcp/captain-fd-enabled</property>
|
||||
<value>0</value>
|
||||
</binding>
|
||||
</mod-up>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>button-24</name>
|
||||
<desc>N1 select</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("N1")</script>
|
||||
<command>goflight-mcp-button</command>
|
||||
<button>n1</button>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
|
@ -460,8 +536,8 @@
|
|||
<name>button-25</name>
|
||||
<desc>VNAV</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("VNAV")</script>
|
||||
<command>goflight-mcp-button</command>
|
||||
<button>vnav</button>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
|
@ -469,8 +545,8 @@
|
|||
<name>button-26</name>
|
||||
<desc>LNAV</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("LNAV")</script>
|
||||
<command>goflight-mcp-button</command>
|
||||
<button>lnav</button>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
|
@ -478,8 +554,8 @@
|
|||
<name>button-27</name>
|
||||
<desc>CMD A</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("CMD A")</script>
|
||||
<command>goflight-mcp-button</command>
|
||||
<button>command-a</button>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
|
@ -487,8 +563,8 @@
|
|||
<name>button-28</name>
|
||||
<desc>CMD B</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("CMD B")</script>
|
||||
<command>goflight-mcp-button</command>
|
||||
<button>command-b</button>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
|
@ -496,17 +572,25 @@
|
|||
<name>button-29</name>
|
||||
<desc>AT arm</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("A/T ARM")</script>
|
||||
<command>property-assign</command>
|
||||
<property>/input/goflight/mcp/autothrottle-armed</property>
|
||||
<value>1</value>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>/input/goflight/mcp/autothrottle-armed</property>
|
||||
<value>0</value>
|
||||
</binding>
|
||||
</mod-up>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>button-30</name>
|
||||
<desc>Soeed crossover</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("SPD C/O")</script>
|
||||
<command>goflight-mcp-button</command>
|
||||
<button>speed-crossover</button>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
|
@ -514,8 +598,8 @@
|
|||
<name>button-31</name>
|
||||
<desc>Speed intervention</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("SPD INTV")</script>
|
||||
<command>goflight-mcp-button</command>
|
||||
<button>speed-intervention</button>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
|
@ -523,8 +607,8 @@
|
|||
<name>button-32</name>
|
||||
<desc>VOR / Localizer</desc>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print("VOR/LOC")</script>
|
||||
<command>goflight-mcp-button</command>
|
||||
<button>vor</button>
|
||||
</binding>
|
||||
</event>
|
||||
</PropertyList>
|
||||
|
|
137
Input/Event/GoFlight/RP48.xml
Normal file
|
@ -0,0 +1,137 @@
|
|||
<PropertyList>
|
||||
|
||||
<!-- yes, the name is crazy. -->
|
||||
<name>Microchip Technology Inc. Multi Media Keyboard Demo</name>
|
||||
<debug-events type="bool">false</debug-events>
|
||||
|
||||
<!-- presents as a mouse and keyboard as well :/ -->
|
||||
<device-number typ="int">0</device-number>
|
||||
<nasal>
|
||||
<open>
|
||||
<![CDATA[
|
||||
|
||||
for (var i=0; i < 8; i+=1) {
|
||||
var n = props.globals.getNode('/input/goflight/rp48/led[' ~ i ~ ']', 1);
|
||||
n.setBoolValue(0);
|
||||
}
|
||||
]]>
|
||||
</open>
|
||||
</nasal>
|
||||
|
||||
|
||||
|
||||
<event>
|
||||
<name>rel-dial-0</name>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/input/goflight/rp48/value[0]</property>
|
||||
</binding>
|
||||
<interpolater>
|
||||
<entry><ind>0</ind><dep>0</dep></entry>
|
||||
<entry><ind>1</ind><dep>1</dep></entry>
|
||||
<entry><ind>2</ind><dep>2</dep></entry>
|
||||
<entry><ind>3</ind><dep>4</dep></entry>
|
||||
<entry><ind>4</ind><dep>8</dep></entry>
|
||||
</interpolater>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>rel-dial-1</name>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/input/goflight/rp48/value[1]</property>
|
||||
</binding>
|
||||
<interpolater>
|
||||
<entry><ind>0</ind><dep>0</dep></entry>
|
||||
<entry><ind>1</ind><dep>1</dep></entry>
|
||||
<entry><ind>2</ind><dep>2</dep></entry>
|
||||
<entry><ind>3</ind><dep>4</dep></entry>
|
||||
<entry><ind>4</ind><dep>8</dep></entry>
|
||||
</interpolater>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>rel-dial-2</name>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>/input/goflight/rp48/value[2]</property>
|
||||
</binding>
|
||||
<interpolater>
|
||||
<entry><ind>0</ind><dep>0</dep></entry>
|
||||
<entry><ind>1</ind><dep>1</dep></entry>
|
||||
<entry><ind>2</ind><dep>2</dep></entry>
|
||||
<entry><ind>3</ind><dep>4</dep></entry>
|
||||
<entry><ind>4</ind><dep>8</dep></entry>
|
||||
</interpolater>
|
||||
</event>
|
||||
|
||||
|
||||
<event>
|
||||
<desc>Button</desc>
|
||||
<name>button-1</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print('RP48 button');</script>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>Button</desc>
|
||||
<name>button-2</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print('RP48 button 2');</script>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>Button</desc>
|
||||
<name>button-3</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print('RP48 button 3');</script>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>led-misc-0</name>
|
||||
<setting>
|
||||
<property>/input/goflight/rp48/led[0]</property>
|
||||
</setting>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>led-misc-1</name>
|
||||
<setting>
|
||||
<property>/input/goflight/rp48/led[1]</property>
|
||||
</setting>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>led-misc-2</name>
|
||||
<setting>
|
||||
<property>/input/goflight/rp48/led[2]</property>
|
||||
</setting>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>led-misc-3</name>
|
||||
<setting>
|
||||
<property>/input/goflight/rp48/led[3]</property>
|
||||
</setting>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>led-misc-4</name>
|
||||
<setting>
|
||||
<property>/input/goflight/rp48/led[4]</property>
|
||||
</setting>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>led-misc-5</name>
|
||||
<setting>
|
||||
<property>/input/goflight/rp48/led[5]</property>
|
||||
</setting>
|
||||
</event>
|
||||
</PropertyList>
|
144
Input/Event/GoFlight/TF8.xml
Normal file
|
@ -0,0 +1,144 @@
|
|||
<PropertyList>
|
||||
|
||||
<name>GoFlight GoFlight GF-T8 control module</name>
|
||||
<debug-events type="bool">false</debug-events>
|
||||
|
||||
<nasal>
|
||||
<open>
|
||||
<![CDATA[
|
||||
|
||||
]]>
|
||||
</open>
|
||||
</nasal>
|
||||
|
||||
<event>
|
||||
<name>led-misc-1</name>
|
||||
<setting>
|
||||
<value>1</value>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>/input/goflight/mfr/active</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
</condition>
|
||||
</setting>
|
||||
<setting>
|
||||
<value>0</value>
|
||||
<condition>
|
||||
<not-equals>
|
||||
<property>/input/goflight/mfr/active</property>
|
||||
<value>0</value>
|
||||
</not-equals>
|
||||
</condition>
|
||||
</setting>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>led-misc-2</name>
|
||||
<setting>
|
||||
<value>1</value>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>/input/goflight/mfr/active</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</condition>
|
||||
</setting>
|
||||
<setting>
|
||||
<value>0</value>
|
||||
<condition> <command>property-swap</command>
|
||||
<property>/input/goflight/mfr/standby-mhz</property>
|
||||
<property>/input/goflight/mfr/selected-mhz</property>
|
||||
<not-equals>
|
||||
<property>/input/goflight/mfr/active</property>
|
||||
<value>1</value>
|
||||
</not-equals>
|
||||
</condition>
|
||||
</setting>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>led-misc-6</name>
|
||||
<setting>
|
||||
<property>/controls/flight/autospeedbrake</property>
|
||||
</setting>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>led-misc-7</name>
|
||||
<setting>
|
||||
<property>/controls/gear/brake-parking</property>
|
||||
</setting>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<name>display-brightness</name>
|
||||
<setting>
|
||||
<property>/input/goflight/tf8/brightness</property>
|
||||
</setting>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>Transfer Button</desc>
|
||||
<name>button-1</name>
|
||||
<binding>
|
||||
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>Nav 1 Button</desc>
|
||||
<name>button-2</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print('TF8 button2')</script>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print('TF8 button 2 down')</script>
|
||||
</binding>
|
||||
</mod-up>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>Button 3</desc>
|
||||
<name>button-3</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print('TF8 button 3')</script>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>Button 4</desc>
|
||||
<name>button-4</name>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print('TF8 button 4 up')</script>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>print('TF8 button 4 down')</script>
|
||||
</binding>
|
||||
</mod-up>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>Parking brake toggle</desc>
|
||||
<name>button-8</name>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>/controls/gear/brake-parking</property>
|
||||
<value>1</value>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>/controls/gear/brake-parking</property>
|
||||
<value>0</value>
|
||||
</binding>
|
||||
</mod-up>
|
||||
</event>
|
||||
</PropertyList>
|
42
Input/Event/LeoBodnar/SimuJabsYoke.xml
Normal file
|
@ -0,0 +1,42 @@
|
|||
<PropertyList>
|
||||
|
||||
<name>DISABLED Leo Bodnar BU0836A Interface</name>
|
||||
<debug-events type="bool">false</debug-events>
|
||||
|
||||
|
||||
<event>
|
||||
<desc>Aileron</desc>
|
||||
<name>abs-x-rotate</name>
|
||||
<binding>
|
||||
<command>property-scale</command>
|
||||
<property>/controls/flight/aileron</property>
|
||||
<offset>-1.0</offset>
|
||||
<factor>-1.0</factor>
|
||||
</binding>
|
||||
</event>
|
||||
|
||||
<event>
|
||||
<desc>Elevator</desc>
|
||||
<name>abs-y-rotate</name>
|
||||
<binding>
|
||||
<command>property-scale</command>
|
||||
<property>/controls/flight/elevator</property>
|
||||
<offset>-1.0</offset>
|
||||
<factor>-1.0</factor>
|
||||
</binding>
|
||||
</event>
|
||||
<!--
|
||||
<event>
|
||||
<desc>Rudder</desc>
|
||||
<name>abs-z-translate</name>
|
||||
<binding>
|
||||
<command>property-scale</command>
|
||||
<property>/controls/flight/rudder</property>
|
||||
<offset>-0.5</offset>
|
||||
<factor>-2.0</factor>
|
||||
<power type="double">1.0</power>
|
||||
</binding>
|
||||
|
||||
</event>
|
||||
-->
|
||||
</PropertyList>
|
|
@ -143,9 +143,9 @@
|
|||
<command>nasal</command>
|
||||
<script>
|
||||
setprop("/sim/current-view/view-number", 0);
|
||||
setprop("/sim/current-view/goal-pitch-offset-deg", getprop("/sim/view[0]/config/pitch-offset-deg"));
|
||||
setprop("/sim/current-view/goal-pitch-offset-deg", getprop("/sim/view[0]/config/pitch-offset-deg") or 0);
|
||||
setprop("/sim/current-view/goal-heading-offset-deg", 0.0);
|
||||
#setprop("/sim/current-view/field-of-view", getprop("/sim/view/config/default-field-of-view-deg"));
|
||||
#setprop("/sim/current-view/field-of-view", getprop("/sim/view/config/default-field-of-view-deg") or 60.0);
|
||||
</script>
|
||||
</binding>
|
||||
</button>
|
||||
|
|