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-magnification type="float"><use>/environment/aircraft-effects/dirt-fuselage</use></grain-magnification>
<texture n="7">
<image>Models/Effects/exterior/dirt.png</image>
<image>Aircraft/c172p/Models/Effects/exterior/dirt.png</image>
<type>2d</type>
<filter>linear-mipmap-linear</filter>
<wrap-s>repeat</wrap-s>

View file

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

View file

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

View file

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

View file

@ -7,7 +7,7 @@
<grain-texture-enabled type="int">1</grain-texture-enabled>
<grain-magnification type="float"><use>/environment/aircraft-effects/dirt-wing</use></grain-magnification>
<texture n="7">
<image>Models/Effects/exterior/dirt.png</image>
<image>Aircraft/c172p/Models/Effects/exterior/dirt.png</image>
<type>2d</type>
<filter>linear-mipmap-linear</filter>
<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-magnification type="float"><use>/environment/aircraft-effects/dirt-fuselage</use></grain-magnification>
<texture n="7">
<image>Models/Effects/exterior/dirt.png</image>
<image>Aircraft/c172p/Models/Effects/exterior/dirt.png</image>
<type>2d</type>
<filter>linear-mipmap-linear</filter>
<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>
<!--
Bendix/King KX155/165 COMM/NAV radio
Use this instrument as COMM1/NAV1 radio
Bendix/King KX155/165 COM/NAV radio
Use this instrument as COM1/NAV1 radio
Created by Torsten Dreyer, October 2008
@ -39,6 +39,7 @@
<comm-dial-mhz>instrumentation/comm[0]/frequencies/dial-mhz</comm-dial-mhz>
<comm-volume>instrumentation/comm[0]/volume-selected</comm-volume>
<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-selected>instrumentation/nav[0]/frequencies/selected-mhz</nav-frq-selected>
<nav-frq-standby>instrumentation/nav[0]/frequencies/standby-mhz</nav-frq-standby>
@ -52,41 +53,40 @@
<effect>
<inherits-from>../../../../Effects/interior/lm-kx165-1r</inherits-from>
<object-name>CommKnobs</object-name>
<object-name>CommVolume</object-name>
<object-name>NavKnobs</object-name>
<object-name>NavVolume</object-name>
<object-name>CommKHz</object-name>
<object-name>CommMHz</object-name>
<object-name>CommToggle</object-name>
<object-name>CommVolume</object-name>
<object-name>NavKHz</object-name>
<object-name>NavMHz</object-name>
<object-name>NavToggle</object-name>
<object-name>NavVolume</object-name>
<object-name>COMknobKHZ</object-name>
<object-name>COMknobMHZ</object-name>
<object-name>COMxfer</object-name>
<object-name>COMvol</object-name>
<object-name>COMchan</object-name>
<object-name>NAVknobKHZ</object-name>
<object-name>NAVknobMHZ</object-name>
<object-name>NAVxfer</object-name>
<object-name>NAVmode</object-name>
<object-name>NAVvol</object-name>
</effect>
<effect>
<inherits-from>../../../../Effects/interior/lm-kx165-1</inherits-from>
<object-name>CommToggle</object-name>
<object-name>NavToggle</object-name>
<object-name>Chassis</object-name>
<object-name>COMxfer</object-name>
<object-name>COMchan</object-name>
<object-name>NAVxfer</object-name>
<object-name>NAVmode</object-name>
<object-name>KX165</object-name>
</effect>
<effect>
<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>CommStby100M</object-name>
<object-name>CommStby10K</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>
@ -101,25 +101,23 @@
<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>
<animation>
<type>material</type>
<object-name>CommToggle</object-name>
<object-name>NavToggle</object-name>
<object-name>Chassis</object-name>
<object-name>CommKnobs</object-name>
<object-name>CommVolume</object-name>
<object-name>NavKnobs</object-name>
<object-name>NavVolume</object-name>
<object-name>CommKHz</object-name>
<object-name>CommMHz</object-name>
<object-name>CommToggle</object-name>
<object-name>CommVolume</object-name>
<object-name>NavKHz</object-name>
<object-name>NavMHz</object-name>
<object-name>NavToggle</object-name>
<object-name>NavVolume</object-name>
<object-name>KX165</object-name>
<object-name>COMknobKHZ</object-name>
<object-name>COMknobMHZ</object-name>
<object-name>COMxfer</object-name>
<object-name>COMchan</object-name>
<object-name>COMvol</object-name>
<object-name>NAVknobKHZ</object-name>
<object-name>NAVknobMHZ</object-name>
<object-name>NAVxfer</object-name>
<object-name>NAVmode</object-name>
<object-name>NAVvol</object-name>
<condition>
<not>
<property>/sim/rendering/shaders/skydome</property>
@ -132,99 +130,80 @@
</emission>
</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>
<type>material</type>
<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>COMknobKHZ</object-name>
<object-name>COMknobMHZ</object-name>
<object-name>COMxfer</object-name>
<object-name>COMchan</object-name>
<object-name>COMvol</object-name>
<object-name>CommStby100K</object-name>
<object-name>CommStby100M</object-name>
<object-name>CommStby10K</object-name>
<object-name>CommStby10M</object-name>
<object-name>CommStby1K</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>CommUse1K</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>NAVknobKHZ</object-name>
<object-name>NAVknobMHZ</object-name>
<object-name>NAVxfer</object-name>
<object-name>NAVmode</object-name>
<object-name>NAVvol</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>
<object-name>KX165Line</object-name>
<object-name>KX165</object-name>
<object-name>Screen</object-name>
<property-base>/sim/instrumentation/comm[0]</property-base>
<texture-prop>texture-file</texture-prop>
</animation>
<animation>
<type>select</type>
<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>CommStby100M</object-name>
<object-name>CommStby10K</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>
<property>/sim/model/c172p/lighting/comm0-power</property>
</condition>
@ -232,8 +211,10 @@
<animation>
<type>material</type>
<object-name>CommToggle</object-name>
<object-name>NavToggle</object-name>
<object-name>COMxfer</object-name>
<object-name>COMchan</object-name>
<object-name>NAVxfer</object-name>
<object-name>NAVmode</object-name>
<condition>
<not>
<property>sim/rendering/rembrandt/enabled</property>
@ -249,10 +230,33 @@
<animation>
<type>material</type>
<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>CommStby100M</object-name>
<object-name>CommStby10K</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>
<and>
<not>
@ -271,20 +275,45 @@
<factor-prop>/sim/model/c172p/lighting/comm0</factor-prop>
</emission>
</animation>
<effect>
<inherits-from>Effects/model-transparent</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>CommStby100M</object-name>
<object-name>CommStby10K</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>
<!-- Comm part -->
<animation>
<type>translate</type>
<object-name>CommToggle</object-name>
<object-name>COMxfer</object-name>
<property alias="../../params/comm-frq-swp"/>
<factor>-0.004</factor>
<factor>-0.003</factor>
<axis>
<x>1</x>
<y>0</y>
@ -361,6 +390,20 @@
<z>0</z>
</axis>
</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>
<type>textranslate</type>
@ -431,13 +474,27 @@
<z>0</z>
</axis>
</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 -->
<animation>
<type>translate</type>
<object-name>NavToggle</object-name>
<object-name>NAVxfer</object-name>
<property alias="../../params/nav-frq-swp"/>
<factor>-0.004</factor>
<factor>-0.003</factor>
<axis>
<x>1</x>
<y>0</y>
@ -588,7 +645,7 @@
<!-- Knobs and buttons -->
<animation>
<type>translate</type>
<object-name>NavVolume</object-name>
<object-name>NAVvol</object-name>
<property alias="../../params/nav-audio"/>
<factor>0.002</factor>
<axis>
@ -602,7 +659,7 @@
<!-- Comm part -->
<animation>
<type>knob</type>
<object-name>CommVolume</object-name>
<object-name>COMvol</object-name>
<property alias="../../params/comm-volume"/>
<factor>-65</factor>
<axis>
@ -611,9 +668,9 @@
<z>0</z>
</axis>
<center>
<x-m>-0.35003</x-m>
<y-m> 0.05092</y-m>
<z-m> 0.06991</z-m>
<x-m>-0.34939</x-m>
<y-m> 0.05082</y-m>
<z-m> 0.07122</z-m>
</center>
<action>
<binding>
@ -684,9 +741,33 @@
</hovered>
</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>
<type>knob</type>
<object-name>CommKHz</object-name>
<object-name>COMknobKHZ</object-name>
<property alias="/params/comm-dial-khz"/>
<factor>-0.25</factor>
<axis>
@ -695,24 +776,11 @@
<z>0</z>
</axis>
<center>
<x-m>-0.34721</x-m>
<y-m> 0.09092</y-m>
<z-m> 0.07191</z-m>
<x-m>-0.34726</x-m>
<y-m> 0.09337</y-m>
<z-m> 0.07401</z-m>
</center>
<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>
<command>property-adjust</command>
<property alias="/params/comm-dial-khz"/>
@ -721,23 +789,52 @@
<max>1440</max>
<wrap>true</wrap>
</binding>
</action>
<increase>
<binding>
<command>nasal</command>
<script>
c172p.increment(0, 1);
</script>
</binding>
<binding>
<command>nasal</command>
<script>c172p.click("kx165-1-dial")</script>
</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>
<binding>
<command>set-tooltip</command>
<tooltip-id>comm1-kHz</tooltip-id>
<label>Adjust COM1 kHz</label>
<label>Adjust COM1 kHz; Shift click to toggle 8.33</label>
</binding>
</hovered>
</animation>
<animation>
<type>knob</type>
<object-name>CommMHz</object-name>
<object-name>COMknobMHZ</object-name>
<property alias="/params/comm-dial-mhz"/>
<factor>-0.25</factor>
<axis>
@ -746,9 +843,9 @@
<z>0</z>
</axis>
<center>
<x-m>-0.34721</x-m>
<y-m> 0.09092</y-m>
<z-m> 0.07191</z-m>
<x-m>-0.34954</x-m>
<y-m> 0.09337</y-m>
<z-m> 0.07401</z-m>
</center>
<action>
<binding>
@ -759,7 +856,7 @@
<property alias="/params/comm-frq-standby"/>
<factor>1</factor>
<min>118.0</min>
<max>137.0</max>
<max>136.99167</max>
<wrap>true</wrap>
<mask>integer</mask>
</binding>
@ -787,7 +884,7 @@
<animation>
<type>pick</type>
<object-name>CommToggle</object-name>
<object-name>COMxfer</object-name>
<visible>true</visible>
<action>
<button>0</button>
@ -830,7 +927,7 @@
<!-- Nav part -->
<animation>
<type>knob</type>
<object-name>NavVolume</object-name>
<object-name>NAVvol</object-name>
<property alias="../../params/nav-volume"/>
<factor>-65</factor>
<axis>
@ -839,9 +936,9 @@
<z>0</z>
</axis>
<center>
<x-m>-0.35003</x-m>
<y-m> 0.13092</y-m>
<z-m>0.06991</z-m>
<x-m>-0.34939</x-m>
<y-m> 0.13118</y-m>
<z-m> 0.07122</z-m>
</center>
<action>
<binding>
@ -890,7 +987,7 @@
<animation>
<type>knob</type>
<object-name>NavKHz</object-name>
<object-name>NAVknobKHZ</object-name>
<property alias="/params/nav-dial-khz"/>
<factor>-0.25</factor>
<axis>
@ -899,9 +996,9 @@
<z>0</z>
</axis>
<center>
<x-m>-0.34568</x-m>
<y-m> 0.17092</y-m>
<z-m> 0.07191</z-m>
<x-m>-0.34726</x-m>
<y-m> 0.17527</y-m>
<z-m> 0.07401</z-m>
</center>
<action>
<binding>
@ -941,7 +1038,7 @@
<animation>
<type>knob</type>
<object-name>NavMHz</object-name>
<object-name>NAVknobMHZ</object-name>
<property alias="/params/nav-dial-mhz"/>
<factor>-0.25</factor>
<axis>
@ -950,9 +1047,9 @@
<z>0</z>
</axis>
<center>
<x-m>-0.34568</x-m>
<y-m> 0.17092</y-m>
<z-m> 0.07191</z-m>
<x-m>-0.34954</x-m>
<y-m> 0.17527</y-m>
<z-m> 0.07401</z-m>
</center>
<action>
<binding>
@ -991,7 +1088,7 @@
<animation>
<type>pick</type>
<object-name>NavToggle</object-name>
<object-name>NAVxfer</object-name>
<visible>true</visible>
<action>
<button>0</button>

