1
0
Fork 0

Merge branch 'next' of ssh://git.code.sf.net/u/deltaecho/flightgear_fgdata into next

This commit is contained in:
Delta Echo 2019-07-30 07:43:30 +02:00
commit 41b1561b9d
33 changed files with 46952 additions and 33892 deletions

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -8,7 +8,7 @@
<grain-texture-enabled type="int">1</grain-texture-enabled> <grain-texture-enabled type="int">1</grain-texture-enabled>
<grain-magnification type="float"><use>/environment/aircraft-effects/dirt-fuselage</use></grain-magnification> <grain-magnification type="float"><use>/environment/aircraft-effects/dirt-fuselage</use></grain-magnification>
<texture n="7"> <texture n="7">
<image>Models/Effects/exterior/dirt.png</image> <image>Aircraft/c172p/Models/Effects/exterior/dirt.png</image>
<type>2d</type> <type>2d</type>
<filter>linear-mipmap-linear</filter> <filter>linear-mipmap-linear</filter>
<wrap-s>repeat</wrap-s> <wrap-s>repeat</wrap-s>

View file

@ -7,7 +7,7 @@
<grain-texture-enabled type="int">1</grain-texture-enabled> <grain-texture-enabled type="int">1</grain-texture-enabled>
<grain-magnification type="float"><use>/environment/aircraft-effects/dirt-fuselage</use></grain-magnification> <grain-magnification type="float"><use>/environment/aircraft-effects/dirt-fuselage</use></grain-magnification>
<texture n="7"> <texture n="7">
<image>Models/Effects/exterior/dirt.png</image> <image>Aircraft/c172p/Models/Effects/exterior/dirt.png</image>
<type>2d</type> <type>2d</type>
<filter>linear-mipmap-linear</filter> <filter>linear-mipmap-linear</filter>
<wrap-s>repeat</wrap-s> <wrap-s>repeat</wrap-s>

View file

@ -7,7 +7,7 @@
<grain-texture-enabled type="int">1</grain-texture-enabled> <grain-texture-enabled type="int">1</grain-texture-enabled>
<grain-magnification type="float"><use>/environment/aircraft-effects/dirt-edge</use></grain-magnification> <grain-magnification type="float"><use>/environment/aircraft-effects/dirt-edge</use></grain-magnification>
<texture n="7"> <texture n="7">
<image>Models/Effects/exterior/dirt.png</image> <image>Aircraft/c172p/Models/Effects/exterior/dirt.png</image>
<type>2d</type> <type>2d</type>
<filter>linear-mipmap-linear</filter> <filter>linear-mipmap-linear</filter>
<wrap-s>repeat</wrap-s> <wrap-s>repeat</wrap-s>

View file

@ -7,7 +7,7 @@
<grain-texture-enabled type="int">1</grain-texture-enabled> <grain-texture-enabled type="int">1</grain-texture-enabled>
<grain-magnification type="float"><use>/environment/aircraft-effects/dirt-tail</use></grain-magnification> <grain-magnification type="float"><use>/environment/aircraft-effects/dirt-tail</use></grain-magnification>
<texture n="7"> <texture n="7">
<image>Models/Effects/exterior/dirt.png</image> <image>Aircraft/c172p/Models/Effects/exterior/dirt.png</image>
<type>2d</type> <type>2d</type>
<filter>linear-mipmap-linear</filter> <filter>linear-mipmap-linear</filter>
<wrap-s>repeat</wrap-s> <wrap-s>repeat</wrap-s>

View file

@ -7,7 +7,7 @@
<grain-texture-enabled type="int">1</grain-texture-enabled> <grain-texture-enabled type="int">1</grain-texture-enabled>
<grain-magnification type="float"><use>/environment/aircraft-effects/dirt-wing</use></grain-magnification> <grain-magnification type="float"><use>/environment/aircraft-effects/dirt-wing</use></grain-magnification>
<texture n="7"> <texture n="7">
<image>Models/Effects/exterior/dirt.png</image> <image>Aircraft/c172p/Models/Effects/exterior/dirt.png</image>
<type>2d</type> <type>2d</type>
<filter>linear-mipmap-linear</filter> <filter>linear-mipmap-linear</filter>
<wrap-s>repeat</wrap-s> <wrap-s>repeat</wrap-s>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View file

@ -35,7 +35,7 @@
<grain-texture-enabled type="int">1</grain-texture-enabled> <grain-texture-enabled type="int">1</grain-texture-enabled>
<grain-magnification type="float"><use>/environment/aircraft-effects/dirt-fuselage</use></grain-magnification> <grain-magnification type="float"><use>/environment/aircraft-effects/dirt-fuselage</use></grain-magnification>
<texture n="7"> <texture n="7">
<image>Models/Effects/exterior/dirt.png</image> <image>Aircraft/c172p/Models/Effects/exterior/dirt.png</image>
<type>2d</type> <type>2d</type>
<filter>linear-mipmap-linear</filter> <filter>linear-mipmap-linear</filter>
<wrap-s>repeat</wrap-s> <wrap-s>repeat</wrap-s>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View file

