<?xml version="1.0" encoding="utf-8" ?>

<!--	This simulates a Bendix/King KLN94 GPS
	
	Nasal and XML 2013 James Turner
	Model, Texture and Animations 2023 Benedikt Wolf
	
-->

<PropertyList>
	
	<path>kln94.ac</path>
	
	<animation>
		<type>pick</type>
		<object-name>ent-btn</object-name>
		<action>
			<button>0</button>
			<repeatable>false</repeatable>  
			<binding>
				<command>nasal</command>
				<script>KLN94.kln94.enter();</script>
			</binding>
			<binding>
				<command>property-assign</command>
				<property>instrumentation/kln94[0]/enter-btn</property>
				<value>1</value>
			</binding>
			<mod-up>
				<binding>
					<command>property-assign</command>
					<property>instrumentation/kln94[0]/enter-btn</property>
					<value>0</value>
				</binding>
			</mod-up>
		</action>
	</animation>
	<animation>
		<type>translate</type>
		<object-name>ent-btn</object-name>
		<property>instrumentation/kln94[0]/enter-btn</property>
		<factor>-0.001</factor>
		<axis>
			<x>1</x>
		</axis>
	</animation>
	
	<animation>
		<type>pick</type>
		<object-name>crsr-btn</object-name>
		<action>
			<button>0</button>
			<repeatable>false</repeatable>  
			<binding>
				<command>nasal</command>
				<script>KLN94.kln94.toggleCursorMode();</script>
			</binding>
			<binding>
				<command>property-assign</command>
				<property>instrumentation/kln94[0]/cursor-btn</property>
				<value>1</value>
			</binding>
			<mod-up>
				<binding>
					<command>property-assign</command>
					<property>instrumentation/kln94[0]/cursor-btn</property>
					<value>0</value>
				</binding>
			</mod-up>
		</action>
	</animation>
	<animation>
		<type>translate</type>
		<object-name>crsr-btn</object-name>
		<property>instrumentation/kln94[0]/cursor-btn</property>
		<factor>-0.001</factor>
		<axis>
			<x>1</x>
		</axis>
	</animation>
	
	<animation>
		<type>pick</type>
		<object-name>nrst-btn</object-name>
		<action>
			<button>0</button>
			<repeatable>false</repeatable>  
			<binding>
				<command>nasal</command>
				<script>KLN94.kln94.nearestButton();</script>
			</binding>
			<binding>
				<command>property-assign</command>
				<property>instrumentation/kln94[0]/nearest-btn</property>
				<value>1</value>
			</binding>
			<mod-up>
				<binding>
					<command>property-assign</command>
					<property>instrumentation/kln94[0]/nearest-btn</property>
					<value>0</value>
				</binding>
			</mod-up>
		</action>
	</animation>
	<animation>
		<type>translate</type>
		<object-name>nrst-btn</object-name>
		<property>instrumentation/kln94[0]/nearest-btn</property>
		<factor>-0.001</factor>
		<axis>
			<x>1</x>
		</axis>
	</animation>
	
	<animation>
		<type>pick</type>
		<object-name>dto-btn</object-name>
		<action>
			<button>0</button>
			<repeatable>false</repeatable>  
			<binding>
				<command>nasal</command>
				<script>KLN94.kln94.directTo();</script>
			</binding>
			<binding>
				<command>property-assign</command>
				<property>instrumentation/kln94[0]/direct-to-btn</property>
				<value>1</value>
			</binding>
			<mod-up>
				<binding>
					<command>property-assign</command>
					<property>instrumentation/kln94[0]/direct-to-btn</property>
					<value>0</value>
				</binding>
			</mod-up>
		</action>
	</animation>
	<animation>
		<type>translate</type>
		<object-name>dto-btn</object-name>
		<property>instrumentation/kln94[0]/direct-to-btn</property>
		<factor>-0.001</factor>
		<axis>
			<x>1</x>
		</axis>
	</animation>
	
	<animation>
		<type>pick</type>
		<object-name>obs-btn</object-name>
		<action>
			<button>0</button>
			<repeatable>false</repeatable>  
			<binding>
				<command>nasal</command>
				<script>KLN94.kln94.obsButton();</script>
			</binding>
			<binding>
				<command>property-assign</command>
				<property>instrumentation/kln94[0]/obs-btn</property>
				<value>1</value>
			</binding>
			<mod-up>
				<binding>
					<command>property-assign</command>
					<property>instrumentation/kln94[0]/obs-btn</property>
					<value>0</value>
				</binding>
			</mod-up>
		</action>
	</animation>
	<animation>
		<type>translate</type>
		<object-name>obs-btn</object-name>
		<property>instrumentation/kln94[0]/obs-btn</property>
		<factor>-0.001</factor>
		<axis>
			<x>1</x>
		</axis>
	</animation>
	
	<animation>
		<type>pick</type>
		<object-name>msg-btn</object-name>
		<action>
			<button>0</button>
			<repeatable>false</repeatable>  
			<binding>
				<command>nasal</command>
				<script>KLN94.kln94.messageButton();</script>
			</binding>
			<binding>
				<command>property-assign</command>
				<property>instrumentation/kln94[0]/message-btn</property>
				<value>1</value>
			</binding>
			<mod-up>
				<binding>
					<command>property-assign</command>
					<property>instrumentation/kln94[0]/message-btn</property>
					<value>0</value>
				</binding>
			</mod-up>
		</action>
	</animation>
	<animation>
		<type>translate</type>
		<object-name>msg-btn</object-name>
		<property>instrumentation/kln94[0]/message-btn</property>
		<factor>-0.001</factor>
		<axis>
			<x>1</x>
		</axis>
	</animation>
	
	<animation>
		<type>pick</type>
		<object-name>proc-btn</object-name>
		<action>
			<button>0</button>
			<repeatable>false</repeatable>  
			<binding>
				<command>nasal</command>
				<script>KLN94.kln94.procedureButton();</script>
			</binding>
			<binding>
				<command>property-assign</command>
				<property>instrumentation/kln94[0]/procedure-btn</property>
				<value>1</value>
			</binding>
			<mod-up>
				<binding>
					<command>property-assign</command>
					<property>instrumentation/kln94[0]/procedure-btn</property>
					<value>0</value>
				</binding>
			</mod-up>
		</action>
	</animation>
	<animation>
		<type>translate</type>
		<object-name>proc-btn</object-name>
		<property>instrumentation/kln94[0]/procedure-btn</property>
		<factor>-0.001</factor>
		<axis>
			<x>1</x>
		</axis>
	</animation>
	
	<animation>
		<type>pick</type>
		<object-name>alt-btn</object-name>
		<action>
			<button>0</button>
			<repeatable>false</repeatable>  
			<binding>
				<command>nasal</command>
				<script>KLN94.kln94.altitudeButton();</script>
			</binding>
			<binding>
				<command>property-assign</command>
				<property>instrumentation/kln94[0]/altitude-btn</property>
				<value>1</value>
			</binding>
			<mod-up>
				<binding>
					<command>property-assign</command>
					<property>instrumentation/kln94[0]/altitude-btn</property>
					<value>0</value>
				</binding>
			</mod-up>
		</action>
	</animation>
	<animation>
		<type>translate</type>
		<object-name>alt-btn</object-name>
		<property>instrumentation/kln94[0]/altitude-btn</property>
		<factor>-0.001</factor>
		<axis>
			<x>1</x>
		</axis>
	</animation>
	
	<animation>
		<type>pick</type>
		<object-name>clr-btn</object-name>
		<action>
			<button>0</button>
			<repeatable>false</repeatable>  
			<binding>
				<command>nasal</command>
				<script>KLN94.kln94.clearButton();</script>
			</binding>
			<binding>
				<command>property-assign</command>
				<property>instrumentation/kln94[0]/clear-btn</property>
				<value>1</value>
			</binding>
			<mod-up>
				<binding>
					<command>property-assign</command>
					<property>instrumentation/kln94[0]/clear-btn</property>
					<value>0</value>
				</binding>
			</mod-up>
		</action>
	</animation>
	<animation>
		<type>translate</type>
		<object-name>clr-btn</object-name>
		<property>instrumentation/kln94[0]/clear-btn</property>
		<factor>-0.001</factor>
		<axis>
			<x>1</x>
		</axis>
	</animation>
	
	<animation>
		<type>pick</type>
		<object-name>mnu-btn</object-name>
		<action>
			<button>0</button>
			<repeatable>false</repeatable>  
			<binding>
				<command>nasal</command>
				<script>KLN94.kln94.menuButton();</script>
			</binding>
			<binding>
				<command>property-assign</command>
				<property>instrumentation/kln94[0]/menu-btn</property>
				<value>1</value>
			</binding>
			<mod-up>
				<binding>
					<command>property-assign</command>
					<property>instrumentation/kln94[0]/menu-btn</property>
					<value>0</value>
				</binding>
			</mod-up>
		</action>
	</animation>
	<animation>
		<type>translate</type>
		<object-name>mnu-btn</object-name>
		<property>instrumentation/kln94[0]/menu-btn</property>
		<factor>-0.001</factor>
		<axis>
			<x> 0.966</x> <!-- cos(15 deg) -->
			<y>-0.259</y> <!-- -sin(15 deg) -->
		</axis>
	</animation>
	
	<animation>
		<type>pick</type>
		<object-name>rng-btn</object-name>
		<action>
			<button>0</button>
			<repeatable>false</repeatable>  
			<binding>
				<command>nasal</command>
				<script>KLN94.kln94.rangeButton( 1 );</script>
			</binding>
			<binding>
				<command>property-assign</command>
				<property>instrumentation/kln94[0]/range-btn</property>
				<value>1</value>
			</binding>
			<mod-up>
				<binding>
					<command>property-assign</command>
					<property>instrumentation/kln94[0]/range-btn</property>
					<value>0</value>
				</binding>
			</mod-up>
		</action>
		<action>
			<button>1</button>
			<repeatable>false</repeatable>  
			<binding>
				<command>nasal</command>
				<script>KLN94.kln94.rangeButton( -1 );</script>
			</binding>
			<binding>
				<command>property-assign</command>
				<property>instrumentation/kln94[0]/range-btn</property>
				<value>-1</value>
			</binding>
			<mod-up>
				<binding>
					<command>property-assign</command>
					<property>instrumentation/kln94[0]/range-btn</property>
					<value>0</value>
				</binding>
			</mod-up>
		</action>
	</animation>
	<animation>
		<type>pick</type>
		<object-name>rng-btn-up</object-name>
		<visible>0</visible>
		<action>
			<button>0</button>
			<repeatable>false</repeatable>  
			<binding>
				<command>nasal</command>
				<script>KLN94.kln94.rangeButton( 1 );</script>
			</binding>
			<binding>
				<command>property-assign</command>
				<property>instrumentation/kln94[0]/range-btn</property>
				<value>1</value>
			</binding>
			<mod-up>
				<binding>
					<command>property-assign</command>
					<property>instrumentation/kln94[0]/range-btn</property>
					<value>0</value>
				</binding>
			</mod-up>
		</action>
	</animation>
	<animation>
		<type>pick</type>
		<object-name>rng-btn-down</object-name>
		<visible>0</visible>
		<action>
			<button>0</button>
			<repeatable>false</repeatable>  
			<binding>
				<command>nasal</command>
				<script>KLN94.kln94.rangeButton( -1 );</script>
			</binding>
			<binding>
				<command>property-assign</command>
				<property>instrumentation/kln94[0]/range-btn</property>
				<value>-1</value>
			</binding>
			<mod-up>
				<binding>
					<command>property-assign</command>
					<property>instrumentation/kln94[0]/range-btn</property>
					<value>0</value>
				</binding>
			</mod-up>
		</action>
	</animation>
	<animation>
		<type>rotate</type>
		<object-name>rng-btn</object-name>
		<property>instrumentation/kln94[0]/range-btn</property>
		<factor>-10</factor>
		<center>
			<x-m>0.0142</x-m>
			<y-m>0.046</y-m>
			<z-m>0.0108</z-m>
		</center>
		<axis>
			<x>0.259</x> <!-- sin(15 deg) -->
			<y>0.966</y> <!-- cos(15 deg) -->
		</axis>
	</animation>
	
	<animation>
		<type>knob</type>
		<object-name>knob-inner</object-name>
		<property>instrumentation/kln94[0]/inner-knob</property>
		<factor>1</factor>
		<center>
			<y-m>  0.063 </y-m>
			<z-m> -0.009 </z-m>
		</center>
		<axis>
			<x>1</x>
		</axis>
		<action>
			<binding>
				<command>nasal</command>
				<script>KLN94.kln94.innerKnob(cmdarg().getNode('offset').getValue());</script>     
			</binding>
			<binding>
				<command>property-adjust</command>
				<property>instrumentation/kln94[0]/inner-knob</property>
				<factor>5</factor>
				<min>0</min>
				<max>359</max>
				<wrap>1</wrap>
			</binding>
		</action>
	</animation>
	
	<animation>
		<type>knob</type>
		<object-name>knob-outer</object-name>
		<property>instrumentation/kln94[0]/outer-knob</property>
		<factor>1</factor>
		<center>
			<y-m>  0.063 </y-m>
			<z-m> -0.009 </z-m>
		</center>
		<axis>
			<x>1</x>
		</axis>
		<action>
			<binding>
				<command>nasal</command>
				<script>KLN94.kln94.outerKnob(cmdarg().getNode('offset').getValue());</script>     
			</binding>
			<binding>
				<command>property-adjust</command>
				<property>instrumentation/kln94[0]/outer-knob</property>
				<factor>5</factor>
				<min>0</min>
				<max>359</max>
				<wrap>1</wrap>
			</binding>
		</action>
	</animation>
	
	
	<animation>
		<type>knob</type>
		<object-name>knob-brightness</object-name>
		<property>/instrumentation/kln94/brightness-norm</property> 
		<factor>270</factor>
		<center>
			<y-m> -0.0605 </y-m>
			<z-m> -0.014  </z-m>
		</center>
		<axis>
			<x>1</x>
		</axis>
		<action>
			<binding>
				<command>property-adjust</command>
				<property>instrumentation/kln94/brightness-norm</property> 
				<factor>0.05</factor>
				<min>0</min>
				<max>1</max>                
				<wrap>false</wrap>       
			</binding>
		</action>
	</animation>
	<animation>
		<type>pick</type>
		<object-name>knob-brightness-push</object-name>
		<action>
			<button>0</button>
			<repeatable>false</repeatable>  
			<binding>
				<command>nasal</command>
				<script>KLN94.kln94.powerButton();</script>
			</binding>
			<binding>
				<command>property-assign</command>
				<property>instrumentation/kln94[0]/power-brightness-knob</property>
				<value>1</value>
			</binding>
			<mod-up>
				<binding>
					<command>property-assign</command>
					<property>instrumentation/kln94[0]/power-brightness-knob</property>
					<value>0</value>
				</binding>
			</mod-up>
		</action>
	</animation>
	<animation>
		<type>translate</type>
		<object-name>knob-brightness</object-name>
		<object-name>knob-brightness-push</object-name>
		<property>instrumentation/kln94[0]/power-brightness-knob</property>
		<factor>-0.001</factor>
		<axis>
			<x>1</x>
		</axis>
	</animation>
	
</PropertyList>