View file

@ -2,8 +2,8 @@
<PropertyList>
<!--
Bendix/King KX155/165 COMM/NAV radio
Use this instrument as COMM1/NAV1 radio
Bendix/King KX155/165 COM/NAV radio
Use this instrument as COM1/NAV1 radio
Created by Torsten Dreyer, October 2008
@ -39,6 +39,7 @@
<comm-dial-mhz>instrumentation/comm[1]/frequencies/dial-mhz</comm-dial-mhz>
<comm-volume>instrumentation/comm[1]/volume-selected</comm-volume>
<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-selected>instrumentation/nav[1]/frequencies/selected-mhz</nav-frq-selected>
<nav-frq-standby>instrumentation/nav[1]/frequencies/standby-mhz</nav-frq-standby>
@ -52,41 +53,40 @@
<effect>
<inherits-from>../../../../Effects/interior/lm-kx165-2r</inherits-from>
<object-name>CommKnobs</object-name>
<object-name>CommVolume</object-name>
<object-name>NavKnobs</object-name>
<object-name>NavVolume</object-name>
<object-name>CommKHz</object-name>
<object-name>CommMHz</object-name>
<object-name>CommToggle</object-name>
<object-name>CommVolume</object-name>
<object-name>NavKHz</object-name>
<object-name>NavMHz</object-name>
<object-name>NavToggle</object-name>
<object-name>NavVolume</object-name>
<object-name>COMknobKHZ</object-name>
<object-name>COMknobMHZ</object-name>
<object-name>COMxfer</object-name>
<object-name>COMvol</object-name>
<object-name>COMchan</object-name>
<object-name>NAVknobKHZ</object-name>
<object-name>NAVknobMHZ</object-name>
<object-name>NAVxfer</object-name>
<object-name>NAVmode</object-name>
<object-name>NAVvol</object-name>
</effect>
<effect>
<inherits-from>../../../../Effects/interior/lm-kx165-2</inherits-from>
<object-name>CommToggle</object-name>
<object-name>NavToggle</object-name>
<object-name>Chassis</object-name>
<object-name>COMxfer</object-name>
<object-name>COMchan</object-name>
<object-name>NAVxfer</object-name>
<object-name>NAVmode</object-name>
<object-name>KX165</object-name>
</effect>
<effect>
<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>CommStby100M</object-name>
<object-name>CommStby10K</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>
@ -101,25 +101,23 @@
<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>
<animation>
<type>material</type>
<object-name>CommToggle</object-name>
<object-name>NavToggle</object-name>
<object-name>Chassis</object-name>
<object-name>CommKnobs</object-name>
<object-name>CommVolume</object-name>
<object-name>NavKnobs</object-name>
<object-name>NavVolume</object-name>
<object-name>CommKHz</object-name>
<object-name>CommMHz</object-name>
<object-name>CommToggle</object-name>
<object-name>CommVolume</object-name>
<object-name>NavKHz</object-name>
<object-name>NavMHz</object-name>
<object-name>NavToggle</object-name>
<object-name>NavVolume</object-name>
<object-name>KX165</object-name>
<object-name>COMknobKHZ</object-name>
<object-name>COMknobMHZ</object-name>
<object-name>COMxfer</object-name>
<object-name>COMchan</object-name>
<object-name>COMvol</object-name>
<object-name>NAVknobKHZ</object-name>
<object-name>NAVknobMHZ</object-name>
<object-name>NAVxfer</object-name>
<object-name>NAVmode</object-name>
<object-name>NAVvol</object-name>
<condition>
<not>
<property>/sim/rendering/shaders/skydome</property>
@ -132,99 +130,80 @@
</emission>
</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>
<type>material</type>
<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>COMknobKHZ</object-name>
<object-name>COMknobMHZ</object-name>
<object-name>COMxfer</object-name>
<object-name>COMchan</object-name>
<object-name>COMvol</object-name>
<object-name>CommStby100K</object-name>
<object-name>CommStby100M</object-name>
<object-name>CommStby10K</object-name>
<object-name>CommStby10M</object-name>
<object-name>CommStby1K</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>CommUse1K</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>NAVknobKHZ</object-name>
<object-name>NAVknobMHZ</object-name>
<object-name>NAVxfer</object-name>
<object-name>NAVmode</object-name>
<object-name>NAVvol</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>
<object-name>KX165Line</object-name>
<object-name>KX165</object-name>
<object-name>Screen</object-name>
<property-base>/sim/instrumentation/comm[1]</property-base>
<texture-prop>texture-file</texture-prop>
</animation>
<animation>
<type>select</type>
<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>CommStby100M</object-name>
<object-name>CommStby10K</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>
<property>/sim/model/c172p/lighting/comm1-power</property>
</condition>
@ -232,8 +211,10 @@
<animation>
<type>material</type>
<object-name>CommToggle</object-name>
<object-name>NavToggle</object-name>
<object-name>COMxfer</object-name>
<object-name>COMchan</object-name>
<object-name>NAVxfer</object-name>
<object-name>NAVmode</object-name>
<condition>
<not>
<property>sim/rendering/rembrandt/enabled</property>
@ -249,10 +230,33 @@
<animation>
<type>material</type>
<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>CommStby100M</object-name>
<object-name>CommStby10K</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>
<and>
<not>
@ -271,20 +275,45 @@
<factor-prop>/sim/model/c172p/lighting/comm1</factor-prop>
</emission>
</animation>
<effect>
<inherits-from>Effects/model-transparent</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>CommStby100M</object-name>
<object-name>CommStby10K</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>
<!-- Comm part -->
<!-- comm part -->
<animation>
<type>translate</type>
<object-name>CommToggle</object-name>
<object-name>COMxfer</object-name>
<property alias="../../params/comm-frq-swp"/>
<factor>-0.004</factor>
<factor>-0.003</factor>
<axis>
<x>1</x>
<y>0</y>
@ -361,6 +390,20 @@
<z>0</z>
</axis>
</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>
<type>textranslate</type>
@ -431,13 +474,27 @@
<z>0</z>
</axis>
</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 -->
<animation>
<type>translate</type>
<object-name>NavToggle</object-name>
<object-name>NAVxfer</object-name>
<property alias="../../params/nav-frq-swp"/>
<factor>-0.004</factor>
<factor>-0.003</factor>
<axis>
<x>1</x>
<y>0</y>
@ -585,10 +642,9 @@
</axis>
</animation>
<!-- Knobs and buttons -->
<animation>
<type>translate</type>
<object-name>NavVolume</object-name>
<object-name>NAVvol</object-name>
<property alias="../../params/nav-audio"/>
<factor>0.002</factor>
<axis>
@ -597,12 +653,12 @@
<z>0</z>
</axis>
</animation>
<!-- Actions -->
<!-- Comm part -->
<animation>
<type>knob</type>
<object-name>CommVolume</object-name>
<object-name>COMvol</object-name>
<property alias="../../params/comm-volume"/>
<factor>-65</factor>
<axis>
@ -611,9 +667,9 @@
<z>0</z>
</axis>
<center>
<x-m>-0.34509</x-m>
<y-m> 0.05097</y-m>
<z-m> 0.01597</z-m>
<x-m>-0.34939</x-m>
<y-m> 0.05132</y-m>
<z-m> 0.01737</z-m>
</center>
<action>
<binding>
@ -684,9 +740,33 @@
</hovered>
</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>
<type>knob</type>
<object-name>CommKHz</object-name>
<object-name>COMknobKHZ</object-name>
<property alias="/params/comm-dial-khz"/>
<factor>-0.25</factor>
<axis>
@ -695,24 +775,11 @@
<z>0</z>
</axis>
<center>
<x-m>-0.34727</x-m>
<y-m> 0.09097</y-m>
<z-m> 0.01797</z-m>
<x-m>-0.34726</x-m>
<y-m> 0.09336</y-m>
<z-m> 0.02016</z-m>
</center>
<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>
<command>property-adjust</command>
<property alias="/params/comm-dial-khz"/>
@ -721,23 +788,52 @@
<max>1440</max>
<wrap>true</wrap>
</binding>
</action>
<increase>
<binding>
<command>nasal</command>
<script>
c172p.increment(1, 1);
</script>
</binding>
<binding>
<command>nasal</command>
<script>c172p.click("kx165-2-dial")</script>
</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>
<binding>
<command>set-tooltip</command>
<tooltip-id>comm2-kHz</tooltip-id>
<label>Adjust COM2 kHz</label>
<label>Adjust COM2 kHz; Shift click to toggle 8.33</label>
</binding>
</hovered>
</animation>
<animation>
<type>knob</type>
<object-name>CommMHz</object-name>
<object-name>COMknobMHZ</object-name>
<property alias="/params/comm-dial-mhz"/>
<factor>-0.25</factor>
<axis>
@ -746,9 +842,9 @@
<z>0</z>
</axis>
<center>
<x-m>-0.34727</x-m>
<y-m> 0.09097</y-m>
<z-m> 0.01797</z-m>
<x-m>-0.34954</x-m>
<y-m> 0.09337</y-m>
<z-m> 0.02016</z-m>
</center>
<action>
<binding>
@ -759,7 +855,7 @@
<property alias="/params/comm-frq-standby"/>
<factor>1</factor>
<min>118.0</min>
<max>137.0</max>
<max>136.99167</max>
<wrap>true</wrap>
<mask>integer</mask>
</binding>
@ -787,7 +883,7 @@
<animation>
<type>pick</type>
<object-name>CommToggle</object-name>
<object-name>COMxfer</object-name>
<visible>true</visible>
<action>
<button>0</button>
@ -821,7 +917,7 @@
<hovered>
<binding>
<command>set-tooltip</command>
<tooltip-id>comm2-toggle</tooltip-id>
<tooltip-id>comm1-toggle</tooltip-id>
<label>Swap COM2 frequencies</label>
</binding>
</hovered>
@ -830,7 +926,7 @@
<!-- Nav part -->
<animation>
<type>knob</type>
<object-name>NavVolume</object-name>
<object-name>NAVvol</object-name>
<property alias="../../params/nav-volume"/>
<factor>-65</factor>
<axis>
@ -839,9 +935,9 @@
<z>0</z>
</axis>
<center>
<x-m>-0.35009</x-m>
<y-m> 0.13097</y-m>
<z-m> 0.01597</z-m>
<x-m>-0.34939</x-m>
<y-m> 0.13118</y-m>
<z-m> 0.01737</z-m>
</center>
<action>
<binding>
@ -866,7 +962,7 @@
<hovered>
<binding>
<command>set-tooltip</command>
<tooltip-id>nav2-volume</tooltip-id>
<tooltip-id>nav1-volume</tooltip-id>
<label>%s</label>
<measure-text>NAV2 Volume: 100% ; Ident disabled (Shift + click to pull)</measure-text>
<property alias="../../../../params/nav-volume"/>
@ -890,7 +986,7 @@
<animation>
<type>knob</type>
<object-name>NavKHz</object-name>
<object-name>NAVknobKHZ</object-name>
<property alias="/params/nav-dial-khz"/>
<factor>-0.25</factor>
<axis>
@ -899,9 +995,9 @@
<z>0</z>
</axis>
<center>
<x-m>-0.34574</x-m>
<y-m> 0.17097</y-m>
<z-m> 0.01797</z-m>
<x-m>-0.34726</x-m>
<y-m> 0.17527</y-m>
<z-m> 0.02016</z-m>
</center>
<action>
<binding>
@ -933,7 +1029,7 @@
<hovered>
<binding>
<command>set-tooltip</command>
<tooltip-id>nav2-kHz</tooltip-id>
<tooltip-id>nav1-kHz</tooltip-id>
<label>Adjust NAV2 kHz</label>
</binding>
</hovered>
@ -941,7 +1037,7 @@
<animation>
<type>knob</type>
<object-name>NavMHz</object-name>
<object-name>NAVknobMHZ</object-name>
<property alias="/params/nav-dial-mhz"/>
<factor>-0.25</factor>
<axis>
@ -950,9 +1046,9 @@
<z>0</z>
</axis>
<center>
<x-m>-0.34574</x-m>
<y-m> 0.17097</y-m>
<z-m> 0.01797</z-m>
<x-m>-0.34954</x-m>
<y-m> 0.17527</y-m>
<z-m> 0.02016</z-m>
</center>
<action>
<binding>
@ -991,7 +1087,7 @@
<animation>
<type>pick</type>
<object-name>NavToggle</object-name>
<object-name>NAVxfer</object-name>
<visible>true</visible>
<action>
<button>0</button>
@ -1008,7 +1104,7 @@
</binding>
<binding>
<command>nasal</command>
<script>c172p.click("kx165-2")</script>
<script>c172p.click("kx165-1")</script>
</binding>
<mod-up>
<binding>
@ -1025,7 +1121,7 @@
<hovered>
<binding>
<command>set-tooltip</command>
<tooltip-id>nav2-toggle</tooltip-id>
<tooltip-id>nav1-toggle</tooltip-id>
<label>Swap NAV2 frequencies</label>
</binding>
</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 "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 "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 "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
@ -71208,7 +71208,7 @@ kids 0
OBJECT poly
name "glass_panel"
data 10
Circle.014
Circle.015
crease 180.0
numvert 513
-0.36977 0.02208 0.06724
@ -71690,14 +71690,6 @@ numvert 513
-0.34967 0.03191 -0.11597
-0.34967 0.05254 -0.18965
-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.10049 -0.05833
-0.35218 -0.08225 -0.14815
@ -71724,6 +71716,14 @@ numvert 513
-0.35648 0.03007 -0.40629
-0.35648 0.03569 -0.43268
-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
SURF 0X10
mat 16
@ -72261,58 +72261,58 @@ refs 4
SURF 0X0
mat 16
refs 4
480 0.238006 0.987558
482 0.238277 0.73561
481 0.307519 0.735342
479 0.307657 0.987558
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
480 0.815238 0.320389
482 0.815598 0.01324
481 0.876815 0.012935
479 0.876815 0.32041
SURF 0X0
mat 16
refs 10
496 0.723538 0.260261
497 0.723538 0.035975
498 0.742945 0.012935
491 0.796492 0.013389
492 0.815238 0.035939
499 0.815238 0.070373
500 0.815238 0.128039
493 0.815238 0.26154
494 0.798547 0.281905
495 0.741095 0.281905
488 0.723538 0.260261
489 0.723538 0.035975
490 0.742945 0.012935
483 0.796492 0.013389
484 0.815238 0.035939
491 0.815238 0.070373
492 0.815238 0.128039
485 0.815238 0.26154
486 0.798547 0.281905
487 0.741095 0.281905
SURF 0X0
mat 16
refs 4
502 0.948794 1
504 0.949094 0.49508
503 1 0.494542
501 1 0.999999
494 0.948794 1
496 0.949094 0.49508
495 1 0.494542
493 1 0.999999
SURF 0X0
mat 16
refs 4
506 0.946466 0.327345
508 0.946624 0.013271
507 0.973496 0.012935
505 0.973496 0.327342
498 0.946466 0.327345
500 0.946624 0.013271
499 0.973496 0.012935
497 0.973496 0.327342
SURF 0X0
mat 16
refs 4
510 0.307657 0.825695
512 0.307771 0.735433
511 0.326626 0.735342
509 0.326626 0.825702
502 0.307657 0.825695
504 0.307771 0.735433
503 0.326626 0.735342
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
OBJECT group
name "GROUP_FrontPanels"