@ -2,8 +2,8 @@
<PropertyList> <PropertyList>
<!-- <!--
Bendix/King KX155/165 COMM/NAV radio Bendix/King KX155/165 COM/NAV radio
Use this instrument as COMM1/NAV1 radio Use this instrument as COM1/NAV1 radio
Created by Torsten Dreyer, October 2008 Created by Torsten Dreyer, October 2008
@ -39,6 +39,7 @@
<comm-dial-mhz>instrumentation/comm[0]/frequencies/dial-mhz</comm-dial-mhz> <comm-dial-mhz>instrumentation/comm[0]/frequencies/dial-mhz</comm-dial-mhz>
<comm-volume>instrumentation/comm[0]/volume-selected</comm-volume> <comm-volume>instrumentation/comm[0]/volume-selected</comm-volume>
<comm-test>instrumentation/comm[0]/test-btn</comm-test> <comm-test>instrumentation/comm[0]/test-btn</comm-test>
<channel-mode-selector>instrumentation/comm[0]/channel-mode-selector</channel-mode-selector>
<nav-frq-swp>instrumentation/nav[0]/frq-swap-btn</nav-frq-swp> <nav-frq-swp>instrumentation/nav[0]/frq-swap-btn</nav-frq-swp>
<nav-frq-selected>instrumentation/nav[0]/frequencies/selected-mhz</nav-frq-selected> <nav-frq-selected>instrumentation/nav[0]/frequencies/selected-mhz</nav-frq-selected>
<nav-frq-standby>instrumentation/nav[0]/frequencies/standby-mhz</nav-frq-standby> <nav-frq-standby>instrumentation/nav[0]/frequencies/standby-mhz</nav-frq-standby>
@ -52,41 +53,40 @@
<effect> <effect>
<inherits-from>../../../../Effects/interior/lm-kx165-1r</inherits-from> <inherits-from>../../../../Effects/interior/lm-kx165-1r</inherits-from>
<object-name>CommKnobs</object-name> <object-name>COMknobKHZ</object-name>
<object-name>CommVolume</object-name> <object-name>COMknobMHZ</object-name>
<object-name>NavKnobs</object-name> <object-name>COMxfer</object-name>
<object-name>NavVolume</object-name> <object-name>COMvol</object-name>
<object-name>CommKHz</object-name> <object-name>COMchan</object-name>
<object-name>CommMHz</object-name> <object-name>NAVknobKHZ</object-name>
<object-name>CommToggle</object-name> <object-name>NAVknobMHZ</object-name>
<object-name>CommVolume</object-name> <object-name>NAVxfer</object-name>
<object-name>NavKHz</object-name> <object-name>NAVmode</object-name>
<object-name>NavMHz</object-name> <object-name>NAVvol</object-name>
<object-name>NavToggle</object-name>
<object-name>NavVolume</object-name>
</effect> </effect>
<effect> <effect>
<inherits-from>../../../../Effects/interior/lm-kx165-1</inherits-from> <inherits-from>../../../../Effects/interior/lm-kx165-1</inherits-from>
<object-name>CommToggle</object-name> <object-name>COMxfer</object-name>
<object-name>NavToggle</object-name> <object-name>COMchan</object-name>
<object-name>Chassis</object-name> <object-name>NAVxfer</object-name>
<object-name>NAVmode</object-name>
<object-name>KX165</object-name>
</effect> </effect>
<effect> <effect>
<inherits-from>../../../../Effects/interior/c172p-interior-radiance</inherits-from> <inherits-from>../../../../Effects/interior/c172p-interior-radiance</inherits-from>
<object-name>CommUse</object-name>
<object-name>CommStby</object-name>
<object-name>NavUse</object-name>
<object-name>NavStby</object-name>
<object-name>CommStby100K</object-name> <object-name>CommStby100K</object-name>
<object-name>CommStby100M</object-name> <object-name>CommStby100M</object-name>
<object-name>CommStby10K</object-name> <object-name>CommStby10K</object-name>
<object-name>CommStby10M</object-name> <object-name>CommStby10M</object-name>
<object-name>CommStby1K</object-name>
<object-name>CommStby1M</object-name> <object-name>CommStby1M</object-name>
<object-name>CommStbyDot</object-name> <object-name>CommStbyDot</object-name>
<object-name>CommUse100K</object-name> <object-name>CommUse100K</object-name>
<object-name>CommUse100M</object-name> <object-name>CommUse100M</object-name>
<object-name>CommUse10K</object-name> <object-name>CommUse10K</object-name>
<object-name>CommUse10M</object-name> <object-name>CommUse10M</object-name>
<object-name>CommUse1K</object-name>
<object-name>CommUse1M</object-name> <object-name>CommUse1M</object-name>
<object-name>CommUseDot</object-name> <object-name>CommUseDot</object-name>
<object-name>NavStby100K</object-name> <object-name>NavStby100K</object-name>
@ -101,25 +101,23 @@
<object-name>NavUse10M</object-name> <object-name>NavUse10M</object-name>
<object-name>NavUse1M</object-name> <object-name>NavUse1M</object-name>
<object-name>NavUseDot</object-name> <object-name>NavUseDot</object-name>
<object-name>KX165Line</object-name>
<object-name>Screen</object-name>
</effect> </effect>
<animation> <animation>
<type>material</type> <type>material</type>
<object-name>CommToggle</object-name> <object-name>KX165</object-name>
<object-name>NavToggle</object-name> <object-name>COMknobKHZ</object-name>
<object-name>Chassis</object-name> <object-name>COMknobMHZ</object-name>
<object-name>CommKnobs</object-name> <object-name>COMxfer</object-name>
<object-name>CommVolume</object-name> <object-name>COMchan</object-name>
<object-name>NavKnobs</object-name> <object-name>COMvol</object-name>
<object-name>NavVolume</object-name> <object-name>NAVknobKHZ</object-name>
<object-name>CommKHz</object-name> <object-name>NAVknobMHZ</object-name>
<object-name>CommMHz</object-name> <object-name>NAVxfer</object-name>
<object-name>CommToggle</object-name> <object-name>NAVmode</object-name>
<object-name>CommVolume</object-name> <object-name>NAVvol</object-name>
<object-name>NavKHz</object-name>
<object-name>NavMHz</object-name>
<object-name>NavToggle</object-name>
<object-name>NavVolume</object-name>
<condition> <condition>
<not> <not>
<property>/sim/rendering/shaders/skydome</property> <property>/sim/rendering/shaders/skydome</property>
@ -132,99 +130,80 @@
</emission> </emission>
</animation> </animation>
<animation>
<object-name>CommKnobs</object-name>
<object-name>CommKHz</object-name>
<object-name>CommMHz</object-name>
<object-name>CommToggle</object-name>
<object-name>CommVolume</object-name>
<object-name>CommStby</object-name>
<object-name>CommStby100K</object-name>
<object-name>CommStby100M</object-name>
<object-name>CommStby10K</object-name>
<object-name>CommStby10M</object-name>
<object-name>CommStby1M</object-name>
<object-name>CommStbyDot</object-name>
<object-name>CommUse</object-name>
<object-name>CommUse100K</object-name>
<object-name>CommUse100M</object-name>
<object-name>CommUse10K</object-name>
<object-name>CommUse10M</object-name>
<object-name>CommUse1M</object-name>
<object-name>CommUseDot</object-name>
<object-name>NavKnobs</object-name>
<object-name>NavKHz</object-name>
<object-name>NavMHz</object-name>
<object-name>NavToggle</object-name>
<object-name>NavVolume</object-name>
<object-name>NavStby</object-name>
<object-name>NavStby100K</object-name>
<object-name>NavStby100M</object-name>
<object-name>NavStby10K</object-name>
<object-name>NavStby10M</object-name>
<object-name>NavStby1M</object-name>
<object-name>NavStbyDot</object-name>
<object-name>NavUse</object-name>
<object-name>NavUse100K</object-name>
<object-name>NavUse100M</object-name>
<object-name>NavUse10K</object-name>
<object-name>NavUse10M</object-name>
<object-name>NavUse1M</object-name>
<object-name>NavUseDot</object-name>
<object-name>Chassis</object-name>
</animation>
<animation> <animation>
<type>material</type> <type>material</type>
<object-name>CommKnobs</object-name> <object-name>COMknobKHZ</object-name>
<object-name>CommKHz</object-name> <object-name>COMknobMHZ</object-name>
<object-name>CommMHz</object-name> <object-name>COMxfer</object-name>
<object-name>CommToggle</object-name> <object-name>COMchan</object-name>
<object-name>CommVolume</object-name> <object-name>COMvol</object-name>
<object-name>CommStby</object-name>
<object-name>CommStby100K</object-name> <object-name>CommStby100K</object-name>
<object-name>CommStby100M</object-name> <object-name>CommStby100M</object-name>
<object-name>CommStby10K</object-name> <object-name>CommStby10K</object-name>
<object-name>CommStby10M</object-name> <object-name>CommStby10M</object-name>
<object-name>CommStby1K</object-name>
<object-name>CommStby1M</object-name> <object-name>CommStby1M</object-name>
<object-name>CommStbyDot</object-name> <object-name>CommStbyDot</object-name>
<object-name>CommUse</object-name>
<object-name>CommUse100K</object-name> <object-name>CommUse100K</object-name>
<object-name>CommUse100M</object-name> <object-name>CommUse100M</object-name>
<object-name>CommUse10K</object-name> <object-name>CommUse10K</object-name>
<object-name>CommUse10M</object-name> <object-name>CommUse10M</object-name>
<object-name>CommUse1K</object-name>
<object-name>CommUse1M</object-name> <object-name>CommUse1M</object-name>
<object-name>CommUseDot</object-name> <object-name>CommUseDot</object-name>
<object-name>NavKnobs</object-name> <object-name>NAVknobKHZ</object-name>
<object-name>NavKHz</object-name> <object-name>NAVknobMHZ</object-name>
<object-name>NavMHz</object-name> <object-name>NAVxfer</object-name>
<object-name>NavToggle</object-name> <object-name>NAVmode</object-name>
<object-name>NavVolume</object-name> <object-name>NAVvol</object-name>
<object-name>NavStby</object-name>
<object-name>NavStby100K</object-name> <object-name>NavStby100K</object-name>
<object-name>NavStby100M</object-name> <object-name>NavStby100M</object-name>
<object-name>NavStby10K</object-name> <object-name>NavStby10K</object-name>
<object-name>NavStby10M</object-name> <object-name>NavStby10M</object-name>
<object-name>NavStby1M</object-name> <object-name>NavStby1M</object-name>
<object-name>NavStbyDot</object-name> <object-name>NavStbyDot</object-name>
<object-name>NavUse</object-name>
<object-name>NavUse100K</object-name> <object-name>NavUse100K</object-name>
<object-name>NavUse100M</object-name> <object-name>NavUse100M</object-name>
<object-name>NavUse10K</object-name> <object-name>NavUse10K</object-name>
<object-name>NavUse10M</object-name> <object-name>NavUse10M</object-name>
<object-name>NavUse1M</object-name> <object-name>NavUse1M</object-name>
<object-name>NavUseDot</object-name> <object-name>NavUseDot</object-name>
<object-name>Chassis</object-name> <object-name>KX165Line</object-name>
<object-name>KX165</object-name>
<object-name>Screen</object-name>
<property-base>/sim/instrumentation/comm[0]</property-base> <property-base>/sim/instrumentation/comm[0]</property-base>
<texture-prop>texture-file</texture-prop> <texture-prop>texture-file</texture-prop>
</animation> </animation>
<animation> <animation>
<type>select</type> <type>select</type>
<object-name>CommUse</object-name> <object-name>CommStby100K</object-name>
<object-name>CommStby</object-name> <object-name>CommStby100M</object-name>
<object-name>NavUse</object-name> <object-name>CommStby10K</object-name>
<object-name>NavStby</object-name> <object-name>CommStby10M</object-name>
<object-name>CommStby1K</object-name>
<object-name>CommStby1M</object-name>
<object-name>CommStbyDot</object-name>
<object-name>CommUse100K</object-name>
<object-name>CommUse100M</object-name>
<object-name>CommUse10K</object-name>
<object-name>CommUse10M</object-name>
<object-name>CommUse1K</object-name>
<object-name>CommUse1M</object-name>
<object-name>CommUseDot</object-name>
<object-name>NavStby100K</object-name>
<object-name>NavStby100M</object-name>
<object-name>NavStby10K</object-name>
<object-name>NavStby10M</object-name>
<object-name>NavStby1M</object-name>
<object-name>NavStbyDot</object-name>
<object-name>NavUse100K</object-name>
<object-name>NavUse100M</object-name>
<object-name>NavUse10K</object-name>
<object-name>NavUse10M</object-name>
<object-name>NavUse1M</object-name>
<object-name>NavUseDot</object-name>
<object-name>KX165Line</object-name>
<condition> <condition>
<property>/sim/model/c172p/lighting/comm0-power</property> <property>/sim/model/c172p/lighting/comm0-power</property>
</condition> </condition>
@ -232,8 +211,10 @@
<animation> <animation>
<type>material</type> <type>material</type>
<object-name>CommToggle</object-name> <object-name>COMxfer</object-name>
<object-name>NavToggle</object-name> <object-name>COMchan</object-name>
<object-name>NAVxfer</object-name>
<object-name>NAVmode</object-name>
<condition> <condition>
<not> <not>
<property>sim/rendering/rembrandt/enabled</property> <property>sim/rendering/rembrandt/enabled</property>
@ -249,10 +230,33 @@
<animation> <animation>
<type>material</type> <type>material</type>
<object-name>CommUse</object-name> <object-name>CommStby100K</object-name>
<object-name>CommStby</object-name> <object-name>CommStby100M</object-name>
<object-name>NavUse</object-name> <object-name>CommStby10K</object-name>
<object-name>NavStby</object-name> <object-name>CommStby10M</object-name>
<object-name>CommStby1K</object-name>
<object-name>CommStby1M</object-name>
<object-name>CommStbyDot</object-name>
<object-name>CommUse100K</object-name>
<object-name>CommUse100M</object-name>
<object-name>CommUse10K</object-name>
<object-name>CommUse10M</object-name>
<object-name>CommUse1K</object-name>
<object-name>CommUse1M</object-name>
<object-name>CommUseDot</object-name>
<object-name>NavStby100K</object-name>
<object-name>NavStby100M</object-name>
<object-name>NavStby10K</object-name>
<object-name>NavStby10M</object-name>
<object-name>NavStby1M</object-name>
<object-name>NavStbyDot</object-name>
<object-name>NavUse100K</object-name>
<object-name>NavUse100M</object-name>
<object-name>NavUse10K</object-name>
<object-name>NavUse10M</object-name>
<object-name>NavUse1M</object-name>
<object-name>NavUseDot</object-name>
<object-name>KX165Line</object-name>
<condition> <condition>
<and> <and>
<not> <not>
@ -271,20 +275,45 @@
<factor-prop>/sim/model/c172p/lighting/comm0</factor-prop> <factor-prop>/sim/model/c172p/lighting/comm0</factor-prop>
</emission> </emission>
</animation> </animation>
<effect> <effect>
<inherits-from>Effects/model-transparent</inherits-from> <inherits-from>Effects/model-transparent</inherits-from>
<object-name>CommUse</object-name> <object-name>CommStby100K</object-name>
<object-name>CommStby</object-name> <object-name>CommStby100M</object-name>
<object-name>NavUse</object-name> <object-name>CommStby10K</object-name>
<object-name>NavStby</object-name> <object-name>CommStby10M</object-name>
<object-name>CommStby1K</object-name>
<object-name>CommStby1M</object-name>
<object-name>CommStbyDot</object-name>
<object-name>CommUse100K</object-name>
<object-name>CommUse100M</object-name>
<object-name>CommUse10K</object-name>
<object-name>CommUse10M</object-name>
<object-name>CommUse1K</object-name>
<object-name>CommUse1M</object-name>
<object-name>CommUseDot</object-name>
<object-name>NavStby100K</object-name>
<object-name>NavStby100M</object-name>
<object-name>NavStby10K</object-name>
<object-name>NavStby10M</object-name>
<object-name>NavStby1M</object-name>
<object-name>NavStbyDot</object-name>
<object-name>NavUse100K</object-name>
<object-name>NavUse100M</object-name>
<object-name>NavUse10K</object-name>
<object-name>NavUse10M</object-name>
<object-name>NavUse1M</object-name>
<object-name>NavUseDot</object-name>
<object-name>KX165Line</object-name>
<object-name>Screen</object-name>
</effect> </effect>
<!-- Comm part --> <!-- Comm part -->
<animation> <animation>
<type>translate</type> <type>translate</type>
<object-name>CommToggle</object-name> <object-name>COMxfer</object-name>
<property alias="../../params/comm-frq-swp"/> <property alias="../../params/comm-frq-swp"/>
<factor>-0.004</factor> <factor>-0.003</factor>
<axis> <axis>
<x>1</x> <x>1</x>
<y>0</y> <y>0</y>
@ -362,6 +391,20 @@
</axis> </axis>
</animation> </animation>
<animation>
<type>textranslate</type>
<object-name>CommUse1K</object-name>
<property alias="../../params/comm-frq-selected"/>
<step>0.001</step>
<factor>100</factor>
<bias>0.0001</bias>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
<animation> <animation>
<type>textranslate</type> <type>textranslate</type>
<object-name>CommStby100M</object-name> <object-name>CommStby100M</object-name>
@ -432,12 +475,26 @@
</axis> </axis>
</animation> </animation>
<animation>
<type>textranslate</type>
<object-name>CommStby1K</object-name>
<property alias="../../params/comm-frq-standby"/>
<step>0.001</step>
<factor>100</factor>
<bias>0.0001</bias>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
<!-- NAV part --> <!-- NAV part -->
<animation> <animation>
<type>translate</type> <type>translate</type>
<object-name>NavToggle</object-name> <object-name>NAVxfer</object-name>
<property alias="../../params/nav-frq-swp"/> <property alias="../../params/nav-frq-swp"/>
<factor>-0.004</factor> <factor>-0.003</factor>
<axis> <axis>
<x>1</x> <x>1</x>
<y>0</y> <y>0</y>
@ -588,7 +645,7 @@
<!-- Knobs and buttons --> <!-- Knobs and buttons -->
<animation> <animation>
<type>translate</type> <type>translate</type>
<object-name>NavVolume</object-name> <object-name>NAVvol</object-name>
<property alias="../../params/nav-audio"/> <property alias="../../params/nav-audio"/>
<factor>0.002</factor> <factor>0.002</factor>
<axis> <axis>
@ -602,7 +659,7 @@
<!-- Comm part --> <!-- Comm part -->
<animation> <animation>
<type>knob</type> <type>knob</type>
<object-name>CommVolume</object-name> <object-name>COMvol</object-name>
<property alias="../../params/comm-volume"/> <property alias="../../params/comm-volume"/>
<factor>-65</factor> <factor>-65</factor>
<axis> <axis>
@ -611,9 +668,9 @@
<z>0</z> <z>0</z>
</axis> </axis>
<center> <center>
<x-m>-0.35003</x-m> <x-m>-0.34939</x-m>
<y-m> 0.05092</y-m> <y-m> 0.05082</y-m>
<z-m> 0.06991</z-m> <z-m> 0.07122</z-m>
</center> </center>
<action> <action>
<binding> <binding>
@ -684,9 +741,33 @@
</hovered> </hovered>
</animation> </animation>
<animation>
<type>translate</type>
<object-name>COMknobKHZ</object-name>
<factor>0.005</factor>
<property>instrumentation/comm[0]/channel-mode-selector</property>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
<animation>
<type>translate</type>
<object-name>COMchan</object-name>
<factor>-0.001</factor>
<property>instrumentation/comm[0]/channel-button</property>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
<animation> <animation>
<type>knob</type> <type>knob</type>
<object-name>CommKHz</object-name> <object-name>COMknobKHZ</object-name>
<property alias="/params/comm-dial-khz"/> <property alias="/params/comm-dial-khz"/>
<factor>-0.25</factor> <factor>-0.25</factor>
<axis> <axis>
@ -695,24 +776,11 @@
<z>0</z> <z>0</z>
</axis> </axis>
<center> <center>
<x-m>-0.34721</x-m> <x-m>-0.34726</x-m>
<y-m> 0.09092</y-m> <y-m> 0.09337</y-m>
<z-m> 0.07191</z-m> <z-m> 0.07401</z-m>
</center> </center>
<action> <action>
<binding>
<condition>
<property alias="../../../../../params/power-comm"/>
</condition>
<command>property-adjust</command>
<property alias="/params/comm-frq-standby"/>
<factor>0.025</factor>
<min>0.0</min>
<max>1.0</max>
<resolution>0.025</resolution>
<wrap>true</wrap>
<mask>decimal</mask>
</binding>
<binding> <binding>
<command>property-adjust</command> <command>property-adjust</command>
<property alias="/params/comm-dial-khz"/> <property alias="/params/comm-dial-khz"/>
@ -721,23 +789,52 @@
<max>1440</max> <max>1440</max>
<wrap>true</wrap> <wrap>true</wrap>
</binding> </binding>
</action>
<increase>
<binding>
<command>nasal</command>
<script>
c172p.increment(0, 1);
</script>
</binding>
<binding> <binding>
<command>nasal</command> <command>nasal</command>
<script>c172p.click("kx165-1-dial")</script> <script>c172p.click("kx165-1-dial")</script>
</binding> </binding>
</action> </increase>
<decrease>
<binding>
<command>nasal</command>
<script>
c172p.increment(0, -1);
</script>
</binding>
<binding>
<command>nasal</command>
<script>c172p.click("kx165-1-dial")</script>
</binding>
</decrease>
<shift-action>
<repeatable>0</repeatable>
<binding>
<command>property-cycle</command>
<property>instrumentation/comm[0]/channel-mode-selector</property>
<value>0</value>
<value>1</value>
</binding>
</shift-action>
<hovered> <hovered>
<binding> <binding>
<command>set-tooltip</command> <command>set-tooltip</command>
<tooltip-id>comm1-kHz</tooltip-id> <tooltip-id>comm1-kHz</tooltip-id>
<label>Adjust COM1 kHz</label> <label>Adjust COM1 kHz; Shift click to toggle 8.33</label>
</binding> </binding>
</hovered> </hovered>
</animation> </animation>
<animation> <animation>
<type>knob</type> <type>knob</type>
<object-name>CommMHz</object-name> <object-name>COMknobMHZ</object-name>
<property alias="/params/comm-dial-mhz"/> <property alias="/params/comm-dial-mhz"/>
<factor>-0.25</factor> <factor>-0.25</factor>
<axis> <axis>
@ -746,9 +843,9 @@
<z>0</z> <z>0</z>
</axis> </axis>
<center> <center>
<x-m>-0.34721</x-m> <x-m>-0.34954</x-m>
<y-m> 0.09092</y-m> <y-m> 0.09337</y-m>
<z-m> 0.07191</z-m> <z-m> 0.07401</z-m>
</center> </center>
<action> <action>
<binding> <binding>
@ -759,7 +856,7 @@
<property alias="/params/comm-frq-standby"/> <property alias="/params/comm-frq-standby"/>
<factor>1</factor> <factor>1</factor>
<min>118.0</min> <min>118.0</min>
<max>137.0</max> <max>136.99167</max>
<wrap>true</wrap> <wrap>true</wrap>
<mask>integer</mask> <mask>integer</mask>
</binding> </binding>
@ -787,7 +884,7 @@
<animation> <animation>
<type>pick</type> <type>pick</type>
<object-name>CommToggle</object-name> <object-name>COMxfer</object-name>
<visible>true</visible> <visible>true</visible>
<action> <action>
<button>0</button> <button>0</button>
@ -830,7 +927,7 @@
<!-- Nav part --> <!-- Nav part -->
<animation> <animation>
<type>knob</type> <type>knob</type>
<object-name>NavVolume</object-name> <object-name>NAVvol</object-name>
<property alias="../../params/nav-volume"/> <property alias="../../params/nav-volume"/>
<factor>-65</factor> <factor>-65</factor>
<axis> <axis>
@ -839,9 +936,9 @@
<z>0</z> <z>0</z>
</axis> </axis>
<center> <center>
<x-m>-0.35003</x-m> <x-m>-0.34939</x-m>
<y-m> 0.13092</y-m> <y-m> 0.13118</y-m>
<z-m>0.06991</z-m> <z-m> 0.07122</z-m>
</center> </center>
<action> <action>
<binding> <binding>
@ -890,7 +987,7 @@
<animation> <animation>
<type>knob</type> <type>knob</type>
<object-name>NavKHz</object-name> <object-name>NAVknobKHZ</object-name>
<property alias="/params/nav-dial-khz"/> <property alias="/params/nav-dial-khz"/>
<factor>-0.25</factor> <factor>-0.25</factor>
<axis> <axis>
@ -899,9 +996,9 @@
<z>0</z> <z>0</z>
</axis> </axis>
<center> <center>
<x-m>-0.34568</x-m> <x-m>-0.34726</x-m>
<y-m> 0.17092</y-m> <y-m> 0.17527</y-m>
<z-m> 0.07191</z-m> <z-m> 0.07401</z-m>
</center> </center>
<action> <action>
<binding> <binding>
@ -941,7 +1038,7 @@
<animation> <animation>
<type>knob</type> <type>knob</type>
<object-name>NavMHz</object-name> <object-name>NAVknobMHZ</object-name>
<property alias="/params/nav-dial-mhz"/> <property alias="/params/nav-dial-mhz"/>
<factor>-0.25</factor> <factor>-0.25</factor>
<axis> <axis>
@ -950,9 +1047,9 @@
<z>0</z> <z>0</z>
</axis> </axis>
<center> <center>
<x-m>-0.34568</x-m> <x-m>-0.34954</x-m>
<y-m> 0.17092</y-m> <y-m> 0.17527</y-m>
<z-m> 0.07191</z-m> <z-m> 0.07401</z-m>
</center> </center>
<action> <action>
<binding> <binding>
@ -991,7 +1088,7 @@
<animation> <animation>
<type>pick</type> <type>pick</type>
<object-name>NavToggle</object-name> <object-name>NAVxfer</object-name>
<visible>true</visible> <visible>true</visible>
<action> <action>
<button>0</button> <button>0</button>

