1
0
Fork 0
fgdata/Aircraft/Generic/g-forces.xml

1196 lines
46 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="UTF-8"?>
<!--
###################################################################################
## ##
## Improved redout/blackout system for Flightgear ##
## ##
## Author: Nikolai V. Chr. (property rules), Thorsten Renk (shaders), ##
## Benedikt Hallinger (groundshake effect) ##
## ##
## ##
## ##
## ##
## Version 2.10 License: GPL 2.0 ##
## ##
###################################################################################
-->
<PropertyList>
<params>
<onset-b>sim/rendering/redout/parameters/blackout-onset-g</onset-b>
<fast-b>sim/rendering/redout/parameters/blackout-complete-g</fast-b>
<onset-r>sim/rendering/redout/parameters/redout-onset-g</onset-r>
<fast-r>sim/rendering/redout/parameters/redout-complete-g</fast-r>
<onset-t-b>sim/rendering/redout/parameters/onset-blackout-sec</onset-t-b>
<fast-t-b>sim/rendering/redout/parameters/fast-blackout-sec</fast-t-b>
<onset-t-r>sim/rendering/redout/parameters/onset-redout-sec</onset-t-r>
<fast-t-r>sim/rendering/redout/parameters/fast-redout-sec</fast-t-r>
<rec-f>sim/rendering/redout/parameters/recover-fast-sec</rec-f>
<rec-s>sim/rendering/redout/parameters/recover-slow-sec</rec-s>
<log>
<g-force>sim/rendering/redout/internal/log/g-force</g-force>
<onset-b>sim/rendering/redout/internal/log/onset-b</onset-b>
<fast-b>sim/rendering/redout/internal/log/fast-b</fast-b>
<g-force-r>sim/rendering/redout/internal/log/g-force-r</g-force-r>
<onset-r>sim/rendering/redout/internal/log/onset-r</onset-r>
<fast-r>sim/rendering/redout/internal/log/fast-r</fast-r>
</log>
<g-damp>accelerations/pilot-gdamped</g-damp>
<g-force-inv>sim/rendering/redout/internal/g-force-inv</g-force-inv>
<blackout>sim/rendering/redout/internal/blackout</blackout>
<redout>sim/rendering/redout/internal/redout</redout>
<jsb>sim/rendering/redout/internal/jsb</jsb>
<alpha>sim/rendering/redout/alpha</alpha>
<red>sim/rendering/redout/red</red>
<inside>sim/current-view/internal</inside>
<sum>sim/rendering/redout/internal/sum</sum>
<enable>sim/rendering/redout/enabled</enable>
<g-force>accelerations/pilot-g[0]</g-force>
<greyout>sim/rendering/als-filters/grey-factor</greyout>
<tunnel>sim/rendering/als-filters/black-factor</tunnel>
<als>sim/rendering/shaders/skydome</als>
<filters>sim/rendering/als-filters/use-filtering</filters>
<groundshake>
<!-- inputs -->
<effect-factor>sim/rendering/headshake/groundshake/effect-factor</effect-factor>
<aircraft-scale-prop>sim/rendering/headshake/groundshake/custom-aircraft-scaler</aircraft-scale-prop>
<default-aircraft-scaler-minkts>sim/rendering/headshake/groundshake/default-aircraft-scaler-min-knots</default-aircraft-scaler-minkts>
<default-aircraft-scaler-maxkts>sim/rendering/headshake/groundshake/default-aircraft-scaler-max-knots</default-aircraft-scaler-maxkts>
<default-aircraft-scaler-factor>sim/rendering/headshake/groundshake/default-aircraft-scaler-factor</default-aircraft-scaler-factor>
<!-- internal -->
<rng-source>sim/rendering/headshake/groundshake/internal/groundbump</rng-source>
<terrain-bumpiness>/fdm/jsbsim/ground/bumpiness</terrain-bumpiness>
<has-ground-contact>sim/rendering/headshake/groundshake/internal/ground-contact</has-ground-contact>
<is-moving>sim/rendering/headshake/groundshake/internal/is-moving</is-moving>
<default-aircraft-scaler>sim/rendering/headshake/groundshake/internal/default-aircraft-scaler</default-aircraft-scaler>
<!-- outputs -->
<result>sim/rendering/headshake/groundshake/result-g</result>
</groundshake>
</params>
<filter><!-- check for NaN -->
<type>gain</type>
<gain>0</gain>
<enable>
<condition>
<property alias="/params/enable"/>
<not>
<less-than>
<property alias="/params/blackout"/>
<value>1000.0</value>
</less-than>
<greater-than>
<property alias="/params/blackout"/>
<value>-1000.0</value>
</greater-than>
</not>
</condition>
</enable>
<input>
<value>0</value>
</input>
<output alias="/params/blackout"/>
</filter>
<filter><!-- check for NaN -->
<type>gain</type>
<gain>0</gain>
<enable>
<condition>
<property alias="/params/enable"/>
<not>
<less-than>
<property alias="/params/redout"/>
<value>1000.0</value>
</less-than>
<greater-than>
<property alias="/params/redout"/>
<value>-1000.0</value>
</greater-than>
</not>
</condition>
</enable>
<input>
<value>0</value>
</input>
<output alias="/params/redout"/>
</filter>
<filter>
<type>gain</type>
<gain>1</gain>
<enable>
<!-- check if blackout onset has sane value. -->
<condition>
<or>
<less-than>
<property alias="/params/onset-b"/>
<value>1.25</value>
</less-than>
</or>
</condition>
</enable>
<input>
<expression>
<max>
<property alias="/params/fast-b"/>
<value>1.25</value>
</max>
</expression>
</input>
<output alias="/params/onset-b"/>
</filter>
<filter>
<type>gain</type>
<gain>1</gain>
<enable>
<!-- check if blackout complete has sane value. -->
<condition>
<or>
<greater-than>
<property alias="/params/onset-b"/>
<property alias="/params/fast-b"/>
</greater-than>
<less-than>
<property alias="/params/fast-b"/>
<value>1.5</value>
</less-than>
</or>
</condition>
</enable>
<input>
<expression>
<max>
<sum>
<property alias="/params/onset-b"/>
<value>0.50</value>
</sum>
<value>1.5</value>
</max>
</expression>
</input>
<output alias="/params/fast-b"/>
</filter>
<filter>
<type>gain</type>
<gain>1</gain>
<enable>
<!-- check if redout onset has sane value. -->
<condition>
<or>
<greater-than>
<property alias="/params/onset-r"/>
<value>-1.00</value>
</greater-than>
</or>
</condition>
</enable>
<input>
<expression>
<min>
<property alias="/params/fast-r"/>
<value>-1.00</value>
</min>
</expression>
</input>
<output alias="/params/onset-r"/>
</filter>
<filter>
<type>gain</type>
<gain>1</gain>
<enable>
<!-- check if redout complete has sane value. -->
<condition>
<or>
<greater-than>
<property alias="/params/fast-r"/>
<property alias="/params/onset-r"/>
</greater-than>
<greater-than>
<property alias="/params/fast-r"/>
<value>-1.25</value>
</greater-than>
</or>
</condition>
</enable>
<input>
<expression>
<min>
<sum>
<property alias="/params/onset-r"/>
<value>-0.50</value>
</sum>
<value>-1.25</value>
</min>
</expression>
</input>
<output alias="/params/fast-r"/>
</filter>
<filter>
<type>gain</type>
<gain>-1</gain>
<enable>
<!-- check if JSBSim is the FDM. -->
<condition>
<equals>
<property alias="/params/jsb"/>
<value>1</value>
</equals>
</condition>
</enable>
<input>
<expression>
<sum>
<div>
<property>accelerations/pilot/z-accel-fps_sec</property>
<value>32.174</value>
</div>
<property alias="/params/groundshake/result" />
</sum>
</expression>
</input>
<output alias="/params/g-force"/>
</filter>
<filter>
<!-- for backwards compatibility for planes that use gdamped property -->
<type>exponential</type>
<filter-time>0.2</filter-time>
<input alias="/params/g-force"/>
<output alias="/params/g-damp"/>
</filter>
<filter>
<type>gain</type>
<gain>1</gain>
<enable>
<condition>
<property alias="/params/enable"/>
</condition>
</enable>
<input>
<expression>
<log10>
<property alias="/params/fast-b"/>
</log10>
</expression>
</input>
<output alias="/params/log/fast-b"/>
</filter>
<filter>
<type>gain</type>
<gain>1</gain>
<enable>
<condition>
<property alias="/params/enable"/>
</condition>
</enable>
<input>
<expression>
<log10>
<property alias="/params/onset-b"/>
</log10>
</expression>
</input>
<output alias="/params/log/onset-b"/>
</filter>
<filter>
<type>gain</type>
<gain>1</gain>
<enable>
<condition>
<property alias="/params/enable"/>
<less-than-equals>
<property alias="/params/g-force"/>
<value>1</value>
</less-than-equals>
</condition>
</enable>
<input>
<value>0</value>
</input>
<output alias="/params/log/g-force"/>
</filter>
<filter>
<type>gain</type>
<gain>1</gain>
<enable>
<condition>
<property alias="/params/enable"/>
<greater-than>
<property alias="/params/g-force"/>
<value>1</value>
</greater-than>
</condition>
</enable>
<input>
<expression>
<log10>
<property alias="/params/g-force"/>
</log10>
</expression>
</input>
<output alias="/params/log/g-force"/>
</filter>
<filter><!-- reduce blackout -->
<type>gain</type>
<gain>1</gain>
<enable>
<condition>
<property alias="/params/enable"/>
<less-than>
<property alias="/params/g-force"/>
<property alias="/params/onset-b"/>
</less-than>
</condition>
</enable>
<input>
<expression>
<min>
<value>1</value>
<max>
<value>0</value>
<dif>
<property alias="/params/blackout"/>
<product>
<property>sim/time/delta-sec</property>
<div>
<value>1</value>
<max>
<value>0</value>
<sum>
<property alias="/params/rec-f"/>
<product>
<div>
<dif>
<property alias="/params/log/g-force"/>
<log10>
<value>1</value>
</log10>
</dif>
<dif>
<property alias="/params/log/onset-b"/>
<log10>
<value>1</value>
</log10>
</dif>
</div>
<dif>
<property alias="/params/rec-s"/>
<property alias="/params/rec-f"/>
</dif>
</product>
</sum>
</max>
</div>
</product>
</dif>
</max>
</min>
</expression>
</input>
<output alias="/params/blackout"/>
</filter>
<filter><!-- increase blackout -->
<type>gain</type>
<gain>1</gain>
<enable>
<condition>
<property alias="/params/enable"/>
<greater-than-equals>
<property alias="/params/g-force"/>
<property alias="/params/onset-b"/>
</greater-than-equals>
</condition>
</enable>
<input>
<expression>
<min>
<value>1</value>
<max>
<value>0</value>
<sum>
<property alias="/params/blackout"/>
<product>
<property>sim/time/delta-sec</property>
<div>
<value>1</value>
<max>
<value>0</value>
<pow>
<value>10</value>
<sum>
<log10>
<property alias="/params/onset-t-b"/>
</log10>
<product>
<div>
<dif>
<property alias="/params/log/g-force"/>
<property alias="/params/log/onset-b"/>
</dif>
<dif>
<property alias="/params/log/fast-b"/>
<property alias="/params/log/onset-b"/>
</dif>
</div>
<dif>
<log10>
<property alias="/params/fast-t-b"/>
</log10>
<log10>
<property alias="/params/onset-t-b"/>
</log10>
</dif>
</product>
</sum>
</pow>
</max>
</div>
</product>
</sum>
</max>
</min>
</expression>
</input>
<output alias="/params/blackout"/>
</filter>
<filter>
<type>gain</type>
<gain>1</gain>
<enable>
<condition>
<property alias="/params/enable"/>
</condition>
</enable>
<input>
<expression>
<log10>
<product>
<value>-1</value>
<dif>
<property alias="/params/fast-r"/>
<value>2</value>
</dif>
</product>
</log10>
</expression>
</input>
<output alias="/params/log/fast-r"/>
</filter>
<filter>
<type>gain</type>
<gain>1</gain>
<enable>
<condition>
<property alias="/params/enable"/>
</condition>
</enable>
<input>
<expression>
<log10>
<product>
<value>-1</value>
<dif>
<property alias="/params/onset-r"/>
<value>2</value>
</dif>
</product>
</log10>
</expression>
</input>
<output alias="/params/log/onset-r"/>
</filter>
<filter>
<type>gain</type>
<gain>-1</gain>
<enable>
<condition>
<property alias="/params/enable"/>
</condition>
</enable>
<input>
<expression>
<dif>
<property alias="/params/g-force"/>
<value>2</value>
</dif>
</expression>
</input>
<output alias="/params/g-force-inv"/>
</filter>
<filter>
<type>gain</type>
<gain>1</gain>
<enable>
<condition>
<property alias="/params/enable"/>
<less-than-equals>
<property alias="/params/g-force-inv"/>
<value>1</value>
</less-than-equals>
</condition>
</enable>
<input>
<value>0</value>
</input>
<output alias="/params/log/g-force-r"/>
</filter>
<filter>
<type>gain</type>
<gain>1</gain>
<enable>
<condition>
<property alias="/params/enable"/>
<greater-than>
<property alias="/params/g-force-inv"/>
<value>1</value>
</greater-than>
</condition>
</enable>
<input>
<expression>
<log10>
<property alias="/params/g-force-inv"/>
</log10>
</expression>
</input>
<output alias="/params/log/g-force-r"/>
</filter>
<filter><!-- reduce redout -->
<type>gain</type>
<gain>1</gain>
<enable>
<condition>
<property alias="/params/enable"/>
<greater-than>
<property alias="/params/g-force"/>
<property alias="/params/onset-r"/>
</greater-than>
</condition>
</enable>
<input>
<expression>
<min>
<value>1</value>
<max>
<value>0</value>
<dif>
<property alias="/params/redout"/>
<product>
<property>sim/time/delta-sec</property>
<div>
<value>1</value>
<max>
<value>0</value>
<sum>
<property alias="/params/rec-f"/>
<product>
<div>
<dif>
<property alias="/params/log/g-force-r"/>
<log10>
<value>1</value>
</log10>
</dif>
<dif>
<property alias="/params/log/onset-r"/>
<log10>
<value>1</value>
</log10>
</dif>
</div>
<dif>
<property alias="/params/rec-s"/>
<property alias="/params/rec-f"/>
</dif>
</product>
</sum>
</max>
</div>
</product>
</dif>
</max>
</min>
</expression>
</input>
<output alias="/params/redout"/>
</filter>
<filter><!-- increase redout -->
<type>gain</type>
<gain>1</gain>
<enable>
<condition>
<property alias="/params/enable"/>
<less-than-equals>
<property alias="/params/g-force"/>
<property alias="/params/onset-r"/>
</less-than-equals>
</condition>
</enable>
<input>
<expression>
<min>
<value>1</value>
<max>
<value>0</value>
<sum>
<property alias="/params/redout"/>
<product>
<property>sim/time/delta-sec</property>
<div>
<value>1</value>
<max>
<value>0</value>
<pow>
<value>10</value>
<sum>
<log10>
<property alias="/params/onset-t-r"/>
</log10>
<product>
<div>
<dif>
<property alias="/params/log/g-force-r"/>
<property alias="/params/log/onset-r"/>
</dif>
<dif>
<property alias="/params/log/fast-r"/>
<property alias="/params/log/onset-r"/>
</dif>
</div>
<dif>
<log10>
<property alias="/params/fast-t-r"/>
</log10>
<log10>
<property alias="/params/onset-t-r"/>
</log10>
</dif>
</product>
</sum>
</pow>
</max>
</div>
</product>
</sum>
</max>
</min>
</expression>
</input>
<output alias="/params/redout"/>
</filter>
<filter>
<type>gain</type>
<gain>1</gain>
<enable>
<condition>
<property alias="/params/enable"/>
</condition>
</enable>
<input>
<expression>
<dif>
<property alias="/params/blackout"/>
<property alias="/params/redout"/>
</dif>
</expression>
</input>
<output alias="/params/sum"/>
</filter>
<filter>
<!-- When system is on, in pilot view and negative G effect, set fading color to red -->
<type>gain</type>
<gain>1</gain>
<enable>
<condition>
<property alias="/params/enable"/>
<equals>
<property alias="/params/inside"/>
<value>1</value>
</equals>
<less-than>
<property alias="/params/sum"/>
<value>0</value>
</less-than>
</condition>
</enable>
<input>
<value>1</value>
</input>
<output alias="/params/red"/>
</filter>
<filter>
<!-- When system is on, in pilot view and negative G effect, set fading amount -->
<type>gain</type>
<gain>1</gain>
<enable>
<condition>
<property alias="/params/enable"/>
<equals>
<property alias="/params/inside"/>
<value>1</value>
</equals>
<less-than>
<property alias="/params/sum"/>
<value>0</value>
</less-than>
</condition>
</enable>
<input>
<expression>
<product>
<property alias="/params/sum"/>
<value>-1</value>
</product>
</expression>
</input>
<output alias="/params/alpha"/>
</filter>
<filter>
<!-- When system is on, in pilot view and positive G effect, set fading color to black -->
<type>gain</type>
<gain>1</gain>
<enable>
<condition>
<property alias="/params/enable"/>
<equals>
<property alias="/params/inside"/>
<value>1</value>
</equals>
<greater-than-equals>
<property alias="/params/sum"/>
<value>0</value>
</greater-than-equals>
</condition>
</enable>
<input>
<value>0</value>
</input>
<output alias="/params/red"/>
</filter>
<filter>
<!-- When system is on, in pilot view and effect should be black, set fading amount -->
<type>gain</type>
<gain>1</gain>
<enable>
<condition>
<property alias="/params/enable"/>
<equals>
<property alias="/params/inside"/>
<value>1</value>
</equals>
<greater-than-equals>
<property alias="/params/sum"/>
<value>0</value>
</greater-than-equals>
</condition>
</enable>
<input>
<expression>
<min>
<value>1</value>
<max>
<value>0</value>
<sum>
<product>
<property alias="/params/als"/>
<property alias="/params/filters"/>
<!-- this will be used when ALS filters are in effect -->
<div>
<dif>
<property alias="/params/sum"/>
<value>0.66</value><!-- onset of blackout -->
</dif>
<value>0.34</value><!-- (full-onset) of blackout -->
</div>
</product>
<product>
<dif>
<value>1</value>
<product>
<property alias="/params/als"/>
<property alias="/params/filters"/>
</product>
</dif>
<!-- this will be used when ALS filters are off -->
<property alias="/params/sum"/>
</product>
</sum>
</max>
</min>
</expression>
</input>
<output alias="/params/alpha"/>
</filter>
<filter>
<!-- When system is off or not in pilot view, set fading to off -->
<type>gain</type>
<gain>0</gain>
<enable>
<condition>
<or>
<not>
<property alias="/params/enable"/>
</not>
<equals>
<property alias="/params/inside"/>
<value>0</value>
</equals>
</or>
</condition>
</enable>
<input>
<value>0</value>
</input>
<output alias="/params/alpha"/>
</filter>
<filter>
<!-- When system disabled, set blackout amount to 0 -->
<type>gain</type>
<gain>0</gain>
<enable>
<condition>
<not>
<property alias="/params/enable"/>
</not>
</condition>
</enable>
<input>
<value>0</value>
</input>
<output alias="/params/blackout"/>
</filter>
<filter>
<!-- When system is disabled, set redout amount to 0 -->
<type>gain</type>
<gain>0</gain>
<enable>
<condition>
<not>
<property alias="/params/enable"/>
</not>
</condition>
</enable>
<input>
<value>0</value>
</input>
<output alias="/params/redout"/>
</filter>
<filter>
<!-- When system is off or not in pilot view or negative G effect, set greyout to off -->
<type>gain</type>
<gain>0</gain>
<enable>
<condition>
<or>
<not>
<property alias="/params/enable"/>
</not>
<equals>
<property alias="/params/inside"/>
<value>0</value>
</equals>
<less-than>
<property alias="/params/sum"/>
<value>0</value>
</less-than>
</or>
</condition>
</enable>
<input>
<value>0</value>
</input>
<output alias="/params/greyout"/>
</filter>
<filter>
<!-- When system is off or not in pilot view or negative G effect, set tunnel-vision to off -->
<type>gain</type>
<gain>0</gain>
<enable>
<condition>
<or>
<not>
<property alias="/params/enable"/>
</not>
<equals>
<property alias="/params/inside"/>
<value>0</value>
</equals>
<less-than>
<property alias="/params/sum"/>
<value>0</value>
</less-than>
</or>
</condition>
</enable>
<input>
<value>0</value>
</input>
<output alias="/params/tunnel"/>
</filter>
<filter>
<!-- When system is on, in pilot view and positive G effect, set tunnel-vision amount -->
<type>gain</type>
<gain>1</gain>
<enable>
<condition>
<property alias="/params/enable"/>
<equals>
<property alias="/params/inside"/>
<value>1</value>
</equals>
<greater-than-equals>
<property alias="/params/sum"/>
<value>0</value>
</greater-than-equals>
</condition>
</enable>
<input>
<expression>
<min>
<value>1</value>
<max>
<value>0</value>
<div>
<dif>
<property alias="/params/sum"/>
<value>0.35</value><!-- onset of tunnel -->
</dif>
<value>0.65</value><!-- (full-onset) of tunnel -->
</div>
</max>
</min>
</expression>
</input>
<output alias="/params/tunnel"/>
</filter>
<filter>
<!-- When system is on, in pilot view and positive G effect, set greyout amount -->
<type>gain</type>
<gain>1</gain>
<enable>
<condition>
<property alias="/params/enable"/>
<equals>
<property alias="/params/inside"/>
<value>1</value>
</equals>
<greater-than-equals>
<property alias="/params/sum"/>
<value>0</value>
</greater-than-equals>
</condition>
</enable>
<input>
<expression>
<min>
<value>1</value>
<max>
<value>0</value>
<div>
<dif>
<property alias="/params/sum"/>
<value>0.15</value><!-- onset of greyout -->
</dif>
<value>0.65</value><!-- (full-onset) of greyout -->
</div>
</max>
</min>
</expression>
</input>
<output alias="/params/greyout"/>
</filter>
<!-- Ground shake effect
The ground shake effect simulates the roughness of the terrain and the
resulting forces onto the pilot when moving over it.
This is achieved by generating random g-forces depending on the current terrain bumpyness.
The force is then applied to the pilot depending on movement speed of the aircraft.
Adjustments reside in sim/rendering/headshake/groundshake and can be done with this properties:
- effect-factor: Overall effect scaling/enabling, so users can disable/adjust in cockpit-gui
- default-aircraft-scaler-factor: allows to adjust the default aircraft effect output.
To be overwritten from aircraft for which the default table is OK but the effect to small/big.
Set to zero in case a separate scaler is provided
- default-aircraft-scaler-min-knots: at this speed the effect starts
- default-aircraft-scaler-max-knots: at this speed the effect reaches its maximum
- custom-aircraft-scaler: aircraft devs calculate their own scaling algorythm result here.
Most probably this is based on speed etc.
Set default-aircraft-scaler-factor to zero, because otherwise the
default still applies (default+custom effects are added)!
-->
<filter>
<name>groundshake-terrain-g</name>
<debug>false</debug>
<type>gain</type>
<gain><property alias="/params/groundshake/effect-factor"/></gain>
<input>
<condition>
<!-- only act when having ground contact -->
<property alias="/params/groundshake/has-ground-contact"/>
<property alias="/params/groundshake/is-moving"/>
</condition>
<expression>
<product>
<!-- defines bumps of surface -->
<property alias="/params/groundshake/rng-source"/>
<!-- apply bumpiness of terrain -->
<product>
<value>1</value>
<sum>
<value>0.1</value> <!-- so we have a effect even on taxiway/runway -->
<property alias="/params/groundshake/terrain-bumpiness"/>
</sum>
</product>
<sum>
<!-- apply the default aircraft scaling -->
<!-- note: in case the aircraft dev wants his own model, he should deactivate the internal one -->
<!-- this can be done by setting the deafualt-aircraft-factor to zero -->
<property alias="/params/groundshake/default-aircraft-scaler" />
<!-- apply aircraft specific scaling -->
<!-- (this is intended to model gear damping based on speed etc) -->
<property alias="/params/groundshake/aircraft-scale-prop"/>
</sum>
</product>
</expression>
</input>
<input><value>0.0</value></input> <!-- in-air: no ground forces -->
<output alias="/params/groundshake/result" />
</filter>
<filter>
<name>Ground bumps</name>
<!-- calculate the ground bump number: The rate and ammount of change simulates bumps in the surface -->
<type>coherent-noise</type>
<debug>false</debug>
<enable>
<condition>
<property alias="/params/groundshake/has-ground-contact"/>
<property alias="/params/groundshake/is-moving"/>
</condition>
</enable>
<input>
<!-- depending on position: the faster we go, the faster the prop changes, the faster the bumps come in -->
<expression>
<product>
<sum>
<property>/position/latitude-deg</property>
<property>/position/longitude-deg</property>
</sum>
<value>50</value>
</product>
</expression>
</input>
<output><property alias="/params/groundshake/rng-source"/></output>
<amplitude>0.5</amplitude>
<absolute type="bool">false</absolute>
<discrete-resolution>1024</discrete-resolution> <!-- frequency of the changes/bumps: the smaller, the more wide the bumps are -->
</filter>
<logic>
<name>Aircraft has ground contact</name>
<input>
<or>
<property>/gear/gear[0]/wow</property>
<property>/gear/gear[1]/wow</property>
<property>/gear/gear[2]/wow</property>
<property>/gear/gear[3]/wow</property>
</or>
</input>
<output>
<property alias="/params/groundshake/has-ground-contact"/>
</output>
</logic>
<logic>
<name>Aircraft is moving</name>
<input>
<greater-than>
<property>/velocities/groundspeed-kt</property>
<value>1</value>
</greater-than>
</input>
<output>
<property alias="/params/groundshake/is-moving"/>
</output>
</logic>
<filter>
<name>Default aircraft scaling by speed</name>
<!-- This filter defines a table for applying the scaled effect by airspeed to
simulate basic damping of the gear. It allows for defining dynamic min/max knots
ranges and scales linearly bin between -->
<debug>false</debug>
<type>gain</type>
<gain> <property alias="/params/groundshake/default-aircraft-scaler-factor"/> </gain>
<input>
<!-- Formula: (1/(max-min))*speed-(min/(max-min)) lets us scale linearly with given min/max values -->
<expression>
<difference>
<prod>
<div>
<value>1</value>
<difference>
<property alias="/params/groundshake/default-aircraft-scaler-maxkts"/>
<property alias="/params/groundshake/default-aircraft-scaler-minkts"/>
</difference>
</div>
<property>/velocities/groundspeed-kt</property>
</prod>
<div>
<property alias="/params/groundshake/default-aircraft-scaler-minkts"/>
<difference>
<property alias="/params/groundshake/default-aircraft-scaler-maxkts"/>
<property alias="/params/groundshake/default-aircraft-scaler-minkts"/>
</difference>
</div>
</difference>
</expression>
<min>0.0</min>
<max>1.0</max>
</input>
<output>
<property alias="/params/groundshake/default-aircraft-scaler" />
</output>
</filter>
</PropertyList>