View file

@ -164,31 +164,48 @@
<z-m> 0.08948</z-m>
<heading-deg>-19.0</heading-deg>
</offsets>
<condition>
<not>
<equals>
<property alias="/params/bushkit"/>
<value>4</value>
</equals>
</not>
</condition>
</model>
<animation>
<type>translate</type>
<object-name>Garmin196-GPS-non-Canvas</object-name>
<property>/Interior/Panel/Instruments/garmin196/move</property>
<factor>0.1</factor>
<axis>
<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>
<name>Garmin196-GPS-non-Canvas</name>
<path>Interior/Panel/Instruments/garmin196/garmin196.xml</path>
<name>Garmin196-GPS-support</name>
<path>Interior/Panel/garmin196/garmin196_support.xml</path>
<offsets>
<x-m>-0.305</x-m>
<y-m> 0.36584</y-m>
<z-m> 0.08948</z-m>
<heading-deg>-19.0</heading-deg>
<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>
<condition>
<equals>
<property alias="/params/bushkit"/>
<value>4</value>
</equals>
</condition>
</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>
<name>GPS-Model</name>
@ -277,7 +294,7 @@
<property>/sim/model/c172p/garmin196-visible</property>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>clock</object-name>
@ -287,7 +304,7 @@
</not>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>digital-clock</object-name>
@ -316,36 +333,6 @@
</condition>
</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>
<load>
var livery_update = aircraft.livery_update.new(
@ -1079,7 +1066,7 @@
<blue-prop>/sim/model/c172p/lighting/rgb-ra-b-factor</blue-prop>
</emission>
</animation>
<!-- Courtesy Light -->
<animation>
<type>material</type>
@ -3033,7 +3020,7 @@
<font>Helvetica.txf</font>
<character-size type="double">0.005</character-size>
<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-width>0.07</max-width>
<font-resolution>
@ -3056,7 +3043,7 @@
<font>Helvetica.txf</font>
<character-size type="double">0.005</character-size>
<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-width>0.07</max-width>
<font-resolution>
@ -3079,7 +3066,7 @@
<font>Helvetica.txf</font>
<character-size type="double">0.005</character-size>
<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-width>0.07</max-width>
<font-resolution>

View file

@ -45,6 +45,7 @@ aircraft.data.add(
"instrumentation/comm[0]/frequencies/dial-khz",
"instrumentation/comm[0]/frequencies/dial-mhz",
"instrumentation/comm[0]/test-btn",
"instrumentation/comm[0]/channel-mode-selector",
"instrumentation/nav[0]/ident-audible",
"instrumentation/nav[0]/power-btn",
"instrumentation/nav[0]/volume",
@ -64,6 +65,7 @@ aircraft.data.add(
"instrumentation/comm[1]/frequencies/dial-khz",
"instrumentation/comm[1]/frequencies/dial-mhz",
"instrumentation/comm[1]/test-btn",
"instrumentation/comm[0]/channel-mode-selector",
"instrumentation/nav[1]/ident-audible",
"instrumentation/nav[1]/power-btn",
"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_tail_updater = TiedownPositionUpdater.new("tail");
setlistener("/sim/model/c172p/securing/tiedownL-visible", func (node) {
tiedown_left_updater.enable_or_disable(node.getValue());
}, 1, 0);
setlistener("/sim/signals/fdm-initialized", func {
setlistener("/sim/model/c172p/securing/tiedownL-visible", func (node) {
tiedown_left_updater.enable_or_disable(node.getValue());
}, 1, 0);
setlistener("/sim/model/c172p/securing/tiedownR-visible", func (node) {
tiedown_right_updater.enable_or_disable(node.getValue());
}, 1, 0);
setlistener("/sim/model/c172p/securing/tiedownR-visible", func (node) {
tiedown_right_updater.enable_or_disable(node.getValue());
}, 1, 0);
setlistener("/sim/model/c172p/securing/tiedownT-visible", func (node) {
tiedown_tail_updater.enable_or_disable(node.getValue());
}, 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("/sim/model/c172p/securing/tiedownT-visible", func (node) {
tiedown_tail_updater.enable_or_disable(node.getValue());
}, 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);
});

View file

@ -183,6 +183,16 @@ Extra weight and drag due to bush wheels, floats and aircraft with 180 hp engine
</switch>
</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">
<fcs_function name="tmp/floats-enabled-norm">
<function>

View file

@ -142,11 +142,13 @@ file, these values will be used (they are hardcoded).
<comm-radio>
<name>comm</name>
<number>0</number>
<eight-point-three>1</eight-point-three>
</comm-radio>
<comm-radio>
<name>comm</name>
<number>1</number>
<eight-point-three>1</eight-point-three>
</comm-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>
</frequencies>
<volume-selected type="double">0.7</volume-selected>
<channel-mode-selector type="bool">1</channel-mode-selector>
</comm>
<comm n="1">
<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>
</frequencies>
<volume-selected type="double">0.7</volume-selected>
<channel-mode-selector type="bool">1</channel-mode-selector>
</comm>
<nav n="0">
<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/kma20.nas</file>
<file>Nasal/ki266.nas</file>
<file>Nasal/kx165a.nas</file>
<file>Nasal/engine.nas</file>
<file>Nasal/avionics.nas</file>
<file>Nasal/interior-lighting.nas</file>

View file

@ -69,7 +69,7 @@
<transition_model>0.8</transition_model>
<hires_overlay_bias>0</hires_overlay_bias>
</parameters>
<object-mask>Terrain/deciduous-hires_mask.png</object-mask>
<object-mask>Terrain/rice1.mask.png</object-mask>
<xsize>2000</xsize>
<ysize>2000</ysize>
<light-coverage>2000000.0</light-coverage>
@ -192,4 +192,4 @@
<tree-width-m>12.0</tree-width-m>
</material>
</PropertyList>
</PropertyList>

View file

@ -48,19 +48,26 @@ var WPT_model = {
var m = { parents:[WPT_model], idx:(idx+offset) };
var wp = fp.getWP(idx);
m.name = wp.wp_name;
var alt = wp.alt_cstr;
if (alt != 0)
m.name ~= "\n"~alt;
var wp2idx = 1; # next waypoint
if (!idx) { # first point
if(fp.getPlanSize(idx) == 1) # if only have one wpt then it must be at element 0.
if (idx > 0) {
var path = wp.path();
# check for empty path
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;
}
if (idx) var n = wp.path()[-1];
else var n = fp.getWP(wp2idx).path()[0];
var path = fp.getWP(wp2idx).path();
if (size(path) == 0)
return nil;
var n = fp.getWP(wp2idx).path()[0];
}
(m.lat,m.lon) = (n.lat,n.lon);
return m;
@ -82,8 +89,12 @@ var searchCmd = func {
for(var idx = 0; idx < planCount; idx += 1){
var fp = driver.getFlightPlan(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;
};

View file

@ -117,6 +117,11 @@ var end_compose_message = func()
release_kbd();
}
var view_select = func(callsign)
{
view.model_view_handler.select(callsign, 1);
}
var handle_key = func(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,
};
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 = [
{ 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: "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: "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.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",
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.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/signals/reinit-gui", 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 {
if (me.dialog != nil)
@ -228,6 +236,12 @@ var dialog = {
var titlebar = me.dialog.addChild("group");
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");
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_()");
@ -255,7 +269,7 @@ var dialog = {
var col = 0;
foreach (var h; me.header) {
var w = content.addChild("text");
w.node.setValues({ "font" : me.font});
w.node.setValues({ "font" : me.font});
var l = typeof(h) == "func" ? h() : h;
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) {
var col = 0;
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[1];
}
else{
print("no model installed; check fallback");
var fbn = mp.node.getNode("sim/model/fallback-model-index");
@ -281,24 +297,24 @@ w.node.setValues({ "font" : me.font});
} else
print(" ->> no fallback node");
}
foreach (var column; me.columns) {
foreach (var column; me.columns) {
var w = nil;
if (column.type == "button") {
w = content.addChild("button");
w.node.setValues(column);
w.setBinding("nasal", column.callback ~ "(\"" ~ mp.callsign ~ ", \");");
w.node.setValues({ row: row, col: col});
} else {
var p = typeof(column.property) == "func" ? column.property() : column.property;
if (column.type == "text") {
w = content.addChild("text");
w.node.setValues(column);
} elsif (column.type == "checkbox") {
w = content.addChild("checkbox");
w.setBinding("nasal", column.callback ~ "(getprop(\"" ~ mp.root ~ "/" ~ column.argprop ~ "\"))");
}
if (column.type == "button") {
w = content.addChild("button");
w.node.setValues(column);
w.setBinding("nasal", column.callback ~ "(\"" ~ mp.callsign ~ "\",);");
w.node.setValues({ row: row, col: col});
} else {
var p = typeof(column.property) == "func" ? column.property() : column.property;
if (column.type == "text") {
w = content.addChild("text");
w.node.setValues(column);
} elsif (column.type == "checkbox") {
w = content.addChild("checkbox");
w.setBinding("nasal", column.callback ~ "(getprop(\"" ~ mp.root ~ "/" ~ column.argprop ~ "\"))");
}
w.node.setValues({ row: row, col: col, live: 1, property: mp.root ~ "/" ~ p });
}
}
w.setColor(color[0], color[1], color[2], color[3]);
col += 1;
}
@ -311,6 +327,17 @@ w.node.setValues({ "font" : me.font});
me.update(me.loopid += 1);
fgcommand("dialog-new", 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) {
id == me.loopid or return;
@ -341,8 +368,19 @@ w.node.setValues({ "font" : me.font});
else
{
# 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({
"model-short": n.getNode("model-installed").getValue() ? mp.model : "[" ~ mp.model ~ "]",
"set-loaded": set_loaded ? " *" : " ",
"bearing-to": self.course_to(ac),
"distance-to-km": distance / 1000.0,
"distance-to-nm": distance * M2NM,

View file

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

View file

@ -3,11 +3,43 @@
##
## 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 indices = {}; # view_index -> number
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 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) {
if (contains(class, member))
return 1;
@ -74,9 +106,9 @@ var resetFOV = func {
var resetViewPos = func {
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/y-offset-m", v.getNode("y-offset-m", 1).getValue() or 0);
setprop("/sim/current-view/z-offset-m", v.getNode("z-offset-m", 1).getValue() or 0);
setprop("/sim/current-view/x-offset-m", 0);
setprop("/sim/current-view/y-offset-m", 0);
setprop("/sim/current-view/z-offset-m", 0);
}
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.
# Usage: view.manager.register(<view-id>, <view-handler>);
@ -198,23 +242,55 @@ var default_handler = {
var manager = {
current : { node: nil, handler: default_handler },
init : func {
me.current = nil;
me.views = {};
me.loopid = 0;
var viewnodes = props.globals.getNode("sim").getChildren("view");
forindex (var i; viewnodes)
me.views[i] = { node: viewnodes[i], handler: default_handler };
var helicopter_view = viewnodes[1];
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) {
manager.set_view(n.getValue());
}, 1);
},
register : func(which, handler = nil) {
if (num(which) == nil)
which = indexof(which);
var n = num(which);
if (n == nil) n = indexof(which);
if (n == nil) {
printf('Unable to register view handler: which=%s', which);
return;
}
if (handler == nil)
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"))
handler.init(me.views[which].node);
handler.init(me.views[n].node);
me.set_view();
},
set_view : func(which = nil) {
@ -224,8 +300,13 @@ var manager = {
which = indexof(which);
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 = me.views[which];
@ -233,6 +314,9 @@ var manager = {
me.current.handler.start();
if (hasmember(me.current.handler, "update"))
me._loop_(me.loopid += 1);
if (me.current != nil and me.current.multiplayer) {
model_view_handler.start();
}
screenWidthCompens.update();
},
reset : func {
@ -245,6 +329,20 @@ var manager = {
id == me.loopid or return;
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 = {
init: func(node) {
me.viewN = node;
me.current = nil;
me.legendN = props.globals.initNode("/sim/current-view/model-view", "");
me.dialog = props.Node.new({ "dialog-name": "model-view" });
me.listener = nil;
},
start: func {
me.listener = setlistener("/sim/signals/multiplayer-updated", func me._update_(), 1);
me.reset();
fgcommand("dialog-show", me.dialog);
},
stop: func {
fgcommand("dialog-close", me.dialog);
if (me.listener!=nil)
{
removelistener(me.listener);
me.listener=nil;
}
},
reset: func {
me.select(0);
},
find: func(callsign) {
forindex (var i; me.list)
if (me.list[i].callsign == callsign)
return i;
return nil;
},
select: func(which, by_callsign=0) {
if (by_callsign or num(which) == nil)
which = me.find(which) or 0; # turn callsign into index
# Helper for views that can show multiplayer aircaft as well as the user's
# aircraft. Used by <manager> above.
#
var model_view_handler_class = {
new: func() {
var m = { parents:[model_view_handler_class]};
m.current = nil;
m.legendN = props.globals.initNode("/sim/current-view/model-view", "");
m.dialog = props.Node.new({ "dialog-name": "model-view" });
m.listener = setlistener("/sim/signals/multiplayer-updated", func m._update_(), 1);
m.reset();
return m;
},
start: func() {
fgcommand("dialog-show", me.dialog);
me.next(0);
},
stop: func() {
fgcommand("dialog-close", me.dialog);
},
reset: func {
me.select(0);
},
find: func(callsign) {
forindex (var i; me.list) {
if (me.list[i].callsign == callsign)
return i;
}
return nil;
},
select: func(which, by_callsign=0) {
if (by_callsign or num(which) == nil) {
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]);
},
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: '/' };
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",
});
},
me.current = data.callsign;
me.legendN.setValue(data.callsign);
manager.multiplayer_callback(data);
},
};
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 = {
new : func {
@ -736,7 +834,6 @@ _setlistener("/sim/signals/nasal-dir-initialized", func {
screenWidthCompens.init();
manager.init();
manager.register("Fly-By View", fly_by_view_handler);
manager.register("Model View", model_view_handler);
});
_setlistener("/sim/signals/reinit", func {
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 {
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;
foreach (var v; views) {
var index = v.getIndex();
@ -770,6 +867,7 @@ var fdm_init_listener = _setlistener("/sim/signals/fdm-initialized", func {
}
forindex (var i; views) {
indices[views[i].getIndex()] = i;
var limits = views[i].getNode("config/limits/enabled");
if (limits != nil) {
func (i) {

View file

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

View file

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

View file

@ -43,6 +43,15 @@
<property>/sim/current-view/x-offset-m</property>
<binding><command>dialog-apply</command></binding>
</dial>
<button>
<legend>Zero</legend>
<binding>
<command>property-assign</command>
<property>/sim/current-view/x-offset-m</property>
<value>0</value>
</binding>
</button>
<text>
<label>-100.00</label>
@ -64,6 +73,15 @@
<property>/sim/current-view/y-offset-m</property>
<binding><command>dialog-apply</command></binding>
</dial>
<button>
<legend>Zero</legend>
<binding>
<command>property-assign</command>
<property>/sim/current-view/y-offset-m</property>
<value>0</value>
</binding>
</button>
<text>
<label>-100.00</label>
@ -85,6 +103,15 @@
<property>/sim/current-view/z-offset-m</property>
<binding><command>dialog-apply</command></binding>
</dial>
<button>
<legend>Zero</legend>
<binding>
<command>property-assign</command>
<property>/sim/current-view/z-offset-m</property>
<value>0</value>
</binding>
</button>
<text>
<label>-100.00</label>