View file

@ -2,8 +2,8 @@
<PropertyList> <PropertyList>
<!-- <!--
Bendix/King KX155/165 COMM/NAV radio Bendix/King KX155/165 COM/NAV radio
Use this instrument as COMM1/NAV1 radio Use this instrument as COM1/NAV1 radio
Created by Torsten Dreyer, October 2008 Created by Torsten Dreyer, October 2008
@ -39,6 +39,7 @@
<comm-dial-mhz>instrumentation/comm[1]/frequencies/dial-mhz</comm-dial-mhz> <comm-dial-mhz>instrumentation/comm[1]/frequencies/dial-mhz</comm-dial-mhz>
<comm-volume>instrumentation/comm[1]/volume-selected</comm-volume> <comm-volume>instrumentation/comm[1]/volume-selected</comm-volume>
<comm-test>instrumentation/comm[1]/test-btn</comm-test> <comm-test>instrumentation/comm[1]/test-btn</comm-test>
<channel-mode-selector>instrumentation/comm[1]/channel-mode-selector</channel-mode-selector>
<nav-frq-swp>instrumentation/nav[1]/frq-swap-btn</nav-frq-swp> <nav-frq-swp>instrumentation/nav[1]/frq-swap-btn</nav-frq-swp>
<nav-frq-selected>instrumentation/nav[1]/frequencies/selected-mhz</nav-frq-selected> <nav-frq-selected>instrumentation/nav[1]/frequencies/selected-mhz</nav-frq-selected>
<nav-frq-standby>instrumentation/nav[1]/frequencies/standby-mhz</nav-frq-standby> <nav-frq-standby>instrumentation/nav[1]/frequencies/standby-mhz</nav-frq-standby>
@ -52,41 +53,40 @@
<effect> <effect>
<inherits-from>../../../../Effects/interior/lm-kx165-2r</inherits-from> <inherits-from>../../../../Effects/interior/lm-kx165-2r</inherits-from>
<object-name>CommKnobs</object-name> <object-name>COMknobKHZ</object-name>
<object-name>CommVolume</object-name> <object-name>COMknobMHZ</object-name>
<object-name>NavKnobs</object-name> <object-name>COMxfer</object-name>
<object-name>NavVolume</object-name> <object-name>COMvol</object-name>
<object-name>CommKHz</object-name> <object-name>COMchan</object-name>
<object-name>CommMHz</object-name> <object-name>NAVknobKHZ</object-name>
<object-name>CommToggle</object-name> <object-name>NAVknobMHZ</object-name>
<object-name>CommVolume</object-name> <object-name>NAVxfer</object-name>
<object-name>NavKHz</object-name> <object-name>NAVmode</object-name>
<object-name>NavMHz</object-name> <object-name>NAVvol</object-name>
<object-name>NavToggle</object-name>
<object-name>NavVolume</object-name>
</effect> </effect>
<effect> <effect>
<inherits-from>../../../../Effects/interior/lm-kx165-2</inherits-from> <inherits-from>../../../../Effects/interior/lm-kx165-2</inherits-from>
<object-name>CommToggle</object-name> <object-name>COMxfer</object-name>
<object-name>NavToggle</object-name> <object-name>COMchan</object-name>
<object-name>Chassis</object-name> <object-name>NAVxfer</object-name>
<object-name>NAVmode</object-name>
<object-name>KX165</object-name>
</effect> </effect>
<effect> <effect>
<inherits-from>../../../../Effects/interior/c172p-interior-radiance</inherits-from> <inherits-from>../../../../Effects/interior/c172p-interior-radiance</inherits-from>
<object-name>CommUse</object-name>
<object-name>CommStby</object-name>
<object-name>NavUse</object-name>
<object-name>NavStby</object-name>
<object-name>CommStby100K</object-name> <object-name>CommStby100K</object-name>
<object-name>CommStby100M</object-name> <object-name>CommStby100M</object-name>
<object-name>CommStby10K</object-name> <object-name>CommStby10K</object-name>
<object-name>CommStby10M</object-name> <object-name>CommStby10M</object-name>
<object-name>CommStby1K</object-name>
<object-name>CommStby1M</object-name> <object-name>CommStby1M</object-name>
<object-name>CommStbyDot</object-name> <object-name>CommStbyDot</object-name>
<object-name>CommUse100K</object-name> <object-name>CommUse100K</object-name>
<object-name>CommUse100M</object-name> <object-name>CommUse100M</object-name>
<object-name>CommUse10K</object-name> <object-name>CommUse10K</object-name>
<object-name>CommUse10M</object-name> <object-name>CommUse10M</object-name>
<object-name>CommUse1K</object-name>
<object-name>CommUse1M</object-name> <object-name>CommUse1M</object-name>
<object-name>CommUseDot</object-name> <object-name>CommUseDot</object-name>
<object-name>NavStby100K</object-name> <object-name>NavStby100K</object-name>
@ -101,25 +101,23 @@
<object-name>NavUse10M</object-name> <object-name>NavUse10M</object-name>
<object-name>NavUse1M</object-name> <object-name>NavUse1M</object-name>
<object-name>NavUseDot</object-name> <object-name>NavUseDot</object-name>
<object-name>KX165Line</object-name>
<object-name>Screen</object-name>
</effect> </effect>
<animation> <animation>
<type>material</type> <type>material</type>
<object-name>CommToggle</object-name> <object-name>KX165</object-name>
<object-name>NavToggle</object-name> <object-name>COMknobKHZ</object-name>
<object-name>Chassis</object-name> <object-name>COMknobMHZ</object-name>
<object-name>CommKnobs</object-name> <object-name>COMxfer</object-name>
<object-name>CommVolume</object-name> <object-name>COMchan</object-name>
<object-name>NavKnobs</object-name> <object-name>COMvol</object-name>
<object-name>NavVolume</object-name> <object-name>NAVknobKHZ</object-name>
<object-name>CommKHz</object-name> <object-name>NAVknobMHZ</object-name>
<object-name>CommMHz</object-name> <object-name>NAVxfer</object-name>
<object-name>CommToggle</object-name> <object-name>NAVmode</object-name>
<object-name>CommVolume</object-name> <object-name>NAVvol</object-name>
<object-name>NavKHz</object-name>
<object-name>NavMHz</object-name>
<object-name>NavToggle</object-name>
<object-name>NavVolume</object-name>
<condition> <condition>
<not> <not>
<property>/sim/rendering/shaders/skydome</property> <property>/sim/rendering/shaders/skydome</property>
@ -132,99 +130,80 @@
</emission> </emission>
</animation> </animation>
<animation>
<object-name>CommKnobs</object-name>
<object-name>CommKHz</object-name>
<object-name>CommMHz</object-name>
<object-name>CommToggle</object-name>
<object-name>CommVolume</object-name>
<object-name>CommStby</object-name>
<object-name>CommStby100K</object-name>
<object-name>CommStby100M</object-name>
<object-name>CommStby10K</object-name>
<object-name>CommStby10M</object-name>
<object-name>CommStby1M</object-name>
<object-name>CommStbyDot</object-name>
<object-name>CommUse</object-name>
<object-name>CommUse100K</object-name>
<object-name>CommUse100M</object-name>
<object-name>CommUse10K</object-name>
<object-name>CommUse10M</object-name>
<object-name>CommUse1M</object-name>
<object-name>CommUseDot</object-name>
<object-name>NavKnobs</object-name>
<object-name>NavKHz</object-name>
<object-name>NavMHz</object-name>
<object-name>NavToggle</object-name>
<object-name>NavVolume</object-name>
<object-name>NavStby</object-name>
<object-name>NavStby100K</object-name>
<object-name>NavStby100M</object-name>
<object-name>NavStby10K</object-name>
<object-name>NavStby10M</object-name>
<object-name>NavStby1M</object-name>
<object-name>NavStbyDot</object-name>
<object-name>NavUse</object-name>
<object-name>NavUse100K</object-name>
<object-name>NavUse100M</object-name>
<object-name>NavUse10K</object-name>
<object-name>NavUse10M</object-name>
<object-name>NavUse1M</object-name>
<object-name>NavUseDot</object-name>
<object-name>Chassis</object-name>
</animation>
<animation> <animation>
<type>material</type> <type>material</type>
<object-name>CommKnobs</object-name> <object-name>COMknobKHZ</object-name>
<object-name>CommKHz</object-name> <object-name>COMknobMHZ</object-name>
<object-name>CommMHz</object-name> <object-name>COMxfer</object-name>
<object-name>CommToggle</object-name> <object-name>COMchan</object-name>
<object-name>CommVolume</object-name> <object-name>COMvol</object-name>
<object-name>CommStby</object-name>
<object-name>CommStby100K</object-name> <object-name>CommStby100K</object-name>
<object-name>CommStby100M</object-name> <object-name>CommStby100M</object-name>
<object-name>CommStby10K</object-name> <object-name>CommStby10K</object-name>
<object-name>CommStby10M</object-name> <object-name>CommStby10M</object-name>
<object-name>CommStby1K</object-name>
<object-name>CommStby1M</object-name> <object-name>CommStby1M</object-name>
<object-name>CommStbyDot</object-name> <object-name>CommStbyDot</object-name>
<object-name>CommUse</object-name>
<object-name>CommUse100K</object-name> <object-name>CommUse100K</object-name>
<object-name>CommUse100M</object-name> <object-name>CommUse100M</object-name>
<object-name>CommUse10K</object-name> <object-name>CommUse10K</object-name>
<object-name>CommUse10M</object-name> <object-name>CommUse10M</object-name>
<object-name>CommUse1K</object-name>
<object-name>CommUse1M</object-name> <object-name>CommUse1M</object-name>
<object-name>CommUseDot</object-name> <object-name>CommUseDot</object-name>
<object-name>NavKnobs</object-name> <object-name>NAVknobKHZ</object-name>
<object-name>NavKHz</object-name> <object-name>NAVknobMHZ</object-name>
<object-name>NavMHz</object-name> <object-name>NAVxfer</object-name>
<object-name>NavToggle</object-name> <object-name>NAVmode</object-name>
<object-name>NavVolume</object-name> <object-name>NAVvol</object-name>
<object-name>NavStby</object-name>
<object-name>NavStby100K</object-name> <object-name>NavStby100K</object-name>
<object-name>NavStby100M</object-name> <object-name>NavStby100M</object-name>
<object-name>NavStby10K</object-name> <object-name>NavStby10K</object-name>
<object-name>NavStby10M</object-name> <object-name>NavStby10M</object-name>
<object-name>NavStby1M</object-name> <object-name>NavStby1M</object-name>
<object-name>NavStbyDot</object-name> <object-name>NavStbyDot</object-name>
<object-name>NavUse</object-name>
<object-name>NavUse100K</object-name> <object-name>NavUse100K</object-name>
<object-name>NavUse100M</object-name> <object-name>NavUse100M</object-name>
<object-name>NavUse10K</object-name> <object-name>NavUse10K</object-name>
<object-name>NavUse10M</object-name> <object-name>NavUse10M</object-name>
<object-name>NavUse1M</object-name> <object-name>NavUse1M</object-name>
<object-name>NavUseDot</object-name> <object-name>NavUseDot</object-name>
<object-name>Chassis</object-name> <object-name>KX165Line</object-name>
<object-name>KX165</object-name>
<object-name>Screen</object-name>
<property-base>/sim/instrumentation/comm[1]</property-base> <property-base>/sim/instrumentation/comm[1]</property-base>
<texture-prop>texture-file</texture-prop> <texture-prop>texture-file</texture-prop>
</animation> </animation>
<animation> <animation>
<type>select</type> <type>select</type>
<object-name>CommUse</object-name> <object-name>CommStby100K</object-name>
<object-name>CommStby</object-name> <object-name>CommStby100M</object-name>
<object-name>NavUse</object-name> <object-name>CommStby10K</object-name>
<object-name>NavStby</object-name> <object-name>CommStby10M</object-name>
<object-name>CommStby1K</object-name>
<object-name>CommStby1M</object-name>
<object-name>CommStbyDot</object-name>
<object-name>CommUse100K</object-name>
<object-name>CommUse100M</object-name>
<object-name>CommUse10K</object-name>
<object-name>CommUse10M</object-name>
<object-name>CommUse1K</object-name>
<object-name>CommUse1M</object-name>
<object-name>CommUseDot</object-name>
<object-name>NavStby100K</object-name>
<object-name>NavStby100M</object-name>
<object-name>NavStby10K</object-name>
<object-name>NavStby10M</object-name>
<object-name>NavStby1M</object-name>
<object-name>NavStbyDot</object-name>
<object-name>NavUse100K</object-name>
<object-name>NavUse100M</object-name>
<object-name>NavUse10K</object-name>
<object-name>NavUse10M</object-name>
<object-name>NavUse1M</object-name>
<object-name>NavUseDot</object-name>
<object-name>KX165Line</object-name>
<condition> <condition>
<property>/sim/model/c172p/lighting/comm1-power</property> <property>/sim/model/c172p/lighting/comm1-power</property>
</condition> </condition>
@ -232,8 +211,10 @@
<animation> <animation>
<type>material</type> <type>material</type>
<object-name>CommToggle</object-name> <object-name>COMxfer</object-name>
<object-name>NavToggle</object-name> <object-name>COMchan</object-name>
<object-name>NAVxfer</object-name>
<object-name>NAVmode</object-name>
<condition> <condition>
<not> <not>
<property>sim/rendering/rembrandt/enabled</property> <property>sim/rendering/rembrandt/enabled</property>
@ -249,10 +230,33 @@
<animation> <animation>
<type>material</type> <type>material</type>
<object-name>CommUse</object-name> <object-name>CommStby100K</object-name>
<object-name>CommStby</object-name> <object-name>CommStby100M</object-name>
<object-name>NavUse</object-name> <object-name>CommStby10K</object-name>
<object-name>NavStby</object-name> <object-name>CommStby10M</object-name>
<object-name>CommStby1K</object-name>
<object-name>CommStby1M</object-name>
<object-name>CommStbyDot</object-name>
<object-name>CommUse100K</object-name>
<object-name>CommUse100M</object-name>
<object-name>CommUse10K</object-name>
<object-name>CommUse10M</object-name>
<object-name>CommUse1K</object-name>
<object-name>CommUse1M</object-name>
<object-name>CommUseDot</object-name>
<object-name>NavStby100K</object-name>
<object-name>NavStby100M</object-name>
<object-name>NavStby10K</object-name>
<object-name>NavStby10M</object-name>
<object-name>NavStby1M</object-name>
<object-name>NavStbyDot</object-name>
<object-name>NavUse100K</object-name>
<object-name>NavUse100M</object-name>
<object-name>NavUse10K</object-name>
<object-name>NavUse10M</object-name>
<object-name>NavUse1M</object-name>
<object-name>NavUseDot</object-name>
<object-name>KX165Line</object-name>
<condition> <condition>
<and> <and>
<not> <not>
@ -271,20 +275,45 @@
<factor-prop>/sim/model/c172p/lighting/comm1</factor-prop> <factor-prop>/sim/model/c172p/lighting/comm1</factor-prop>
</emission> </emission>
</animation> </animation>
<effect> <effect>
<inherits-from>Effects/model-transparent</inherits-from> <inherits-from>Effects/model-transparent</inherits-from>
<object-name>CommUse</object-name> <object-name>CommStby100K</object-name>
<object-name>CommStby</object-name> <object-name>CommStby100M</object-name>
<object-name>NavUse</object-name> <object-name>CommStby10K</object-name>
<object-name>NavStby</object-name> <object-name>CommStby10M</object-name>
<object-name>CommStby1K</object-name>
<object-name>CommStby1M</object-name>
<object-name>CommStbyDot</object-name>
<object-name>CommUse100K</object-name>
<object-name>CommUse100M</object-name>
<object-name>CommUse10K</object-name>
<object-name>CommUse10M</object-name>
<object-name>CommUse1K</object-name>
<object-name>CommUse1M</object-name>
<object-name>CommUseDot</object-name>
<object-name>NavStby100K</object-name>
<object-name>NavStby100M</object-name>
<object-name>NavStby10K</object-name>
<object-name>NavStby10M</object-name>
<object-name>NavStby1M</object-name>
<object-name>NavStbyDot</object-name>
<object-name>NavUse100K</object-name>
<object-name>NavUse100M</object-name>
<object-name>NavUse10K</object-name>
<object-name>NavUse10M</object-name>
<object-name>NavUse1M</object-name>
<object-name>NavUseDot</object-name>
<object-name>KX165Line</object-name>
<object-name>Screen</object-name>
</effect> </effect>
<!-- Comm part --> <!-- comm part -->
<animation> <animation>
<type>translate</type> <type>translate</type>
<object-name>CommToggle</object-name> <object-name>COMxfer</object-name>
<property alias="../../params/comm-frq-swp"/> <property alias="../../params/comm-frq-swp"/>
<factor>-0.004</factor> <factor>-0.003</factor>
<axis> <axis>
<x>1</x> <x>1</x>
<y>0</y> <y>0</y>
@ -362,6 +391,20 @@
</axis> </axis>
</animation> </animation>
<animation>
<type>textranslate</type>
<object-name>CommUse1K</object-name>
<property alias="../../params/comm-frq-selected"/>
<step>0.001</step>
<factor>100</factor>
<bias>0.0001</bias>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
<animation> <animation>
<type>textranslate</type> <type>textranslate</type>
<object-name>CommStby100M</object-name> <object-name>CommStby100M</object-name>
@ -432,12 +475,26 @@
</axis> </axis>
</animation> </animation>
<animation>
<type>textranslate</type>
<object-name>CommStby1K</object-name>
<property alias="../../params/comm-frq-standby"/>
<step>0.001</step>
<factor>100</factor>
<bias>0.0001</bias>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
<!-- NAV part --> <!-- NAV part -->
<animation> <animation>
<type>translate</type> <type>translate</type>
<object-name>NavToggle</object-name> <object-name>NAVxfer</object-name>
<property alias="../../params/nav-frq-swp"/> <property alias="../../params/nav-frq-swp"/>
<factor>-0.004</factor> <factor>-0.003</factor>
<axis> <axis>
<x>1</x> <x>1</x>
<y>0</y> <y>0</y>
@ -585,10 +642,9 @@
</axis> </axis>
</animation> </animation>
<!-- Knobs and buttons -->
<animation> <animation>
<type>translate</type> <type>translate</type>
<object-name>NavVolume</object-name> <object-name>NAVvol</object-name>
<property alias="../../params/nav-audio"/> <property alias="../../params/nav-audio"/>
<factor>0.002</factor> <factor>0.002</factor>
<axis> <axis>
@ -602,7 +658,7 @@
<!-- Comm part --> <!-- Comm part -->
<animation> <animation>
<type>knob</type> <type>knob</type>
<object-name>CommVolume</object-name> <object-name>COMvol</object-name>
<property alias="../../params/comm-volume"/> <property alias="../../params/comm-volume"/>
<factor>-65</factor> <factor>-65</factor>
<axis> <axis>
@ -611,9 +667,9 @@
<z>0</z> <z>0</z>
</axis> </axis>
<center> <center>
<x-m>-0.34509</x-m> <x-m>-0.34939</x-m>
<y-m> 0.05097</y-m> <y-m> 0.05132</y-m>
<z-m> 0.01597</z-m> <z-m> 0.01737</z-m>
</center> </center>
<action> <action>
<binding> <binding>
@ -684,9 +740,33 @@
</hovered> </hovered>
</animation> </animation>
<animation>
<type>translate</type>
<object-name>COMknobKHZ</object-name>
<factor>0.005</factor>
<property>instrumentation/comm[1]/channel-mode-selector</property>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
<animation>
<type>translate</type>
<object-name>COMchan</object-name>
<factor>-0.001</factor>
<property>instrumentation/comm[1]/channel-button</property>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
<animation> <animation>
<type>knob</type> <type>knob</type>
<object-name>CommKHz</object-name> <object-name>COMknobKHZ</object-name>
<property alias="/params/comm-dial-khz"/> <property alias="/params/comm-dial-khz"/>
<factor>-0.25</factor> <factor>-0.25</factor>
<axis> <axis>
@ -695,24 +775,11 @@
<z>0</z> <z>0</z>
</axis> </axis>
<center> <center>
<x-m>-0.34727</x-m> <x-m>-0.34726</x-m>
<y-m> 0.09097</y-m> <y-m> 0.09336</y-m>
<z-m> 0.01797</z-m> <z-m> 0.02016</z-m>
</center> </center>
<action> <action>
<binding>
<condition>
<property alias="../../../../../params/power-comm"/>
</condition>
<command>property-adjust</command>
<property alias="/params/comm-frq-standby"/>
<factor>0.025</factor>
<min>0.0</min>
<max>1.0</max>
<resolution>0.025</resolution>
<wrap>true</wrap>
<mask>decimal</mask>
</binding>
<binding> <binding>
<command>property-adjust</command> <command>property-adjust</command>
<property alias="/params/comm-dial-khz"/> <property alias="/params/comm-dial-khz"/>
@ -721,23 +788,52 @@
<max>1440</max> <max>1440</max>
<wrap>true</wrap> <wrap>true</wrap>
</binding> </binding>
</action>
<increase>
<binding>
<command>nasal</command>
<script>
c172p.increment(1, 1);
</script>
</binding>
<binding> <binding>
<command>nasal</command> <command>nasal</command>
<script>c172p.click("kx165-2-dial")</script> <script>c172p.click("kx165-2-dial")</script>
</binding> </binding>
</action> </increase>
<decrease>
<binding>
<command>nasal</command>
<script>
c172p.increment(1, -1);
</script>
</binding>
<binding>
<command>nasal</command>
<script>c172p.click("kx165-2-dial")</script>
</binding>
</decrease>
<shift-action>
<repeatable>0</repeatable>
<binding>
<command>property-cycle</command>
<property>instrumentation/comm[1]/channel-mode-selector</property>
<value>0</value>
<value>1</value>
</binding>
</shift-action>
<hovered> <hovered>
<binding> <binding>
<command>set-tooltip</command> <command>set-tooltip</command>
<tooltip-id>comm2-kHz</tooltip-id> <tooltip-id>comm2-kHz</tooltip-id>
<label>Adjust COM2 kHz</label> <label>Adjust COM2 kHz; Shift click to toggle 8.33</label>
</binding> </binding>
</hovered> </hovered>
</animation> </animation>
<animation> <animation>
<type>knob</type> <type>knob</type>
<object-name>CommMHz</object-name> <object-name>COMknobMHZ</object-name>
<property alias="/params/comm-dial-mhz"/> <property alias="/params/comm-dial-mhz"/>
<factor>-0.25</factor> <factor>-0.25</factor>
<axis> <axis>
@ -746,9 +842,9 @@
<z>0</z> <z>0</z>
</axis> </axis>
<center> <center>
<x-m>-0.34727</x-m> <x-m>-0.34954</x-m>
<y-m> 0.09097</y-m> <y-m> 0.09337</y-m>
<z-m> 0.01797</z-m> <z-m> 0.02016</z-m>
</center> </center>
<action> <action>
<binding> <binding>
@ -759,7 +855,7 @@
<property alias="/params/comm-frq-standby"/> <property alias="/params/comm-frq-standby"/>
<factor>1</factor> <factor>1</factor>
<min>118.0</min> <min>118.0</min>
<max>137.0</max> <max>136.99167</max>
<wrap>true</wrap> <wrap>true</wrap>
<mask>integer</mask> <mask>integer</mask>
</binding> </binding>
@ -787,7 +883,7 @@
<animation> <animation>
<type>pick</type> <type>pick</type>
<object-name>CommToggle</object-name> <object-name>COMxfer</object-name>
<visible>true</visible> <visible>true</visible>
<action> <action>
<button>0</button> <button>0</button>
@ -821,7 +917,7 @@
<hovered> <hovered>
<binding> <binding>
<command>set-tooltip</command> <command>set-tooltip</command>
<tooltip-id>comm2-toggle</tooltip-id> <tooltip-id>comm1-toggle</tooltip-id>
<label>Swap COM2 frequencies</label> <label>Swap COM2 frequencies</label>
</binding> </binding>
</hovered> </hovered>
@ -830,7 +926,7 @@
<!-- Nav part --> <!-- Nav part -->
<animation> <animation>
<type>knob</type> <type>knob</type>
<object-name>NavVolume</object-name> <object-name>NAVvol</object-name>
<property alias="../../params/nav-volume"/> <property alias="../../params/nav-volume"/>
<factor>-65</factor> <factor>-65</factor>
<axis> <axis>
@ -839,9 +935,9 @@
<z>0</z> <z>0</z>
</axis> </axis>
<center> <center>
<x-m>-0.35009</x-m> <x-m>-0.34939</x-m>
<y-m> 0.13097</y-m> <y-m> 0.13118</y-m>
<z-m> 0.01597</z-m> <z-m> 0.01737</z-m>
</center> </center>
<action> <action>
<binding> <binding>
@ -866,7 +962,7 @@
<hovered> <hovered>
<binding> <binding>
<command>set-tooltip</command> <command>set-tooltip</command>
<tooltip-id>nav2-volume</tooltip-id> <tooltip-id>nav1-volume</tooltip-id>
<label>%s</label> <label>%s</label>
<measure-text>NAV2 Volume: 100% ; Ident disabled (Shift + click to pull)</measure-text> <measure-text>NAV2 Volume: 100% ; Ident disabled (Shift + click to pull)</measure-text>
<property alias="../../../../params/nav-volume"/> <property alias="../../../../params/nav-volume"/>
@ -890,7 +986,7 @@
<animation> <animation>
<type>knob</type> <type>knob</type>
<object-name>NavKHz</object-name> <object-name>NAVknobKHZ</object-name>
<property alias="/params/nav-dial-khz"/> <property alias="/params/nav-dial-khz"/>
<factor>-0.25</factor> <factor>-0.25</factor>
<axis> <axis>
@ -899,9 +995,9 @@
<z>0</z> <z>0</z>
</axis> </axis>
<center> <center>
<x-m>-0.34574</x-m> <x-m>-0.34726</x-m>
<y-m> 0.17097</y-m> <y-m> 0.17527</y-m>
<z-m> 0.01797</z-m> <z-m> 0.02016</z-m>
</center> </center>
<action> <action>
<binding> <binding>
@ -933,7 +1029,7 @@
<hovered> <hovered>
<binding> <binding>
<command>set-tooltip</command> <command>set-tooltip</command>
<tooltip-id>nav2-kHz</tooltip-id> <tooltip-id>nav1-kHz</tooltip-id>
<label>Adjust NAV2 kHz</label> <label>Adjust NAV2 kHz</label>
</binding> </binding>
</hovered> </hovered>
@ -941,7 +1037,7 @@
<animation> <animation>
<type>knob</type> <type>knob</type>
<object-name>NavMHz</object-name> <object-name>NAVknobMHZ</object-name>
<property alias="/params/nav-dial-mhz"/> <property alias="/params/nav-dial-mhz"/>
<factor>-0.25</factor> <factor>-0.25</factor>
<axis> <axis>
@ -950,9 +1046,9 @@
<z>0</z> <z>0</z>
</axis> </axis>
<center> <center>
<x-m>-0.34574</x-m> <x-m>-0.34954</x-m>
<y-m> 0.17097</y-m> <y-m> 0.17527</y-m>
<z-m> 0.01797</z-m> <z-m> 0.02016</z-m>
</center> </center>
<action> <action>
<binding> <binding>
@ -991,7 +1087,7 @@
<animation> <animation>
<type>pick</type> <type>pick</type>
<object-name>NavToggle</object-name> <object-name>NAVxfer</object-name>
<visible>true</visible> <visible>true</visible>
<action> <action>
<button>0</button> <button>0</button>
@ -1008,7 +1104,7 @@
</binding> </binding>
<binding> <binding>
<command>nasal</command> <command>nasal</command>
<script>c172p.click("kx165-2")</script> <script>c172p.click("kx165-1")</script>
</binding> </binding>
<mod-up> <mod-up>
<binding> <binding>
@ -1025,7 +1121,7 @@
<hovered> <hovered>
<binding> <binding>
<command>set-tooltip</command> <command>set-tooltip</command>
<tooltip-id>nav2-toggle</tooltip-id> <tooltip-id>nav1-toggle</tooltip-id>
<label>Swap NAV2 frequencies</label> <label>Swap NAV2 frequencies</label>
</binding> </binding>
</hovered> </hovered>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 41 KiB

