diff --git a/Environment/environment.xml b/Environment/environment.xml index 2d773f391..25f43c064 100644 --- a/Environment/environment.xml +++ b/Environment/environment.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" ?> +<?xml version="1.0" ?> <!-- This file is part of FlightGear, the free flight simulator http://www.flightgear.org/ @@ -15,199 +15,212 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. --> - <PropertyList> +<PropertyList> <weather-scenarios> <scenario> - <name>Disabled</name> - <description>METAR weather generation is disabled. Use the above controls to setup your weather.</description> + <name type="string">Disabled</name> + <description type="string">METAR weather generation is disabled. Use the above controls to setup your weather.</description> </scenario> <scenario> - <name>Live data</name> - <description>Fetch live weather data for your nearest airport from noaa.gov. You need a working internet connection. - All the controls in this dialog are computed automatically, once a valid METAR is received. + <name type="string">Live data</name> + <description type="string"> + Fetch live weather data for your nearest airport from noaa.gov. You need a working internet connection. + All the controls in this dialog are computed automatically, once a valid METAR is received. </description> </scenario> <scenario> - <name>Manual input</name> - <description>Enter your favorite METAR weather in the textbox below. A valid METAR syntax is required.</description> + <name type="string">Manual input</name> + <description type="string">Enter your favorite METAR weather in the textbox below. A valid METAR syntax is required.</description> </scenario> <scenario> - <name>Fair weather</name> - <metar>XXXX 012345Z 15003KT 12SM SCT041 FEW200 20/08 Q1015 NOSIG</metar> - <description>A lovely day for trip to your favorite 100$ hamburger airfield</description> + <name type="string">Fair weather</name> + <metar type="string">XXXX 012345Z 15003KT 12SM SCT041 FEW200 20/08 Q1015 NOSIG</metar> + <description type="string">A lovely day for trip to your favorite 100$ hamburger airfield</description> </scenario> <scenario> - <name>Thunderstorm</name> - <metar>XXXX 012345Z 15012G25KT 4000 TSRA FEW030CB SCT035TCU 27/24 Q0995</metar> - <description>A hot and damp summer day with thunderstorms developing in the afternoon. - Be prepared for reduction of visibility in showers and strong gusts - near thunderstorms</description> + <name type="string">Thunderstorm</name> + <metar type="string">XXXX 012345Z 15012G25KT 4000 TSRA FEW030CB SCT035TCU 27/24 Q0995</metar> + <description type="string"> + A hot and damp summer day with thunderstorms developing in the afternoon. + Be prepared for reduction of visibility in showers and strong gusts + near thunderstorms + </description> </scenario> <scenario> - <name>Stormy Monday</name> - <metar>XXXX 012345Z 28035G50KT 250V300 9999 TSRA SCT022CB BKN030 13/09 Q1005</metar> - <description>You're out for an adventure? Gusty winds blowing from the west - and isolated thunderstorms should be avoided. Fasten your seatbelt!</description> + <name type="string">Stormy Monday</name> + <metar type="string">XXXX 012345Z 28035G50KT 250V300 9999 TSRA SCT022CB BKN030 13/09 Q1005</metar> + <description type="string"> + You're out for an adventure? Gusty winds blowing from the west + and isolated thunderstorms should be avoided. Fasten your seatbelt! + </description> </scenario> <scenario> - <name>Marginal VFR</name> - <metar>XXXX 012345Z 23010KT 5000 SHRA SCT012 BKN018 OVC060 15/11 Q1010</metar> - <description>After the storm - limited visibility and some showers. - Go or No-Go?</description> + <name type="string">Marginal VFR</name> + <metar type="string">XXXX 012345Z 23010KT 5000 SHRA SCT012 BKN018 OVC060 15/11 Q1010</metar> + <description type="string"> + After the storm - limited visibility and some showers. + Go or No-Go? + </description> </scenario> <scenario> - <name>CAT I minimum</name> - <metar>XXXX 012345Z 15015KT 0800 -RA BKN002 OVC004 08/06 Q0990</metar> - <description>If you just got your IFR rating, this is what you are allowed to do. But can you?</description> + <name type="string">CAT I minimum</name> + <metar type="string">XXXX 012345Z 15015KT 0800 -RA BKN002 OVC004 08/06 Q0990</metar> + <description type="string">If you just got your IFR rating, this is what you are allowed to do. But can you?</description> </scenario> <scenario> - <name>CAT II minimum</name> - <metar>XXXX 012345Z 15010KT 0400 -RA BKN001 OVC002 08/06 Q0990</metar> - <description>With just a 1/4 mile visibility and clouds at 100ft, you don't see much of the runway until - seconds before touchdown. Trust your instruments to stay alive.</description> + <name type="string">CAT II minimum</name> + <metar type="string">XXXX 012345Z 15010KT 0400 -RA BKN001 OVC002 08/06 Q0990</metar> + <description type="string"> + With just a 1/4 mile visibility and clouds at 100ft, you don't see much of the runway until + seconds before touchdown. Trust your instruments to stay alive. + </description> </scenario> <scenario> - <name>CAT IIIb minimum</name> - <metar>XXXX 012345Z VRB01KT 0100 -RA FG OVC001 OVC002 02/02 Q0990</metar> - <description>This is expert level. You will barely see the taxiway from the cockpit, even if you are - on ground. Fog and light drizzle, freezing level at 1000ft.</description> + <name type="string">CAT IIIb minimum</name> + <metar type="string">XXXX 012345Z VRB01KT 0100 -RA FG OVC001 OVC002 02/02 Q0990</metar> + <description type="string"> + This is expert level. You will barely see the taxiway from the cockpit, even if you are + on ground. Fog and light drizzle, freezing level at 1000ft. + </description> </scenario> <scenario> - <name>Early morning fog</name> - <metar>XXXX 012345Z 00000KT 0800 FG NCD 08/08 A3030</metar> - <description>Fog developed this autumn's morning. Expect good visibility above the layer. - However - getting through it can be a challenge. Stay alive for a 500' climb - and you'll see the sun!</description> + <name type="string">Early morning fog</name> + <metar type="string">XXXX 012345Z 00000KT 0800 FG NCD 08/08 A3030</metar> + <description type="string"> + Fog developed this autumn's morning. Expect good visibility above the layer. + However - getting through it can be a challenge. Stay alive for a 500' climb + and you'll see the sun! + </description> </scenario> </weather-scenarios> - <weather-scenario>Fair weather</weather-scenario> + <weather-scenario type="string">Fair weather</weather-scenario> <config> - <boundary-transition-ft>500</boundary-transition-ft> + <boundary-transition-ft type="double">500</boundary-transition-ft> - <boundary> + <boundary> - <entry> - <elevation-ft>0</elevation-ft> - <wind-from-heading-deg>270</wind-from-heading-deg> - <wind-speed-kt>3</wind-speed-kt> - <visibility-m>16093.44</visibility-m> - <pressure-sea-level-inhg>29.92</pressure-sea-level-inhg> - <temperature-degc>15.0</temperature-degc> - <dewpoint-degc>5.0</dewpoint-degc> - <turbulence> - <factor>0.2</factor> - <magnitude-norm>0.0</magnitude-norm> - <rate-hz>1.0</rate-hz> - </turbulence> - <wind-heading-change-deg>0</wind-heading-change-deg> - <wind-speed-change-rel>0</wind-speed-change-rel> - </entry> + <entry> + <elevation-ft type="double">0</elevation-ft> + <wind-from-heading-deg type="double">270</wind-from-heading-deg> + <wind-speed-kt type="double">3</wind-speed-kt> + <visibility-m type="double">16093.44</visibility-m> + <pressure-sea-level-inhg type="double">29.92</pressure-sea-level-inhg> + <temperature-degc type="double">15.0</temperature-degc> + <dewpoint-degc type="double">5.0</dewpoint-degc> + <turbulence> + <factor type="double">0.2</factor> + <magnitude-norm type="double">0.0</magnitude-norm> + <rate-hz type="double">1.0</rate-hz> + </turbulence> + <wind-heading-change-deg type="double">0</wind-heading-change-deg> + <wind-speed-change-rel type="double">0</wind-speed-change-rel> + </entry> - <entry> - <elevation-ft>500</elevation-ft> - <wind-from-heading-deg>280</wind-from-heading-deg> - <wind-speed-kt>6</wind-speed-kt> - <turbulence> - <factor>1.0</factor> - <magnitude-norm>0.1</magnitude-norm> - <rate-hz>1.0</rate-hz> - </turbulence> - <wind-heading-change-deg>5</wind-heading-change-deg> - <wind-speed-change-rel>0.3</wind-speed-change-rel> - </entry> + <entry> + <elevation-ft type="double">500</elevation-ft> + <wind-from-heading-deg type="double">280</wind-from-heading-deg> + <wind-speed-kt type="double">6</wind-speed-kt> + <turbulence> + <factor type="double">1.0</factor> + <magnitude-norm type="double">0.1</magnitude-norm> + <rate-hz type="double">1.0</rate-hz> + </turbulence> + <wind-heading-change-deg type="double">5</wind-heading-change-deg> + <wind-speed-change-rel type="double">0.3</wind-speed-change-rel> + </entry> - </boundary> + </boundary> - <aloft> + <aloft> - <entry> - <elevation-ft>5000</elevation-ft> - <wind-from-heading-deg>300</wind-from-heading-deg> - <wind-speed-kt>10</wind-speed-kt> - <visibility-m>16093.44</visibility-m> - <pressure-sea-level-inhg>29.92</pressure-sea-level-inhg> - <turbulence> - <factor>0.5</factor> - <magnitude-norm>0.05</magnitude-norm> - <rate-hz>1.0</rate-hz> - </turbulence> - <wind-heading-change-deg>25</wind-heading-change-deg> - <wind-speed-change-rel>1</wind-speed-change-rel> - </entry> + <entry> + <elevation-ft type="double">5000</elevation-ft> + <wind-from-heading-deg type="double">300</wind-from-heading-deg> + <wind-speed-kt type="double">10</wind-speed-kt> + <visibility-m type="double">16093.44</visibility-m> + <pressure-sea-level-inhg type="double">29.92</pressure-sea-level-inhg> + <turbulence> + <factor type="double">0.5</factor> + <magnitude-norm type="double">0.05</magnitude-norm> + <rate-hz type="double">1.0</rate-hz> + </turbulence> + <wind-heading-change-deg type="double">25</wind-heading-change-deg> + <wind-speed-change-rel type="double">1</wind-speed-change-rel> + </entry> - <entry> - <elevation-ft>10000</elevation-ft> - <wind-from-heading-deg>310</wind-from-heading-deg> - <wind-speed-kt>20</wind-speed-kt> - <turbulence> - <factor>0.0</factor> - <magnitude-norm>0.0</magnitude-norm> - <rate-hz>1.0</rate-hz> - </turbulence> - <wind-heading-change-deg>30</wind-heading-change-deg> - <wind-speed-change-rel>1.2</wind-speed-change-rel> - </entry> + <entry> + <elevation-ft type="double">10000</elevation-ft> + <wind-from-heading-deg type="double">310</wind-from-heading-deg> + <wind-speed-kt type="double">20</wind-speed-kt> + <turbulence> + <factor type="double">0.0</factor> + <magnitude-norm type="double">0.0</magnitude-norm> + <rate-hz type="double">1.0</rate-hz> + </turbulence> + <wind-heading-change-deg type="double">30</wind-heading-change-deg> + <wind-speed-change-rel type="double">1.2</wind-speed-change-rel> + </entry> - <entry> - <elevation-ft>18000</elevation-ft> - <wind-from-heading-deg>320</wind-from-heading-deg> - <wind-speed-kt>30</wind-speed-kt> - <wind-heading-change-deg>35</wind-heading-change-deg> - <wind-speed-change-rel>1.3</wind-speed-change-rel> - </entry> + <entry> + <elevation-ft type="double">18000</elevation-ft> + <wind-from-heading-deg type="double">320</wind-from-heading-deg> + <wind-speed-kt type="double">30</wind-speed-kt> + <wind-heading-change-deg type="double">35</wind-heading-change-deg> + <wind-speed-change-rel type="double">1.3</wind-speed-change-rel> + </entry> - <entry> - <elevation-ft>24000</elevation-ft> - <wind-from-heading-deg>330</wind-from-heading-deg> - <wind-speed-kt>50</wind-speed-kt> - <wind-heading-change-deg>35</wind-heading-change-deg> - <wind-speed-change-rel>1.3</wind-speed-change-rel> - </entry> + <entry> + <elevation-ft type="double">24000</elevation-ft> + <wind-from-heading-deg type="double">330</wind-from-heading-deg> + <wind-speed-kt type="double">50</wind-speed-kt> + <wind-heading-change-deg type="double">35</wind-heading-change-deg> + <wind-speed-change-rel type="double">1.3</wind-speed-change-rel> + </entry> - <entry> - <elevation-ft>30000</elevation-ft> - <wind-from-heading-deg>340</wind-from-heading-deg> - <wind-speed-kt>70</wind-speed-kt> - <wind-heading-change-deg>35</wind-heading-change-deg> - <wind-speed-change-rel>1.3</wind-speed-change-rel> - </entry> + <entry> + <elevation-ft type="double">30000</elevation-ft> + <wind-from-heading-deg type="double">340</wind-from-heading-deg> + <wind-speed-kt type="double">70</wind-speed-kt> + <wind-heading-change-deg type="double">35</wind-heading-change-deg> + <wind-speed-change-rel type="double">1.3</wind-speed-change-rel> + </entry> - </aloft> + </aloft> </config> <clouds> - <layer n="0"> - <coverage>clear</coverage> - <elevation-ft>-9999</elevation-ft> - <thickness-ft>600</thickness-ft> - <transition-ft>150</transition-ft> - <span-m>40000</span-m> - </layer> - <layer n="1"> - <coverage>clear</coverage> - <elevation-ft>-9999</elevation-ft> - <thickness-ft>65</thickness-ft> - <transition-ft>25</transition-ft> - <span-m>40000</span-m> - </layer> - <layer n="2"> - <coverage>clear</coverage> - <elevation-ft>-9999</elevation-ft> - <span-m>40000</span-m> - </layer> - <layer n="3"> - <coverage>clear</coverage> - <elevation-ft>-9999</elevation-ft> - <span-m>40000</span-m> - </layer> - <layer n="4"> - <coverage>clear</coverage> - <elevation-ft>-9999</elevation-ft> - <span-m>40000</span-m> - </layer> + <layer n="0"> + <coverage type="string">clear</coverage> + <elevation-ft type="double">-9999</elevation-ft> + <thickness-ft type="double">600</thickness-ft> + <transition-ft type="double">150</transition-ft> + <span-m>40000</span-m> + </layer> + <layer n="1"> + <coverage type="string">clear</coverage> + <elevation-ft type="double">-9999</elevation-ft> + <thickness-ft type="double">65</thickness-ft> + <transition-ft type="double">25</transition-ft> + <span-m type="double">40000</span-m> + </layer> + <layer n="2"> + <coverage type="string">clear</coverage> + <elevation-ft type="double">-9999</elevation-ft> + <span-m type="double">40000</span-m> + </layer> + <layer n="3"> + <coverage type="double">clear</coverage> + <elevation-ft type="double">-9999</elevation-ft> + <span-m type="double">40000</span-m> + </layer> + <layer n="4"> + <coverage type="string">clear</coverage> + <elevation-ft type="double">-9999</elevation-ft> + <span-m type="double">40000</span-m> + </layer> </clouds> <cloudlayers include="cloudlayers.xml"/> @@ -225,67 +238,80 @@ Wait for /environment/metar[10]/valid to become true. --> - <metar n="0">/environment/metar[0]</metar> <!-- nearest airport --> - <metar n="1">/environment/metar[1]</metar> <!-- NAV1 --> - <metar n="2">/environment/metar[2]</metar> <!-- NAV2 --> - <metar n="3">/environment/metar[3]</metar> <!-- VHF-COMM1 --> - <metar n="4">/environment/metar[4]</metar> <!-- VHF-COMM2 --> - <metar n="5">/environment/metar[5]</metar> <!-- UHF-COMM1 --> - <metar n="6">/environment/metar[6]</metar> <!-- UHF-COMM2 --> - + <metar n="0" type="string">/environment/metar[0]</metar> + <!-- nearest airport --> + <metar n="1" type="string">/environment/metar[1]</metar> + <!-- NAV1 --> + <metar n="2" type="string">/environment/metar[2]</metar> + <!-- NAV2 --> + <metar n="3" type="string">/environment/metar[3]</metar> + <!-- VHF-COMM1 --> + <metar n="4" type="string">/environment/metar[4]</metar> + <!-- VHF-COMM2 --> + <metar n="5" type="string">/environment/metar[5]</metar> + <!-- UHF-COMM1 --> + <metar n="6" type="string">/environment/metar[6]</metar> + <!-- UHF-COMM2 --> + <!-- User defined queries --> - <metar n="10">/environment/metar[10]</metar> - <metar n="11">/environment/metar[11]</metar> - + <metar n="10" type="string">/environment/metar[10]</metar> + <metar n="11" type="string">/environment/metar[11]</metar> + <!-- use NOAA for METAR (no aloft data) --> - <data-source>noaa</data-source> + <data-source type="string">noaa</data-source> <!-- use http://www.navlost.eu/ for METAR and aloft data --> <!-- data-source>nwx<data-source --> - <enabled>true</enabled> + <enabled type="bool">true</enabled> </realwx> <metar> - <!-- create a low-level cloud layer for fog/mist/haze from metar --> - <set-ground-cloud-layer type="bool">true</set-ground-cloud-layer> + <!-- create a low-level cloud layer for fog/mist/haze from metar --> + <set-ground-cloud-layer type="bool">true</set-ground-cloud-layer> </metar> + <turbulence> + <!-- the turbulence/magnitude-norm interpolator applies this value + as an exponent to the magnitude --> + <sensitivity type="double">2</sensitivity> + </turbulence> + <params> - <metar-max-age-min type="long">240</metar-max-age-min> - <metar-updates-environment type="bool">true</metar-updates-environment> - <metar-updates-winds-aloft type="bool">true</metar-updates-winds-aloft> - <control-fdm-atmosphere type="bool">true</control-fdm-atmosphere> - <contrail-altitude>30000</contrail-altitude> - <!-- definitions for the metar generated fog/mist/haze layer --> - <fog-mist-haze-layer> - <offset-from-station-elevation-ft>-200</offset-from-station-elevation-ft> - <visibility-above-layer-m>20000</visibility-above-layer-m> + <metar-max-age-min type="long">240</metar-max-age-min> + <metar-updates-environment type="bool">true</metar-updates-environment> + <metar-updates-winds-aloft type="bool">true</metar-updates-winds-aloft> + <control-fdm-atmosphere type="bool">true</control-fdm-atmosphere> + <contrail-altitude type="double">30000</contrail-altitude> + <!-- definitions for the metar generated fog/mist/haze layer --> + <fog-mist-haze-layer> + <offset-from-station-elevation-ft type="double">-200</offset-from-station-elevation-ft> + <visibility-above-layer-m type="double">20000</visibility-above-layer-m> - <fog-thickness-ft>500</fog-thickness-ft> - <fog-2dlayer-alpha>1.0</fog-2dlayer-alpha> - <fog-2dlayer-coverage>overcast</fog-2dlayer-coverage> - <fog-bc-2dlayer-coverage>broken</fog-bc-2dlayer-coverage> - <fog-shallow-thickness-ft>30</fog-shallow-thickness-ft> + <fog-thickness-ft type="double">500</fog-thickness-ft> + <fog-2dlayer-alpha type="double">1.0</fog-2dlayer-alpha> + <fog-2dlayer-coverage type="string">overcast</fog-2dlayer-coverage> + <fog-bc-2dlayer-coverage type="string">broken</fog-bc-2dlayer-coverage> + <fog-shallow-thickness-ft type="double">30</fog-shallow-thickness-ft> - <mist-thickness-ft>2000</mist-thickness-ft> - <mist-2dlayer-alpha>0.8</mist-2dlayer-alpha> - <mist-2dlayer-coverage>overcast</mist-2dlayer-coverage> + <mist-thickness-ft type="double">2000</mist-thickness-ft> + <mist-2dlayer-alpha type="double">0.8</mist-2dlayer-alpha> + <mist-2dlayer-coverage type="string">overcast</mist-2dlayer-coverage> - <haze-thickness-ft>2000</haze-thickness-ft> - <haze-2dlayer-alpha>0.6</haze-2dlayer-alpha> - <haze-2dlayer-coverage>overcast</haze-2dlayer-coverage> - </fog-mist-haze-layer> + <haze-thickness-ft type="double">2000</haze-thickness-ft> + <haze-2dlayer-alpha type="double">0.6</haze-2dlayer-alpha> + <haze-2dlayer-coverage type="string">overcast</haze-2dlayer-coverage> + </fog-mist-haze-layer> </params> <wildfire> - <enabled type="bool" userarchive="y">false</enabled> - <share-events type="bool" userarchive="y">false</share-events> - <save-on-exit type="bool" userarchive="y">false</save-on-exit> - <restore-on-startup type="bool" userarchive="y">false</restore-on-startup> - <fire-on-crash type="bool" userarchive="y">false</fire-on-crash> - <report-score type="bool" userarchive="y">false</report-score> - <data type="string"/> + <enabled type="bool" userarchive="y">false</enabled> + <share-events type="bool" userarchive="y">false</share-events> + <save-on-exit type="bool" userarchive="y">false</save-on-exit> + <restore-on-startup type="bool" userarchive="y">false</restore-on-startup> + <fire-on-crash type="bool" userarchive="y">false</fire-on-crash> + <report-score type="bool" userarchive="y">false</report-score> + <data type="string"/> </wildfire> </PropertyList> diff --git a/Environment/interpolator.xml b/Environment/interpolator.xml index 04f942d57..bbe155d67 100644 --- a/Environment/interpolator.xml +++ b/Environment/interpolator.xml @@ -22,7 +22,7 @@ All filters are enabled on /environment/config/enabled=true --> <PropertyList> - + <filter> <name>EnvironmentInterpolator:temperature-sea-level-degc</name> <enable> @@ -35,7 +35,7 @@ <type>noise-spike</type> <max-rate-of-change>0.1667</max-rate-of-change> </filter> - + <filter> <name>EnvironmentInterpolator:dewpoint-sea-level-degc</name> <enable> @@ -48,7 +48,7 @@ <type>noise-spike</type> <max-rate-of-change>0.1667</max-rate-of-change> </filter> - + <filter> <!-- transfer the interpolated QNH to the global environment @@ -127,7 +127,7 @@ </filter> <filter> - <name>EnvironmentInterpolator:turbulence-magnitude</name> + <name>EnvironmentInterpolator:turbulence-raw-magnitude</name> <enable> <condition> <property>/environment/config/enabled</property> @@ -139,12 +139,34 @@ </condition> <property>/environment/config/presets/turbulence-magnitude-norm-override</property> </input> - <input>/environment/config/interpolated/turbulence/magnitude-norm</input> - <output>/environment/turbulence/magnitude-norm</output> + <input> + <property>/environment/config/interpolated/turbulence/magnitude-norm</property> + </input> + <output>/environment/turbulence/raw-magnitude-norm</output> <type>exponential</type> <filter-time>1</filter-time> </filter> + <filter> + <name>EnvironmentInterpolator:turbulence-magnitude</name> + <enable> + <condition> + <property>/environment/config/enabled</property> + </condition> + </enable> + <input> + <expression> + <pow> + <property>/environment/turbulence/raw-magnitude-norm</property> + <property>/environment/turbulence/sensitivity</property> + </pow> + </expression> + </input> + <output>/environment/turbulence/magnitude-norm</output> + <type>gain</type> + <gain>1</gain> + </filter> + <filter> <name>EnvironmentInterpolator:turbulence-rate</name> <enable> diff --git a/Input/Joysticks/ThrustMaster/T-Flight-Hotas-X.xml b/Input/Joysticks/ThrustMaster/T-Flight-Hotas-X.xml new file mode 100644 index 000000000..1bbb5e386 --- /dev/null +++ b/Input/Joysticks/ThrustMaster/T-Flight-Hotas-X.xml @@ -0,0 +1,528 @@ +<?xml version="1.0"?> +<!-- +Joystick binding for ThrustMaster T.Flight Hotas X +Adrien Bailly + +Original file by 'flug': +http://www.flightgear.org/forums/viewtopic.php?f=2&t=5517 + + +Axis # (direction) mapped to +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +axis 0: (left-right) aileron +axis 1: (forward-backward) elevator +axis 2: (slider) throttle +axis 3: (twist) rudder +axis 4: (top hat) view left/right + +Note that internally, FG numbers buttons starting with 0. The markings on the +HOTAS-X start with Button 1, and I have used the HOTAS-X number markings below: + +Button # Location Function +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +button 1: (joystick R1) Brakes & reset view +button 2: (joystick L1) Push-To-Talk (for fgcom) +button 3: (joystick R3) Trim nose down +button 4: (joystick L3) Trim nose up + +NO MODIFIER: + button 5: (throttle) Flaps up + button 6: (throttle) Flaps down + button 7: (throttle) Gear up/down + button 8: (throttle) Switch view + +MODIFIER 1 (keep button R2 down): + button 5: (throttle) Mixture rich + button 6: (throttle) Mixture lean + button 7 (throttle) Propeller coarse + button 8: (throttle) Propeller fine + +MODIFIER 2 (keep button L2 down): + button 5: (throttle) Battery ON/OFF + button 6: (throttle) Fuel selector + button 7 (throttle) Magnetos + button 8: (throttle) ??? + +MODIFIER 1+2 (keep buttons L2 and R2 down): + button 5: (throttle) ??? + button 6: (throttle) ??? + button 7 (throttle) ??? + button 8: (throttle) ??? + +button 9: (throttle R2) Modifier 1 +button 10: (throttle L2) Modifier 2 + +button SE: (base SE) ??? +button ST: (base ST) ??? + +HAT SWITCH +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +With the rocker switch and throttle twist controlling view direction, it is easy +to look all around in different directions. +--> + +<PropertyList> + <name type="string">T.Flight Hotas X</name> + <name type="string">Hotas X</name> + <name type="string">Thrustmaster Hotas X</name> + <name type="string">Thrustmaster T.Flight Hotas X</name> + <nasal> + <script> + <![CDATA[ + setprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier1", 0); + setprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier2", 0); + ]]> + </script> + </nasal> + + <!-- ~~~~~~~~~~~~~~~~~~~~~~~~ Axis Bindings ~~~~~~~~~~~~~~~~~~~~~~~~ --> + <axis n="0"> + <desc>Joystick: Aileron</desc> + <binding> + <command>property-scale</command> + <property>/controls/flight/aileron</property> + <factor type="double">1.0</factor> + <power type="double">1.0</power> + </binding> + </axis> + + <axis n="1"> + <desc>Joystick: Elevator</desc> + <binding> + <command>property-scale</command> + <property>/controls/flight/elevator</property> + <factor type="double">-1.0</factor> + <power type="double">1.0</power> + </binding> + </axis> + + <axis n= "2"> + <desc>Throttle</desc> + <binding> + <command>nasal</command> + <script>controls.throttleAxis()</script> + </binding> + </axis> + + <axis n="3"> + <desc>Rudder</desc> + <binding> + <command>property-scale</command> + <property>/controls/flight/rudder</property> + <power type="double">1.0</power> + </binding> + </axis> + + <!-- Throttle rocker switch axis pans l/r --> + <axis n="4"> + <desc>Throttle rocker switch: View Left/Right</desc> + <dead-band type="double">0.05</dead-band> + <binding> + <command>property-scale</command> + <property>/sim/current-view/heading-offset-deg</property> + <factor type="double">-180</factor> + <power type="double">1.2</power> + </binding> + </axis> + + <!-- ~~~~~~~~~~~~~~~~~~~~~~~~ Hat Switch ~~~~~~~~~~~~~~~~~~~~~~~~ --> + <axis n="5"> + <desc>Hat Switch: View Direction (use mod buttons for different effects)</desc> + <low> + <repeatable>true</repeatable> + <binding> + <command>property-adjust</command> + <property>/sim/current-view/goal-heading-offset-deg</property> + <step type="double">5.0</step> + </binding> + </low> + <high> + <repeatable>true</repeatable> + <binding> + <command>property-adjust</command> + <property>/sim/current-view/goal-heading-offset-deg</property> + <step type="double">-5.0</step> + </binding> + </high> + </axis> + + <axis n="6"> + <desc>Hat Switch: View Elevation (use mod buttons for different effects)</desc> + <low> + <repeatable>true</repeatable> + <binding> + <command>property-adjust</command> + <property>/sim/current-view/goal-pitch-offset-deg</property> + <step type="double">5.0</step> + </binding> + </low> + <high> + <repeatable>true</repeatable> + <binding> + <command>property-adjust</command> + <property>/sim/current-view/goal-pitch-offset-deg</property> + <step type="double">-5.0</step> + </binding> + </high> + </axis> + +<!-- ~~~~~~~~~~~~~~~~~~~~~~~~ Button Bindings ~~~~~~~~~~~~~~~~~~~~~~~~ --> + + <!-- Trigger (R1) --> + <button n="0"> + <desc>Button R1(1) (trigger): Brakes + reset to pilot view</desc> + <repeatable type="bool">true</repeatable> + <binding> + <command>nasal</command> + <script> + controls.applyBrakes(1.0); + setprop("/sim/current-view/view-number", 0); + view.resetView(); + </script> + </binding> + <mod-up> + <binding> + <command>nasal</command> + <script> + controls.applyBrakes(0.0); + </script> + </binding> + </mod-up> + </button> + + <!-- Button right of Hat switch, Labeled L1(2) --> + <button n="1"> + <desc>Button L1(2) (joystick center): Push-To-Talk (for fgcom)</desc> + <binding> + <command>nasal</command> + <script> + controls.ptt(1); # push-to-talk (fgcom) ON + </script> + </binding> + <mod-up> + <binding> + <command>nasal</command> + <script> + controls.ptt(0); # push-to-talk (fgcom) OFF + </script> + </binding> + </mod-up> + </button> + + + <!-- Front button, right of trigger, (R3) --> + <button n="2"> + <desc>Button R3(3): Elevator trim down</desc> + <repeatable type="bool">true</repeatable> + <binding> + <command>nasal</command> + <script> + controls.elevatorTrim(1); + gui.popupTip(sprintf("Elevator trim: %d", 100 * getprop("/controls/flight/elevator-trim"))); + </script> + </binding> + </button> + + + <!-- Button far right of Hat switch, Labeled L3(4) --> + <button n="3"> + <desc>Button L3(4): Elevator trim down</desc> + <repeatable type="bool">true</repeatable> + <binding> + <command>nasal</command> + <script> + controls.elevatorTrim(-1); + gui.popupTip(sprintf("Elevator trim: %d", 100 * getprop("/controls/flight/elevator-trim"))); + </script> + </binding> + </button> + + + <!-- Throttle Button labeled 5 --> + <button n="4"> + <desc>Button (5): Flaps up / Mixture rich / Battery on-off / ???</desc> + <repeatable type="bool">false</repeatable> + <binding> + <command>nasal</command> + <script> + mod1 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier1"); + mod2 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier2"); + if(mod1==0 and mod2==0) { + controls.flapsDown(-1); + gui.popupTip(sprintf("Flaps: %d deg", 30*getprop("/controls/flight/flaps")+0.1)); + } + elsif(mod1==1 and mod2==0) { + controls.adjMixture(10); + gui.popupTip(sprintf("Mixture rich")); + } + elsif(mod1 == 0 and mod2==1) { + j = getprop("/controls/electric/battery-switch"); + if(j == 0) { + setprop("/controls/electric/battery-switch", 1); + gui.popupTip(sprintf("Battery ON")); + } else { + setprop("/controls/electric/battery-switch", 0); + gui.popupTip(sprintf("Battery OFF")); + } + } + elsif(mod1==1 and mod2==1) { + + } + </script> + </binding> + <mod-up> + <binding> + <command>nasal</command> + <script> + mod1 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier1"); + mod2 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier2"); + if(mod1==0 and mod2==0) { + controls.flapsDown(0); + gui.popupTip(sprintf("Flaps: %d deg", 30*getprop("/controls/flight/flaps")+0.1)); + } + elsif(mod1==1 and mod2==0) { + # mixture + } + elsif(mod1 == 0 and mod2==1) { + + } + elsif(mod1==1 and mod2==1) { + + } + </script> + </binding> + </mod-up> + </button> + + <!-- Throttle Button labeled 6 --> + <button n="5"> + <desc>Button (6): Flaps down / Mixture lean / Fuel selector / ???</desc> + <repeatable type="bool">false</repeatable> + <binding> + <command>nasal</command> + <script> + mod1 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier1"); + mod2 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier2"); + if(mod1==0 and mod2==0) { + controls.flapsDown(1); + gui.popupTip(sprintf("Flaps: %d deg", 30*getprop("/controls/flight/flaps")+0.1)); + } + elsif(mod1==1 and mod2==0) { + controls.adjMixture(-10); + gui.popupTip(sprintf("Mixture lean")); + } + elsif(mod1 == 0 and mod2==1) { + k = getprop("/controls/fuel/tank/fuel_selector"); + if (k == 0) { + setprop("/controls/fuel/tank/fuel_selector", 1); + setprop("/controls/engines/engine/fuel-pump", 1); + } else { + setprop("/controls/fuel/tank/fuel_selector", 0); + setprop("/controls/engines/engine/fuel-pump", 0); + } + } + elsif(mod1==1 and mod2==1) { + + } + </script> + </binding> + <mod-up> + <binding> + <command>nasal</command> + <script> + mod1 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier1"); + mod2 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier2"); + if(mod1==0 and mod2==0) { + controls.flapsDown(0); + gui.popupTip(sprintf("Flaps: %d deg", 30*getprop("/controls/flight/flaps")+0.1)); + } + elsif(mod1==1 and mod2==0) { + # mixture + } + elsif(mod1 == 0 and mod2==1) { + + } + elsif(mod1==1 and mod2==1) { + + } + </script> + </binding> + </mod-up> + </button> + + <!-- Throttle Button labeled 7 (circle)--> + <button n="6"> + <desc>Button (7): Landing Gear Toggle / Propeller coarse / Magnetos / ???</desc> + <repeatable type="bool">false</repeatable> + <binding> + <command>nasal</command> + <script> + mod1 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier1"); + mod2 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier2"); + if(mod1==0 and mod2==0) { + controls.gearToggle(); + } + elsif(mod1==1 and mod2==0) { + controls.adjPropeller(10); + gui.popupTip(sprintf("Propeller coarse")); + } + elsif(mod1 == 0 and mod2==1) { + l = getprop("/controls/engines/engine/magnetos"); + if (l == 0) { + props.setAll("/controls/engines/engine", "magnetos", 1); + } elsif ( l == 1 ) { + props.setAll("/controls/engines/engine", "magnetos", 2); + } elsif ( l == 2 ) { + props.setAll("/controls/engines/engine", "magnetos", 3); + } elsif ( l == 3 ) { + props.setAll("/controls/engines/engine", "magnetos", 0); + } + } + elsif(mod1==1 and mod2==1) { + + } + </script> + </binding> + <mod-up> + <binding> + <command>nasal</command> + <script> + mod1 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier1"); + mod2 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier2"); + if(mod1==0 and mod2==0) { + # gear + } + elsif(mod1==1 and mod2==0) { + # propeller + } + elsif(mod1 == 0 and mod2==1) { + # magnetos + } + elsif(mod1==1 and mod2==1) { + + } + </script> + </binding> + </mod-up> + </button> + + <!-- Throttle Button labeled 8 (triangle) --> + <button n="7"> + <desc>Button (8): Switch view / Propeller fine / Starter / ???</desc> + <repeatable type="bool">false</repeatable> + <binding> + <command>nasal</command> + <script> + mod1 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier1"); + mod2 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier2"); + if(mod1==0 and mod2==0) { + view.stepView(1); + } + elsif(mod1==1 and mod2==0) { + controls.adjPropeller(-10); + gui.popupTip(sprintf("Propeller fine")); + } + elsif(mod1==0 and mod2==1) { + setprop("/controls/engines/engine/starter", 1); + setprop("/controls/engines/engine[1]/starter", 1); + setprop("/controls/engines/engine[2]/starter", 1); + setprop("/controls/engines/engine[3]/starter", 1); + setprop("/controls/engines/engine[4]/starter", 1); + gui.popupTip(sprintf("Cranking...")); + } + elsif(mod1==1 and mod2==1) { + + } + </script> + </binding> + <mod-up> + <binding> + <command>nasal</command> + <script> + mod1 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier1"); + mod2 = getprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier2"); + if(mod1==0 and mod2==0) { + # switch views + } + elsif(mod1==1 and mod2==0) { + # propeller + } + elsif(mod1==0 and mod2==1) { + setprop("/controls/engines/engine/starter", 0); + setprop("/controls/engines/engine[1]/starter", 0); + setprop("/controls/engines/engine[2]/starter", 0); + setprop("/controls/engines/engine[3]/starter", 0); + setprop("/controls/engines/engine[4]/starter", 0); + } + elsif(mod1==1 and mod2==1) { + + } + </script> + </binding> + </mod-up> + </button> + + <!-- Throttle Button labeled R2(9) --> + <button n="8"> + <desc>Button R2(9): Modifier 1</desc> + <repeatable type="bool">false</repeatable> + <binding> + <command>nasal</command> + <script> + setprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier1", 1); + </script> + </binding> + <mod-up> + <binding> + <command>nasal</command> + <script> + setprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier1", 0); + </script> + </binding> + </mod-up> + </button> + + <!-- Throttle Button labeled L2(10) --> + <button n="9"> + <desc>Button L2(10): Modifier2</desc> + <repeatable type="bool">false</repeatable> + <binding> + <command>nasal</command> + <script> + setprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier2", 1); + </script> + </binding> + <mod-up> + <binding> + <command>nasal</command> + <script> + setprop("/input/joysticks/js[0]/t-flight-hotas-x-modifier2", 0); + </script> + </binding> + </mod-up> + </button> + + <!-- Base Button SE --> + <button n="10"> + <desc>Button SE: ???</desc> + <repeatable type="bool">false</repeatable> + <binding> + <command>nasal</command> + <script> + gui.popupTip(sprintf("Button n=10 unused")); + </script> + </binding> + </button> + + <!-- Base Button ST --> + <button n="11"> + <desc>Button ST: ???</desc> + <repeatable type="bool">false</repeatable> + <binding> + <command>nasal</command> + <script> + gui.popupTip(sprintf("Button n=11 unused")); + </script> + </binding> + </button> +</PropertyList> diff --git a/gui/dialogs/route-manager.xml b/gui/dialogs/route-manager.xml index ed72e6310..90904b350 100644 --- a/gui/dialogs/route-manager.xml +++ b/gui/dialogs/route-manager.xml @@ -138,7 +138,6 @@ command interface /autopilot/route-manager/input: dest.getNode("runway").clearValue(); } - print("updated runways"); gui.dialog_update("route-manager"); } diff --git a/gui/dialogs/weather.xml b/gui/dialogs/weather.xml index 471dde092..af363d4d8 100644 --- a/gui/dialogs/weather.xml +++ b/gui/dialogs/weather.xml @@ -56,7 +56,7 @@ <layout>hbox</layout> <text> <label>Cloud Layers (All Altitudes ft-AMSL)</label> - <enable> + <enable> <property>/sim/gui/dialogs/weather-scenario/state</property> </enable> </text> @@ -74,7 +74,7 @@ <label>Altitude (ft)</label> <row>0</row> <col>1</col> - <enable> + <enable> <property>/sim/gui/dialogs/weather-scenario/state</property> </enable> </text> @@ -84,7 +84,7 @@ <row>0</row> <col>2</col> <width>80</width> - <enable> + <enable> <property>/sim/gui/dialogs/weather-scenario/state</property> </enable> </text> @@ -93,7 +93,7 @@ <label>Thickness (ft)</label> <row>0</row> <col>3</col> - <enable> + <enable> <property>/sim/gui/dialogs/weather-scenario/state</property> </enable> </text> @@ -406,7 +406,7 @@ <layout>hbox</layout> <text> <label>Precipitation</label> - <enable> + <enable> <property>/sim/gui/dialogs/weather-scenario/state</property> </enable> </text> @@ -424,7 +424,7 @@ <row>0</row> <col>0</col> <label>Rain</label> - <enable> + <enable> <property>/sim/gui/dialogs/weather-scenario/state</property> </enable> </text> @@ -433,7 +433,7 @@ <row>0</row> <col>1</col> <label>Snow</label> - <enable> + <enable> <property>/sim/gui/dialogs/weather-scenario/state</property> </enable> </text> @@ -478,7 +478,7 @@ <row>0</row> <col>3</col> <label>QNH (inHg)</label> - <enable> + <enable> <property>/sim/gui/dialogs/weather-scenario/state</property> </enable> </text> @@ -1284,7 +1284,7 @@ <layout>hbox</layout> <text> <label>Boundary (All Elevations ft-AGL)</label> - <enable> + <enable> <property>/sim/gui/dialogs/weather-scenario/state</property> </enable> </text> @@ -1303,7 +1303,7 @@ <row>0</row> <col>0</col> <label>Elevation</label> - <enable> + <enable> <property>/sim/gui/dialogs/weather-scenario/state</property> </enable> </text> @@ -1313,7 +1313,7 @@ <col>1</col> <colspan>2</colspan> <label>Wind (dir/kt)</label> - <enable> + <enable> <property>/sim/gui/dialogs/weather-scenario/state</property> </enable> </text> @@ -1322,7 +1322,7 @@ <row>0</row> <col>3</col> <label>Vis (m)</label> - <enable> + <enable> <property>/sim/gui/dialogs/weather-scenario/state</property> </enable> </text> @@ -1331,7 +1331,7 @@ <row>0</row> <col>4</col> <label>Temp (C)</label> - <enable> + <enable> <property>/sim/gui/dialogs/weather-scenario/state</property> </enable> </text> @@ -1340,7 +1340,7 @@ <row>0</row> <col>5</col> <label>Dewpt (C)</label> - <enable> + <enable> <property>/sim/gui/dialogs/weather-scenario/state</property> </enable> </text> @@ -1709,42 +1709,65 @@ <empty> <stretch>true</stretch> </empty> + <text> + <label>Data is valid</label> + </text> <checkbox> <property>/environment/metar/valid</property> - <label>valid</label> + <label/> <live>true</live> - <editable>false</editable> + <enable><false/></enable> </checkbox> </group> - <textbox> - <name>metar</name> - <halign>fill</halign> - <stretch>true</stretch> - <pref-width>180</pref-width> - <pref-height>50</pref-height> - <slider>20</slider> - <editable>true</editable> - <wrap>true</wrap> - <live>false</live> - <property>sim/gui/dialogs/weather-scenario/metar</property> - <enable> - <greater-than> - <property>/sim/gui/dialogs/weather-scenario/state</property> - <value type="int">1</value> - </greater-than>> - </enable> - <binding> - <command>dialog-apply</command> - <object-name>metar</object-name> - </binding> - <binding> - <command>nasal</command> - <script> - setprop( "/environment/metar/data", getprop( "sim/gui/dialogs/weather-scenario/metar") ); - </script> - </binding> - </textbox> + <group> + <layout>hbox</layout> + <textbox> + <name>metar</name> + <halign>fill</halign> + <stretch>true</stretch> + <pref-width>180</pref-width> + <pref-height>50</pref-height> + <slider>20</slider> + <editable>true</editable> + <wrap>true</wrap> + <live>false</live> + <property>sim/gui/dialogs/weather-scenario/metar</property> + <enable> + <greater-than> + <property>/sim/gui/dialogs/weather-scenario/state</property> + <value type="int">1</value> + </greater-than>> + </enable> + <binding> + <command>dialog-apply</command> + <object-name>metar</object-name> + </binding> + <binding> + <command>nasal</command> + <script> + setprop( "/environment/metar/data", getprop( "sim/gui/dialogs/weather-scenario/metar") ); + </script> + </binding> + </textbox> + <button> + <legend>Apply</legend> + <key>Esc</key> + <pref-width>50</pref-width> + <pref-height>50</pref-height> + <border>2</border> + <binding> + <command>dialog-apply</command> + <object-name>metar</object-name> + </binding> + <binding> + <command>nasal</command> + <script> + setprop( "/environment/metar/data", getprop( "sim/gui/dialogs/weather-scenario/metar") ); + </script> + </binding> + </button> + </group> <!-- Automatic Weather --> diff --git a/materials.xml b/materials.xml index 4d77b60aa..ab5264a26 100644 --- a/materials.xml +++ b/materials.xml @@ -748,6 +748,7 @@ Shared parameters for various materials. <name>DeciduousBroadCover</name> <name>DeciduousForest</name> <name>Bog</name> + <name>Heath</name> <texture>Terrain/deciduous1.png</texture> <texture>Terrain/deciduous2.png</texture> <texture>Terrain/deciduous4.png</texture> @@ -869,6 +870,7 @@ Shared parameters for various materials. <name>ShrubCover</name> <name>ShrubGrassCover</name> <name>ScrubCover</name> + <name>Sclerophyllous</name> <texture>Terrain/shrub1.png</texture> <!-- <texture>Terrain/shrub.png</texture> @@ -910,6 +912,9 @@ Shared parameters for various materials. </condition> <name>BuiltUpCover</name> <name>Urban</name> + <name>Construction</name> + <name>Industrial</name> + <name>Port</name> <effect>Effects/urban</effect> <texture-set> <texture>Terrain/city1.png</texture> @@ -1004,6 +1009,7 @@ Shared parameters for various materials. </equals> </condition> <name>Town</name> + <name>SubUrban</name> <texture>Terrain/Town1.png</texture> <xsize>1024</xsize> <ysize>1024</ysize> @@ -1067,6 +1073,8 @@ Shared parameters for various materials. <name>Stream</name> <name>Canal</name> <name>Lagoon</name> + <name>Estuary</name> + <name>Watercourse</name> <name>Saline</name> <texture>Terrain/water-lake.png</texture> <xsize>400</xsize> @@ -1143,6 +1151,7 @@ Shared parameters for various materials. <name>Marsh</name> <name>Littoral</name> <name>FloodLand</name> + <name>SaltMarsh</name> <name>HerbWetlandCover</name> <name>WoodedWetlandCover</name> <texture>Terrain/marsh2.png</texture> @@ -1261,6 +1270,7 @@ Shared parameters for various materials. <name>Grass</name> <name>Airport</name> <name>AirportKeep</name> + <name>Greenspace</name> <texture>Terrain/airport.png</texture> <xsize>125</xsize> <ysize>125</ysize> @@ -1362,6 +1372,8 @@ Shared parameters for various materials. <name>IrrCropPastureCover</name> <name>IrrCrop</name> <name>Orchard</name> + <name>Olives</name> + <name>Vineyard</name> <name>Rice</name> <texture>Terrain/irrcrop1.png</texture> <texture>Terrain/irrcrop2.png</texture> @@ -1426,6 +1438,7 @@ Shared parameters for various materials. <effect>Effects/crop</effect> <name>DryCropPastureCover</name> <name>DryCrop</name> + <name>NaturalCrop</name> <texture>Terrain/drycrop1.png</texture> <texture>Terrain/drycrop2.png</texture> <texture>Terrain/drycrop3.png</texture> @@ -1492,6 +1505,7 @@ Shared parameters for various materials. <effect>Effects/cropgrass</effect> <name>CropGrassCover</name> <name>CropGrass</name> + <name>Grassland</name> <texture>Terrain/cropgrass1.png</texture> <texture>Terrain/cropgrass2.png</texture> <texture>Terrain/cropgrass3.png</texture> @@ -1533,6 +1547,7 @@ Shared parameters for various materials. </condition> <name>CropWoodCover</name> <name>CropWood</name> + <name>AgroForest</name> <effect>Effects/landmass</effect> <texture>Terrain/cropwood.png</texture> <xsize>2000</xsize> @@ -1594,6 +1609,7 @@ Shared parameters for various materials. <name>DeciduousBroadCover</name> <name>DeciduousForest</name> <name>Bog</name> + <name>Heath</name> <texture>Terrain.winter/deciduous1.png</texture> <texture>Terrain.winter/deciduous2.png</texture> <texture>Terrain.winter/deciduous4.png</texture> @@ -1711,6 +1727,7 @@ Shared parameters for various materials. <name>ShrubCover</name> <name>ShrubGrassCover</name> <name>ScrubCover</name> + <name>Sclerophyllous</name> <texture>Terrain.winter/shrub.png</texture> <texture>Terrain.winter/shrub2.png</texture> <texture>Terrain.winter/shrub3.png</texture> @@ -1749,6 +1766,9 @@ Shared parameters for various materials. </condition> <name>BuiltUpCover</name> <name>Urban</name> + <name>Construction</name> + <name>Industrial</name> + <name>Port</name> <effect>Effects/urban</effect> <texture-set> <texture>Terrain/city1.png</texture> @@ -1843,6 +1863,7 @@ Shared parameters for various materials. </equals> </condition> <name>Town</name> + <name>SubUrban</name> <texture>Terrain.winter/Town1.png</texture> <xsize>1024</xsize> <ysize>1024</ysize> @@ -1914,6 +1935,8 @@ Shared parameters for various materials. <name>Stream</name> <name>Canal</name> <name>Lagoon</name> + <name>Estuary</name> + <name>Watercourse</name> <name>Saline</name> <texture>Terrain.winter/water-lake.png</texture> <xsize>400</xsize> @@ -1990,6 +2013,7 @@ Shared parameters for various materials. <name>Marsh</name> <name>Littoral</name> <name>FloodLand</name> + <name>SaltMarsh</name> <name>HerbWetlandCover</name> <name>WoodedWetlandCover</name> <texture>Terrain.winter/marsh2.png</texture> @@ -2104,6 +2128,7 @@ Shared parameters for various materials. <name>Grass</name> <name>Airport</name> <name>AirportKeep</name> + <name>Greenspace</name> <texture>Terrain.winter/airport.png</texture> <xsize>125</xsize> <ysize>125</ysize> @@ -2203,6 +2228,9 @@ Shared parameters for various materials. <name>IrrCropPastureCover</name> <name>IrrCrop</name> <name>Orchard</name> + <name>Olives</name> + <name>Vineyard</name> + <name>Rice</name> <texture>Terrain.winter/irrcrop1.png</texture> <texture>Terrain.winter/irrcrop2.png</texture> <texture>Terrain.winter/irrcrop3.png</texture> @@ -2267,6 +2295,7 @@ Shared parameters for various materials. </condition> <name>DryCropPastureCover</name> <name>DryCrop</name> + <name>NaturalCrop</name> <texture>Terrain.winter/drycrop1.png</texture> <texture>Terrain.winter/drycrop2.png</texture> <texture>Terrain.winter/drycrop3.png</texture> @@ -2332,6 +2361,7 @@ Shared parameters for various materials. </condition> <name>CropGrassCover</name> <name>CropGrass</name> + <name>Grassland</name> <texture>Terrain.winter/cropgrass1.png</texture> <texture>Terrain.winter/cropgrass2.png</texture> <texture>Terrain.winter/cropgrass3.png</texture> @@ -2374,6 +2404,7 @@ Shared parameters for various materials. </equals> </condition> <name>CropWoodCover</name> + <name>AgroForest</name> <texture>Terrain.winter/cropwood.png</texture> <xsize>2000</xsize> <ysize>2000</ysize> @@ -2555,6 +2586,7 @@ Shared parameters for various materials. <name>Dirt</name> <name>OpenMining</name> <name>Rock</name> + <name>Dump</name> <texture>Terrain/rock.png</texture> <xsize>500</xsize> <ysize>500</ysize> @@ -2566,6 +2598,7 @@ Shared parameters for various materials. <material> <name>Lava</name> + <name>Burnt</name> <texture>Terrain/lava.png</texture> <xsize>500</xsize> <ysize>500</ysize> @@ -2575,6 +2608,18 @@ Shared parameters for various materials. <bumpiness>0.3</bumpiness> </material> + <material> + <name>Asphalt</name> + <texture>Terrain/asphalt.png</texture> + <xsize>400</xsize> + <ysize>400</ysize> + <solid>1</solid> + <friction-factor>1.0</friction-factor> + <rolling-friction>0.02</rolling-friction> + <bumpiness>0.01</bumpiness> + <load-resistance>1e10</load-resistance> + </material> + <material> <name>Freeway</name> <name>Road</name> diff --git a/preferences.xml b/preferences.xml index 42157e508..4a25675cf 100644 --- a/preferences.xml +++ b/preferences.xml @@ -575,7 +575,7 @@ Started September 2000 by David Megginson, david@megginson.com <mouse> <hide-cursor type="bool" userarchive="y">true</hide-cursor> - <cursor-timeout-sec type="int" userarchive="y">10.0</cursor-timeout-sec> + <cursor-timeout-sec type="double" userarchive="y">10.0</cursor-timeout-sec> </mouse> <replay>