View file

@ -15,7 +15,7 @@ MATERIAL "exterior-parts.003" rgb 0.640 0.640 0.640 amb 1.000 1.000 1.000 emis
MATERIAL "mat_antenna" rgb 0.712 0.712 0.712 amb 0.890 0.890 0.890 emis 0.000 0.000 0.000 spec 0.500 0.500 0.500 shi 12 trans 0.000 MATERIAL "mat_antenna" rgb 0.712 0.712 0.712 amb 0.890 0.890 0.890 emis 0.000 0.000 0.000 spec 0.500 0.500 0.500 shi 12 trans 0.000
MATERIAL "glass-exterior" rgb 0.648 1.000 0.709 amb 1.000 1.000 1.000 emis 0.000 0.000 0.000 spec 0.599 1.000 1.000 shi 12 trans 0.800 MATERIAL "glass-exterior" rgb 0.648 1.000 0.709 amb 1.000 1.000 1.000 emis 0.000 0.000 0.000 spec 0.599 1.000 1.000 shi 12 trans 0.800
MATERIAL "Material.Glass" rgb 1.000 1.000 1.000 amb 1.000 1.000 1.000 emis 0.000 0.000 0.000 spec 1.000 1.000 1.000 shi 12 trans 0.655 MATERIAL "Material.Glass" rgb 1.000 1.000 1.000 amb 1.000 1.000 1.000 emis 0.000 0.000 0.000 spec 1.000 1.000 1.000 shi 12 trans 0.655
MATERIAL "Panel.Glass" rgb 0.014 0.014 0.014 amb 0.500 0.500 0.500 emis 0.000 0.000 0.000 spec 0.844 0.844 0.844 shi 5 trans 0.850 MATERIAL "Panel.Glass.001" rgb 0.014 0.014 0.014 amb 0.500 0.500 0.500 emis 0.000 0.000 0.000 spec 0.844 0.844 0.844 shi 5 trans 0.850
MATERIAL "mat_panels_rack_base" rgb 0.800 0.684 0.600 amb 1.000 1.000 1.000 emis 0.000 0.000 0.000 spec 0.216 0.216 0.216 shi 2 trans 0.000 MATERIAL "mat_panels_rack_base" rgb 0.800 0.684 0.600 amb 1.000 1.000 1.000 emis 0.000 0.000 0.000 spec 0.216 0.216 0.216 shi 2 trans 0.000
MATERIAL "visors" rgb 0.640 0.640 0.640 amb 1.000 1.000 1.000 emis 0.000 0.000 0.000 spec 0.500 0.500 0.500 shi 12 trans 0.000 MATERIAL "visors" rgb 0.640 0.640 0.640 amb 1.000 1.000 1.000 emis 0.000 0.000 0.000 spec 0.500 0.500 0.500 shi 12 trans 0.000
MATERIAL "glareshield" rgb 0.012 0.012 0.012 amb 1.000 1.000 1.000 emis 0.000 0.000 0.000 spec 0.776 0.776 0.776 shi 64 trans 0.000 MATERIAL "glareshield" rgb 0.012 0.012 0.012 amb 1.000 1.000 1.000 emis 0.000 0.000 0.000 spec 0.776 0.776 0.776 shi 64 trans 0.000
@ -71208,7 +71208,7 @@ kids 0
OBJECT poly OBJECT poly
name "glass_panel" name "glass_panel"
data 10 data 10
Circle.014 Circle.015
crease 180.0 crease 180.0
numvert 513 numvert 513
-0.36977 0.02208 0.06724 -0.36977 0.02208 0.06724
@ -71690,14 +71690,6 @@ numvert 513
-0.34967 0.03191 -0.11597 -0.34967 0.03191 -0.11597
-0.34967 0.05254 -0.18965 -0.34967 0.05254 -0.18965
-0.34967 0.03198 -0.18957 -0.34967 0.03198 -0.18957
-0.34967 0.10657 -0.03593
-0.34967 0.08589 -0.03593
-0.34967 0.10652 -0.1096
-0.34967 0.08597 -0.10952
-0.34967 0.10657 -0.11597
-0.34967 0.08589 -0.11597
-0.34967 0.10652 -0.18965
-0.34967 0.08597 -0.18957
-0.35218 -0.08221 -0.05833 -0.35218 -0.08221 -0.05833
-0.35218 -0.10049 -0.05833 -0.35218 -0.10049 -0.05833
-0.35218 -0.08225 -0.14815 -0.35218 -0.08225 -0.14815
@ -71724,6 +71716,14 @@ numvert 513
-0.35648 0.03007 -0.40629 -0.35648 0.03007 -0.40629
-0.35648 0.03569 -0.43268 -0.35648 0.03569 -0.43268
-0.35648 0.03009 -0.43265 -0.35648 0.03009 -0.43265
-0.34911 0.10568 -0.03567
-0.34911 0.08624 -0.03567
-0.34911 0.10563 -0.18902
-0.34911 0.08632 -0.18894
-0.34911 0.05151 -0.03567
-0.34911 0.03207 -0.03567
-0.34911 0.05146 -0.18902
-0.34911 0.03215 -0.18894
numsurf 25 numsurf 25
SURF 0X10 SURF 0X10
mat 16 mat 16
@ -72261,58 +72261,58 @@ refs 4
SURF 0X0 SURF 0X0
mat 16 mat 16
refs 4 refs 4
480 0.238006 0.987558 480 0.815238 0.320389
482 0.238277 0.73561 482 0.815598 0.01324
481 0.307519 0.735342 481 0.876815 0.012935
479 0.307657 0.987558 479 0.876815 0.32041
SURF 0X0
mat 16
refs 4
484 0.876815 0.265151
486 0.877086 0.013203
485 0.946328 0.012935
483 0.946466 0.265151
SURF 0X0
mat 16
refs 4
488 0.815238 0.320389
490 0.815598 0.01324
489 0.876815 0.012935
487 0.876815 0.32041
SURF 0X0 SURF 0X0
mat 16 mat 16
refs 10 refs 10
496 0.723538 0.260261 488 0.723538 0.260261
497 0.723538 0.035975 489 0.723538 0.035975
498 0.742945 0.012935 490 0.742945 0.012935
491 0.796492 0.013389 483 0.796492 0.013389
492 0.815238 0.035939 484 0.815238 0.035939
499 0.815238 0.070373 491 0.815238 0.070373
500 0.815238 0.128039 492 0.815238 0.128039
493 0.815238 0.26154 485 0.815238 0.26154
494 0.798547 0.281905 486 0.798547 0.281905
495 0.741095 0.281905 487 0.741095 0.281905
SURF 0X0 SURF 0X0
mat 16 mat 16
refs 4 refs 4
502 0.948794 1 494 0.948794 1
504 0.949094 0.49508 496 0.949094 0.49508
503 1 0.494542 495 1 0.494542
501 1 0.999999 493 1 0.999999
SURF 0X0 SURF 0X0
mat 16 mat 16
refs 4 refs 4
506 0.946466 0.327345 498 0.946466 0.327345
508 0.946624 0.013271 500 0.946624 0.013271
507 0.973496 0.012935 499 0.973496 0.012935
505 0.973496 0.327342 497 0.973496 0.327342
SURF 0X0 SURF 0X0
mat 16 mat 16
refs 4 refs 4
510 0.307657 0.825695 502 0.307657 0.825695
512 0.307771 0.735433 504 0.307771 0.735433
511 0.326626 0.735342 503 0.326626 0.735342
509 0.326626 0.825702 501 0.326626 0.825702
SURF 0X0
mat 16
refs 4
506 0.001415 0.764058
508 0.199701 0.764334
507 0.198987 0.841427
505 0.002351 0.841606
SURF 0X0
mat 16
refs 4
510 0.001415 0.764058
512 0.199701 0.764334
511 0.198987 0.841427
509 0.002351 0.841606
kids 0 kids 0
OBJECT group OBJECT group
name "GROUP_FrontPanels" name "GROUP_FrontPanels"

View file

@ -164,31 +164,48 @@
<z-m> 0.08948</z-m> <z-m> 0.08948</z-m>
<heading-deg>-19.0</heading-deg> <heading-deg>-19.0</heading-deg>
</offsets> </offsets>
<condition> </model>
<not> <animation>
<equals> <type>translate</type>
<property alias="/params/bushkit"/> <object-name>Garmin196-GPS-non-Canvas</object-name>
<value>4</value> <property>/Interior/Panel/Instruments/garmin196/move</property>
</equals> <factor>0.1</factor>
</not> <axis>
</condition> <x>0.0</x>
<y>1.0</y>
<z>0.0</z>
</axis>
</animation>
<!-- Canvas local Garmin 196 GPS -->
<!--<model>
<name>Garmin196-GPS</name>
<path>Interior/Panel/garmin196/garmin196.xml</path>
<offsets>
<x-m>-0.4</x-m>
<y-m>0.36</y-m>
<z-m>0.205</z-m>
<heading-deg>-12.0</heading-deg>
</offsets>
</model> </model>
<model> <model>
<name>Garmin196-GPS-non-Canvas</name> <name>Garmin196-GPS-support</name>
<path>Interior/Panel/Instruments/garmin196/garmin196.xml</path> <path>Interior/Panel/garmin196/garmin196_support.xml</path>
<offsets> <offsets>
<x-m>-0.305</x-m> <x-m>-0.4</x-m>
<y-m> 0.36584</y-m> <y-m>0.36</y-m>
<z-m> 0.08948</z-m> <z-m>0.205</z-m>
<heading-deg>-19.0</heading-deg> <heading-deg>-12.0</heading-deg>
</offsets> </offsets>
<condition>
<equals>
<property alias="/params/bushkit"/>
<value>4</value>
</equals>
</condition>
</model> </model>
<animation>
<type>select</type>
<object-name>Garmin196-GPS</object-name>
<object-name>Garmin196-GPS-support</object-name>
<condition>
<property>/sim/model/c172p/garmin196-visible</property>
</condition>
</animation>-->
<model> <model>
<name>GPS-Model</name> <name>GPS-Model</name>
@ -316,36 +333,6 @@
</condition> </condition>
</animation> </animation>
<!-- Canvas local Garmin 196 GPS -->
<!--<model>
<name>Garmin196-GPS</name>
<path>Interior/Panel/garmin196/garmin196.xml</path>
<offsets>
<x-m>-0.4</x-m>
<y-m>0.36</y-m>
<z-m>0.205</z-m>
<heading-deg>-12.0</heading-deg>
</offsets>
</model>
<model>
<name>Garmin196-GPS-support</name>
<path>Interior/Panel/garmin196/garmin196_support.xml</path>
<offsets>
<x-m>-0.4</x-m>
<y-m>0.36</y-m>
<z-m>0.205</z-m>
<heading-deg>-12.0</heading-deg>
</offsets>
</model>
<animation>
<type>select</type>
<object-name>Garmin196-GPS</object-name>
<object-name>Garmin196-GPS-support</object-name>
<condition>
<property>/sim/model/c172p/garmin196-visible</property>
</condition>
</animation>-->
<nasal> <nasal>
<load> <load>
var livery_update = aircraft.livery_update.new( var livery_update = aircraft.livery_update.new(
@ -3033,7 +3020,7 @@
<font>Helvetica.txf</font> <font>Helvetica.txf</font>
<character-size type="double">0.005</character-size> <character-size type="double">0.005</character-size>
<character-aspect-ratio type="double">-1.0</character-aspect-ratio> <character-aspect-ratio type="double">-1.0</character-aspect-ratio>
<axis-alignment>yx-plane</axis-alignment> <axis-alignment>xy-plane</axis-alignment>
<max-height>0.2</max-height> <max-height>0.2</max-height>
<max-width>0.07</max-width> <max-width>0.07</max-width>
<font-resolution> <font-resolution>
@ -3056,7 +3043,7 @@
<font>Helvetica.txf</font> <font>Helvetica.txf</font>
<character-size type="double">0.005</character-size> <character-size type="double">0.005</character-size>
<character-aspect-ratio type="double">-1.0</character-aspect-ratio> <character-aspect-ratio type="double">-1.0</character-aspect-ratio>
<axis-alignment>yx-plane</axis-alignment> <axis-alignment>xy-plane</axis-alignment>
<max-height>0.2</max-height> <max-height>0.2</max-height>
<max-width>0.07</max-width> <max-width>0.07</max-width>
<font-resolution> <font-resolution>
@ -3079,7 +3066,7 @@
<font>Helvetica.txf</font> <font>Helvetica.txf</font>
<character-size type="double">0.005</character-size> <character-size type="double">0.005</character-size>
<character-aspect-ratio type="double">-1.0</character-aspect-ratio> <character-aspect-ratio type="double">-1.0</character-aspect-ratio>
<axis-alignment>yx-plane</axis-alignment> <axis-alignment>xy-plane</axis-alignment>
<max-height>0.2</max-height> <max-height>0.2</max-height>
<max-width>0.07</max-width> <max-width>0.07</max-width>
<font-resolution> <font-resolution>

View file

@ -45,6 +45,7 @@ aircraft.data.add(
"instrumentation/comm[0]/frequencies/dial-khz", "instrumentation/comm[0]/frequencies/dial-khz",
"instrumentation/comm[0]/frequencies/dial-mhz", "instrumentation/comm[0]/frequencies/dial-mhz",
"instrumentation/comm[0]/test-btn", "instrumentation/comm[0]/test-btn",
"instrumentation/comm[0]/channel-mode-selector",
"instrumentation/nav[0]/ident-audible", "instrumentation/nav[0]/ident-audible",
"instrumentation/nav[0]/power-btn", "instrumentation/nav[0]/power-btn",
"instrumentation/nav[0]/volume", "instrumentation/nav[0]/volume",
@ -64,6 +65,7 @@ aircraft.data.add(
"instrumentation/comm[1]/frequencies/dial-khz", "instrumentation/comm[1]/frequencies/dial-khz",
"instrumentation/comm[1]/frequencies/dial-mhz", "instrumentation/comm[1]/frequencies/dial-mhz",
"instrumentation/comm[1]/test-btn", "instrumentation/comm[1]/test-btn",
"instrumentation/comm[0]/channel-mode-selector",
"instrumentation/nav[1]/ident-audible", "instrumentation/nav[1]/ident-audible",
"instrumentation/nav[1]/power-btn", "instrumentation/nav[1]/power-btn",
"instrumentation/nav[1]/volume", "instrumentation/nav[1]/volume",

View file

@ -0,0 +1,43 @@
# Code to handle 8.33 khz for the KX165A radio
var increment = func(index, direction) {
var selector = getprop("instrumentation/comm[" ~ index ~ "]/channel-mode-selector");
if (selector == 1) {
setprop("instrumentation/comm[" ~ index ~ "]/frequencies/standby-channel", getprop("instrumentation/comm[" ~ index ~ "]/frequencies/standby-channel") + direction);
} elsif (selector == 0) {
setprop("instrumentation/comm[" ~ index ~ "]/frequencies/standby-channel", getprop("instrumentation/comm[" ~ index ~ "]/frequencies/standby-channel") + (direction * 4));
}
}
setlistener("/instrumentation/comm[0]/channel-mode-selector", func() {
if (getprop("/instrumentation/comm[0]/channel-mode-selector") == 0) {
var result = math.round(getprop("/instrumentation/comm[0]/frequencies/standby-channel") / 4) * 4;
setprop("/instrumentation/comm[0]/frequencies/standby-channel", result);
var result = math.round(getprop("/instrumentation/comm[0]/frequencies/selected-channel") / 4) * 4;
setprop("/instrumentation/comm[0]/frequencies/selected-channel", result);
}
}, 0, 0);
setlistener("/instrumentation/comm[1]/channel-mode-selector", func() {
if (getprop("/instrumentation/comm[1]/channel-mode-selector") == 0) {
var result = math.round(getprop("/instrumentation/comm[1]/frequencies/standby-channel") / 4) * 4;
setprop("/instrumentation/comm[1]/frequencies/standby-channel", result);
var result = math.round(getprop("/instrumentation/comm[1]/frequencies/selected-channel") / 4) * 4;
setprop("/instrumentation/comm[1]/frequencies/selected-channel", result);
}
}, 0, 0);
var hackListener = setlistener("/sim/signals/fdm-initialized", func() {
# a dirty hack but it works. It triggers the above setlisteners on startup (passing the startup argument did not work)
# in case a 8.33 frequency has been saved but 25k is selected on startup
var selector = getprop("instrumentation/comm[0]/channel-mode-selector");
setprop("/instrumentation/comm[0]/channel-mode-selector", 2);
setprop("/instrumentation/comm[0]/channel-mode-selector", selector);
var selector = getprop("instrumentation/comm[1]/channel-mode-selector");
setprop("/instrumentation/comm[1]/channel-mode-selector", 2);
setprop("/instrumentation/comm[1]/channel-mode-selector", selector);
# after the first startup we don't need this
removelistener(hackListener);
});

View file

@ -123,25 +123,26 @@ var tiedown_left_updater = TiedownPositionUpdater.new("left");
var tiedown_right_updater = TiedownPositionUpdater.new("right"); var tiedown_right_updater = TiedownPositionUpdater.new("right");
var tiedown_tail_updater = TiedownPositionUpdater.new("tail"); var tiedown_tail_updater = TiedownPositionUpdater.new("tail");
setlistener("/sim/model/c172p/securing/tiedownL-visible", func (node) { setlistener("/sim/signals/fdm-initialized", func {
tiedown_left_updater.enable_or_disable(node.getValue()); setlistener("/sim/model/c172p/securing/tiedownL-visible", func (node) {
}, 1, 0); tiedown_left_updater.enable_or_disable(node.getValue());
}, 1, 0);
setlistener("/sim/model/c172p/securing/tiedownR-visible", func (node) { setlistener("/sim/model/c172p/securing/tiedownR-visible", func (node) {
tiedown_right_updater.enable_or_disable(node.getValue()); tiedown_right_updater.enable_or_disable(node.getValue());
}, 1, 0); }, 1, 0);
setlistener("/sim/model/c172p/securing/tiedownT-visible", func (node) { setlistener("/sim/model/c172p/securing/tiedownT-visible", func (node) {
tiedown_tail_updater.enable_or_disable(node.getValue()); tiedown_tail_updater.enable_or_disable(node.getValue());
}, 1, 0); }, 1, 0);
setlistener("/fdm/jsbsim/damage/repairing", func (node) {
# When the aircraft has been repaired (value is switched back
# to 0), compute the new initial length of the tiedowns
if (!node.getValue()) {
tiedown_left_updater.init_ref_length();
tiedown_right_updater.init_ref_length();
tiedown_tail_updater.init_ref_length();
}
}, 0, 0);
setlistener("/fdm/jsbsim/damage/repairing", func (node) {
# When the aircraft has been repaired (value is switched back
# to 0), compute the new initial length of the tiedowns
if (!node.getValue()) {
tiedown_left_updater.init_ref_length();
tiedown_right_updater.init_ref_length();
tiedown_tail_updater.init_ref_length();
}
}, 0, 0);
});

View file

@ -183,6 +183,16 @@ Extra weight and drag due to bush wheels, floats and aircraft with 180 hp engine
</switch> </switch>
</channel> </channel>
<channel name="GPS-placement">
<switch name="gps-placement">
<default value="0"/>
<test logic="AND" value="1">
bushkit EQ 4
</test>
<output>/Interior/Panel/Instruments/garmin196/move</output>
</switch>
</channel>
<channel name="JSBSim hydrodynamics integration"> <channel name="JSBSim hydrodynamics integration">
<fcs_function name="tmp/floats-enabled-norm"> <fcs_function name="tmp/floats-enabled-norm">
<function> <function>

View file

@ -142,11 +142,13 @@ file, these values will be used (they are hardcoded).
<comm-radio> <comm-radio>
<name>comm</name> <name>comm</name>
<number>0</number> <number>0</number>
<eight-point-three>1</eight-point-three>
</comm-radio> </comm-radio>
<comm-radio> <comm-radio>
<name>comm</name> <name>comm</name>
<number>1</number> <number>1</number>
<eight-point-three>1</eight-point-three>
</comm-radio> </comm-radio>
<nav-radio> <nav-radio>

View file

@ -764,6 +764,7 @@ http://forum.flightgear.org/viewtopic.php?f=4&t=25157
<dial-mhz type="int">0</dial-mhz> <dial-mhz type="int">0</dial-mhz>
</frequencies> </frequencies>
<volume-selected type="double">0.7</volume-selected> <volume-selected type="double">0.7</volume-selected>
<channel-mode-selector type="bool">1</channel-mode-selector>
</comm> </comm>
<comm n="1"> <comm n="1">
<power-btn type="bool">1</power-btn> <power-btn type="bool">1</power-btn>
@ -772,6 +773,7 @@ http://forum.flightgear.org/viewtopic.php?f=4&t=25157
<dial-mhz type="int">0</dial-mhz> <dial-mhz type="int">0</dial-mhz>
</frequencies> </frequencies>
<volume-selected type="double">0.7</volume-selected> <volume-selected type="double">0.7</volume-selected>
<channel-mode-selector type="bool">1</channel-mode-selector>
</comm> </comm>
<nav n="0"> <nav n="0">
<volume type="double">0.7</volume> <volume type="double">0.7</volume>
@ -944,6 +946,7 @@ http://forum.flightgear.org/viewtopic.php?f=4&t=25157
<file>Nasal/tanks.nas</file> <file>Nasal/tanks.nas</file>
<file>Nasal/kma20.nas</file> <file>Nasal/kma20.nas</file>
<file>Nasal/ki266.nas</file> <file>Nasal/ki266.nas</file>
<file>Nasal/kx165a.nas</file>
<file>Nasal/engine.nas</file> <file>Nasal/engine.nas</file>
<file>Nasal/avionics.nas</file> <file>Nasal/avionics.nas</file>
<file>Nasal/interior-lighting.nas</file> <file>Nasal/interior-lighting.nas</file>

View file

@ -69,7 +69,7 @@
<transition_model>0.8</transition_model> <transition_model>0.8</transition_model>
<hires_overlay_bias>0</hires_overlay_bias> <hires_overlay_bias>0</hires_overlay_bias>
</parameters> </parameters>
<object-mask>Terrain/deciduous-hires_mask.png</object-mask> <object-mask>Terrain/rice1.mask.png</object-mask>
<xsize>2000</xsize> <xsize>2000</xsize>
<ysize>2000</ysize> <ysize>2000</ysize>
<light-coverage>2000000.0</light-coverage> <light-coverage>2000000.0</light-coverage>

View file

@ -53,14 +53,21 @@ var WPT_model = {
if (alt != 0) if (alt != 0)
m.name ~= "\n"~alt; m.name ~= "\n"~alt;
var wp2idx = 1; # next waypoint if (idx > 0) {
var path = wp.path();
if (!idx) { # first point # check for empty path
if(fp.getPlanSize(idx) == 1) # if only have one wpt then it must be at element 0. if (size(path) == 0)
return nil;
var n = wp.path()[-1];
} else {
var wp2idx = 1; # next waypoint
if (fp.getPlanSize() == 1) # if only have one wpt then it must be at element 0.
wp2idx = 0; wp2idx = 0;
} var path = fp.getWP(wp2idx).path();
if (idx) var n = wp.path()[-1]; if (size(path) == 0)
else var n = fp.getWP(wp2idx).path()[0]; return nil;
var n = fp.getWP(wp2idx).path()[0];
}
(m.lat,m.lon) = (n.lat,n.lon); (m.lat,m.lon) = (n.lat,n.lon);
return m; return m;
@ -82,8 +89,12 @@ var searchCmd = func {
for(var idx = 0; idx < planCount; idx += 1){ for(var idx = 0; idx < planCount; idx += 1){
var fp = driver.getFlightPlan(idx); var fp = driver.getFlightPlan(idx);
var fpSize = fp.getPlanSize(idx); var fpSize = fp.getPlanSize(idx);
for (var i = 0; i < fpSize; i+=1)
append(result, WPT_model.new(fp, i)); for (var i = 0; i < fpSize; i+=1) {
var wm = WPT_model.new(fp, i);
if (wm != nil)
append(result, wm);
}
} }
return result; return result;
}; };

View file

@ -117,6 +117,11 @@ var end_compose_message = func()
release_kbd(); release_kbd();
} }
var view_select = func(callsign)
{
view.model_view_handler.select(callsign, 1);
}
var handle_key = func(key) var handle_key = func(key)
{ {
if (key == `\n` or key == `\r` or key == `~`) if (key == `\n` or key == `\r` or key == `~`)
@ -183,18 +188,20 @@ var dialog = {
slant: getprop("/sim/gui/selected-style/fonts/mp-list/slant") or 0, slant: getprop("/sim/gui/selected-style/fonts/mp-list/slant") or 0,
}; };
me.header = ["chat", " callsign"," code"," model", " brg", func dialog.dist_hdr, func dialog.alt_hdr ~ " ", "ver", "ignore" ~ " "]; me.header = ["view", " callsign", " model", func dialog.dist_hdr, func dialog.alt_hdr ~ " ", " brg", "chat", "ignore" ~ " ", " code", "ver", " set"];
me.columns = [ me.columns = [
{ type: "button", legend: "", halign: "right", callback: "multiplayer.compose_message", "pref-height": 14, "pref-width": 14 }, { type: "checkbox", legend: "", property: "view", halign: "right", "pref-height": 14, "pref-width": 14, callback: "multiplayer.view_select", argprop: "callsign", },
{ type: "text", property: "callsign", format: " %s", label: "-----------", halign: "fill" , font: me.font }, { type: "text", property: "callsign", format: " %s", label: "-----------", halign: "fill" , font: me.font },
{ type: "text", property: "id-code", format: " %s", label: "-----", halign: "fill" , font: me.font },
{ type: "text", property: "model-short", format: " %s", label: "--------------", halign: "fill" , font: me.font }, { type: "text", property: "model-short", format: " %s", label: "--------------", halign: "fill" , font: me.font },
{ type: "text", property: "bearing-to", format: " %3.0f", label: "----", halign: "right", font: me.font },
{ type: "text", property: func dialog.dist_node, format:" %8.2f", label: "---------", halign: "right", font: me.font }, { type: "text", property: func dialog.dist_node, format:" %8.2f", label: "---------", halign: "right", font: me.font },
{ type: "text", property: func dialog.alt_node, format:" %7.0f", label: "---------", halign: "right", font: me.font }, { type: "text", property: func dialog.alt_node, format:" %7.0f", label: "---------", halign: "right", font: me.font },
{ type: "text", property: "sim/multiplay/protocol-version", format: " %s", label: "--", halign: "fill" , font: me.font }, { type: "text", property: "bearing-to", format: " %3.0f", label: "----", halign: "right", font: me.font },
{ type: "button", legend: "", halign: "right", callback: "multiplayer.compose_message", "pref-height": 14, "pref-width": 14 },
{ type: "checkbox", property: "controls/invisible", callback: "multiplayer.dialog.toggle_ignore", { type: "checkbox", property: "controls/invisible", callback: "multiplayer.dialog.toggle_ignore",
argprop: "callsign", label: "---------", halign: "right", font: me.font }, argprop: "callsign", label: "---------", halign: "right", font: me.font },
{ type: "text", property: "id-code", format: " %s", label: "-----", halign: "fill" , font: me.font },
{ type: "text", property: "sim/multiplay/protocol-version", format: " %s", label: "--", halign: "fill" , font: me.font },
{ type: "text", property: "set-loaded", format: "%s", label: "----", halign: "fill" , font: me.font },
]; ];
me.cs_warnings = {}; me.cs_warnings = {};
me.name = "who-is-online"; me.name = "who-is-online";
@ -206,6 +213,7 @@ var dialog = {
append(me.listeners, setlistener("/sim/startup/ysize", func me._redraw_())); append(me.listeners, setlistener("/sim/startup/ysize", func me._redraw_()));
append(me.listeners, setlistener("/sim/signals/reinit-gui", func me._redraw_())); append(me.listeners, setlistener("/sim/signals/reinit-gui", func me._redraw_()));
append(me.listeners, setlistener("/sim/signals/multiplayer-updated", func me._redraw_())); append(me.listeners, setlistener("/sim/signals/multiplayer-updated", func me._redraw_()));
append(me.listeners, setlistener("/sim/current-view/model-view", func me.update_view()));
}, },
create: func { create: func {
if (me.dialog != nil) if (me.dialog != nil)
@ -228,6 +236,12 @@ var dialog = {
var titlebar = me.dialog.addChild("group"); var titlebar = me.dialog.addChild("group");
titlebar.set("layout", "hbox"); titlebar.set("layout", "hbox");
var view_self = titlebar.addChild("button");
view_self.node.setValues({ "pref-height": 16, legend: "view self", default: 0 });
view_self.setBinding("nasal", "view.model_view_handler.select(getprop('/sim/multiplayer/callsign'), 1);");
titlebar.addChild("empty").set("stretch", 1);
var w = titlebar.addChild("button"); var w = titlebar.addChild("button");
w.node.setValues({ "pref-width": 16, "pref-height": 16, legend: me.unit_button, default: 0 }); w.node.setValues({ "pref-width": 16, "pref-height": 16, legend: me.unit_button, default: 0 });
w.setBinding("nasal", "multiplayer.dialog.toggle_unit(); multiplayer.dialog._redraw_()"); w.setBinding("nasal", "multiplayer.dialog.toggle_unit(); multiplayer.dialog._redraw_()");
@ -255,7 +269,7 @@ var dialog = {
var col = 0; var col = 0;
foreach (var h; me.header) { foreach (var h; me.header) {
var w = content.addChild("text"); var w = content.addChild("text");
w.node.setValues({ "font" : me.font}); w.node.setValues({ "font" : me.font});
var l = typeof(h) == "func" ? h() : h; var l = typeof(h) == "func" ? h() : h;
w.node.setValues({ "label": l, "row": row, "col": col, halign: me.columns[col].halign }); w.node.setValues({ "label": l, "row": row, "col": col, halign: me.columns[col].halign });
@ -268,8 +282,10 @@ w.node.setValues({ "font" : me.font});
foreach (var mp; model.list) { foreach (var mp; model.list) {
var col = 0; var col = 0;
var color = me.fg[2]; var color = me.fg[2];
if (mp.node.getNode("model-installed").getValue()) if (mp.node.getNode("model-installed").getValue()) {
color = me.fg[odd = !odd]; color = me.fg[odd = !odd];
color = me.fg[1];
}
else{ else{
print("no model installed; check fallback"); print("no model installed; check fallback");
var fbn = mp.node.getNode("sim/model/fallback-model-index"); var fbn = mp.node.getNode("sim/model/fallback-model-index");
@ -281,24 +297,24 @@ w.node.setValues({ "font" : me.font});
} else } else
print(" ->> no fallback node"); print(" ->> no fallback node");
} }
foreach (var column; me.columns) { foreach (var column; me.columns) {
var w = nil; var w = nil;
if (column.type == "button") { if (column.type == "button") {
w = content.addChild("button"); w = content.addChild("button");
w.node.setValues(column); w.node.setValues(column);
w.setBinding("nasal", column.callback ~ "(\"" ~ mp.callsign ~ ", \");"); w.setBinding("nasal", column.callback ~ "(\"" ~ mp.callsign ~ "\",);");
w.node.setValues({ row: row, col: col}); w.node.setValues({ row: row, col: col});
} else { } else {
var p = typeof(column.property) == "func" ? column.property() : column.property; var p = typeof(column.property) == "func" ? column.property() : column.property;
if (column.type == "text") { if (column.type == "text") {
w = content.addChild("text"); w = content.addChild("text");
w.node.setValues(column); w.node.setValues(column);
} elsif (column.type == "checkbox") { } elsif (column.type == "checkbox") {
w = content.addChild("checkbox"); w = content.addChild("checkbox");
w.setBinding("nasal", column.callback ~ "(getprop(\"" ~ mp.root ~ "/" ~ column.argprop ~ "\"))"); w.setBinding("nasal", column.callback ~ "(getprop(\"" ~ mp.root ~ "/" ~ column.argprop ~ "\"))");
} }
w.node.setValues({ row: row, col: col, live: 1, property: mp.root ~ "/" ~ p }); w.node.setValues({ row: row, col: col, live: 1, property: mp.root ~ "/" ~ p });
} }
w.setColor(color[0], color[1], color[2], color[3]); w.setColor(color[0], color[1], color[2], color[3]);
col += 1; col += 1;
} }
@ -311,6 +327,17 @@ w.node.setValues({ "font" : me.font});
me.update(me.loopid += 1); me.update(me.loopid += 1);
fgcommand("dialog-new", me.dialog.prop()); fgcommand("dialog-new", me.dialog.prop());
fgcommand("dialog-show", me.dialog.prop()); fgcommand("dialog-show", me.dialog.prop());
me.update_view();
},
update_view: func() {
# We are called when the aircraft being viewed has changed. We update
# the boxes in the 'view' column so that only the one for the aircraft
# being viewed is checked. If the user's aircraft is being viewed, none
# of these boxes will be checked.
callsign = getprop("/sim/current-view/model-view");
foreach (var mp; model.list) {
mp.node.setValues({'view': mp.callsign == callsign});
}
}, },
update: func(id) { update: func(id) {
id == me.loopid or return; id == me.loopid or return;
@ -341,8 +368,19 @@ w.node.setValues({ "font" : me.font});
else else
{ {
# Node with valid position data (and "distance!=nil"). # Node with valid position data (and "distance!=nil").
# For 'set-loaded' column, we find whether the 'set' has more
# than just the 'sim' child (which we always create even if
# we couldn't load the -set.xml, in order to provide default
# values for views' config/z-offset-m values).
var set = n.getNode("set");
var set_numchildren = 0;
if (set != nil) set_numchildren = size(set.getChildren());
var set_loaded = (set_numchildren >= 2);
n.setValues({ n.setValues({
"model-short": n.getNode("model-installed").getValue() ? mp.model : "[" ~ mp.model ~ "]", "model-short": n.getNode("model-installed").getValue() ? mp.model : "[" ~ mp.model ~ "]",
"set-loaded": set_loaded ? " *" : " ",
"bearing-to": self.course_to(ac), "bearing-to": self.course_to(ac),
"distance-to-km": distance / 1000.0, "distance-to-km": distance / 1000.0,
"distance-to-nm": distance * M2NM, "distance-to-nm": distance * M2NM,

View file

@ -42,7 +42,6 @@ var RouteManagerDelegate = {
arrivalChanged: func arrivalChanged: func
{ {
printlog('info', 'saw arrival changed');
me.flightplan.clearWPType('star'); me.flightplan.clearWPType('star');
me.flightplan.clearWPType('approach'); me.flightplan.clearWPType('approach');
if (me.flightplan.destination == nil) if (me.flightplan.destination == nil)
@ -60,9 +59,10 @@ var RouteManagerDelegate = {
if (me.flightplan.star != nil) { if (me.flightplan.star != nil) {
printlog('info', 'routing via STAR ' ~ me.flightplan.star.id); printlog('info', 'routing via STAR ' ~ me.flightplan.star.id);
var wps = me.flightplan.star.route(me.flightplan.destination_runway); var wps = me.flightplan.star.route(me.flightplan.destination_runway);
me.flightplan.insertWaypoints(wps, -1); if (wps != nil) {
me.flightplan.insertWaypoints(wps, -1);
initialApproachFix = wps[-1]; # final waypoint of STAR initialApproachFix = wps[-1]; # final waypoint of STAR
}
} }
if (me.flightplan.approach != nil) { if (me.flightplan.approach != nil) {

View file

@ -3,11 +3,43 @@
## ##
## Nasal code for implementing view-specific functionality. ## Nasal code for implementing view-specific functionality.
# ATTENTION:
# /sim/current-view/view-number is in the range 0..viewCount, it is NOT
# the index used in aircraft XML files (e.g. <view n="100">)
# For debugging. Returns string containing description of <x>.
#
var str = func(x, prefix='') {
prefix = '';
var ret = '';
ret = ret ~ prefix ~ typeof(x) ~ ':';
if (typeof(x) == "hash") {
ret = ret ~ '{';
#prefix = prefix ~ ' ';
foreach(var key; keys(x)){
ret = ret ~ prefix ~ " '" ~ key ~ "'" ~ ':';
ret = ret ~ str(x[key], prefix ~ ' ');
}
ret = ret ~ '}'
}
else {
ret = ret ~ sprintf('%s', x);
}
return ret;
}
var index = nil; # current view index var index = nil; # current view index
var indices = {}; # view_index -> number
var views = nil; # list of all view branches (/sim/view[n]) as props.Node var views = nil; # list of all view branches (/sim/view[n]) as props.Node
var current = nil; # current view branch (e.g. /sim/view[1]) as props.Node var current = nil; # current view branch (e.g. /sim/view[1]) as props.Node
var fovProp = nil; var fovProp = nil;
# activate view by index number used in XML definition (e.g. >100)
var setViewByIndex = func(i) {
if (indices[i] != nil)
setprop("/sim/current-view/view-number", indices[i]);
}
var hasmember = func(class, member) { var hasmember = func(class, member) {
if (contains(class, member)) if (contains(class, member))
return 1; return 1;
@ -74,9 +106,9 @@ var resetFOV = func {
var resetViewPos = func { var resetViewPos = func {
var v = current.getNode("config"); var v = current.getNode("config");
setprop("/sim/current-view/x-offset-m", v.getNode("x-offset-m", 1).getValue() or 0); setprop("/sim/current-view/x-offset-m", 0);
setprop("/sim/current-view/y-offset-m", v.getNode("y-offset-m", 1).getValue() or 0); setprop("/sim/current-view/y-offset-m", 0);
setprop("/sim/current-view/z-offset-m", v.getNode("z-offset-m", 1).getValue() or 0); setprop("/sim/current-view/z-offset-m", 0);
} }
var resetViewDir = func { var resetViewDir = func {
@ -171,6 +203,18 @@ var default_handler = {
}; };
# If <from>/<path> exists and <to>/<path> doesn't, copy the former to the
# latter.
#
var set_default = func(from, path, to) {
from_ = from.getNode(path);
if (from_ != nil) {
if (to.getNode(path) == nil) {
to.setValue(path, from_.getValue());
}
}
}
## ##
# View manager. Administrates optional Nasal view handlers. # View manager. Administrates optional Nasal view handlers.
# Usage: view.manager.register(<view-id>, <view-handler>); # Usage: view.manager.register(<view-id>, <view-handler>);
@ -198,23 +242,55 @@ var default_handler = {
var manager = { var manager = {
current : { node: nil, handler: default_handler }, current : { node: nil, handler: default_handler },
init : func { init : func {
me.current = nil;
me.views = {}; me.views = {};
me.loopid = 0; me.loopid = 0;
var viewnodes = props.globals.getNode("sim").getChildren("view"); var viewnodes = props.globals.getNode("sim").getChildren("view");
forindex (var i; viewnodes) var helicopter_view = viewnodes[1];
me.views[i] = { node: viewnodes[i], handler: default_handler }; forindex (var i; viewnodes) {
# Install this view, marking as multiplayer if appropriate.
var multiplayer = 1;
if (i==4 or i==6) {
# Fly-by and Tower Look From views do not currently
# support multiplayer aircraft.
multiplayer = 0;
}
var viewnode = viewnodes[i];
me.views[i] = {
node: viewnode,
handler: default_handler,
multiplayer: multiplayer
};
# If this view is similar to helicopter view, copy across
# Helicopter View target offsets if not specified. E.g.
# this allows Tower View AGL to work on aircraft that don't
# know about it but need non-zero target-*-offset-m values
# to centre the view on the middle of the aircraft.
if (i==2 or i==3 or i==5 or i==7) {
set_default(helicopter_view, "config/target-x-offset-m", viewnode);
set_default(helicopter_view, "config/target-y-offset-m", viewnode);
set_default(helicopter_view, "config/target-z-offset-m", viewnode);
}
}
# see comment at begin of file
setlistener("/sim/current-view/view-number", func(n) { setlistener("/sim/current-view/view-number", func(n) {
manager.set_view(n.getValue()); manager.set_view(n.getValue());
}, 1); }, 1);
}, },
register : func(which, handler = nil) { register : func(which, handler = nil) {
if (num(which) == nil) var n = num(which);
which = indexof(which); if (n == nil) n = indexof(which);
if (n == nil) {
printf('Unable to register view handler: which=%s', which);
return;
}
if (handler == nil) if (handler == nil)
handler = default_handler; handler = default_handler;
me.views[which]["handler"] = handler; me.views[n]["handler"] = handler;
var viewnodes = props.globals.getNode("sim").getChildren("view");
me.views[n]["node"] = viewnodes[n];
if (hasmember(handler, "init")) if (hasmember(handler, "init"))
handler.init(me.views[which].node); handler.init(me.views[n].node);
me.set_view(); me.set_view();
}, },
set_view : func(which = nil) { set_view : func(which = nil) {
@ -224,8 +300,13 @@ var manager = {
which = indexof(which); which = indexof(which);
me.loopid += 1; me.loopid += 1;
if (hasmember(me.current.handler, "stop")) if (me.current != nil) {
if (me.current.multiplayer) {
model_view_handler.stop();
}
if (hasmember(me.current.handler, "stop"))
me.current.handler.stop(); me.current.handler.stop();
}
me.current = me.views[which]; me.current = me.views[which];
@ -233,6 +314,9 @@ var manager = {
me.current.handler.start(); me.current.handler.start();
if (hasmember(me.current.handler, "update")) if (hasmember(me.current.handler, "update"))
me._loop_(me.loopid += 1); me._loop_(me.loopid += 1);
if (me.current != nil and me.current.multiplayer) {
model_view_handler.start();
}
screenWidthCompens.update(); screenWidthCompens.update();
}, },
reset : func { reset : func {
@ -245,6 +329,20 @@ var manager = {
id == me.loopid or return; id == me.loopid or return;
settimer(func { me._loop_(id) }, me.current.handler.update() or 0); settimer(func { me._loop_(id) }, me.current.handler.update() or 0);
}, },
multiplayer_callback: func(data) {
# We are called by model_view_handler when the user wants to
# look at a different aircraft.
#
# We can be called very early due to model_view_handler_class's use
# of a listener, so we need to protect against me.current.node not
# being set up yet.
#
if (me.current.node != nil) {
me.current.node.getNode("config").setValues({
"root": data.root,});
me.current.node.getNode("config/root").setValue(data.root)
}
},
}; };
@ -346,82 +444,82 @@ var fly_by_view_handler = {
}; };
var model_view_handler = { # Helper for views that can show multiplayer aircaft as well as the user's
init: func(node) { # aircraft. Used by <manager> above.
me.viewN = node; #
me.current = nil; var model_view_handler_class = {
me.legendN = props.globals.initNode("/sim/current-view/model-view", ""); new: func() {
me.dialog = props.Node.new({ "dialog-name": "model-view" }); var m = { parents:[model_view_handler_class]};
me.listener = nil; m.current = nil;
}, m.legendN = props.globals.initNode("/sim/current-view/model-view", "");
start: func { m.dialog = props.Node.new({ "dialog-name": "model-view" });
me.listener = setlistener("/sim/signals/multiplayer-updated", func me._update_(), 1); m.listener = setlistener("/sim/signals/multiplayer-updated", func m._update_(), 1);
me.reset(); m.reset();
fgcommand("dialog-show", me.dialog); return m;
}, },
stop: func { start: func() {
fgcommand("dialog-close", me.dialog); fgcommand("dialog-show", me.dialog);
if (me.listener!=nil) me.next(0);
{ },
removelistener(me.listener); stop: func() {
me.listener=nil; fgcommand("dialog-close", me.dialog);
} },
}, reset: func {
reset: func { me.select(0);
me.select(0); },
}, find: func(callsign) {
find: func(callsign) { forindex (var i; me.list) {
forindex (var i; me.list) if (me.list[i].callsign == callsign)
if (me.list[i].callsign == callsign) return i;
return i; }
return nil; return nil;
}, },
select: func(which, by_callsign=0) { select: func(which, by_callsign=0) {
if (by_callsign or num(which) == nil) if (by_callsign or num(which) == nil) {
which = me.find(which) or 0; # turn callsign into index which = me.find(which) or 0; # turn callsign into index
}
me.setup(me.list[which]);
},
next: func(step) {
var i = me.find(me.current);
i = i == nil ? 0 : math.mod(i + step, size(me.list));
me.setup(me.list[i]);
},
_update_: func {
var self = {
callsign: getprop("/sim/multiplay/callsign"),
model:,
node: props.globals,
root: '/',
};
# It looks like we can get called (from me.new()) before
# multiplayer.model.list is created, so need to check whether it
# exists.
if (hasmember(multiplayer.model, 'list')) {
me.list = [self] ~ multiplayer.model.list;
}
else {
me.list = [self];
}
if (!me.find(me.current))
me.select(0);
},
setup: func(data) {
if (data.root == '/') {
var ident = '[' ~ data.callsign ~ ']';
} else {
var ident = '"' ~ data.callsign ~ '" (' ~ data.model ~ ')';
}
me.setup(me.list[which]); me.current = data.callsign;
}, me.legendN.setValue(data.callsign);
next: func(step) { manager.multiplayer_callback(data);
var i = me.find(me.current); },
i = i == nil ? 0 : math.mod(i + step, size(me.list));
me.setup(me.list[i]);
},
_update_: func {
var self = { callsign: getprop("/sim/multiplay/callsign"), model:,
node: props.globals, root: '/' };
me.list = [self] ~ multiplayer.model.list;
if (!me.find(me.current))
me.select(0);
},
setup: func(data) {
if (data.root == '/') {
var zoffset = getprop("/sim/chase-distance-m");
var ident = '[' ~ data.callsign ~ ']';
} else {
var zoffset = 70;
var ident = '"' ~ data.callsign ~ '" (' ~ data.model ~ ')';
}
me.current = data.callsign;
me.legendN.setValue(ident);
setprop("/sim/current-view/z-offset-m", zoffset);
me.viewN.getNode("config").setValues({
"eye-lat-deg-path": data.root ~ "/position/latitude-deg",
"eye-lon-deg-path": data.root ~ "/position/longitude-deg",
"eye-alt-ft-path": data.root ~ "/position/altitude-ft",
"eye-heading-deg-path": data.root ~ "/orientation/heading-deg",
"target-lat-deg-path": data.root ~ "/position/latitude-deg",
"target-lon-deg-path": data.root ~ "/position/longitude-deg",
"target-alt-ft-path": data.root ~ "/position/altitude-ft",
"target-heading-deg-path": data.root ~ "/orientation/heading-deg",
"target-pitch-deg-path": data.root ~ "/orientation/pitch-deg",
"target-roll-deg-path": data.root ~ "/orientation/roll-deg",
});
},
}; };
var model_view_handler = model_view_handler_class.new();
# Note that gui/dialogs/model-view.xml expects to be able to call
# view.model_view_handler.next() etc.
var pilot_view_limiter = { var pilot_view_limiter = {
new : func { new : func {
@ -736,7 +834,6 @@ _setlistener("/sim/signals/nasal-dir-initialized", func {
screenWidthCompens.init(); screenWidthCompens.init();
manager.init(); manager.init();
manager.register("Fly-By View", fly_by_view_handler); manager.register("Fly-By View", fly_by_view_handler);
manager.register("Model View", model_view_handler);
}); });
_setlistener("/sim/signals/reinit", func { _setlistener("/sim/signals/reinit", func {
screenWidthCompens.update(opt:nil,force:1); screenWidthCompens.update(opt:nil,force:1);
@ -750,7 +847,7 @@ _setlistener("/sim/startup/ysize", func {
var fdm_init_listener = _setlistener("/sim/signals/fdm-initialized", func { var fdm_init_listener = _setlistener("/sim/signals/fdm-initialized", func {
removelistener(fdm_init_listener); # uninstall, so we're only called once removelistener(fdm_init_listener); # uninstall, so we are only called once
var zoffset = nil; var zoffset = nil;
foreach (var v; views) { foreach (var v; views) {
var index = v.getIndex(); var index = v.getIndex();
@ -770,6 +867,7 @@ var fdm_init_listener = _setlistener("/sim/signals/fdm-initialized", func {
} }
forindex (var i; views) { forindex (var i; views) {
indices[views[i].getIndex()] = i;
var limits = views[i].getNode("config/limits/enabled"); var limits = views[i].getNode("config/limits/enabled");
if (limits != nil) { if (limits != nil) {
func (i) { func (i) {

View file

@ -656,19 +656,8 @@ Started September 2000 by David Megginson, david@megginson.com
<type>lookat</type> <type>lookat</type>
<config> <config>
<from-model type="bool">false</from-model> <from-model type="bool">false</from-model>
<from-model-idx type="int">0</from-model-idx>
<eye-lat-deg-path>/position/latitude-deg</eye-lat-deg-path>
<eye-lon-deg-path>/position/longitude-deg</eye-lon-deg-path>
<eye-alt-ft-path>/position/altitude-ft</eye-alt-ft-path>
<eye-heading-deg-path>/orientation/heading-deg</eye-heading-deg-path>
<at-model type="bool">true</at-model> <at-model type="bool">true</at-model>
<at-model-idx type="int">0</at-model-idx> <eye-heading-deg-path>/orientation/true-heading-deg</eye-heading-deg-path>
<at-model-heading-damping type="double">0.0</at-model-heading-damping>
<target-z-offset-m type="double">0</target-z-offset-m>
<ground-level-nearplane-m type="double">0.5f</ground-level-nearplane-m>
<default-field-of-view-deg type="double">55.0</default-field-of-view-deg>
<x-offset-m type="double">0</x-offset-m>
<y-offset-m type="double">0</y-offset-m>
<z-offset-m alias="/sim/chase-distance-m"/> <z-offset-m alias="/sim/chase-distance-m"/>
</config> </config>
</view> </view>
@ -678,20 +667,13 @@ Started September 2000 by David Megginson, david@megginson.com
<type>lookat</type> <type>lookat</type>
<config> <config>
<from-model type="bool">false</from-model> <from-model type="bool">false</from-model>
<from-model-idx type="int">0</from-model-idx> <at-model type="bool">true</at-model>
<eye-lat-deg-path>/position/latitude-deg</eye-lat-deg-path>
<eye-lon-deg-path>/position/longitude-deg</eye-lon-deg-path>
<eye-alt-ft-path>/position/altitude-ft</eye-alt-ft-path>
<eye-pitch-deg-path>/orientation/pitch-deg</eye-pitch-deg-path> <eye-pitch-deg-path>/orientation/pitch-deg</eye-pitch-deg-path>
<eye-roll-deg-path>/orientation/roll-deg</eye-roll-deg-path> <eye-roll-deg-path>/orientation/roll-deg</eye-roll-deg-path>
<eye-heading-deg-path>/orientation/heading-deg</eye-heading-deg-path> <eye-heading-deg-path>/orientation/true-heading-deg</eye-heading-deg-path>
<at-model type="bool">true</at-model>
<at-model-idx type="int">0</at-model-idx>
<at-model-roll-damping type="double">1.8</at-model-roll-damping> <at-model-roll-damping type="double">1.8</at-model-roll-damping>
<at-model-pitch-damping type="double">1.8</at-model-pitch-damping> <at-model-pitch-damping type="double">1.8</at-model-pitch-damping>
<at-model-heading-damping type="double">1.8</at-model-heading-damping> <at-model-heading-damping type="double">1.8</at-model-heading-damping>
<target-z-offset-m type="double">0</target-z-offset-m>
<ground-level-nearplane-m type="double">0.5f</ground-level-nearplane-m>
<default-field-of-view-deg type="double">55.0</default-field-of-view-deg> <default-field-of-view-deg type="double">55.0</default-field-of-view-deg>
<x-offset-m type="double">0</x-offset-m> <x-offset-m type="double">0</x-offset-m>
<y-offset-m type="double">5</y-offset-m> <y-offset-m type="double">5</y-offset-m>
@ -742,16 +724,15 @@ Started September 2000 by David Megginson, david@megginson.com
<type>lookat</type> <type>lookat</type>
<config> <config>
<from-model type="bool">false</from-model> <from-model type="bool">false</from-model>
<from-model-idx type="int">0</from-model-idx>
<eye-lat-deg-path>/position/latitude-deg</eye-lat-deg-path>
<eye-lon-deg-path>/position/longitude-deg</eye-lon-deg-path>
<eye-alt-ft-path>/position/altitude-ft</eye-alt-ft-path>
<at-model type="bool">true</at-model> <at-model type="bool">true</at-model>
<at-model-idx type="int">0</at-model-idx> <eye-pitch-deg-path>/orientation/pitch-deg</eye-pitch-deg-path>
<ground-level-nearplane-m type="double">0.5f</ground-level-nearplane-m> <eye-roll-deg-path>/orientation/roll-deg</eye-roll-deg-path>
<at-model-roll-damping type="double">1.8</at-model-roll-damping>
<at-model-pitch-damping type="double">1.8</at-model-pitch-damping>
<at-model-heading-damping type="double">1.8</at-model-heading-damping>
<default-field-of-view-deg type="double">55.0</default-field-of-view-deg> <default-field-of-view-deg type="double">55.0</default-field-of-view-deg>
<x-offset-m type="double">25</x-offset-m> <x-offset-m type="double">0</x-offset-m>
<y-offset-m type="double">2</y-offset-m> <y-offset-m type="double">5</y-offset-m>
<z-offset-m alias="/sim/chase-distance-m"/> <z-offset-m alias="/sim/chase-distance-m"/>
</config> </config>
</view> </view>
@ -770,19 +751,17 @@ Started September 2000 by David Megginson, david@megginson.com
</config> </config>
</view> </view>
<view> <view>
<name>Model View</name> <name>Tower View AGL</name>
<enabled type="bool" userarchive="y">true</enabled> <enabled type="bool" userarchive="y">true</enabled>
<type>lookat</type> <type>lookat</type>
<config> <config>
<from-model type="bool">false</from-model> <eye-lat-deg-path>/sim/tower/latitude-deg</eye-lat-deg-path>
<from-model-idx type="int">0</from-model-idx> <eye-lon-deg-path>/sim/tower/longitude-deg</eye-lon-deg-path>
<eye-lat-deg-path>/sim/viewer/eye/latitude-deg</eye-lat-deg-path> <eye-alt-ft-path>/sim/tower/altitude-ft</eye-alt-ft-path>
<eye-lon-deg-path>/sim/viewer/eye/longitude-deg</eye-lon-deg-path> <eye-roll-deg-path>/sim/tower/roll-deg</eye-roll-deg-path>
<eye-alt-ft-path>/sim/viewer/eye/altitude-ft</eye-alt-ft-path> <eye-pitch-deg-path>/sim/tower/pitch-deg</eye-pitch-deg-path>
<eye-heading-deg-path>/sim/viewer/eye/heading-deg</eye-heading-deg-path> <eye-heading-deg-path>/sim/tower/heading-deg</eye-heading-deg-path>
<eye-pitch-deg-path>/sim/viewer/eye/pitch-deg</eye-pitch-deg-path> <at-model type="bool">true</at-model>
<eye-roll-deg-path>/sim/viewer/eye/roll-deg</eye-roll-deg-path>
<at-model type="bool">false</at-model>
<at-model-idx type="int">0</at-model-idx> <at-model-idx type="int">0</at-model-idx>
<target-lat-deg-path>/sim/viewer/target/latitude-deg</target-lat-deg-path> <target-lat-deg-path>/sim/viewer/target/latitude-deg</target-lat-deg-path>
<target-lon-deg-path>/sim/viewer/target/longitude-deg</target-lon-deg-path> <target-lon-deg-path>/sim/viewer/target/longitude-deg</target-lon-deg-path>
@ -790,17 +769,13 @@ Started September 2000 by David Megginson, david@megginson.com
<target-heading-deg-path>/sim/viewer/target/heading-deg</target-heading-deg-path> <target-heading-deg-path>/sim/viewer/target/heading-deg</target-heading-deg-path>
<target-pitch-deg-path>/sim/viewer/target/pitch-deg</target-pitch-deg-path> <target-pitch-deg-path>/sim/viewer/target/pitch-deg</target-pitch-deg-path>
<target-roll-deg-path>/sim/viewer/target/roll-deg</target-roll-deg-path> <target-roll-deg-path>/sim/viewer/target/roll-deg</target-roll-deg-path>
<target-x-offset-m type="double">0</target-x-offset-m> <ground-level-nearplane-m type="double">10.0f</ground-level-nearplane-m>
<target-y-offset-m type="double">0</target-y-offset-m>
<target-z-offset-m type="double">0</target-z-offset-m>
<ground-level-nearplane-m type="double">0.5f</ground-level-nearplane-m>
<default-field-of-view-deg type="double">55.0</default-field-of-view-deg> <default-field-of-view-deg type="double">55.0</default-field-of-view-deg>
<x-offset-m type="double">0</x-offset-m> <x-offset-m type="double">0</x-offset-m>
<y-offset-m type="double">0</y-offset-m> <y-offset-m type="double">0</y-offset-m>
<z-offset-m type="double">100</z-offset-m> <z-offset-m type="double">0</z-offset-m>
<heading-offset-deg type="double">0</heading-offset-deg> <lookat-agl type="bool">true</lookat-agl>
<pitch-offset-deg type="double">0</pitch-offset-deg> <lookat-agl-damping type="double">2.2</lookat-agl-damping>
<roll-offset-deg type="double">0</roll-offset-deg>
</config> </config>
</view> </view>
<menubar> <menubar>

View file

@ -3,7 +3,7 @@
<PropertyList> <PropertyList>
<name>model-view-select</name> <name>model-view-select</name>
<dialog-name>model-view-select</dialog-name> <dialog-name>model-view-select</dialog-name>
<x>46</x> <x>5</x>
<y>33</y> <y>33</y>
<layout>hbox</layout> <layout>hbox</layout>
<default-padding>0</default-padding> <default-padding>0</default-padding>

View file

@ -44,6 +44,15 @@
<binding><command>dialog-apply</command></binding> <binding><command>dialog-apply</command></binding>
</dial> </dial>
<button>
<legend>Zero</legend>
<binding>
<command>property-assign</command>
<property>/sim/current-view/x-offset-m</property>
<value>0</value>
</binding>
</button>
<text> <text>
<label>-100.00</label> <label>-100.00</label>
<format>%-0.2f m</format> <format>%-0.2f m</format>
@ -65,6 +74,15 @@
<binding><command>dialog-apply</command></binding> <binding><command>dialog-apply</command></binding>
</dial> </dial>
<button>
<legend>Zero</legend>
<binding>
<command>property-assign</command>
<property>/sim/current-view/y-offset-m</property>
<value>0</value>
</binding>
</button>
<text> <text>
<label>-100.00</label> <label>-100.00</label>
<format>%-0.2f m</format> <format>%-0.2f m</format>
@ -86,6 +104,15 @@
<binding><command>dialog-apply</command></binding> <binding><command>dialog-apply</command></binding>
</dial> </dial>
<button>
<legend>Zero</legend>
<binding>
<command>property-assign</command>
<property>/sim/current-view/z-offset-m</property>
<value>0</value>
</binding>
</button>
<text> <text>
<label>-100.00</label> <label>-100.00</label>
<format>%-0.2f m</format> <format>%-0.2f m</format>