From 02f60e07942c96d3246d56f48680424acb7f9a68 Mon Sep 17 00:00:00 2001 From: Vivian Meazza Date: Sat, 18 Dec 2010 09:16:04 +0000 Subject: [PATCH 01/16] Add open-circuit oxygen system. Signed-off-by: Vivian Meazza --- Aircraft/Generic/Oxygen/oxygen.nas | 155 +++++++++++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 Aircraft/Generic/Oxygen/oxygen.nas diff --git a/Aircraft/Generic/Oxygen/oxygen.nas b/Aircraft/Generic/Oxygen/oxygen.nas new file mode 100644 index 000000000..b4e0f2333 --- /dev/null +++ b/Aircraft/Generic/Oxygen/oxygen.nas @@ -0,0 +1,155 @@ +############################################################################### +## +## Oxygen system module for FlightGear. +## +## Copyright (C) 2010 Vivian Meazza (vivia.meazza(at)lineone.net) +## This file is licensed under the GPL license v2 or later. +## +############################################################################### + + +# Properties under /consumables/fuel/tank[n]: +# + level_cu_ft - Current free oxygen content. Must be set by user code. +# + capacity_cu_ft - Tank volume +# + selected - boolean indicating tank selection. +# + name ...........- string +# + pressure - OUTPUT ONLY property, do not try to set + +# Properties under /controls/oxygen/ +# + altitude-norm - the selected supply altitude normalized 0 - 100% oxygen +# + flowrate_cu_ft_ps - Max (100%) Oxygen flow rate + +# + flowrate considerations: +# ref http://en.wikipedia.org/wiki/Human_lung +# +# when maximum (100%) oxygen is selected, we wish to deliver enough oxygen to fill +# the pilot's lungs, with slight overpressure. +# +# let the tidal flow volume - that is the amount of gas which flows +# into and out of the lungs on each breath = T ft^3; +# and the number of breaths per minute at rest= N min^-1; +# but we need to consider a pilot under stress factor = 1.5 +# +# so flowrate (ft^3.sec^-1) = (T*1.5*N)/60 +# +# substituting the values from the reference +# +# flowrate = 0.01765 * 1.5 * 20 / 60 = 0.008828 +# +# rounding up to provide overpressure +# +# flowrate = 0.01 (ft^3.sec^-1) + + +#========================= Initialize =============================== +var MAXTANKS = 20; +var INHG2PSI = 0.491154077497; + +var initialize = func { + + print( "Initializing Oxygen System ..." ); + + props.globals.initNode("/systems/oxygen/serviceable", 1, "BOOL"); + props.globals.initNode("/sim/freeze/oxygen", 0, "BOOL"); + props.globals.initNode("/controls/oxygen/altitude-norm", 0.0, "DOUBLE"); + props.globals.initNode("/controls/oxygen/flowrate-cu-ft-ps", 0.01, "DOUBLE"); + + for (var i = 0; i < MAXTANKS; i += 1){ + props.globals.initNode("/consumables/oxygen/tank["~ i ~ "]/capacity-cu-ft", 0.01, "DOUBLE"); + props.globals.initNode("/consumables/oxygen/tank["~ i ~ "]/level-cu-ft", 0, "DOUBLE"); + props.globals.initNode("/consumables/oxygen/tank["~ i ~ "]/selected", 0, "BOOL"); + props.globals.initNode("/consumables/oxygen/tank["~ i ~ "]/pressure-psi", 50, "DOUBLE"); + } + + oxygen(); + +} #end init + +#========================= Oxygen System ============================ +var oxygen = func { + + var freeze = getprop("/sim/freeze/oxygen"); + var serviceable =getprop("/systems/oxygen/serviceable"); + + if(freeze or !serviceable) { return; } + + var dt = getprop("sim/time/delta-sec"); + var oxygen_alt = getprop("controls/oxygen/altitude-norm"); + var flowrate_cu_ft_ps = getprop("controls/oxygen/flowrate-cu-ft-ps"); + var Pa = getprop("environment/pressure-inhg") * INHG2PSI; + + var flow_cu_ft = flowrate_cu_ft_ps * oxygen_alt * dt; + + var contents = 0; + var cap = 0; + var availableTanks = []; + var selected = 0; + var pressure = 2000; + +# Build a list of available tanks. An available tank is both selected, has +# oxygen remaining.and pressure < ambient. + var AllTanks = props.globals.getNode("consumables/oxygen").getChildren("tank"); + + foreach( var t; AllTanks) { + cap = t.getNode("capacity-cu-ft", 1).getValue(); + contents = t.getNode("level-cu-ft", 1).getValue(); + selected = t.getNode("selected", 1).getBoolValue(); + pressure = t.getNode("pressure-psi", 1).getValue(); + + if(cap != nil and cap > 0.01 ) { +# print ("Pressure ", pressure, " " , Pa); + + if(selected and pressure > Pa) { + append(availableTanks, t); + } + + } + + } + +# print("flow_cu_ft ", flow_cu_ft," " ,size(availableTanks)); + +# Subtract flow_cu_ft from tanks, set auxilliary properties. Set out-of-gas +# when all tanks are empty. + var outOfGas = 0; + + if(size(availableTanks) == 0) { + outOfGas = 1; + } else { + flowPerTank = flow_cu_ft / size(availableTanks); + foreach( var t; availableTanks ) { + cu_ft = t.getNode("level-cu-ft").getValue(); + cu_ft -= flowPerTank; + cap = t.getNode("capacity-cu-ft", 1).getValue(); + + if(cu_ft < 0) { cu_ft = 0;} + +# print ("pressure ", calcPressure(cu_ft, cap)); + + t.getNode("level-cu-ft").setDoubleValue(cu_ft); + t.getNode("pressure-psi").setDoubleValue(calcPressure(cu_ft, cap)); + } + } + + settimer(oxygen, 0.3); + +} #end oxygen + +# We apply Boyle's Law to derive the pressure in the tank fom the capacity of the +# tank and the contents. We ignore the effects of temperature. + +var calcPressure = func (cu_ft, cap){ + var Vc = cap; + var Va = cu_ft; + var Pa = 14.7; + +# print (Vc, " ", Va, " ", Pa); + + Pc = (Pa * Va)/Vc; + return Pc; +} #end calcPressure + +setlistener("sim/signals/fdm-initialized", initialize); + +# end + From f278ec03890328b8072a4368bc65cfb8748bef14 Mon Sep 17 00:00:00 2001 From: Gijs de Rooy Date: Sun, 19 Dec 2010 18:41:14 +0100 Subject: [PATCH 02/16] Joystick file for Genius F-31U VIBRATION USB --- Input/Joysticks/Genius/f31.xml | 268 +++++++++++++++++++++++++++++++++ 1 file changed, 268 insertions(+) create mode 100644 Input/Joysticks/Genius/f31.xml diff --git a/Input/Joysticks/Genius/f31.xml b/Input/Joysticks/Genius/f31.xml new file mode 100644 index 000000000..783594e88 --- /dev/null +++ b/Input/Joysticks/Genius/f31.xml @@ -0,0 +1,268 @@ + + + + Padix Co. Ltd. 10-Button USB Joystick + 10-Button USB Joystick with Vibration + 10-Button USB Joystick + + + Aileron + + property-scale + /controls/flight/aileron + 2 + + + + + Elevator + + property-scale + /controls/flight/elevator + 2 + -1.0 + + + + + Rudder + + 2 + 3 + + + property-scale + /controls/flight/rudder + 2 + -1.0 + + + + + Throttle + + 3 + 2 + + + nasal + + + + + + View Direction + + 4 + 6 + + + View left + true + + + nasal + + + + + View right + true + + + nasal + + + + + + + View Elevation + + 5 + 7 + + + View down + true + + property-adjust + /sim/current-view/goal-pitch-offset-deg + 3.0 + + + + View up + true + + property-adjust + /sim/current-view/goal-pitch-offset-deg + -3.0 + + + + + + + + + + + + + + + + + + + + + + + + + + From edc9b64e6c07d8318a1bff873bc09af918b130b0 Mon Sep 17 00:00:00 2001 From: Stuart Buchanan Date: Sun, 19 Dec 2010 21:10:32 +0000 Subject: [PATCH 03/16] Remove out of date animation. --- Aircraft/c172p/Models/c172p.xml | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/Aircraft/c172p/Models/c172p.xml b/Aircraft/c172p/Models/c172p.xml index 53beef438..ad4f99881 100644 --- a/Aircraft/c172p/Models/c172p.xml +++ b/Aircraft/c172p/Models/c172p.xml @@ -1918,23 +1918,6 @@ - - spin - Propeller.Slow - engines/engine[0]/rpm - -0.1 -
- -1.79 - 0 - -0.05 -
- - 1.0 - 0.0 - -0.05240773494 - -
- spin Propeller.Fast From 09dc9afe4780a6cfedc416d0eb06bfd653438325 Mon Sep 17 00:00:00 2001 From: Anders Gidenstam Date: Sun, 19 Dec 2010 23:09:53 +0100 Subject: [PATCH 04/16] Updated DualControl: Moved everything to Aircraft/Generic/DualControl/. - Updated all references to Aircraft/ZLT-NT/DualControl/ found. --- Aircraft/Generic/DualControl/AUTHORS | 22 + .../Instruments/ADF-462/ctl-62.png | Bin 0 -> 21965 bytes .../Instruments/ADF-462/ctl62-adf1.xml | 380 +++ .../DualControl/Instruments/ADF-462/ctl62.ac | 2449 ++++++++++++++++ .../DualControl/Instruments/ADF-462/ctl62.nas | 229 ++ .../Instruments/KAP-140/KAP140TwoAxisAlt.xml | 13 + .../Instruments/KAP-140/kap140.nas | 330 +++ .../DualControl/Instruments/KAP-140/null.ac | 3 + .../DualControl/Instruments/KDI-572/dme.ac | 823 ++++++ .../DualControl/Instruments/KDI-572/dme.png | Bin 0 -> 6082 bytes .../Instruments/KDI-572/kdi572.nas | 66 + .../Instruments/KDI-572/kdi572.xml | 228 ++ .../Instruments/KI-206/ki206-1.xml | 176 ++ .../Instruments/KI-206/ki206-2.xml | 176 ++ .../DualControl/Instruments/KI-206/ki206.nas | 166 ++ .../DualControl/Instruments/KR87/kr87-1.xml | 362 +++ .../DualControl/Instruments/KR87/kr87.ac | 1040 +++++++ .../DualControl/Instruments/KR87/kr87.nas | 266 ++ .../DualControl/Instruments/KX165/kx165tso.ac | 1961 +++++++++++++ .../Instruments/KX165/kx165tso.nas | 335 +++ .../Instruments/KX165/kx165tso.png | Bin 0 -> 50513 bytes .../Instruments/KX165/kx165tso1.xml | 599 ++++ .../Instruments/KX165/kx165tso2.xml | 599 ++++ .../DualControl/Instruments/VHF-22/ctl-22.png | Bin 0 -> 21782 bytes .../Instruments/VHF-22/ctl22-com.xml | 387 +++ .../Instruments/VHF-22/ctl22-com1.xml | 28 + .../Instruments/VHF-22/ctl22-com2.xml | 28 + .../DualControl/Instruments/VHF-22/ctl22.ac | 2491 +++++++++++++++++ .../DualControl/Instruments/VHF-22/ctl22.nas | 226 ++ .../DualControl/Instruments/VIR-32/ctl-32.png | Bin 0 -> 21191 bytes .../Instruments/VIR-32/ctl32-nav.xml | 358 +++ .../Instruments/VIR-32/ctl32-nav1.xml | 30 + .../Instruments/VIR-32/ctl32-nav2.xml | 30 + .../DualControl/Instruments/VIR-32/ctl32.ac | 2407 ++++++++++++++++ .../DualControl/Instruments/VIR-32/ctl32.nas | 226 ++ .../DualControl/Instruments/ki227-1.xml | 51 + .../Generic/DualControl/README.dual-control | 90 + .../DualControl/copilot-dual-control.nas | 255 ++ .../DualControl/dual-control-tools.nas | 644 +++++ .../DualControl/pilot-dual-control.nas | 116 + 40 files changed, 17590 insertions(+) create mode 100644 Aircraft/Generic/DualControl/AUTHORS create mode 100644 Aircraft/Generic/DualControl/Instruments/ADF-462/ctl-62.png create mode 100644 Aircraft/Generic/DualControl/Instruments/ADF-462/ctl62-adf1.xml create mode 100644 Aircraft/Generic/DualControl/Instruments/ADF-462/ctl62.ac create mode 100644 Aircraft/Generic/DualControl/Instruments/ADF-462/ctl62.nas create mode 100644 Aircraft/Generic/DualControl/Instruments/KAP-140/KAP140TwoAxisAlt.xml create mode 100644 Aircraft/Generic/DualControl/Instruments/KAP-140/kap140.nas create mode 100644 Aircraft/Generic/DualControl/Instruments/KAP-140/null.ac create mode 100644 Aircraft/Generic/DualControl/Instruments/KDI-572/dme.ac create mode 100644 Aircraft/Generic/DualControl/Instruments/KDI-572/dme.png create mode 100644 Aircraft/Generic/DualControl/Instruments/KDI-572/kdi572.nas create mode 100644 Aircraft/Generic/DualControl/Instruments/KDI-572/kdi572.xml create mode 100644 Aircraft/Generic/DualControl/Instruments/KI-206/ki206-1.xml create mode 100644 Aircraft/Generic/DualControl/Instruments/KI-206/ki206-2.xml create mode 100644 Aircraft/Generic/DualControl/Instruments/KI-206/ki206.nas create mode 100644 Aircraft/Generic/DualControl/Instruments/KR87/kr87-1.xml create mode 100644 Aircraft/Generic/DualControl/Instruments/KR87/kr87.ac create mode 100644 Aircraft/Generic/DualControl/Instruments/KR87/kr87.nas create mode 100644 Aircraft/Generic/DualControl/Instruments/KX165/kx165tso.ac create mode 100644 Aircraft/Generic/DualControl/Instruments/KX165/kx165tso.nas create mode 100644 Aircraft/Generic/DualControl/Instruments/KX165/kx165tso.png create mode 100644 Aircraft/Generic/DualControl/Instruments/KX165/kx165tso1.xml create mode 100644 Aircraft/Generic/DualControl/Instruments/KX165/kx165tso2.xml create mode 100644 Aircraft/Generic/DualControl/Instruments/VHF-22/ctl-22.png create mode 100644 Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22-com.xml create mode 100644 Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22-com1.xml create mode 100644 Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22-com2.xml create mode 100644 Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22.ac create mode 100644 Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22.nas create mode 100644 Aircraft/Generic/DualControl/Instruments/VIR-32/ctl-32.png create mode 100644 Aircraft/Generic/DualControl/Instruments/VIR-32/ctl32-nav.xml create mode 100644 Aircraft/Generic/DualControl/Instruments/VIR-32/ctl32-nav1.xml create mode 100644 Aircraft/Generic/DualControl/Instruments/VIR-32/ctl32-nav2.xml create mode 100644 Aircraft/Generic/DualControl/Instruments/VIR-32/ctl32.ac create mode 100644 Aircraft/Generic/DualControl/Instruments/VIR-32/ctl32.nas create mode 100644 Aircraft/Generic/DualControl/Instruments/ki227-1.xml create mode 100644 Aircraft/Generic/DualControl/README.dual-control create mode 100644 Aircraft/Generic/DualControl/copilot-dual-control.nas create mode 100644 Aircraft/Generic/DualControl/dual-control-tools.nas create mode 100644 Aircraft/Generic/DualControl/pilot-dual-control.nas diff --git a/Aircraft/Generic/DualControl/AUTHORS b/Aircraft/Generic/DualControl/AUTHORS new file mode 100644 index 000000000..869a954d6 --- /dev/null +++ b/Aircraft/Generic/DualControl/AUTHORS @@ -0,0 +1,22 @@ +Anders Gidenstam (anders(at)gidenstam.org) + - Dual control Nasal modules + - Configuration of dual-control 3d instruments. + +DualControl borrows content from the following authors' contributions +to FlightGear: + +Syd Adams - from Aircraft/Instruments-3d/ + - KY-196 Comm Radio. + - VHF 22 Comm Radio. + - VIR 32 Nav Radio. + - KI-206 VOR Gauge. + - KR-97 ADF Radio. + - KI-227 ADF Gauge. + +Torsten Dreyer - from Aircraft/SenceaII/Instruments-3d/ + - KX-165 Nav Comm Radio. + - KR-87 ADF Radio. + +Ron Jensen - from Aircraft/Instruments-3d + - KAP140 Autopilot 3d. + diff --git a/Aircraft/Generic/DualControl/Instruments/ADF-462/ctl-62.png b/Aircraft/Generic/DualControl/Instruments/ADF-462/ctl-62.png new file mode 100644 index 0000000000000000000000000000000000000000..79bd040609026d84ec951bfccc3de1a823730697 GIT binary patch literal 21965 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 V{Bzmw9;7f4#M0bmZ;h!N{Xb* + + + + + ctl62.ac + + + select + freq.002 + freq.003 + freq.dec + freq.004 + freq.005 + + + systems/electrical/outputs/adf + 1 + + + + + + select + stby.002 + stby.003 + stby.dec + stby.004 + stby.005 + + + systems/electrical/outputs/adf + 1 + + + + + + select + freq.001 + + + + systems/electrical/outputs/adf + 1 + + + instrumentation/adf/frequencies/selected-khz + 999.5 + + + + + + + select + stby.001 + + + + systems/electrical/outputs/adf + 1 + + + instrumentation/adf/frequencies/standby-khz + 999.5 + + + + + + + select + mem.annun + + + systems/electrical/outputs/adf + 1 + + + + + + rotate + CTL-62.pwr + instrumentation/adf/serviceable + + 00 + 1.030 + +
+ 0.0 + -0.014 + -0.018 +
+ + -1 + 0 + 0 + +
+ + + + + textranslate + freq.001 + instrumentation/adf/frequencies/selected-khz + 0.0001 + 1000 + 0.05 + + 0 + 1 + 0 + + + + + textranslate + freq.002 + instrumentation/adf/frequencies/selected-khz + 0.001 + 100 + 0.05 + + 0 + 1 + 0 + + + + + textranslate + freq.003 + instrumentation/adf/frequencies/selected-khz + 0.01 + 10 + 0.05 + + 0 + 1 + 0 + + + + + textranslate + freq.004 + instrumentation/adf/frequencies/selected-khz + 0.1 + 1 + 0.05 + + 0 + 1 + 0 + + + + + textranslate + freq.005 + instrumentation/adf/frequencies/selected-khz + 1.0 + 0.1 + 0.05 + + 0 + 1 + 0 + + + + + + + textranslate + stby.001 + instrumentation/adf/frequencies/standby-khz + 0.0001 + 1000 + 0.05 + + 0 + 1 + 0 + + + + + textranslate + stby.002 + instrumentation/adf/frequencies/standby-khz + 0.001 + 100 + 0.05 + + 0 + 1 + 0 + + + + + textranslate + stby.003 + instrumentation/adf/frequencies/standby-khz + 0.01 + 10 + 0.05 + + 0 + 1 + 0 + + + + + textranslate + stby.004 + instrumentation/adf/frequencies/standby-khz + 0.1 + 1 + 0.05 + + 0 + 1 + 0 + + + + + textranslate + stby.005 + instrumentation/adf/frequencies/standby-khz + 1.0 + 0.1 + 0.05 + + 0 + 1 + 0 + + + + + + + pick + CTL-62.xfr + + + false + + nasal + + + + + + + pick + pwr.off + + + false + + property-assign + instrumentation/adf/serviceable + false + + + + + + pick + pwr.on + + + false + + property-assign + instrumentation/adf/serviceable + true + + + + + + pick + freq.knob.small + + + true + 0.2 + + nasal + + + + + + true + 0.2 + + nasal + + + + + + false + + nasal + + + + + + false + + nasal + + + + + + + pick + freq.knob.large + + + true + 0.2 + + nasal + + + + + + true + 0.2 + + nasal + + + + + + false + + nasal + + + + + + false + + nasal + + + + + +
diff --git a/Aircraft/Generic/DualControl/Instruments/ADF-462/ctl62.ac b/Aircraft/Generic/DualControl/Instruments/ADF-462/ctl62.ac new file mode 100644 index 000000000..f3d3c7a5b --- /dev/null +++ b/Aircraft/Generic/DualControl/Instruments/ADF-462/ctl62.ac @@ -0,0 +1,2449 @@ +AC3Db +MATERIAL "DefaultWhite" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0 +MATERIAL "DefaultWhite.001" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0 +MATERIAL "dimlit" rgb 1 1 1 amb 1 1 1 emis 0.5 0.5 0.5 spec 0.5 0.5 0.5 shi 64 trans 0 +MATERIAL "lit" rgb 1 1 1 amb 1 1 1 emis 1 1 1 spec 0.5 0.5 0.5 shi 64 trans 0 +OBJECT world +kids 29 +OBJECT poly +name "CTL-62" +data 4 +Mesh +texture "ctl-62.png" +texrep 1 1 +crease 30.000000 +numvert 8 +0.00288 0.033556 0.030053 +0.002878 -0.033556 0.030053 +0.002878 -0.033556 -0.030053 +0.00288 0.033556 -0.030053 +1e-06 0.033557 0.030053 +-1e-06 -0.033557 0.030053 +-1e-06 -0.033557 -0.030053 +1e-06 0.033557 -0.030054 +numsurf 7 +SURF 0x00 +mat 1 +refs 3 +2 0.0318928062916 0.52865421772 +6 0.0318928062916 0.471345812082 +7 0.0892012119293 0.471345812082 +SURF 0x00 +mat 1 +refs 3 +1 0.0318928062916 0.52865421772 +4 0.0318928062916 0.471345812082 +5 0.0892012119293 0.471345812082 +SURF 0x00 +mat 1 +refs 4 +4 0.0318928062916 0.52865421772 +0 0.0318928062916 0.471345812082 +3 0.0892012119293 0.471345812082 +7 0.0892012119293 0.52865421772 +SURF 0x00 +mat 1 +refs 4 +6 0.0318928062916 0.52865421772 +2 0.0318928062916 0.471345812082 +1 0.0892012119293 0.471345812082 +5 0.0892012119293 0.52865421772 +SURF 0x00 +mat 1 +refs 3 +1 0.0318928062916 0.52865421772 +0 0.0318928062916 0.471345812082 +4 0.0892012119293 0.471345812082 +SURF 0x00 +mat 1 +refs 3 +3 0.0318928062916 0.52865421772 +2 0.0318928062916 0.471345812082 +7 0.0892012119293 0.471345812082 +SURF 0x00 +mat 1 +refs 4 +0 0.00467306375504 0.99786221981 +1 0.00467306375504 0.10612988472 +2 0.803326964378 0.106129825115 +3 0.803327083588 0.99786221981 +kids 0 +OBJECT poly +name "CTL-62.mem" +data 8 +Mesh.001 +texture "ctl-62.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.003175 0.002595 -0.027258 +0.003175 0.002595 -0.017239 +0.003175 0.012924 -0.027258 +0.003175 0.012924 -0.017239 +numsurf 1 +SURF 0x00 +mat 2 +refs 4 +0 0.765544474125 0.593913197517 +2 0.765544474125 0.72511190176 +3 0.638291478157 0.725111961365 +1 0.638291418552 0.593913197517 +kids 0 +OBJECT poly +name "CTL-62.pwr" +data 8 +Mesh.002 +texture "ctl-62.png" +texrep 1 1 +crease 40.000000 +numvert 61 +0.011466 -0.015393 0.01504 +0.011476 -0.015129 0.01383 +0.011475 -0.015347 0.012612 +0.011464 -0.017031 0.010863 +0.011471 -0.019458 0.010815 +0.011463 -0.0205 0.011484 +0.011464 -0.021208 0.012499 +0.011474 -0.021473 0.013707 +0.011475 -0.021255 0.014926 +0.011476 -0.020587 0.015968 +0.011467 -0.018363 0.016942 +0.011479 -0.017144 0.016723 +0.011467 -0.016101 0.016056 +0.010939 -0.0145 0.017787 +0.010936 -0.016318 0.018952 +0.010939 -0.018442 0.019331 +0.010934 -0.020548 0.018869 +0.010936 -0.022319 0.017636 +0.010934 -0.023483 0.01582 +0.010932 -0.023861 0.013696 +0.010934 -0.0234 0.011587 +0.010928 -0.022167 0.009817 +0.010933 -0.02035 0.008654 +0.010928 -0.018226 0.008274 +0.010934 -0.016119 0.008735 +0.010932 -0.014348 0.009969 +0.010934 -0.013185 0.011786 +0.010936 -0.012805 0.01391 +0.010934 -0.013267 0.016017 +0.003255 -0.0145 0.017787 +0.003253 -0.016317 0.018951 +0.003255 -0.018441 0.019331 +0.003252 -0.020549 0.018868 +0.003253 -0.022319 0.017635 +0.003252 -0.023483 0.015818 +0.003251 -0.023862 0.013695 +0.003252 -0.023401 0.011588 +0.003249 -0.022167 0.009817 +0.003251 -0.020351 0.008653 +0.003249 -0.018226 0.008273 +0.003252 -0.016119 0.008735 +0.003251 -0.014349 0.009969 +0.003252 -0.013185 0.011786 +0.003253 -0.012805 0.013909 +0.003252 -0.013267 0.016017 +0.002948 -0.013119 0.019223 +0.002944 -0.011442 0.016814 +0.002944 -0.01482 0.020668 +0.002949 -0.019252 0.021461 +0.002944 -0.021347 0.020694 +0.002945 -0.023755 0.019016 +0.002944 -0.025338 0.016545 +0.002942 -0.025854 0.013656 +0.002944 -0.025225 0.01079 +0.002939 -0.023548 0.008381 +0.002943 -0.021077 0.006799 +0.002939 -0.018187 0.006282 +0.002944 -0.01532 0.00691 +0.002942 -0.012913 0.008588 +0.002944 -0.01133 0.011059 +0.002945 -0.010813 0.013948 +numsurf 47 +SURF 0x10 +mat 1 +refs 4 +0 0.242616027594 0.34228309989 +1 0.253560334444 0.330271661282 +27 0.27686715126 0.344839572906 +28 0.258591175079 0.36488327384 +SURF 0x10 +mat 1 +refs 4 +26 0.286074966192 0.31933516264 +27 0.27686715126 0.344839572906 +1 0.253560334444 0.330271661282 +2 0.259069859982 0.314993470907 +SURF 0x10 +mat 1 +refs 4 +25 0.284832298756 0.292247921228 +26 0.286074966192 0.31933516264 +2 0.259069859982 0.314993470907 +3 0.258331537247 0.298769056797 +SURF 0x10 +mat 1 +refs 3 +24 0.273313134909 0.267678141594 +25 0.284832298756 0.292247921228 +3 0.258331537247 0.298769056797 +SURF 0x10 +mat 1 +refs 3 +23 0.253274142742 0.249411016703 +24 0.273313134909 0.267678141594 +3 0.251419782639 0.284074395895 +SURF 0x10 +mat 1 +refs 4 +22 0.227752551436 0.240196049213 +23 0.253274142742 0.249411016703 +3 0.239418447018 0.27314016223 +4 0.224144220352 0.267609983683 +SURF 0x10 +mat 1 +refs 4 +21 0.200660303235 0.241442531347 +22 0.227752551436 0.240196049213 +4 0.224144220352 0.267609983683 +5 0.207917496562 0.26836925745 +SURF 0x10 +mat 1 +refs 4 +20 0.176110818982 0.252956539392 +21 0.200660303235 0.241442531347 +5 0.207917496562 0.26836925745 +6 0.193216666579 0.275259315968 +SURF 0x10 +mat 1 +refs 4 +19 0.157832920551 0.273013472557 +20 0.176110818982 0.252956539392 +6 0.193216666579 0.275259315968 +7 0.182275414467 0.287250161171 +SURF 0x10 +mat 1 +refs 4 +18 0.148611694574 0.298515945673 +19 0.157832920551 0.273013472557 +7 0.182275414467 0.287250161171 +8 0.17675408721 0.302526503801 +SURF 0x10 +mat 1 +refs 4 +17 0.149867773056 0.325605154037 +18 0.148611694574 0.298515945673 +8 0.17675408721 0.302526503801 +9 0.17750428617 0.318752765656 +SURF 0x10 +mat 1 +refs 4 +16 0.161388874054 0.350161790848 +17 0.149867773056 0.325605154037 +9 0.17750428617 0.318752765656 +10 0.184401065111 0.333466231823 +SURF 0x10 +mat 1 +refs 3 +15 0.181427836418 0.368428856134 +16 0.161388874054 0.350161790848 +10 0.184401065111 0.333466231823 +SURF 0x10 +mat 1 +refs 4 +14 0.206934183836 0.377653956413 +15 0.181427836418 0.368428856134 +10 0.196400627494 0.344412237406 +11 0.211677893996 0.349921613932 +SURF 0x10 +mat 1 +refs 4 +13 0.234041765332 0.37639734149 +14 0.206934183836 0.377653956413 +11 0.211677893996 0.349921613932 +12 0.227901563048 0.349183142185 +SURF 0x10 +mat 1 +refs 4 +12 0.227901563048 0.349183142185 +0 0.242616027594 0.34228309989 +28 0.258591175079 0.36488327384 +13 0.234041765332 0.37639734149 +SURF 0x10 +mat 1 +refs 4 +28 0.313261419535 0.912568569183 +44 0.313261419535 0.819853067398 +29 0.40597692132 0.819853067398 +13 0.40597692132 0.912568569183 +SURF 0x10 +mat 1 +refs 4 +30 0.313261419535 0.912568569183 +14 0.313261419535 0.819853067398 +13 0.40597692132 0.819853067398 +29 0.40597692132 0.912568569183 +SURF 0x10 +mat 1 +refs 4 +31 0.313261419535 0.912568569183 +15 0.313261419535 0.819853067398 +14 0.40597692132 0.819853067398 +30 0.40597692132 0.912568569183 +SURF 0x10 +mat 1 +refs 4 +32 0.313261419535 0.912568569183 +16 0.313261419535 0.819853067398 +15 0.40597692132 0.819853067398 +31 0.40597692132 0.912568569183 +SURF 0x10 +mat 1 +refs 4 +33 0.313261419535 0.912568569183 +17 0.313261419535 0.819853067398 +16 0.40597692132 0.819853067398 +32 0.40597692132 0.912568569183 +SURF 0x10 +mat 1 +refs 4 +34 0.313261419535 0.912568569183 +18 0.313261419535 0.819853067398 +17 0.40597692132 0.819853067398 +33 0.40597692132 0.912568569183 +SURF 0x10 +mat 1 +refs 4 +35 0.313261419535 0.912568569183 +19 0.313261419535 0.819853067398 +18 0.40597692132 0.819853067398 +34 0.40597692132 0.912568569183 +SURF 0x10 +mat 1 +refs 4 +36 0.313261419535 0.912568569183 +20 0.313261419535 0.819853067398 +19 0.40597692132 0.819853067398 +35 0.40597692132 0.912568569183 +SURF 0x10 +mat 1 +refs 4 +37 0.313261419535 0.912568569183 +21 0.313261419535 0.819853067398 +20 0.40597692132 0.819853067398 +36 0.40597692132 0.912568569183 +SURF 0x10 +mat 1 +refs 4 +38 0.313261419535 0.912568569183 +22 0.313261419535 0.819853067398 +21 0.40597692132 0.819853067398 +37 0.40597692132 0.912568569183 +SURF 0x10 +mat 1 +refs 4 +39 0.313261419535 0.912568569183 +23 0.313261419535 0.819853067398 +22 0.40597692132 0.819853067398 +38 0.40597692132 0.912568569183 +SURF 0x10 +mat 1 +refs 4 +40 0.313261419535 0.912568569183 +24 0.313261419535 0.819853067398 +23 0.40597692132 0.819853067398 +39 0.40597692132 0.912568569183 +SURF 0x10 +mat 1 +refs 4 +41 0.313261419535 0.912568569183 +25 0.313261419535 0.819853067398 +24 0.40597692132 0.819853067398 +40 0.40597692132 0.912568569183 +SURF 0x10 +mat 1 +refs 4 +42 0.313261419535 0.912568569183 +26 0.313261419535 0.819853067398 +25 0.40597692132 0.819853067398 +41 0.40597692132 0.912568569183 +SURF 0x10 +mat 1 +refs 4 +43 0.313261419535 0.912568569183 +27 0.313261419535 0.819853067398 +26 0.40597692132 0.819853067398 +42 0.40597692132 0.912568569183 +SURF 0x10 +mat 1 +refs 4 +44 0.313261419535 0.912568569183 +28 0.313261419535 0.819853067398 +27 0.40597692132 0.819853067398 +43 0.40597692132 0.912568569183 +SURF 0x10 +mat 1 +refs 4 +29 0.82833224535 0.541667699814 +44 0.82833224535 0.498332291842 +46 0.871667683125 0.498332291842 +45 0.871667683125 0.541667699814 +SURF 0x10 +mat 1 +refs 4 +30 0.82833224535 0.541667699814 +29 0.82833224535 0.498332291842 +45 0.871667683125 0.498332291842 +47 0.871667683125 0.541667699814 +SURF 0x10 +mat 1 +refs 4 +32 0.82833224535 0.541667699814 +31 0.82833224535 0.498332291842 +48 0.871667683125 0.498332291842 +49 0.871667683125 0.541667699814 +SURF 0x10 +mat 1 +refs 4 +33 0.82833224535 0.541667699814 +32 0.82833224535 0.498332291842 +49 0.871667683125 0.498332291842 +50 0.871667683125 0.541667699814 +SURF 0x10 +mat 1 +refs 4 +34 0.82833224535 0.541667699814 +33 0.82833224535 0.498332291842 +50 0.871667683125 0.498332291842 +51 0.871667683125 0.541667699814 +SURF 0x10 +mat 1 +refs 4 +35 0.82833224535 0.541667699814 +34 0.82833224535 0.498332291842 +51 0.871667683125 0.498332291842 +52 0.871667683125 0.541667699814 +SURF 0x10 +mat 1 +refs 4 +36 0.82833224535 0.541667699814 +35 0.82833224535 0.498332291842 +52 0.871667683125 0.498332291842 +53 0.871667683125 0.541667699814 +SURF 0x10 +mat 1 +refs 4 +37 0.82833224535 0.541667699814 +36 0.82833224535 0.498332291842 +53 0.871667683125 0.498332291842 +54 0.871667683125 0.541667699814 +SURF 0x10 +mat 1 +refs 4 +38 0.82833224535 0.541667699814 +37 0.82833224535 0.498332291842 +54 0.871667683125 0.498332291842 +55 0.871667683125 0.541667699814 +SURF 0x10 +mat 1 +refs 4 +39 0.82833224535 0.541667699814 +38 0.82833224535 0.498332291842 +55 0.871667683125 0.498332291842 +56 0.871667683125 0.541667699814 +SURF 0x10 +mat 1 +refs 4 +40 0.82833224535 0.541667699814 +39 0.82833224535 0.498332291842 +56 0.871667683125 0.498332291842 +57 0.871667683125 0.541667699814 +SURF 0x10 +mat 1 +refs 4 +41 0.82833224535 0.541667699814 +40 0.82833224535 0.498332291842 +57 0.871667683125 0.498332291842 +58 0.871667683125 0.541667699814 +SURF 0x10 +mat 1 +refs 4 +42 0.82833224535 0.541667699814 +41 0.82833224535 0.498332291842 +58 0.871667683125 0.498332291842 +59 0.871667683125 0.541667699814 +SURF 0x10 +mat 1 +refs 4 +43 0.82833224535 0.541667699814 +42 0.82833224535 0.498332291842 +59 0.871667683125 0.498332291842 +60 0.871667683125 0.541667699814 +SURF 0x10 +mat 1 +refs 4 +44 0.82833224535 0.541667699814 +43 0.82833224535 0.498332291842 +60 0.871667683125 0.498332291842 +46 0.871667683125 0.541667699814 +kids 0 +OBJECT poly +name "CTL-62.toggle" +data 8 +Mesh.003 +texture "ctl-62.png" +texrep 1 1 +crease 50.000000 +numvert 16 +0.00288 0.013648 -0.023997 +0.00288 0.0122 -0.023997 +0.00288 0.011176 -0.022972 +0.00288 0.011176 -0.021524 +0.00288 0.0122 -0.0205 +0.00288 0.013648 -0.0205 +0.00288 0.014672 -0.021524 +0.00288 0.014672 -0.022973 +0.009506 0.014166 -0.025409 +0.009506 0.011682 -0.025409 +0.009506 0.011463 -0.025282 +0.009506 0.011464 -0.019214 +0.009506 0.011682 -0.019088 +0.009506 0.014166 -0.019088 +0.009506 0.014385 -0.019215 +0.009506 0.014384 -0.025283 +numsurf 11 +SURF 0x10 +mat 1 +refs 4 +1 0.403194278479 0.371655732393 +0 0.403194278479 0.337494283915 +8 0.437355726957 0.337494283915 +9 0.437355726957 0.371655732393 +SURF 0x10 +mat 1 +refs 4 +2 0.403194278479 0.371655732393 +1 0.403194278479 0.337494283915 +9 0.437355726957 0.337494283915 +10 0.437355726957 0.371655732393 +SURF 0x10 +mat 1 +refs 4 +3 0.403194278479 0.371655732393 +2 0.403194278479 0.337494283915 +10 0.437355726957 0.337494283915 +11 0.437355726957 0.371655732393 +SURF 0x10 +mat 1 +refs 4 +4 0.403194278479 0.371655732393 +3 0.403194278479 0.337494283915 +11 0.437355726957 0.337494283915 +12 0.437355726957 0.371655732393 +SURF 0x10 +mat 1 +refs 4 +5 0.403194278479 0.371655732393 +4 0.403194278479 0.337494283915 +12 0.437355726957 0.337494283915 +13 0.437355726957 0.371655732393 +SURF 0x10 +mat 1 +refs 4 +6 0.403194278479 0.371655732393 +5 0.403194278479 0.337494283915 +13 0.437355726957 0.337494283915 +14 0.437355726957 0.371655732393 +SURF 0x10 +mat 1 +refs 4 +7 0.403194278479 0.371655732393 +6 0.403194278479 0.337494283915 +14 0.437355726957 0.337494283915 +15 0.437355726957 0.371655732393 +SURF 0x10 +mat 1 +refs 4 +8 0.403194278479 0.371655732393 +0 0.403194278479 0.337494283915 +7 0.437355726957 0.337494283915 +15 0.437355726957 0.371655732393 +SURF 0x10 +mat 1 +refs 4 +11 0.403194278479 0.371655732393 +14 0.403194278479 0.337494283915 +13 0.437355726957 0.337494283915 +12 0.437355726957 0.371655732393 +SURF 0x10 +mat 1 +refs 4 +8 0.403194278479 0.371655732393 +15 0.403194278479 0.337494283915 +10 0.437355726957 0.337494283915 +9 0.437355726957 0.371655732393 +SURF 0x10 +mat 1 +refs 4 +10 0.403194278479 0.371655732393 +15 0.403194278479 0.337494283915 +14 0.437355726957 0.337494283915 +11 0.437355726957 0.371655732393 +kids 0 +OBJECT poly +name "CTL-62.vol" +data 8 +Mesh.004 +texture "ctl-62.png" +texrep 1 1 +crease 40.000000 +numvert 33 +0.011467 -0.016005 0.016157 +0.011479 -0.017093 0.016853 +0.011467 -0.018365 0.01708 +0.011466 -0.019627 0.016803 +0.011476 -0.020687 0.016064 +0.011475 -0.021385 0.014977 +0.011474 -0.021612 0.013705 +0.011464 -0.021335 0.012443 +0.011463 -0.020596 0.011384 +0.011471 -0.019508 0.010686 +0.011463 -0.018237 0.01046 +0.011464 -0.016975 0.010736 +0.011474 -0.015914 0.011473 +0.011475 -0.015218 0.012561 +0.011476 -0.01499 0.013833 +0.011466 -0.015266 0.015096 +0.018907 -0.015266 0.015095 +0.018897 -0.01499 0.013833 +0.018896 -0.015217 0.012562 +0.018896 -0.015914 0.011474 +0.018906 -0.016975 0.010736 +0.018905 -0.018237 0.010458 +0.018893 -0.019508 0.010686 +0.018905 -0.020596 0.011382 +0.018906 -0.021336 0.012443 +0.018896 -0.021611 0.013705 +0.018896 -0.021385 0.014978 +0.018897 -0.020688 0.016065 +0.018907 -0.019628 0.016803 +0.018908 -0.018366 0.017079 +0.0189 -0.017093 0.016853 +0.018908 -0.016006 0.016155 +0.018896 -0.018301 0.013769 +numsurf 32 +SURF 0x10 +mat 1 +refs 4 +14 0.0525224171579 0.855924844742 +15 0.0525224171579 0.803254663944 +16 0.105192601681 0.803254663944 +17 0.105192601681 0.855924844742 +SURF 0x10 +mat 1 +refs 4 +13 0.0525224171579 0.855924844742 +14 0.0525224171579 0.803254663944 +17 0.105192601681 0.803254663944 +18 0.105192601681 0.855924844742 +SURF 0x10 +mat 1 +refs 4 +12 0.0525224171579 0.855924844742 +13 0.0525224171579 0.803254663944 +18 0.105192601681 0.803254663944 +19 0.105192601681 0.855924844742 +SURF 0x10 +mat 1 +refs 4 +11 0.0525224171579 0.855924844742 +12 0.0525224171579 0.803254663944 +19 0.105192601681 0.803254663944 +20 0.105192601681 0.855924844742 +SURF 0x10 +mat 1 +refs 4 +10 0.0525224171579 0.855924844742 +11 0.0525224171579 0.803254663944 +20 0.105192601681 0.803254663944 +21 0.105192601681 0.855924844742 +SURF 0x10 +mat 1 +refs 4 +9 0.0525224171579 0.855924844742 +10 0.0525224171579 0.803254663944 +21 0.105192601681 0.803254663944 +22 0.105192601681 0.855924844742 +SURF 0x10 +mat 1 +refs 4 +8 0.0525224171579 0.855924844742 +9 0.0525224171579 0.803254663944 +22 0.105192601681 0.803254663944 +23 0.105192601681 0.855924844742 +SURF 0x10 +mat 1 +refs 4 +7 0.0525224171579 0.855924844742 +8 0.0525224171579 0.803254663944 +23 0.105192601681 0.803254663944 +24 0.105192601681 0.855924844742 +SURF 0x10 +mat 1 +refs 4 +6 0.0525224171579 0.855924844742 +7 0.0525224171579 0.803254663944 +24 0.105192601681 0.803254663944 +25 0.105192601681 0.855924844742 +SURF 0x10 +mat 1 +refs 4 +5 0.0525224171579 0.855924844742 +6 0.0525224171579 0.803254663944 +25 0.105192601681 0.803254663944 +26 0.105192601681 0.855924844742 +SURF 0x10 +mat 1 +refs 4 +4 0.0525224171579 0.855924844742 +5 0.0525224171579 0.803254663944 +26 0.105192601681 0.803254663944 +27 0.105192601681 0.855924844742 +SURF 0x10 +mat 1 +refs 4 +3 0.0525224171579 0.855924844742 +4 0.0525224171579 0.803254663944 +27 0.105192601681 0.803254663944 +28 0.105192601681 0.855924844742 +SURF 0x10 +mat 1 +refs 4 +2 0.0525224171579 0.855924844742 +3 0.0525224171579 0.803254663944 +28 0.105192601681 0.803254663944 +29 0.105192601681 0.855924844742 +SURF 0x10 +mat 1 +refs 4 +1 0.0525224171579 0.855924844742 +2 0.0525224171579 0.803254663944 +29 0.105192601681 0.803254663944 +30 0.105192601681 0.855924844742 +SURF 0x10 +mat 1 +refs 4 +0 0.0525224171579 0.855924844742 +1 0.0525224171579 0.803254663944 +30 0.105192601681 0.803254663944 +31 0.105192601681 0.855924844742 +SURF 0x10 +mat 1 +refs 4 +15 0.0525224171579 0.855924844742 +0 0.0525224171579 0.803254663944 +31 0.105192601681 0.803254663944 +16 0.105192601681 0.855924844742 +SURF 0x10 +mat 1 +refs 3 +32 0.217911168933 0.308764845133 +17 0.253559589386 0.330276489258 +16 0.242618411779 0.342267304659 +SURF 0x10 +mat 1 +refs 3 +32 0.217911168933 0.308764845133 +18 0.259069114923 0.314998298883 +17 0.253559589386 0.330276489258 +SURF 0x10 +mat 1 +refs 3 +32 0.217911168933 0.308764845133 +19 0.258329153061 0.298784583807 +18 0.259069114923 0.314998298883 +SURF 0x10 +mat 1 +refs 3 +32 0.217911168933 0.308764845133 +20 0.251420378685 0.28407022357 +19 0.258329153061 0.298784583807 +SURF 0x10 +mat 1 +refs 3 +32 0.217911168933 0.308764845133 +21 0.239420965314 0.27312335372 +20 0.251420378685 0.28407022357 +SURF 0x10 +mat 1 +refs 3 +32 0.217911168933 0.308764845133 +22 0.224143624306 0.267613887787 +21 0.239420965314 0.27312335372 +SURF 0x10 +mat 1 +refs 3 +32 0.217911168933 0.308764845133 +23 0.207920014858 0.26835244894 +22 0.224143624306 0.267613887787 +SURF 0x10 +mat 1 +refs 3 +32 0.217911168933 0.308764845133 +24 0.193217262626 0.275255173445 +23 0.207920014858 0.26835244894 +SURF 0x10 +mat 1 +refs 3 +32 0.217911168933 0.308764845133 +25 0.182273030281 0.287265688181 +24 0.193217262626 0.275255173445 +SURF 0x10 +mat 1 +refs 3 +32 0.217911168933 0.308764845133 +26 0.176751494408 0.302543014288 +25 0.182273030281 0.287265688181 +SURF 0x10 +mat 1 +refs 3 +32 0.217911168933 0.308764845133 +27 0.177503541112 0.318757563829 +26 0.176751494408 0.302543014288 +SURF 0x10 +mat 1 +refs 3 +32 0.217911168933 0.308764845133 +28 0.184403434396 0.333450436592 +27 0.177503541112 0.318757563829 +SURF 0x10 +mat 1 +refs 3 +32 0.217911168933 0.308764845133 +29 0.196402996778 0.34439638257 +28 0.184403434396 0.333450436592 +SURF 0x10 +mat 1 +refs 3 +32 0.217911168933 0.308764845133 +30 0.211677148938 0.349926501513 +29 0.196402996778 0.34439638257 +SURF 0x10 +mat 1 +refs 3 +32 0.217911168933 0.308764845133 +31 0.227903932333 0.34916728735 +30 0.211677148938 0.349926501513 +SURF 0x10 +mat 1 +refs 3 +32 0.217911168933 0.308764845133 +16 0.242618411779 0.342267304659 +31 0.227903932333 0.34916728735 +kids 0 +OBJECT poly +name "CTL-62.xfr" +data 8 +Mesh.005 +texture "ctl-62.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.003175 0.012924 -0.017239 +0.003175 0.012924 -0.027258 +0.003175 0.023253 -0.017239 +0.003175 0.023253 -0.027258 +numsurf 1 +SURF 0x00 +mat 2 +refs 4 +2 0.638291537762 0.856310725212 +0 0.638291478157 0.725111961365 +1 0.765544474125 0.72511190176 +3 0.765544474125 0.856310606003 +kids 0 +OBJECT poly +name "act.btn" +data 8 +Mesh.006 +texture "ctl-62.png" +texrep 1 1 +crease 40.000000 +numvert 24 +0.004243 -0.026244 -0.016292 +0.004243 -0.02737 -0.017417 +0.004243 -0.028962 -0.017417 +0.004243 -0.030088 -0.016292 +0.004243 -0.030088 -0.0147 +0.004243 -0.028962 -0.013574 +0.004243 -0.02737 -0.013574 +0.004243 -0.026244 -0.0147 +0.002926 -0.026244 -0.016292 +0.002926 -0.02737 -0.017417 +0.002926 -0.028962 -0.017417 +0.002926 -0.030088 -0.016292 +0.002926 -0.030088 -0.0147 +0.002926 -0.028962 -0.013574 +0.002926 -0.02737 -0.013574 +0.002926 -0.026244 -0.0147 +0.004485 -0.026466 -0.014792 +0.004485 -0.027462 -0.013796 +0.004485 -0.02887 -0.013796 +0.004485 -0.029866 -0.014792 +0.004485 -0.029866 -0.0162 +0.004485 -0.02887 -0.017195 +0.004485 -0.027462 -0.017195 +0.004485 -0.026466 -0.0162 +numsurf 19 +SURF 0x10 +mat 1 +refs 4 +0 0.426579475403 0.37008485198 +1 0.435408592224 0.36124792695 +9 0.435408592224 0.36124792695 +8 0.426579475403 0.37008485198 +SURF 0x10 +mat 1 +refs 4 +1 0.435408592224 0.36124792695 +2 0.435408592224 0.348753720522 +10 0.435408592224 0.348753720522 +9 0.435408592224 0.36124792695 +SURF 0x10 +mat 1 +refs 4 +2 0.435408592224 0.348753720522 +3 0.426579475403 0.339916795492 +11 0.426579475403 0.339916795492 +10 0.435408592224 0.348753720522 +SURF 0x10 +mat 1 +refs 4 +3 0.426579475403 0.339916795492 +4 0.414085328579 0.339916795492 +12 0.414085328579 0.339916795492 +11 0.426579475403 0.339916795492 +SURF 0x10 +mat 1 +refs 4 +4 0.414085328579 0.339916795492 +5 0.405248343945 0.348753720522 +13 0.405248343945 0.348753720522 +12 0.414085328579 0.339916795492 +SURF 0x10 +mat 1 +refs 4 +5 0.405248343945 0.348753720522 +6 0.405248343945 0.36124792695 +14 0.405248343945 0.36124792695 +13 0.405248343945 0.348753720522 +SURF 0x10 +mat 1 +refs 4 +6 0.405248343945 0.36124792695 +7 0.414085328579 0.37008485198 +15 0.414085328579 0.37008485198 +14 0.405248343945 0.36124792695 +SURF 0x10 +mat 1 +refs 4 +7 0.414085328579 0.37008485198 +0 0.426579475403 0.37008485198 +8 0.426579475403 0.37008485198 +15 0.414085328579 0.37008485198 +SURF 0x10 +mat 1 +refs 4 +0 0.426579475403 0.37008485198 +7 0.414085328579 0.37008485198 +16 0.414807319641 0.368342548609 +23 0.425857484341 0.368342548609 +SURF 0x10 +mat 1 +refs 4 +7 0.414085328579 0.37008485198 +6 0.405248343945 0.36124792695 +17 0.406990647316 0.360525846481 +16 0.414807319641 0.368342548609 +SURF 0x10 +mat 1 +refs 4 +6 0.405248343945 0.36124792695 +5 0.405248343945 0.348753720522 +18 0.406990647316 0.349475771189 +17 0.406990647316 0.360525846481 +SURF 0x10 +mat 1 +refs 4 +5 0.405248343945 0.348753720522 +4 0.414085328579 0.339916795492 +19 0.414807319641 0.341659069061 +18 0.406990647316 0.349475771189 +SURF 0x10 +mat 1 +refs 4 +4 0.414085328579 0.339916795492 +3 0.426579475403 0.339916795492 +20 0.425857484341 0.341659069061 +19 0.414807319641 0.341659069061 +SURF 0x10 +mat 1 +refs 4 +3 0.426579475403 0.339916795492 +2 0.435408592224 0.348753720522 +21 0.433666348457 0.349475771189 +20 0.425857484341 0.341659069061 +SURF 0x10 +mat 1 +refs 4 +2 0.435408592224 0.348753720522 +1 0.435408592224 0.36124792695 +22 0.433666348457 0.360525846481 +21 0.433666348457 0.349475771189 +SURF 0x10 +mat 1 +refs 4 +1 0.435408592224 0.36124792695 +0 0.426579475403 0.37008485198 +23 0.425857484341 0.368342548609 +22 0.433666348457 0.360525846481 +SURF 0x10 +mat 1 +refs 4 +23 0.425857484341 0.368342548609 +16 0.414807319641 0.368342548609 +17 0.406990647316 0.360525846481 +22 0.433666348457 0.360525846481 +SURF 0x10 +mat 1 +refs 4 +22 0.433666348457 0.360525846481 +17 0.406990647316 0.360525846481 +18 0.406990647316 0.349475771189 +21 0.433666348457 0.349475771189 +SURF 0x10 +mat 1 +refs 4 +21 0.433666348457 0.349475771189 +18 0.406990647316 0.349475771189 +19 0.414807319641 0.341659069061 +20 0.425857484341 0.341659069061 +kids 0 +OBJECT poly +name "freq.001" +data 8 +Mesh.007 +texture "ctl-62.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.003139 0.025297 0.014946 +0.003139 0.018003 0.016019 +0.003139 0.018003 0.020611 +0.003139 0.025297 0.019538 +numsurf 1 +SURF 0x00 +mat 3 +refs 4 +0 0.979923069477 0.0980069637299 +3 0.920508384705 0.0980069637299 +2 0.920508384705 0.0035574734211 +1 0.979923069477 0.0035574734211 +kids 0 +OBJECT poly +name "freq.002" +data 8 +Mesh.008 +texture "ctl-62.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.003139 0.025297 0.008783 +0.003139 0.018003 0.009856 +0.003139 0.018003 0.014449 +0.003139 0.025297 0.013376 +numsurf 1 +SURF 0x00 +mat 3 +refs 4 +0 0.979923069477 0.0980069637299 +3 0.920508384705 0.0980069637299 +2 0.920508384705 0.0035574734211 +1 0.979923069477 0.0035574734211 +kids 0 +OBJECT poly +name "freq.003" +data 8 +Mesh.009 +texture "ctl-62.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.003139 0.025297 0.001851 +0.003139 0.018003 0.002924 +0.003139 0.018003 0.007517 +0.003139 0.025297 0.006444 +numsurf 1 +SURF 0x00 +mat 3 +refs 4 +0 0.979923069477 0.0980069637299 +3 0.920508384705 0.0980069637299 +2 0.920508384705 0.0035574734211 +1 0.979923069477 0.0035574734211 +kids 0 +OBJECT poly +name "freq.004" +data 8 +Mesh.010 +texture "ctl-62.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.003139 0.025297 -0.005082 +0.003139 0.018003 -0.004009 +0.003139 0.018003 0.000584 +0.003139 0.025297 -0.000489 +numsurf 1 +SURF 0x00 +mat 3 +refs 4 +0 0.979923069477 0.0980069637299 +3 0.920508384705 0.0980069637299 +2 0.920508384705 0.0035574734211 +1 0.979923069477 0.0035574734211 +kids 0 +OBJECT poly +name "freq.005" +data 8 +Mesh.011 +texture "ctl-62.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.003139 0.025297 -0.012448 +0.003139 0.018003 -0.011375 +0.003139 0.018003 -0.006782 +0.003139 0.025297 -0.007855 +numsurf 1 +SURF 0x00 +mat 3 +refs 4 +0 0.979923069477 0.0980069637299 +3 0.920508384705 0.0980069637299 +2 0.920508384705 0.0035574734211 +1 0.979923069477 0.0035574734211 +kids 0 +OBJECT poly +name "freq.dec" +data 8 +Mesh.012 +texture "ctl-62.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.003202 0.019053 -0.00615 +0.003202 0.01806 -0.005908 +0.003202 0.01806 -0.004872 +0.003202 0.019053 -0.005114 +numsurf 1 +SURF 0x00 +mat 3 +refs 4 +0 0.933840274811 0.0771778821945 +3 0.925696730614 0.0771778821945 +2 0.925696730614 0.0642324090004 +1 0.933840274811 0.0642324090004 +kids 0 +OBJECT poly +name "freq.dwn" +data 8 +Mesh.013 +texture "ctl-62.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.003022 -0.006662 -0.017042 +0.003022 -0.02423 -0.017042 +0.003022 -0.006662 -0.008258 +0.003022 -0.02423 -0.008258 +numsurf 1 +SURF 0x00 +mat 1 +refs 4 +0 0.628464281559 0.464825630188 +2 0.508616089821 0.464825630188 +3 0.508616030216 0.2251290977 +1 0.628464281559 0.2251290977 +kids 0 +OBJECT poly +name "freq.knob.large" +data 8 +Mesh.014 +texture "ctl-62.png" +texrep 1 1 +crease 40.000000 +numvert 48 +0.011502 -0.011309 -0.02118 +0.0115 -0.013207 -0.022448 +0.011494 -0.015446 -0.022894 +0.0115 -0.017686 -0.022448 +0.011497 -0.019584 -0.02118 +0.011502 -0.020853 -0.019281 +0.011504 -0.021299 -0.017042 +0.011502 -0.020853 -0.014802 +0.011497 -0.019584 -0.012904 +0.0115 -0.017686 -0.011635 +0.011494 -0.015446 -0.01119 +0.0115 -0.013207 -0.011635 +0.011502 -0.011309 -0.012904 +0.011497 -0.010039 -0.014802 +0.011495 -0.009593 -0.017042 +0.011497 -0.010039 -0.019281 +0.010891 -0.007442 -0.020357 +0.010893 -0.006782 -0.017042 +0.010891 -0.007442 -0.013726 +0.010893 -0.00932 -0.010916 +0.010889 -0.01213 -0.009038 +0.010889 -0.015446 -0.008378 +0.010888 -0.018762 -0.009038 +0.010896 -0.021574 -0.010916 +0.010886 -0.02345 -0.013726 +0.010895 -0.024111 -0.017041 +0.010886 -0.02345 -0.020357 +0.010896 -0.021574 -0.023168 +0.010888 -0.018762 -0.025047 +0.010889 -0.015446 -0.025706 +0.010889 -0.01213 -0.025047 +0.010893 -0.00932 -0.023168 +0.003025 -0.007441 -0.020357 +0.003027 -0.006783 -0.017042 +0.003025 -0.007441 -0.013726 +0.003026 -0.00932 -0.010916 +0.003023 -0.012131 -0.009038 +0.003022 -0.015446 -0.008378 +0.003022 -0.018762 -0.009038 +0.00303 -0.021574 -0.010916 +0.003031 -0.023452 -0.013726 +0.003029 -0.024112 -0.017042 +0.003031 -0.023452 -0.020357 +0.00303 -0.021574 -0.023168 +0.003022 -0.018762 -0.025047 +0.003022 -0.015446 -0.025706 +0.003023 -0.012131 -0.025047 +0.003026 -0.00932 -0.023168 +numsurf 32 +SURF 0x10 +mat 1 +refs 4 +0 0.681315302849 0.39272326231 +1 0.696943879128 0.369354456663 +30 0.72895103693 0.382609218359 +31 0.705807030201 0.417218744755 +SURF 0x10 +mat 1 +refs 4 +29 0.737064003944 0.341771930456 +30 0.72895103693 0.382609218359 +1 0.696943879128 0.369354456663 +2 0.702431261539 0.341774225235 +SURF 0x10 +mat 1 +refs 4 +28 0.72895103693 0.300935894251 +29 0.737064003944 0.341771930456 +2 0.702431261539 0.341774225235 +3 0.696943879128 0.314183682203 +SURF 0x10 +mat 1 +refs 4 +27 0.705806910992 0.266300916672 +28 0.72895103693 0.300935894251 +3 0.696943879128 0.314183682203 +4 0.681315302849 0.290801167488 +SURF 0x10 +mat 1 +refs 4 +26 0.671187996864 0.243188887835 +27 0.705806910992 0.266300916672 +4 0.681315302849 0.290801167488 +5 0.657934963703 0.275174319744 +SURF 0x10 +mat 1 +refs 4 +25 0.630345463753 0.235042914748 +26 0.671187996864 0.243188887835 +5 0.657934963703 0.275174319744 +6 0.63035929203 0.269683331251 +SURF 0x10 +mat 1 +refs 4 +24 0.589516758919 0.243188887835 +25 0.630345463753 0.235042914748 +6 0.63035929203 0.269683331251 +7 0.602769732475 0.275174379349 +SURF 0x10 +mat 1 +refs 4 +23 0.554897606373 0.266300976276 +24 0.589516758919 0.243188887835 +7 0.602769732475 0.275174379349 +8 0.579389333725 0.290801227093 +SURF 0x10 +mat 1 +refs 4 +22 0.531767487526 0.300935894251 +23 0.554897606373 0.266300976276 +8 0.579389333725 0.290801227093 +9 0.563760757446 0.314183682203 +SURF 0x10 +mat 1 +refs 4 +21 0.52364051342 0.341771930456 +22 0.531767487526 0.300935894251 +9 0.563760757446 0.314183682203 +10 0.558273494244 0.341774344444 +SURF 0x10 +mat 1 +refs 4 +20 0.531767487526 0.382609218359 +21 0.52364051342 0.341771930456 +10 0.558273494244 0.341774344444 +11 0.563760757446 0.369354456663 +SURF 0x10 +mat 1 +refs 4 +19 0.554897606373 0.417218744755 +20 0.531767487526 0.382609218359 +11 0.563760757446 0.369354456663 +12 0.579389333725 0.39272326231 +SURF 0x10 +mat 1 +refs 4 +18 0.589516758919 0.440356194973 +19 0.554897606373 0.417218744755 +12 0.579389333725 0.39272326231 +13 0.602769732475 0.408364892006 +SURF 0x10 +mat 1 +refs 4 +17 0.63035929203 0.448476850986 +18 0.589516758919 0.440356194973 +13 0.602769732475 0.408364892006 +14 0.63035929203 0.413855850697 +SURF 0x10 +mat 1 +refs 4 +16 0.671188056469 0.440356194973 +17 0.63035929203 0.448476850986 +14 0.63035929203 0.413855850697 +15 0.657934963703 0.408364892006 +SURF 0x10 +mat 1 +refs 4 +15 0.657934963703 0.408364892006 +0 0.681315302849 0.39272326231 +31 0.705807030201 0.417218744755 +16 0.671188056469 0.440356194973 +SURF 0x10 +mat 1 +refs 4 +31 0.0603405237198 0.71993303299 +47 0.0603405237198 0.621863663197 +32 0.158409923315 0.621863663197 +16 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +33 0.0603405237198 0.71993303299 +17 0.0603405237198 0.621863663197 +16 0.158409923315 0.621863663197 +32 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +34 0.0603405237198 0.71993303299 +18 0.0603405237198 0.621863663197 +17 0.158409923315 0.621863663197 +33 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +35 0.0603405237198 0.71993303299 +19 0.0603405237198 0.621863663197 +18 0.158409923315 0.621863663197 +34 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +36 0.0603405237198 0.71993303299 +20 0.0603405237198 0.621863663197 +19 0.158409923315 0.621863663197 +35 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +37 0.0603405237198 0.71993303299 +21 0.0603405237198 0.621863663197 +20 0.158409923315 0.621863663197 +36 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +38 0.0603405237198 0.71993303299 +22 0.0603405237198 0.621863663197 +21 0.158409923315 0.621863663197 +37 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +39 0.0603405237198 0.71993303299 +23 0.0603405237198 0.621863663197 +22 0.158409923315 0.621863663197 +38 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +40 0.0603405237198 0.71993303299 +24 0.0603405237198 0.621863663197 +23 0.158409923315 0.621863663197 +39 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +41 0.0603405237198 0.71993303299 +25 0.0603405237198 0.621863663197 +24 0.158409923315 0.621863663197 +40 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +42 0.0603405237198 0.71993303299 +26 0.0603405237198 0.621863663197 +25 0.158409923315 0.621863663197 +41 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +43 0.0603405237198 0.71993303299 +27 0.0603405237198 0.621863663197 +26 0.158409923315 0.621863663197 +42 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +44 0.0603405237198 0.71993303299 +28 0.0603405237198 0.621863663197 +27 0.158409923315 0.621863663197 +43 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +45 0.0603405237198 0.71993303299 +29 0.0603405237198 0.621863663197 +28 0.158409923315 0.621863663197 +44 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +46 0.0603405237198 0.71993303299 +30 0.0603405237198 0.621863663197 +29 0.158409923315 0.621863663197 +45 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +47 0.0603405237198 0.71993303299 +31 0.0603405237198 0.621863663197 +30 0.158409923315 0.621863663197 +46 0.158409923315 0.71993303299 +kids 0 +OBJECT poly +name "freq.knob.small" +data 8 +Mesh.028 +texture "ctl-62.png" +texrep 1 1 +crease 40.000000 +numvert 33 +0.02046 -0.015446 -0.017042 +0.020463 -0.01004 -0.019281 +0.020461 -0.009594 -0.017042 +0.020463 -0.01004 -0.014802 +0.020468 -0.01131 -0.012904 +0.020465 -0.013207 -0.011635 +0.02046 -0.015446 -0.01119 +0.020466 -0.017686 -0.011635 +0.020463 -0.019585 -0.012904 +0.020468 -0.020854 -0.014802 +0.020459 -0.021298 -0.017042 +0.020468 -0.020854 -0.019281 +0.020463 -0.019585 -0.02118 +0.020466 -0.017686 -0.022448 +0.02046 -0.015446 -0.022894 +0.020465 -0.013207 -0.022448 +0.020468 -0.01131 -0.02118 +0.010502 -0.011309 -0.02118 +0.0105 -0.013207 -0.022448 +0.010494 -0.015446 -0.022894 +0.0105 -0.017686 -0.022448 +0.010497 -0.019584 -0.02118 +0.010502 -0.020853 -0.019281 +0.010504 -0.021299 -0.017042 +0.010502 -0.020853 -0.014802 +0.010497 -0.019584 -0.012904 +0.0105 -0.017686 -0.011635 +0.010494 -0.015446 -0.01119 +0.0105 -0.013207 -0.011635 +0.010502 -0.011309 -0.012904 +0.010497 -0.010039 -0.014802 +0.010495 -0.009593 -0.017042 +0.010497 -0.010039 -0.019281 +numsurf 32 +SURF 0x10 +mat 1 +refs 3 +0 0.63035929203 0.341769099236 +16 0.681315302849 0.392718017101 +1 0.657934963703 0.408358514309 +SURF 0x10 +mat 1 +refs 3 +0 0.63035929203 0.341769099236 +1 0.657934963703 0.408358514309 +2 0.63035929203 0.413849562407 +SURF 0x10 +mat 1 +refs 3 +0 0.63035929203 0.341769099236 +2 0.63035929203 0.413849562407 +3 0.602769732475 0.408358514309 +SURF 0x10 +mat 1 +refs 3 +0 0.63035929203 0.341769099236 +3 0.602769732475 0.408358514309 +4 0.579389333725 0.392718017101 +SURF 0x10 +mat 1 +refs 3 +0 0.63035929203 0.341769099236 +4 0.579389333725 0.392718017101 +5 0.563760757446 0.369349330664 +SURF 0x10 +mat 1 +refs 3 +0 0.63035929203 0.341769099236 +5 0.563760757446 0.369349330664 +6 0.558273494244 0.341769099236 +SURF 0x10 +mat 1 +refs 3 +0 0.63035929203 0.341769099236 +6 0.558273494244 0.341769099236 +7 0.563760757446 0.314178436995 +SURF 0x10 +mat 1 +refs 3 +0 0.63035929203 0.341769099236 +7 0.563760757446 0.314178436995 +8 0.579389333725 0.290795952082 +SURF 0x10 +mat 1 +refs 3 +0 0.63035929203 0.341769099236 +8 0.579389333725 0.290795952082 +9 0.602769732475 0.275168001652 +SURF 0x10 +mat 1 +refs 3 +0 0.63035929203 0.341769099236 +9 0.602769732475 0.275168001652 +10 0.63035929203 0.269701093435 +SURF 0x10 +mat 1 +refs 3 +0 0.63035929203 0.341769099236 +10 0.63035929203 0.269701093435 +11 0.657934963703 0.275168001652 +SURF 0x10 +mat 1 +refs 3 +0 0.63035929203 0.341769099236 +11 0.657934963703 0.275168001652 +12 0.681315302849 0.290795892477 +SURF 0x10 +mat 1 +refs 3 +0 0.63035929203 0.341769099236 +12 0.681315302849 0.290795892477 +13 0.696943879128 0.314178436995 +SURF 0x10 +mat 1 +refs 3 +0 0.63035929203 0.341769099236 +13 0.696943879128 0.314178436995 +14 0.702431261539 0.341769099236 +SURF 0x10 +mat 1 +refs 3 +0 0.63035929203 0.341769099236 +14 0.702431261539 0.341769099236 +15 0.696943879128 0.369349330664 +SURF 0x10 +mat 1 +refs 3 +0 0.63035929203 0.341769099236 +15 0.696943879128 0.369349330664 +16 0.681315302849 0.392718017101 +SURF 0x10 +mat 1 +refs 4 +17 0.0603405237198 0.71993303299 +32 0.0603405237198 0.621863663197 +1 0.158409923315 0.621863663197 +16 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +32 0.0603405237198 0.71993303299 +31 0.0603405237198 0.621863663197 +2 0.158409923315 0.621863663197 +1 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +31 0.0603405237198 0.71993303299 +30 0.0603405237198 0.621863663197 +3 0.158409923315 0.621863663197 +2 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +30 0.0603405237198 0.71993303299 +29 0.0603405237198 0.621863663197 +4 0.158409923315 0.621863663197 +3 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +29 0.0603405237198 0.71993303299 +28 0.0603405237198 0.621863663197 +5 0.158409923315 0.621863663197 +4 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +28 0.0603405237198 0.71993303299 +27 0.0603405237198 0.621863663197 +6 0.158409923315 0.621863663197 +5 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +27 0.0603405237198 0.71993303299 +26 0.0603405237198 0.621863663197 +7 0.158409923315 0.621863663197 +6 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +26 0.0603405237198 0.71993303299 +25 0.0603405237198 0.621863663197 +8 0.158409923315 0.621863663197 +7 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +25 0.0603405237198 0.71993303299 +24 0.0603405237198 0.621863663197 +9 0.158409923315 0.621863663197 +8 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +24 0.0603405237198 0.71993303299 +23 0.0603405237198 0.621863663197 +10 0.158409923315 0.621863663197 +9 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +23 0.0603405237198 0.71993303299 +22 0.0603405237198 0.621863663197 +11 0.158409923315 0.621863663197 +10 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +22 0.0603405237198 0.71993303299 +21 0.0603405237198 0.621863663197 +12 0.158409923315 0.621863663197 +11 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +21 0.0603405237198 0.71993303299 +20 0.0603405237198 0.621863663197 +13 0.158409923315 0.621863663197 +12 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +20 0.0603405237198 0.71993303299 +19 0.0603405237198 0.621863663197 +14 0.158409923315 0.621863663197 +13 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +19 0.0603405237198 0.71993303299 +18 0.0603405237198 0.621863663197 +15 0.158409923315 0.621863663197 +14 0.158409923315 0.71993303299 +SURF 0x10 +mat 1 +refs 4 +18 0.0603405237198 0.71993303299 +17 0.0603405237198 0.621863663197 +16 0.158409923315 0.621863663197 +15 0.158409923315 0.71993303299 +kids 0 +OBJECT poly +name "freq.up" +data 8 +Mesh.015 +texture "ctl-62.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.003022 -0.006662 -0.017042 +0.003022 -0.02423 -0.017042 +0.003022 -0.02423 -0.025826 +0.003022 -0.006662 -0.025826 +numsurf 1 +SURF 0x00 +mat 1 +refs 4 +3 0.748312532902 0.464825630188 +0 0.628464281559 0.464825630188 +1 0.628464281559 0.2251290977 +2 0.748312532902 0.2251290977 +kids 0 +OBJECT poly +name "mem.annun" +data 8 +Mesh.016 +texture "ctl-62.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.003139 0.006882 0.01649 +0.003139 0.003499 0.016498 +0.003139 0.003499 0.02398 +0.003139 0.006882 0.023971 +numsurf 1 +SURF 0x00 +mat 3 +refs 4 +0 0.135593175888 0.0792972072959 +3 0.0378846973181 0.0792972296476 +2 0.0377717465162 0.035107113421 +1 0.135480225086 0.035107113421 +kids 0 +OBJECT poly +name "pwr.off" +data 8 +Mesh.017 +texture "ctl-62.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.002944 -0.026036 0.021504 +0.002944 -0.010631 0.021504 +0.002944 -0.026036 0.013802 +0.002944 -0.010631 0.013802 +numsurf 1 +SURF 0x00 +mat 1 +refs 4 +0 0.114473424852 0.201592057943 +2 0.220019072294 0.201592057943 +3 0.220019072294 0.412683337927 +1 0.114473424852 0.412683337927 +kids 0 +OBJECT poly +name "pwr.on" +data 8 +Mesh.018 +texture "ctl-62.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.002944 -0.010631 0.013802 +0.002944 -0.026036 0.013802 +0.002944 -0.026036 0.0061 +0.002944 -0.010632 0.0061 +numsurf 1 +SURF 0x00 +mat 1 +refs 4 +3 0.325564712286 0.412683337927 +0 0.220019072294 0.412683337927 +1 0.220019072294 0.201592057943 +2 0.325564712286 0.201592057943 +kids 0 +OBJECT poly +name "stby.001" +data 8 +Mesh.019 +texture "ctl-62.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.003139 0.016594 0.015554 +0.003139 0.0093 0.016627 +0.003139 0.0093 0.02122 +0.003139 0.016594 0.020147 +numsurf 1 +SURF 0x00 +mat 2 +refs 4 +0 0.979923069477 0.0980069637299 +3 0.920508384705 0.0980069637299 +2 0.920508384705 0.0035574734211 +1 0.979923069477 0.0035574734211 +kids 0 +OBJECT poly +name "stby.002" +data 8 +Mesh.020 +texture "ctl-62.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.003139 0.016594 0.009392 +0.003139 0.0093 0.010465 +0.003139 0.0093 0.015057 +0.003139 0.016594 0.013984 +numsurf 1 +SURF 0x00 +mat 2 +refs 4 +0 0.979923069477 0.0980069637299 +3 0.920508384705 0.0980069637299 +2 0.920508384705 0.0035574734211 +1 0.979923069477 0.0035574734211 +kids 0 +OBJECT poly +name "stby.003" +data 8 +Mesh.021 +texture "ctl-62.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.003139 0.016594 0.002459 +0.003139 0.0093 0.003532 +0.003139 0.0093 0.008125 +0.003139 0.016594 0.007052 +numsurf 1 +SURF 0x00 +mat 2 +refs 4 +0 0.979923069477 0.0980069637299 +3 0.920508384705 0.0980069637299 +2 0.920508384705 0.0035574734211 +1 0.979923069477 0.0035574734211 +kids 0 +OBJECT poly +name "stby.004" +data 8 +Mesh.022 +texture "ctl-62.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.003139 0.016594 -0.004473 +0.003139 0.0093 -0.0034 +0.003139 0.0093 0.001192 +0.003139 0.016594 0.000119 +numsurf 1 +SURF 0x00 +mat 2 +refs 4 +0 0.979923069477 0.0980069637299 +3 0.920508384705 0.0980069637299 +2 0.920508384705 0.0035574734211 +1 0.979923069477 0.0035574734211 +kids 0 +OBJECT poly +name "stby.005" +data 8 +Mesh.023 +texture "ctl-62.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.003139 0.016594 -0.011839 +0.003139 0.0093 -0.010766 +0.003139 0.0093 -0.006174 +0.003139 0.016594 -0.007247 +numsurf 1 +SURF 0x00 +mat 2 +refs 4 +0 0.979923069477 0.0980069637299 +3 0.920508384705 0.0980069637299 +2 0.920508384705 0.0035574734211 +1 0.979923069477 0.0035574734211 +kids 0 +OBJECT poly +name "stby.dec" +data 8 +Mesh.024 +texture "ctl-62.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.003202 0.01035 -0.005541 +0.003202 0.009357 -0.005299 +0.003202 0.009357 -0.004264 +0.003202 0.01035 -0.004506 +numsurf 1 +SURF 0x00 +mat 2 +refs 4 +0 0.933840274811 0.0771778821945 +3 0.925696730614 0.0771778821945 +2 0.925696730614 0.0642324090004 +1 0.933840274811 0.0642324090004 +kids 0 +OBJECT poly +name "sto.btn" +data 8 +Mesh.025 +texture "ctl-62.png" +texrep 1 1 +crease 40.000000 +numvert 24 +0.004243 -0.01313 -0.001986 +0.004243 -0.014256 -0.003111 +0.004243 -0.015848 -0.003111 +0.004243 -0.016974 -0.001986 +0.004243 -0.016974 -0.000394 +0.004243 -0.015848 0.000732 +0.004243 -0.014256 0.000732 +0.004243 -0.01313 -0.000394 +0.002926 -0.01313 -0.001986 +0.002926 -0.014256 -0.003111 +0.002926 -0.015848 -0.003111 +0.002926 -0.016974 -0.001986 +0.002926 -0.016974 -0.000394 +0.002926 -0.015848 0.000732 +0.002926 -0.014256 0.000732 +0.002926 -0.01313 -0.000394 +0.004485 -0.013353 -0.000486 +0.004485 -0.014348 0.00051 +0.004485 -0.015756 0.00051 +0.004485 -0.016752 -0.000486 +0.004485 -0.016752 -0.001894 +0.004485 -0.015756 -0.002889 +0.004485 -0.014348 -0.002889 +0.004485 -0.013353 -0.001894 +numsurf 19 +SURF 0x10 +mat 1 +refs 4 +0 0.426304638386 0.369004756212 +1 0.435133755207 0.360167771578 +9 0.435133755207 0.360167771578 +8 0.426304638386 0.369004756212 +SURF 0x10 +mat 1 +refs 4 +1 0.435133755207 0.360167771578 +2 0.435133755207 0.347673624754 +10 0.435133755207 0.347673624754 +9 0.435133755207 0.360167771578 +SURF 0x10 +mat 1 +refs 4 +2 0.435133755207 0.347673624754 +3 0.426304638386 0.338836669922 +11 0.426304638386 0.338836669922 +10 0.435133755207 0.347673624754 +SURF 0x10 +mat 1 +refs 4 +3 0.426304638386 0.338836669922 +4 0.413810491562 0.338836669922 +12 0.413810491562 0.338836669922 +11 0.426304638386 0.338836669922 +SURF 0x10 +mat 1 +refs 4 +4 0.413810491562 0.338836669922 +5 0.404973506927 0.347673624754 +13 0.404973506927 0.347673624754 +12 0.413810491562 0.338836669922 +SURF 0x10 +mat 1 +refs 4 +5 0.404973506927 0.347673624754 +6 0.404973506927 0.360167771578 +14 0.404973506927 0.360167771578 +13 0.404973506927 0.347673624754 +SURF 0x10 +mat 1 +refs 4 +6 0.404973506927 0.360167771578 +7 0.413810491562 0.369004756212 +15 0.413810491562 0.369004756212 +14 0.404973506927 0.360167771578 +SURF 0x10 +mat 1 +refs 4 +7 0.413810491562 0.369004756212 +0 0.426304638386 0.369004756212 +8 0.426304638386 0.369004756212 +15 0.413810491562 0.369004756212 +SURF 0x10 +mat 1 +refs 4 +0 0.426304638386 0.369004756212 +7 0.413810491562 0.369004756212 +16 0.414532542229 0.367254585028 +23 0.425582587719 0.367254585028 +SURF 0x10 +mat 1 +refs 4 +7 0.413810491562 0.369004756212 +6 0.404973506927 0.360167771578 +17 0.406715869904 0.359445750713 +16 0.414532542229 0.367254585028 +SURF 0x10 +mat 1 +refs 4 +6 0.404973506927 0.360167771578 +5 0.404973506927 0.347673624754 +18 0.406715869904 0.348395645618 +17 0.406715869904 0.359445750713 +SURF 0x10 +mat 1 +refs 4 +5 0.404973506927 0.347673624754 +4 0.413810491562 0.338836669922 +19 0.414532542229 0.340578913689 +18 0.406715869904 0.348395645618 +SURF 0x10 +mat 1 +refs 4 +4 0.413810491562 0.338836669922 +3 0.426304638386 0.338836669922 +20 0.425582587719 0.340578913689 +19 0.414532542229 0.340578913689 +SURF 0x10 +mat 1 +refs 4 +3 0.426304638386 0.338836669922 +2 0.435133755207 0.347673624754 +21 0.433391451836 0.348395645618 +20 0.425582587719 0.340578913689 +SURF 0x10 +mat 1 +refs 4 +2 0.435133755207 0.347673624754 +1 0.435133755207 0.360167771578 +22 0.433391451836 0.359445750713 +21 0.433391451836 0.348395645618 +SURF 0x10 +mat 1 +refs 4 +1 0.435133755207 0.360167771578 +0 0.426304638386 0.369004756212 +23 0.425582587719 0.367254585028 +22 0.433391451836 0.359445750713 +SURF 0x10 +mat 1 +refs 4 +23 0.425582587719 0.367254585028 +16 0.414532542229 0.367254585028 +17 0.406715869904 0.359445750713 +22 0.433391451836 0.359445750713 +SURF 0x10 +mat 1 +refs 4 +22 0.433391451836 0.359445750713 +17 0.406715869904 0.359445750713 +18 0.406715869904 0.348395645618 +21 0.433391451836 0.348395645618 +SURF 0x10 +mat 1 +refs 4 +21 0.433391451836 0.348395645618 +18 0.406715869904 0.348395645618 +19 0.414532542229 0.340578913689 +20 0.425582587719 0.340578913689 +kids 0 +OBJECT poly +name "test.btn" +data 8 +Mesh.026 +texture "ctl-62.png" +texrep 1 1 +crease 40.000000 +numvert 24 +0.004243 -0.026244 -0.001986 +0.004243 -0.02737 -0.003111 +0.004243 -0.028962 -0.003111 +0.004243 -0.030088 -0.001986 +0.004243 -0.030088 -0.000394 +0.004243 -0.028962 0.000732 +0.004243 -0.02737 0.000732 +0.004243 -0.026244 -0.000394 +0.002926 -0.026244 -0.001986 +0.002926 -0.02737 -0.003111 +0.002926 -0.028962 -0.003111 +0.002926 -0.030088 -0.001986 +0.002926 -0.030088 -0.000394 +0.002926 -0.028962 0.000732 +0.002926 -0.02737 0.000732 +0.002926 -0.026244 -0.000394 +0.004485 -0.026466 -0.000486 +0.004485 -0.027462 0.00051 +0.004485 -0.02887 0.00051 +0.004485 -0.029866 -0.000486 +0.004485 -0.029866 -0.001894 +0.004485 -0.02887 -0.002889 +0.004485 -0.027462 -0.002889 +0.004485 -0.026466 -0.001894 +numsurf 19 +SURF 0x10 +mat 1 +refs 4 +0 0.427904635668 0.37008485198 +1 0.436733752489 0.36124792695 +9 0.436733752489 0.36124792695 +8 0.427904635668 0.37008485198 +SURF 0x10 +mat 1 +refs 4 +1 0.436733752489 0.36124792695 +2 0.436733752489 0.348753720522 +10 0.436733752489 0.348753720522 +9 0.436733752489 0.36124792695 +SURF 0x10 +mat 1 +refs 4 +2 0.436733752489 0.348753720522 +3 0.427904635668 0.339916795492 +11 0.427904635668 0.339916795492 +10 0.436733752489 0.348753720522 +SURF 0x10 +mat 1 +refs 4 +3 0.427904635668 0.339916795492 +4 0.415410488844 0.339916795492 +12 0.415410488844 0.339916795492 +11 0.427904635668 0.339916795492 +SURF 0x10 +mat 1 +refs 4 +4 0.415410488844 0.339916795492 +5 0.406573563814 0.348753720522 +13 0.406573563814 0.348753720522 +12 0.415410488844 0.339916795492 +SURF 0x10 +mat 1 +refs 4 +5 0.406573563814 0.348753720522 +6 0.406573563814 0.36124792695 +14 0.406573563814 0.36124792695 +13 0.406573563814 0.348753720522 +SURF 0x10 +mat 1 +refs 4 +6 0.406573563814 0.36124792695 +7 0.415410488844 0.37008485198 +15 0.415410488844 0.37008485198 +14 0.406573563814 0.36124792695 +SURF 0x10 +mat 1 +refs 4 +7 0.415410488844 0.37008485198 +0 0.427904635668 0.37008485198 +8 0.427904635668 0.37008485198 +15 0.415410488844 0.37008485198 +SURF 0x10 +mat 1 +refs 4 +0 0.427904635668 0.37008485198 +7 0.415410488844 0.37008485198 +16 0.416132539511 0.368342548609 +23 0.427182585001 0.368342548609 +SURF 0x10 +mat 1 +refs 4 +7 0.415410488844 0.37008485198 +6 0.406573563814 0.36124792695 +17 0.408315867186 0.360525846481 +16 0.416132539511 0.368342548609 +SURF 0x10 +mat 1 +refs 4 +6 0.406573563814 0.36124792695 +5 0.406573563814 0.348753720522 +18 0.408315867186 0.349475771189 +17 0.408315867186 0.360525846481 +SURF 0x10 +mat 1 +refs 4 +5 0.406573563814 0.348753720522 +4 0.415410488844 0.339916795492 +19 0.416132539511 0.341659069061 +18 0.408315867186 0.349475771189 +SURF 0x10 +mat 1 +refs 4 +4 0.415410488844 0.339916795492 +3 0.427904635668 0.339916795492 +20 0.427182585001 0.341659069061 +19 0.416132539511 0.341659069061 +SURF 0x10 +mat 1 +refs 4 +3 0.427904635668 0.339916795492 +2 0.436733752489 0.348753720522 +21 0.434991449118 0.349475771189 +20 0.427182585001 0.341659069061 +SURF 0x10 +mat 1 +refs 4 +2 0.436733752489 0.348753720522 +1 0.436733752489 0.36124792695 +22 0.434991449118 0.360525846481 +21 0.434991449118 0.349475771189 +SURF 0x10 +mat 1 +refs 4 +1 0.436733752489 0.36124792695 +0 0.427904635668 0.37008485198 +23 0.427182585001 0.368342548609 +22 0.434991449118 0.360525846481 +SURF 0x10 +mat 1 +refs 4 +23 0.427182585001 0.368342548609 +16 0.416132539511 0.368342548609 +17 0.408315867186 0.360525846481 +22 0.434991449118 0.360525846481 +SURF 0x10 +mat 1 +refs 4 +22 0.434991449118 0.360525846481 +17 0.408315867186 0.360525846481 +18 0.408315867186 0.349475771189 +21 0.434991449118 0.349475771189 +SURF 0x10 +mat 1 +refs 4 +21 0.434991449118 0.349475771189 +18 0.408315867186 0.349475771189 +19 0.416132539511 0.341659069061 +20 0.427182585001 0.341659069061 +kids 0 +OBJECT poly +name "xmt.annun" +data 8 +Mesh.027 +texture "ctl-62.png" +texrep 1 1 +crease 30.000000 +numvert 25 +0.003657 -0.026232 0.007594 +0.003657 -0.027365 0.006461 +0.003657 -0.028967 0.006461 +0.003657 -0.0301 0.007594 +0.003657 -0.0301 0.009197 +0.003657 -0.028967 0.01033 +0.003657 -0.027365 0.01033 +0.003657 -0.026232 0.009197 +0.002984 -0.025837 0.007431 +0.002984 -0.027201 0.006067 +0.002984 -0.029131 0.006067 +0.002984 -0.030495 0.007431 +0.002984 -0.030495 0.00936 +0.002984 -0.02913 0.010724 +0.002984 -0.027201 0.010724 +0.002984 -0.025837 0.00936 +0.00403 -0.027153 0.008815 +0.00403 -0.027746 0.009409 +0.00403 -0.028586 0.009409 +0.00403 -0.029179 0.008815 +0.00403 -0.029179 0.007976 +0.00403 -0.028586 0.007382 +0.00403 -0.027746 0.007382 +0.00403 -0.027153 0.007976 +0.004171 -0.028166 0.008395 +numsurf 24 +SURF 0x10 +mat 1 +refs 4 +0 0.306933730841 0.200225278735 +1 0.318501800299 0.188657224178 +9 0.322524517775 0.190331682563 +8 0.30859798193 0.204258263111 +SURF 0x10 +mat 1 +refs 4 +1 0.318501800299 0.188657224178 +2 0.318501800299 0.172300755978 +10 0.322524517775 0.170626237988 +9 0.322524517775 0.190331682563 +SURF 0x10 +mat 1 +refs 4 +2 0.318501800299 0.172300755978 +3 0.306933730841 0.160732701421 +11 0.30859798193 0.156699717045 +10 0.322524517775 0.170626237988 +SURF 0x10 +mat 1 +refs 4 +3 0.306933730841 0.160732701421 +4 0.290566951036 0.160732701421 +12 0.288902699947 0.156699717045 +11 0.30859798193 0.156699717045 +SURF 0x10 +mat 1 +refs 4 +4 0.290566951036 0.160732701421 +5 0.278998970985 0.172300755978 +13 0.274976164103 0.170636430383 +12 0.288902699947 0.156699717045 +SURF 0x10 +mat 1 +refs 4 +5 0.278998970985 0.172300755978 +6 0.278998970985 0.188657224178 +14 0.274976164103 0.190331682563 +13 0.274976164103 0.170636430383 +SURF 0x10 +mat 1 +refs 4 +6 0.278998970985 0.188657224178 +7 0.290566951036 0.200225278735 +15 0.288902699947 0.204258263111 +14 0.274976164103 0.190331682563 +SURF 0x10 +mat 1 +refs 4 +7 0.290566951036 0.200225278735 +0 0.306933730841 0.200225278735 +8 0.30859798193 0.204258263111 +15 0.288902699947 0.204258263111 +SURF 0x10 +mat 1 +refs 4 +0 0.306933730841 0.200225278735 +7 0.290566951036 0.200225278735 +16 0.294467270374 0.190821796656 +23 0.30303350091 0.190821796656 +SURF 0x10 +mat 1 +refs 4 +7 0.290566951036 0.200225278735 +6 0.278998970985 0.188657224178 +17 0.288402467966 0.184767216444 +16 0.294467270374 0.190821796656 +SURF 0x10 +mat 1 +refs 4 +6 0.278998970985 0.188657224178 +5 0.278998970985 0.172300755978 +18 0.288402467966 0.176190719008 +17 0.288402467966 0.184767216444 +SURF 0x10 +mat 1 +refs 4 +5 0.278998970985 0.172300755978 +4 0.290566951036 0.160732701421 +19 0.294467270374 0.1701361835 +18 0.288402467966 0.176190719008 +SURF 0x10 +mat 1 +refs 4 +4 0.290566951036 0.160732701421 +3 0.306933730841 0.160732701421 +20 0.30303350091 0.1701361835 +19 0.294467270374 0.1701361835 +SURF 0x10 +mat 1 +refs 4 +3 0.306933730841 0.160732701421 +2 0.318501800299 0.172300755978 +21 0.309098213911 0.176190719008 +20 0.30303350091 0.1701361835 +SURF 0x10 +mat 1 +refs 4 +2 0.318501800299 0.172300755978 +1 0.318501800299 0.188657224178 +22 0.309098213911 0.184767216444 +21 0.309098213911 0.176190719008 +SURF 0x10 +mat 1 +refs 4 +1 0.318501800299 0.188657224178 +0 0.306933730841 0.200225278735 +23 0.30303350091 0.190821796656 +22 0.309098213911 0.184767216444 +SURF 0x10 +mat 1 +refs 3 +23 0.30303350091 0.190821796656 +16 0.294467270374 0.190821796656 +24 0.298755466938 0.180478990078 +SURF 0x10 +mat 1 +refs 3 +16 0.294467270374 0.190821796656 +17 0.288402467966 0.184767216444 +24 0.298755466938 0.180478990078 +SURF 0x10 +mat 1 +refs 3 +17 0.288402467966 0.184767216444 +18 0.288402467966 0.176190719008 +24 0.298755466938 0.180478990078 +SURF 0x10 +mat 1 +refs 3 +18 0.288402467966 0.176190719008 +19 0.294467270374 0.1701361835 +24 0.298755466938 0.180478990078 +SURF 0x10 +mat 1 +refs 3 +19 0.294467270374 0.1701361835 +20 0.30303350091 0.1701361835 +24 0.298755466938 0.180478990078 +SURF 0x10 +mat 1 +refs 3 +20 0.30303350091 0.1701361835 +21 0.309098213911 0.176190719008 +24 0.298755466938 0.180478990078 +SURF 0x10 +mat 1 +refs 3 +21 0.309098213911 0.176190719008 +22 0.309098213911 0.184767216444 +24 0.298755466938 0.180478990078 +SURF 0x10 +mat 1 +refs 3 +22 0.309098213911 0.184767216444 +23 0.30303350091 0.190821796656 +24 0.298755466938 0.180478990078 +kids 0 diff --git a/Aircraft/Generic/DualControl/Instruments/ADF-462/ctl62.nas b/Aircraft/Generic/DualControl/Instruments/ADF-462/ctl62.nas new file mode 100644 index 000000000..897a802cf --- /dev/null +++ b/Aircraft/Generic/DualControl/Instruments/ADF-462/ctl62.nas @@ -0,0 +1,229 @@ +############################################################################### +## +## Nasal for dual control of a ADF 462 radio over the multiplayer +## network. +## +## Copyright (C) 2008 - 2010 Anders Gidenstam (anders(at)gidenstam.org) +## This file is licensed under the GPL license version 2 or later. +## +############################################################################### + +# Note: +# This module MUST be loaded as ADF462. +# + +# Slave button presses. +var swap_btn = "frq-swap-btn"; +var freq_decS = "freq-decS-clicked"; +var freq_incS = "freq-incS-clicked"; +var freq_decL = "freq-decL-clicked"; +var freq_incL = "freq-incL-clicked"; + +# Settings +var freq_selected = "frequencies/selected-khz"; +var freq_standby = "frequencies/standby-khz"; + +var adf_base = ["instrumentation/adf[0]", + "instrumentation/adf[1]"]; + +########################################################################### +var master_ctl62 = { + new : func(n) { + var obj = {}; + obj.parents = [master_ctl62]; + obj.adf_base = props.globals.getNode(adf_base[n]); + return obj; + }, + swap : func() { + var tmp = me.adf_base.getNode(freq_selected).getValue(); + me.adf_base.getNode(freq_selected).setValue + (me.adf_base.getNode(freq_standby).getValue()); + me.adf_base.getNode(freq_standby).setValue(tmp); + }, + adjust_frequency : func(d) { + adjust_radio_frequency( + me.adf_base.getNode(freq_standby), + d, + 190.0, + 1800.0); + } +}; + +########################################################################### +var slave_ctl62 = { + new : func(n, airoot) { + var obj = {}; + obj.parents = [slave_ctl62]; + obj.root = airoot; + obj.adf_base = props.globals.getNode(adf_base[n]); + return obj; + }, + swap : func() { + var p = me.adf_base.getNode(swap_btn); + print("ADF62[?].SWAP"); + if (!p.getValue()) { + p.setValue(1); + settimer(func { p.setValue(0); }, + 1.0); + } + }, + adjust_frequency : func(d) { + var p = 0; + if (abs(d) < 5.0) { + p = (d < 0) ? me.adf_base.getNode(freq_decS) + : me.adf_base.getNode(freq_incS); + } else { + p = (d < 0) ? me.adf_base.getNode(freq_decL) + : me.adf_base.getNode(freq_incL); + } + if (!p.getValue()) { + p.setValue(1); + settimer(func { p.setValue(0); }, + 1.0); + } + } +}; + +########################################################################### +# The ADF 462 pick animations default to master. +# NOTE: Use make_master() and make_slave_to(). +# Do NOT change ctl62 directly. +var ctl62 = [master_ctl62.new(0), master_ctl62.new(1)]; + + +########################################################################### +# API for pick animations and dual control setup. +########################################################################### + +########################################################################### +# n - Adf# +var make_master = func(n) { + ctl62[n] = master_ctl62.new(n); +} + +########################################################################### +# n - Adf# +var make_slave_to = func(n, airoot) { + ctl62[n] = slave_ctl62.new(n, airoot); +} + +########################################################################### +# n - Adf# +var swap = func(n) { + ctl62[n].swap(); +} + +########################################################################### +# n - Adf# +# d - adjustment +var adjust_frequency = func(n, d) { + ctl62[n].adjust_frequency(d); +} + +########################################################################### +# Create aliases to drive a radio 3d model in an AI/MP model. +# n - Adf# +var animate_aimodel = func(n, airoot) { + var p = "systems/electrical/outputs/adf["~ n ~"]"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = "instrumentation/adf["~ n ~"]/serviceable"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = adf_base[n] ~ "/" ~ freq_selected; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = adf_base[n] ~ "/" ~ freq_standby; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); +} + +########################################################################### +# Create a TDMEncoder node array for sending the current radio state to +# slaves. +# n - Adf# +var master_send_state = func(n) { + var b = props.globals.getNode(adf_base[n]); + return + [ + b.getNode(freq_selected), + b.getNode(freq_standby) + ]; +} + +########################################################################### +# Create a SwitchDecoder action array for processing button presses +# from a slave. +# n - Adf# +var master_receive_slave_buttons = func(n) { + return + [ + func (b) { + if (b) { swap(n); } + }, + func (b) { + if (b) { adjust_frequency(n, -1.0); } + }, + func (b) { + if (b) { adjust_frequency(n, 1.0); } + }, + func (b) { + if (b) { adjust_frequency(n, -10.0); } + }, + func (b) { + if (b) { adjust_frequency(n, 10.0); } + } + ]; +} + +########################################################################### +# Create a TDMDecoder action array for processing the radio state +# from the master. +# n - Adf# +var slave_receive_master_state = func(n) { + var b = props.globals.getNode(adf_base[n]); + return + [ + func (v) { + b.getNode(freq_selected).setValue(v); + }, + func (v) { + b.getNode(freq_standby).setValue(v); + } + ]; +} + +########################################################################### +# Create a SwitchEncoder node array for sending button presses +# to the master +# n - Adf# +var slave_send_buttons = func(n) { + var b = props.globals.getNode(adf_base[n]); + return + [ + b.getNode(swap_btn, 1), + b.getNode(freq_decS, 1), + b.getNode(freq_incS, 1), + b.getNode(freq_decL, 1), + b.getNode(freq_incL, 1), + ]; +} + + + +########################################################################### +# (Not so) Generic frequency stepper. +# f - frequency property +# d - change +# min - min frequency +# max - max frequency +var adjust_radio_frequency = func(f, d, min, max) { + var old = f.getValue(); + var new = old + d; + if (new < min - 0.05) { + new = max + (new - min); + if ((max - new) >= -d) new += -d; + } + if (new > max + 0.05) { + new = min + (new - max); + if ((new - min) >= d) new -= d; + } +# print("Old: " ~ old ~ " Intermediate: " ~ (old + d) ~ " New: " ~ new); + f.setValue(new); +} diff --git a/Aircraft/Generic/DualControl/Instruments/KAP-140/KAP140TwoAxisAlt.xml b/Aircraft/Generic/DualControl/Instruments/KAP-140/KAP140TwoAxisAlt.xml new file mode 100644 index 000000000..17bf86389 --- /dev/null +++ b/Aircraft/Generic/DualControl/Instruments/KAP-140/KAP140TwoAxisAlt.xml @@ -0,0 +1,13 @@ + + + + + null.ac + + + Aircraft/Instruments-3d/kap140/KAP140TwoAxisAlt.xml + + + + + diff --git a/Aircraft/Generic/DualControl/Instruments/KAP-140/kap140.nas b/Aircraft/Generic/DualControl/Instruments/KAP-140/kap140.nas new file mode 100644 index 000000000..447408842 --- /dev/null +++ b/Aircraft/Generic/DualControl/Instruments/KAP-140/kap140.nas @@ -0,0 +1,330 @@ +############################################################################### +## +## Nasal for dual control of a KAP 140 autopilot over the multiplayer +## network. +## +## Copyright (C) 2008 - 2010 Anders Gidenstam (anders(at)gidenstam.org) +## This file is licensed under the GPL license version 2 or later. +## +############################################################################### + +# Note: +# This module MUST be loaded as kap140. +# + +# Load the real KAP 140 module as kap140_implementation. +if (!contains(globals, "kap140_implementation")) { + io.load_nasal(getprop("/sim/fg-root") ~ + "/Aircraft/Generic/kap140.nas", + "kap140_implementation"); +} + +# Slave button presses. +var ap_btn = "ap-btn"; +var hdg_btn = "hdg-btn"; +var nav_btn = "nav-btn"; +var apr_btn = "apr-btn"; +var alt_btn = "alt-btn"; +var rev_btn = "rev-btn"; +var down_btn = "down-btn"; +var up_btn = "up-btn"; +var arm_btn = "arm-btn"; +var baro_press_btn = "baro-press-btn"; +var baro_release_btn = "baro-release-btn"; + +var base = "autopilot/kap140/"; +var buttons = base ~ "buttons/"; + +############################################################################### +# API function wrappers. + +var apButton = func { + kap140.apButton(); +} + +var hdgButton = func { + kap140.hdgButton(); +} + +var navButton = func { + kap140.navButton(); +} + +var aprButton = func { + kap140.aprButton(); +} + +var altButton = func { + kap140.altButton(); +} + +var revButton = func { + kap140.revButton(); +} + +var downButton = func { + kap140.downButton(); +} + +var upButton = func { + kap140.upButton(); +} + +var armButton = func { + kap140.armButton(); +} + +var baroButtonPress = func { + kap140.baroButtonPress(); +} + +var baroButtonRelease = func { + kap140.baroButtonRelease(); +} + +var knobSmallDown = func { + kap140.knobSmallDown(); +} + +var knobSmallUp = func { + kap140.knobSmallUp(); +} + +var knobLargeDown = func { + kap140.knobLargeDown(); +} + +var knobLargeUp = func { + kap140.knobLargeUp(); +} + +############################################################################### + +########################################################################### +# The master is just the standard implementation. +var master_kap140 = + contains(globals, "kap140_implementation") ? kap140_implementation : nil; + +########################################################################### +var slave_kap140 = { + new : func(airoot) { + var obj = {}; + obj.parents = [slave_kap140]; + obj.root = airoot; + obj.base = props.globals.getNode("/autopilot/kap140/buttons", 1); + return obj; + }, + apButton : func { + var p = me.base.getNode(ap_btn); + print("KAP140.AP"); + if (!p.getValue()) { + p.setValue(1); + settimer(func { p.setValue(0); }, + 1.0); + } + }, + hdgButton : func { + var p = me.base.getNode(hdg_btn); + print("KAP140.HDG"); + if (!p.getValue()) { + p.setValue(1); + settimer(func { p.setValue(0); }, + 1.0); + } + }, + navButton : func { + var p = me.base.getNode(nav_btn); + print("KAP140.NAV"); + if (!p.getValue()) { + p.setValue(1); + settimer(func { p.setValue(0); }, + 1.0); + } + }, + aprButton : func { + var p = me.base.getNode(apr_btn); + print("KAP140.APR"); + if (!p.getValue()) { + p.setValue(1); + settimer(func { p.setValue(0); }, + 1.0); + } + }, + altButton : func { + var p = me.base.getNode(alt_btn); + print("KAP140.ALT"); + if (!p.getValue()) { + p.setValue(1); + settimer(func { p.setValue(0); }, + 1.0); + } + }, + revButton : func { + var p = me.base.getNode(rev_btn); + print("KAP140.REV"); + if (!p.getValue()) { + p.setValue(1); + settimer(func { p.setValue(0); }, + 1.0); + } + }, + downButton : func { + var p = me.base.getNode(down_btn); + print("KAP140.DN"); + if (!p.getValue()) { + p.setValue(1); + settimer(func { p.setValue(0); }, + 1.0); + } + }, + upButton : func { + var p = me.base.getNode(up_btn); + print("KAP140.UP"); + if (!p.getValue()) { + p.setValue(1); + settimer(func { p.setValue(0); }, + 1.0); + } + }, + armButton : func { + var p = me.base.getNode(arm_btn); + print("KAP140.ARM"); + if (!p.getValue()) { + p.setValue(1); + settimer(func { p.setValue(0); }, + 1.0); + } + }, + baroButtonPress : func { + var p = me.base.getNode(baro_press_btn); + print("KAP140.BARO_PRESS"); + if (!p.getValue()) { + p.setValue(1); + settimer(func { p.setValue(0); }, + 1.0); + } + }, + baroButtonRelease : func { + var p = me.base.getNode(baro_release_btn); + print("KAP140.BARO_RELEASE"); + if (!p.getValue()) { + p.setValue(1); + settimer(func { p.setValue(0); }, + 1.0); + } + }, + knobSmallDown : func { + }, + knobSmallUp : func { + }, + knobLargeDown : func { + }, + knobLargeUp : func { + }, +}; + +########################################################################### +# The KAP140 pick animations default to master. +var kap140 = master_kap140; + +########################################################################### +# API for dual control setup. +########################################################################### + +########################################################################### +var make_master = func { + master_kap140 = + contains(globals, "kap140_implementation") ? kap140_implementation : nil; +} + +########################################################################### +var make_slave_to = func(airoot) { + kap140 = slave_kap140.new(airoot); +} + +########################################################################### +# Create aliases to drive the KAP 140 3d model in an AI/MP model. +var animate_aimodel = func(airoot) { +# var p = base ~ "/data-is-valid"; +# airoot.getNode(p, 1).alias(props.globals.getNode(p)); +} + +########################################################################### +# Create a TDMEncoder node array for sending the current state to +# slaves. +var master_send_state = func { + return + [ + ]; +} + +########################################################################### +# Create a SwitchDecoder action array for processing button presses +# from a slave. +var master_receive_slave_buttons = func { + return + [ + func (b) { + if (b) { kap140.apButton(); } + }, + func (b) { + if (b) { kap140.hdgButton(); } + }, + func (b) { + if (b) { kap140.navButton(); } + }, + func (b) { + if (b) { kap140.aprButton(); } + }, + func (b) { + if (b) { kap140.altButton(); } + }, + func (b) { + if (b) { kap140.revButton(); } + }, + func (b) { + if (b) { kap140.downButton(); } + }, + func (b) { + if (b) { kap140.upButton(); } + }, + func (b) { + if (b) { kap140.armButton(); } + }, + func (b) { + if (b) { kap140.baroButtonPress(); } + }, + func (b) { + if (b) { kap140.baroButtonRelease(); } + } + ]; +} + +########################################################################### +# Create a TDMDecoder action array for processing the state +# from the master. +var slave_receive_master_state = func { + return + [ + ]; +} + +########################################################################### +# Create a SwitchEncoder node array for sending button presses +# to the master +var slave_send_buttons = func { + return + [ + props.globals.getNode(buttons ~ ap_btn, 1), + props.globals.getNode(buttons ~ hdg_btn, 1), + props.globals.getNode(buttons ~ nav_btn, 1), + props.globals.getNode(buttons ~ apr_btn, 1), + props.globals.getNode(buttons ~ alt_btn, 1), + props.globals.getNode(buttons ~ rev_btn, 1), + props.globals.getNode(buttons ~ down_btn, 1), + props.globals.getNode(buttons ~ up_btn, 1), + props.globals.getNode(buttons ~ arm_btn, 1), + props.globals.getNode(buttons ~ baro_press_btn, 1), + props.globals.getNode(buttons ~ baro_release_btn, 1) + ]; +} diff --git a/Aircraft/Generic/DualControl/Instruments/KAP-140/null.ac b/Aircraft/Generic/DualControl/Instruments/KAP-140/null.ac new file mode 100644 index 000000000..e0952a6b7 --- /dev/null +++ b/Aircraft/Generic/DualControl/Instruments/KAP-140/null.ac @@ -0,0 +1,3 @@ +AC3Db +OBJECT poly +kids 0 diff --git a/Aircraft/Generic/DualControl/Instruments/KDI-572/dme.ac b/Aircraft/Generic/DualControl/Instruments/KDI-572/dme.ac new file mode 100644 index 000000000..f2f22d279 --- /dev/null +++ b/Aircraft/Generic/DualControl/Instruments/KDI-572/dme.ac @@ -0,0 +1,823 @@ +AC3Db +MATERIAL "DefaultWhite" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0 +MATERIAL "illum" rgb 1 1 1 amb 1 1 1 emis 0.7 0.7 0.7 spec 0 0 0 shi 0 trans 0 +MATERIAL "glosswhite" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.255556 0.255556 0.255556 shi 32 trans 0 +MATERIAL "flatpaint" rgb 0.8 0.8 0.8 amb 0.8 0.8 0.8 emis 0.051361 0.051361 0.051361 spec 0 0 0 shi 32 trans 0 +OBJECT world +kids 13 +OBJECT poly +name "DME.kt1" +data 9 +Plane.145 +texture "dme.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.001016 0.011226 0.002169 +0.001016 0.002312 0.002169 +0.001016 0.002312 0.007201 +0.001016 0.011226 0.007201 +numsurf 1 +SURF 0x00 +mat 1 +refs 4 +0 0.0838298201561 0.199461504817 +3 0.0236648730934 0.199461504817 +2 0.0236648730934 0.00404679775238 +1 0.0838298201561 0.00404679775238 +kids 0 +OBJECT poly +name "DME.kt2" +data 9 +Plane.146 +texture "dme.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.001016 0.011226 -0.003798 +0.001016 0.002312 -0.003798 +0.001016 0.002312 0.001234 +0.001016 0.011226 0.001234 +numsurf 1 +SURF 0x00 +mat 1 +refs 4 +0 0.0838298201561 0.199461504817 +3 0.0236648730934 0.199461504817 +2 0.0236648730934 0.00404679775238 +1 0.0838298201561 0.00404679775238 +kids 0 +OBJECT poly +name "DME.kt3" +data 9 +Plane.147 +texture "dme.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.001016 0.011226 -0.009766 +0.001016 0.002312 -0.009766 +0.001016 0.002312 -0.004733 +0.001016 0.011226 -0.004733 +numsurf 1 +SURF 0x00 +mat 1 +refs 4 +0 0.0838298201561 0.199461504817 +3 0.0236648730934 0.199461504817 +2 0.0236648730934 0.00404679775238 +1 0.0838298201561 0.00404679775238 +kids 0 +OBJECT poly +name "DME.mn1" +data 9 +Plane.149 +texture "dme.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.001016 0.011226 -0.024916 +0.001016 0.002312 -0.024916 +0.001016 0.002312 -0.019884 +0.001016 0.011226 -0.019884 +numsurf 1 +SURF 0x00 +mat 1 +refs 4 +0 0.0838298201561 0.199461504817 +3 0.0236648730934 0.199461504817 +2 0.0236648730934 0.00404679775238 +1 0.0838298201561 0.00404679775238 +kids 0 +OBJECT poly +name "DME.mn2" +data 9 +Plane.148 +texture "dme.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.001016 0.011226 -0.030883 +0.001016 0.002312 -0.030883 +0.001016 0.002312 -0.025851 +0.001016 0.011226 -0.025851 +numsurf 1 +SURF 0x00 +mat 1 +refs 4 +0 0.0838298201561 0.199461504817 +3 0.0236648730934 0.199461504817 +2 0.0236648730934 0.00404679775238 +1 0.0838298201561 0.00404679775238 +kids 0 +OBJECT poly +name "DME.nm" +data 9 +Plane.150 +texture "dme.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.000959 0.003707 0.022752 +0.000959 0.002877 0.022752 +0.000959 0.002877 0.023547 +0.000959 0.003707 0.023547 +numsurf 1 +SURF 0x00 +mat 1 +refs 4 +0 0.0709507837892 0.181225210428 +3 0.0457188934088 0.181225210428 +2 0.0457188934088 0.166461586952 +1 0.0709507837892 0.166461586952 +kids 0 +OBJECT poly +name "DME.nm1" +data 9 +Plane.131 +texture "dme.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.001016 0.011226 0.02914 +0.001016 0.002312 0.02914 +0.001016 0.002312 0.034172 +0.001016 0.011226 0.034172 +numsurf 1 +SURF 0x00 +mat 1 +refs 4 +0 0.0838298201561 0.199461504817 +3 0.0236648730934 0.199461504817 +2 0.0236648730934 0.00404679775238 +1 0.0838298201561 0.00404679775238 +kids 0 +OBJECT poly +name "DME.nm2" +data 9 +Plane.143 +texture "dme.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.001016 0.011226 0.023676 +0.001016 0.002312 0.023676 +0.001016 0.002312 0.028708 +0.001016 0.011226 0.028708 +numsurf 1 +SURF 0x00 +mat 1 +refs 4 +0 0.0838298201561 0.199461504817 +3 0.0236648730934 0.199461504817 +2 0.0236648730934 0.00404679775238 +1 0.0838298201561 0.00404679775238 +kids 0 +OBJECT poly +name "DME.nm3" +data 9 +Plane.151 +texture "dme.png" +texrep 1 1 +crease 30.000000 +numvert 4 +0.001016 0.011226 0.017181 +0.001016 0.002312 0.017181 +0.001016 0.002312 0.022214 +0.001016 0.011226 0.022214 +numsurf 1 +SURF 0x00 +mat 1 +refs 4 +0 0.0838298201561 0.199461504817 +3 0.0236648730934 0.199461504817 +2 0.0236648730934 0.00404679775238 +1 0.0838298201561 0.00404679775238 +kids 0 +OBJECT poly +name "DMEswitch" +data 8 +Cylinder +texture "dme.png" +texrep 1 1 +crease 40.000000 +numvert 28 +0.001039 -0.006427 0.003573 +0.001039 -0.005119 0.001308 +0.001039 -0.005119 -0.001308 +0.001039 -0.006427 -0.003573 +0.001039 -0.008692 -0.004881 +0.001039 -0.011308 -0.004881 +0.001039 -0.013573 -0.003573 +0.001039 -0.014881 -0.001308 +0.001039 -0.014881 0.001308 +0.001039 -0.013573 0.003573 +0.001039 -0.011308 0.004881 +0.001039 -0.008692 0.004881 +0.004499 -0.006686 0.003314 +0.004499 -0.005473 0.001213 +0.004499 -0.005473 -0.001213 +0.004499 -0.006686 -0.003314 +0.004499 -0.008787 -0.004527 +0.004499 -0.011213 -0.004527 +0.004499 -0.013314 -0.003314 +0.004499 -0.014527 -0.001213 +0.004499 -0.014527 0.001213 +0.004499 -0.013314 0.003314 +0.004499 -0.011213 0.004527 +0.004499 -0.008787 0.004527 +0.007779 -0.008787 -0.004193 +0.007779 -0.011213 -0.004193 +0.007779 -0.011213 0.004193 +0.007779 -0.008787 0.004193 +numsurf 21 +SURF 0x10 +mat 2 +refs 4 +0 0.535729765892 0.453892558813 +12 0.53325176239 0.448936551809 +13 0.544875144958 0.408671677113 +1 0.548260271549 0.410485655069 +SURF 0x10 +mat 2 +refs 4 +1 0.548260271549 0.410485655069 +13 0.544875144958 0.408671677113 +14 0.544875144958 0.362177878618 +2 0.548260271549 0.36036375165 +SURF 0x10 +mat 2 +refs 4 +2 0.548260271549 0.36036375165 +14 0.544875144958 0.362177878618 +15 0.533251881599 0.321913033724 +3 0.535729765892 0.316956788301 +SURF 0x10 +mat 2 +refs 4 +3 0.535729765892 0.316956788301 +15 0.533251881599 0.321913033724 +16 0.513119459152 0.298666030169 +4 0.514026403427 0.291895896196 +SURF 0x10 +mat 2 +refs 4 +4 0.514026403427 0.291895896196 +16 0.513119459152 0.298666030169 +17 0.489872395992 0.298665940762 +5 0.488965392113 0.291895896196 +SURF 0x10 +mat 2 +refs 4 +5 0.488965392113 0.291895896196 +17 0.489872395992 0.298665940762 +18 0.46974003315 0.321912825108 +6 0.467261910439 0.316956788301 +SURF 0x10 +mat 2 +refs 4 +6 0.467261910439 0.316956788301 +18 0.46974003315 0.321912825108 +19 0.458116590977 0.3621776402 +7 0.454731464386 0.360363692045 +SURF 0x10 +mat 2 +refs 4 +7 0.454731464386 0.360363692045 +19 0.458116590977 0.3621776402 +20 0.458116590977 0.408671438694 +8 0.454731464386 0.410485595465 +SURF 0x10 +mat 2 +refs 4 +8 0.454731464386 0.410485595465 +20 0.458116590977 0.408671438694 +21 0.46974003315 0.448936372995 +9 0.467261910439 0.453892499208 +SURF 0x10 +mat 2 +refs 4 +9 0.467261910439 0.453892499208 +21 0.46974003315 0.448936372995 +22 0.489872336388 0.472183257341 +10 0.488965272903 0.478953510523 +SURF 0x10 +mat 2 +refs 4 +10 0.488965272903 0.463854044676 +22 0.489872336388 0.457083791494 +23 0.513119280338 0.457083910704 +11 0.514026403427 0.463854044676 +SURF 0x10 +mat 2 +refs 4 +12 0.53325176239 0.448936551809 +0 0.535729765892 0.453892558813 +11 0.514026403427 0.478953510523 +23 0.513119280338 0.472183376551 +SURF 0x10 +mat 2 +refs 4 +18 0.46974003315 0.321912825108 +21 0.46974003315 0.448936372995 +20 0.458116590977 0.408671438694 +19 0.458116590977 0.3621776402 +SURF 0x10 +mat 2 +refs 4 +17 0.489872395992 0.298665940762 +22 0.489872336388 0.472183257341 +21 0.46974003315 0.448936372995 +18 0.46974003315 0.321912825108 +SURF 0x10 +mat 2 +refs 4 +12 0.53325176239 0.448936551809 +15 0.533251881599 0.321913033724 +14 0.544875144958 0.362177878618 +13 0.544875144958 0.408671677113 +SURF 0x10 +mat 2 +refs 4 +12 0.53325176239 0.448936551809 +23 0.513119280338 0.472183376551 +16 0.513119459152 0.298666030169 +15 0.533251881599 0.321913033724 +SURF 0x10 +mat 2 +refs 4 +17 0.489872395992 0.298665940762 +16 0.513119459152 0.298666030169 +24 0.513119459152 0.30507221818 +25 0.489872395992 0.305072128773 +SURF 0x10 +mat 2 +refs 4 +23 0.513119280338 0.457083910704 +22 0.489872336388 0.457083791494 +26 0.489872336388 0.450677603483 +27 0.513119280338 0.450677722692 +SURF 0x10 +mat 2 +refs 4 +22 0.489872336388 0.472183257341 +17 0.489872395992 0.298665940762 +25 0.489872395992 0.305072128773 +26 0.489872336388 0.46577706933 +SURF 0x10 +mat 2 +refs 4 +16 0.513119459152 0.298666030169 +23 0.513119280338 0.472183376551 +27 0.513119280338 0.46577718854 +24 0.513119459152 0.30507221818 +SURF 0x10 +mat 2 +refs 4 +25 0.489872395992 0.305072128773 +24 0.513119459152 0.30507221818 +27 0.513119280338 0.46577718854 +26 0.489872336388 0.46577706933 +kids 0 +OBJECT poly +name "dmebezel" +data 8 +Mesh.079 +texture "dme.png" +texrep 1 1 +crease 30.000000 +numvert 56 +0.000842 0.007242 -0.039319 +0.000842 -0.007229 -0.039331 +0.000842 -0.014511 -0.032798 +0.000842 -0.014515 0.032738 +0.000842 -0.007242 0.039319 +0.000842 0.007229 0.039331 +0.000843 0.01451 0.032798 +0.000842 0.014515 -0.032738 +0.002247 0.007242 -0.039319 +0.002247 0.014515 -0.032738 +0.002247 0.01451 0.032798 +0.002246 0.007229 0.039331 +0.002246 -0.007242 0.039319 +0.002247 -0.007229 -0.039331 +0.002247 -0.014516 0.032738 +0.002247 -0.014511 -0.032798 +0.002246 0.01607 -0.033721 +0.002247 0.008025 -0.04088 +0.002246 0.016065 0.033782 +0.002247 0.00801 0.040893 +0.002247 -0.008025 0.04088 +0.002247 -0.00801 -0.040894 +0.002247 -0.01607 0.03372 +0.002247 -0.016065 -0.033782 +0.000843 -6e-06 0.039325 +0.000842 7e-06 -0.039325 +0.00165 0.01607 -0.033721 +0.00165 0.008025 -0.04088 +0.00165 0.016065 0.033782 +0.00165 0.00801 0.040893 +0.00165 -0.008025 0.04088 +0.00165 -0.00801 -0.040894 +0.00165 -0.01607 0.03372 +0.00165 -0.016065 -0.033782 +0.00165 0.017447 -0.043733 +0.00165 0.016138 -0.044932 +0.00165 0.017442 0.043812 +0.00165 0.016107 0.044946 +0.00165 -0.016138 0.044932 +0.00165 -0.016108 -0.044947 +0.00165 -0.017448 0.043732 +0.00165 -0.017442 -0.043812 +0.000147 0.017447 -0.043733 +0.000147 0.016138 -0.044932 +0.000147 0.017442 0.043812 +0.000147 0.016107 0.044946 +0.000147 -0.016138 0.044932 +0.000147 -0.016108 -0.044947 +0.000147 -0.017448 0.043732 +0.000147 -0.017442 -0.043812 +0.000842 -0.007229 -0.039331 +0.000842 -0.014511 -0.032798 +0.000842 -0.014515 0.032738 +0.000842 -0.007242 0.039319 +0.000843 -6e-06 0.039325 +0.000842 7e-06 -0.039325 +numsurf 46 +SURF 0x00 +mat 3 +refs 4 +7 0.752499580383 0.500000059605 +0 0.752499580383 0.400000065565 +8 0.852499604225 0.400000065565 +9 0.852499604225 0.500000059605 +SURF 0x00 +mat 3 +refs 4 +6 0.752499580383 0.500000059605 +7 0.752499580383 0.400000065565 +9 0.852499604225 0.400000065565 +10 0.852499604225 0.500000059605 +SURF 0x00 +mat 3 +refs 4 +5 0.752499580383 0.500000059605 +6 0.752499580383 0.400000065565 +10 0.852499604225 0.400000065565 +11 0.852499604225 0.500000059605 +SURF 0x00 +mat 3 +refs 3 +4 0.752499580383 0.500000059605 +24 0.752499580383 0.400000065565 +12 0.852499604225 0.400000065565 +SURF 0x00 +mat 3 +refs 4 +3 0.752499580383 0.500000059605 +4 0.752499580383 0.400000065565 +12 0.852499604225 0.400000065565 +14 0.852499604225 0.500000059605 +SURF 0x00 +mat 3 +refs 4 +2 0.752499580383 0.500000059605 +3 0.752499580383 0.400000065565 +14 0.852499604225 0.400000065565 +15 0.852499604225 0.500000059605 +SURF 0x00 +mat 3 +refs 4 +1 0.752499580383 0.500000059605 +2 0.752499580383 0.400000065565 +15 0.852499604225 0.400000065565 +13 0.852499604225 0.500000059605 +SURF 0x00 +mat 3 +refs 4 +9 0.516570031643 0.94054287672 +8 0.516570031643 0.927807867527 +17 0.529305040836 0.927807867527 +16 0.529305040836 0.94054287672 +SURF 0x00 +mat 3 +refs 4 +10 0.516570031643 0.94054287672 +9 0.516570031643 0.927807867527 +16 0.529305040836 0.927807867527 +18 0.529305040836 0.94054287672 +SURF 0x00 +mat 3 +refs 4 +11 0.516570031643 0.94054287672 +10 0.516570031643 0.927807867527 +18 0.529305040836 0.927807867527 +19 0.529305040836 0.94054287672 +SURF 0x00 +mat 3 +refs 4 +12 0.516570031643 0.94054287672 +11 0.516570031643 0.927807867527 +19 0.529305040836 0.927807867527 +20 0.529305040836 0.94054287672 +SURF 0x00 +mat 3 +refs 4 +8 0.516570031643 0.94054287672 +13 0.516570031643 0.927807867527 +21 0.529305040836 0.927807867527 +17 0.529305040836 0.94054287672 +SURF 0x00 +mat 3 +refs 4 +14 0.516570031643 0.94054287672 +12 0.516570031643 0.927807867527 +20 0.529305040836 0.927807867527 +22 0.529305040836 0.94054287672 +SURF 0x00 +mat 3 +refs 4 +15 0.516570031643 0.94054287672 +14 0.516570031643 0.927807867527 +22 0.529305040836 0.927807867527 +23 0.529305040836 0.94054287672 +SURF 0x00 +mat 3 +refs 4 +13 0.516570031643 0.94054287672 +15 0.516570031643 0.927807867527 +23 0.529305040836 0.927807867527 +21 0.529305040836 0.94054287672 +SURF 0x00 +mat 3 +refs 3 +0 0.752499580383 0.500000059605 +25 0.752499580383 0.400000065565 +13 0.852499604225 0.400000065565 +SURF 0x00 +mat 3 +refs 3 +0 0.752499580383 0.500000059605 +13 0.752499580383 0.400000065565 +8 0.852499604225 0.400000065565 +SURF 0x00 +mat 3 +refs 3 +5 0.752499580383 0.500000059605 +11 0.752499580383 0.400000065565 +12 0.852499604225 0.400000065565 +SURF 0x00 +mat 3 +refs 3 +25 0.752499580383 0.500000059605 +1 0.752499580383 0.400000065565 +13 0.852499604225 0.400000065565 +SURF 0x00 +mat 3 +refs 3 +24 0.752499580383 0.500000059605 +5 0.752499580383 0.400000065565 +12 0.852499604225 0.400000065565 +SURF 0x00 +mat 3 +refs 4 +16 0.928124308586 0.311250269413 +17 0.928124308586 0.27125030756 +27 0.968124330044 0.27125030756 +26 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +18 0.928124308586 0.311250269413 +16 0.928124308586 0.27125030756 +26 0.968124330044 0.27125030756 +28 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +19 0.928124308586 0.311250269413 +18 0.928124308586 0.27125030756 +28 0.968124330044 0.27125030756 +29 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +20 0.928124308586 0.311250269413 +19 0.928124308586 0.27125030756 +29 0.968124330044 0.27125030756 +30 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +17 0.928124308586 0.311250269413 +21 0.928124308586 0.27125030756 +31 0.968124330044 0.27125030756 +27 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +22 0.928124308586 0.311250269413 +20 0.928124308586 0.27125030756 +30 0.968124330044 0.27125030756 +32 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +23 0.928124308586 0.311250269413 +22 0.928124308586 0.27125030756 +32 0.968124330044 0.27125030756 +33 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +21 0.928124308586 0.311250269413 +23 0.928124308586 0.27125030756 +33 0.968124330044 0.27125030756 +31 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +26 0.928124308586 0.311250269413 +27 0.928124308586 0.27125030756 +35 0.968124330044 0.27125030756 +34 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +28 0.928124308586 0.311250269413 +26 0.928124308586 0.27125030756 +34 0.968124330044 0.27125030756 +36 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +29 0.928124308586 0.311250269413 +28 0.928124308586 0.27125030756 +36 0.968124330044 0.27125030756 +37 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +30 0.928124308586 0.311250269413 +29 0.928124308586 0.27125030756 +37 0.968124330044 0.27125030756 +38 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +27 0.928124308586 0.311250269413 +31 0.928124308586 0.27125030756 +39 0.968124330044 0.27125030756 +35 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +32 0.928124308586 0.311250269413 +30 0.928124308586 0.27125030756 +38 0.968124330044 0.27125030756 +40 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +33 0.928124308586 0.311250269413 +32 0.928124308586 0.27125030756 +40 0.968124330044 0.27125030756 +41 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +31 0.928124308586 0.311250269413 +33 0.928124308586 0.27125030756 +41 0.968124330044 0.27125030756 +39 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +34 0.928124308586 0.311250269413 +35 0.928124308586 0.27125030756 +43 0.968124330044 0.27125030756 +42 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +36 0.928124308586 0.311250269413 +34 0.928124308586 0.27125030756 +42 0.968124330044 0.27125030756 +44 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +37 0.928124308586 0.311250269413 +36 0.928124308586 0.27125030756 +44 0.968124330044 0.27125030756 +45 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +38 0.928124308586 0.311250269413 +37 0.928124308586 0.27125030756 +45 0.968124330044 0.27125030756 +46 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +35 0.928124308586 0.311250269413 +39 0.928124308586 0.27125030756 +47 0.968124330044 0.27125030756 +43 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +40 0.928124308586 0.311250269413 +38 0.928124308586 0.27125030756 +46 0.968124330044 0.27125030756 +48 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +41 0.928124308586 0.311250269413 +40 0.928124308586 0.27125030756 +48 0.968124330044 0.27125030756 +49 0.968124330044 0.311250269413 +SURF 0x00 +mat 3 +refs 4 +39 0.928124308586 0.311250269413 +41 0.928124308586 0.27125030756 +49 0.968124330044 0.27125030756 +47 0.968124330044 0.311250269413 +SURF 0x10 +mat 3 +refs 4 +50 0.920733690262 0.440070271492 +53 0.0834924578667 0.439790010452 +52 0.153548210859 0.284956693649 +51 0.851188838482 0.285044133663 +SURF 0x10 +mat 3 +refs 4 +50 0.920733690262 0.440070271492 +55 0.920669853687 0.594127893448 +54 0.0834285616875 0.593843877316 +53 0.0834924578667 0.439790010452 +kids 0 +OBJECT poly +name "dmeface" +data 8 +Mesh.094 +texture "dme.png" +texrep 1 1 +crease 30.000000 +numvert 6 +0.000842 7e-06 -0.039325 +0.000843 -6e-06 0.039325 +0.000842 0.014515 -0.032738 +0.000843 0.01451 0.032798 +0.000842 0.007229 0.039331 +0.000842 0.007242 -0.039319 +numsurf 2 +SURF 0x10 +mat 1 +refs 4 +0 0.922852396965 0.604025781155 +5 0.922788202763 0.758947312832 +4 0.0807167291641 0.758664429188 +1 0.0807809233665 0.603740155697 +SURF 0x10 +mat 1 +refs 4 +5 0.922788202763 0.758947312832 +2 0.848569154739 0.914694130421 +3 0.154421895742 0.914586186409 +4 0.0807167291641 0.758664429188 +kids 0 +OBJECT poly +name "dmeface.001" +data 8 +Mesh.354 +texture "dme.png" +texrep 1 1 +crease 30.000000 +numvert 6 +0.000706 1.1e-05 -0.039929 +0.000707 -3e-06 0.039929 +0.000768 0.015102 -0.03324 +0.000768 0.015097 0.033301 +0.000737 0.007523 0.039935 +0.000737 0.007536 -0.039922 +numsurf 2 +SURF 0x10 +mat 1 +refs 4 +0 0.610067427158 0.813914358616 +5 0.61005282402 0.849155306816 +4 0.41850155592 0.849090993404 +1 0.418516159058 0.813849389553 +SURF 0x10 +mat 1 +refs 4 +5 0.61005282402 0.849155306816 +2 0.593169748783 0.884584009647 +3 0.435267746449 0.884559452534 +4 0.41850155592 0.849090993404 +kids 0 diff --git a/Aircraft/Generic/DualControl/Instruments/KDI-572/dme.png b/Aircraft/Generic/DualControl/Instruments/KDI-572/dme.png new file mode 100644 index 0000000000000000000000000000000000000000..c4322a4ea22b9a3d9beaff0522ddf0474f44ed50 GIT binary patch literal 6082 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 M$*ap%$ifl-0XCj}4*&oF literal 0 HcmV?d00001 diff --git a/Aircraft/Generic/DualControl/Instruments/KDI-572/kdi572.nas b/Aircraft/Generic/DualControl/Instruments/KDI-572/kdi572.nas new file mode 100644 index 000000000..936c4e019 --- /dev/null +++ b/Aircraft/Generic/DualControl/Instruments/KDI-572/kdi572.nas @@ -0,0 +1,66 @@ +############################################################################### +## $Id$ +## +## Nasal for KDI 572 DME. +## +## Copyright (C) 2006 - 2008 Syd Adams +## Adapted for dual control by Anders Gidenstam +## +## This file is licensed under the GPL license version 2 or later. +## +############################################################################### + +# Note: +# This module MUST be loaded as KDI572. +# + +var base = ["instrumentation/dme[0]", + "instrumentation/dme[1]"]; + +########################################################################### +# API for pick animations. +########################################################################### + +var dme_step = func(stp) { + var switch= getprop("instrumentation/dme/switch-position"); + switch += stp; + if (switch >3) switch=3; + if (switch <0) switch=0; + setprop("instrumentation/dme/switch-position", switch); + + if (switch==0) { + setprop("instrumentation/dme/frequencies/source", + "instrumentation/dme/frequencies/selected-mhz"); + } elsif (switch==1) { + setprop("instrumentation/dme/frequencies/source", + "instrumentation/nav[0]/frequencies/selected-mhz"); + } elsif (switch==2) { + setprop("instrumentation/dme/frequencies/source", + "instrumentation/dme/frequencies/selected-mhz"); + } elsif (switch==3) { + setprop("instrumentation/dme/frequencies/source", + "instrumentation/nav[1]/frequencies/selected-mhz"); + } +} + +########################################################################### +# API for dual control setup. +########################################################################### + +########################################################################### +# Create aliases to drive a KDI-572 3d model in an AI/MP model. +# n - unit# +var animate_aimodel = func(n, airoot) { + var p = "systems/electrical/outputs/dme"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base[n] ~ "/switch-position"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base[n] ~ "/in-range"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base[n] ~ "/indicated-distance-nm"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base[n] ~ "/indicated-ground-speed-kt"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base[n] ~ "/indicated-time-min"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); +} diff --git a/Aircraft/Generic/DualControl/Instruments/KDI-572/kdi572.xml b/Aircraft/Generic/DualControl/Instruments/KDI-572/kdi572.xml new file mode 100644 index 000000000..81bea819c --- /dev/null +++ b/Aircraft/Generic/DualControl/Instruments/KDI-572/kdi572.xml @@ -0,0 +1,228 @@ + + + + + dme.ac + + + select + dmeface + + + + systems/electrical/outputs/dme + 8 + + + instrumentation/dme/switch-position + 0 + + + + + + + select + DME.nm + DME.nm1 + DME.nm2 + DME.nm3 + DME.kt1 + DME.kt2 + DME.kt3 + DME.mn1 + DME.mn2 + + + + systems/electrical/outputs/dme + 8 + + instrumentation/dme/in-range + + + + + + rotate + DMEswitch + instrumentation/dme/switch-position + + + 00.0 + + + 135.0 + + + 290.0 + + + 3150.0 + + + + -1 + 0 + 0 + +
+ 0 + 0 + -0.010 +
+
+ + + + + textranslate + DME.nm1 + instrumentation/dme/indicated-distance-nm + 0.01 + 10 + + 1 + 0 + 0 + + + + + textranslate + DME.nm2 + instrumentation/dme/indicated-distance-nm + 0.1 + 1 + + 1 + 0 + 0 + + + + + textranslate + DME.nm3 + instrumentation/dme/indicated-distance-nm + 1.0 + 0.1 + + 1 + 0 + 0 + + + + + + + textranslate + DME.kt1 + instrumentation/dme/indicated-ground-speed-kt + 0.001 + 100 + + 1 + 0 + 0 + + + + + textranslate + DME.kt2 + instrumentation/dme/indicated-ground-speed-kt + 0.01 + 10 + + 1 + 0 + 0 + + + + + textranslate + DME.kt3 + instrumentation/dme/indicated-ground-speed-kt + 0.1 + 1 + + 1 + 0 + 0 + + + + + + + textranslate + DME.mn1 + instrumentation/dme/indicated-time-min + 0.01 + 10 + + 1 + 0 + 0 + + + + + textranslate + DME.mn2 + instrumentation/dme/indicated-time-min + 0.1 + 1 + + 1 + 0 + 0 + + + + + + + pick + DMEswitch + + + false + + nasal + + + + + + false + + nasal + + + + + + false + + nasal + + + + + + false + + nasal + + + + + +
diff --git a/Aircraft/Generic/DualControl/Instruments/KI-206/ki206-1.xml b/Aircraft/Generic/DualControl/Instruments/KI-206/ki206-1.xml new file mode 100644 index 000000000..7536792ed --- /dev/null +++ b/Aircraft/Generic/DualControl/Instruments/KI-206/ki206-1.xml @@ -0,0 +1,176 @@ + + + + + Aircraft/Instruments-3d/ki206/ki206.ac + Aircraft/Instruments-3d/ki206/ + + material + KI206.gsflag + KI206.toflag + KI206.fromflag + KI206.navflag + KI206.face + KI206card + KI206.locneedle + KI206.gsneedle + KI206.knob + + 0.8 + 0.4 + 0.2 + /systems/electrical/outputs/instrument-lights + + + + + select + KI206.navflag + + + + instrumentation/nav[0]/data-is-valid + + + systems/electrical/outputs/nav[0] + 0.1 + + + instrumentation/nav[0]/in-range + + + + + + + select + KI206.gsflag + + + + instrumentation/nav[0]/has-gs + + + systems/electrical/outputs/nav[0] + 0.1 + + + instrumentation/nav[0]/in-range + 30000 + + + + + + + select + KI206.toflag + + instrumentation/nav[0]/to-flag + + + + + select + KI206.fromflag + + instrumentation/nav[0]/from-flag + + + + + rotate + KI206card + instrumentation/nav[0]/radials/selected-deg + + 1 + 0 + 0 + + + + + translate + KI206.locneedle + instrumentation/nav[0]/heading-needle-deflection + + -10.0-0.0113 + 0.00.0 + 10.00.0113 + + + 0.0 + 1.0 + 0.0 + + + + + translate + KI206.gsneedle + instrumentation/nav[0]/gs-needle-deflection + + -9999.0-0.0113 + -10.0-0.0113 + 0.00.0 + 10.00.0113 + 9999.00.0113 + + + 0.0 + 0.0 + 1.0 + + + + + pick + KI206.knob + true + + click + + true + 0.1 + + nasal + + + + + click + + true + 0.1 + + nasal + + + + + click + + false + 0.1 + + nasal + + + + + click + + false + 0.1 + + nasal + + + + + + diff --git a/Aircraft/Generic/DualControl/Instruments/KI-206/ki206-2.xml b/Aircraft/Generic/DualControl/Instruments/KI-206/ki206-2.xml new file mode 100644 index 000000000..3262cf49a --- /dev/null +++ b/Aircraft/Generic/DualControl/Instruments/KI-206/ki206-2.xml @@ -0,0 +1,176 @@ + + + + + Aircraft/Instruments-3d/ki206/ki206.ac + Aircraft/Instruments-3d/ki206/ + + material + KI206.gsflag + KI206.toflag + KI206.fromflag + KI206.navflag + KI206.face + KI206card + KI206.locneedle + KI206.gsneedle + KI206.knob + + 0.8 + 0.4 + 0.2 + /systems/electrical/outputs/instrument-lights + + + + + select + KI206.navflag + + + + instrumentation/nav[1]/data-is-valid + + + systems/electrical/outputs/nav[1] + 0.1 + + + instrumentation/nav[1]/in-range + + + + + + + select + KI206.gsflag + + + + instrumentation/nav[1]/has-gs + + + systems/electrical/outputs/nav[1] + 0.1 + + + instrumentation/nav[1]/in-range + 30000 + + + + + + + select + KI206.toflag + + instrumentation/nav[1]/to-flag + + + + + select + KI206.fromflag + + instrumentation/nav[1]/from-flag + + + + + rotate + KI206card + instrumentation/nav[1]/radials/selected-deg + + 1 + 0 + 0 + + + + + translate + KI206.locneedle + instrumentation/nav[1]/heading-needle-deflection + + -10.0-0.0113 + 0.00.0 + 10.00.0113 + + + 0.0 + 1.0 + 0.0 + + + + + translate + KI206.gsneedle + instrumentation/nav[1]/gs-needle-deflection + + -9999.0-0.0113 + -10.0-0.0113 + 0.00.0 + 10.00.0113 + 9999.00.0113 + + + 0.0 + 0.0 + 1.0 + + + + + pick + KI206.knob + true + + click + + true + 0.1 + + nasal + + + + + click + + true + 0.1 + + nasal + + + + + click + + false + 0.1 + + nasal + + + + + click + + false + 0.1 + + nasal + + + + + + diff --git a/Aircraft/Generic/DualControl/Instruments/KI-206/ki206.nas b/Aircraft/Generic/DualControl/Instruments/KI-206/ki206.nas new file mode 100644 index 000000000..5ab194397 --- /dev/null +++ b/Aircraft/Generic/DualControl/Instruments/KI-206/ki206.nas @@ -0,0 +1,166 @@ +############################################################################### +## +## Nasal for dual control of a KI-206 VOR indicator over the multiplayer +## network. +## +## Copyright (C) 2007 - 2010 Anders Gidenstam (anders(at)gidenstam.org) +## This file is licensed under the GPL license version 2 or later. +## +############################################################################### + +# Note: +# This module MUST be loaded as KI206. + +# Slave button presses. +var radial_decS = "radial-decS-clicked"; +var radial_incS = "radial-incS-clicked"; +# Only one step size implemented. + +var selected_radial = "radials/selected-deg"; +var base = ["instrumentation/nav[0]", + "instrumentation/nav[1]"]; + +########################################################################### +var master_ki206 = { + new : func(n) { + var obj = {}; + obj.parents = [master_ki206]; + obj.base = props.globals.getNode(base[n]); + return obj; + }, + adjust_radial : func(d) { + p = me.base.getNode(selected_radial); + var v = p.getValue() + d; + if (v < 0) { v += 360; }; + if (v > 360) { v -= 360; }; + p.setValue(v); + } +}; + +########################################################################### +var slave_ki206 = { + new : func(n, airoot) { + var obj = {}; + obj.parents = [slave_ki206]; + obj.root = airoot; + obj.base = props.globals.getNode(base[n]); + return obj; + }, + adjust_radial : func(d) { + var p = 0; + if (abs(d) < 0.99) { + p = (d < 0) ? me.base.getNode(radial_decS) + : me.base.getNode(radial_incS); + } else { + p = (d < 0) ? me.base.getNode(radial_decS) + : me.base.getNode(radial_incS); + } + if (!p.getValue()) { + p.setValue(1); + settimer(func { p.setValue(0); }, + 1.0); + } + } +}; + +########################################################################### +# The KI-206 pick animations default to master. +# NOTE: Use make_master() and make_slave_to(). Do NOT change ki206 directly. +var ki206 = [master_ki206.new(0), master_ki206.new(1)]; + +########################################################################### +# API for pick animations and dual control setup. +########################################################################### + +########################################################################### +# n - Nav# +var make_master = func(n) { + ki206[n] = master_ki206.new(n); +} + +########################################################################### +# n - Nav# +var make_slave_to = func(n, airoot) { + ki206[n] = KI206.slave_ki206.new(n, airoot); +} + +########################################################################### +# n - Nav# +# d - adjustment delta +var adjust_radial = func(n, d) { + ki206[n].adjust_radial(d); +} + +########################################################################### +# Create aliases to drive the KI 206 3d model in an AI/MP model. +# n - Nav# +var animate_aimodel = func(n, airoot) { + var p = base[n] ~ "/data-is-valid"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base[n] ~ "/in-range"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base[n] ~ "/has-gs"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base[n] ~ "/to-flag"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base[n] ~ "/from-flag"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base[n] ~ "/" ~ selected_radial; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base[n] ~ "/heading-needle-deflection"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base[n] ~ "/gs-needle-deflection"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); +} + +########################################################################### +# Create a TDMEncoder node array for sending the current radio state to +# slaves. +# n - Nav# +var master_send_state = func(n) { + return + [ + props.globals.getNode(base[n] ~ "/" ~ selected_radial) + ]; +} + +########################################################################### +# Create a SwitchDecoder action array for processing button presses +# from a slave. +# n - Nav# +var master_receive_slave_buttons = func(n) { + return + [ + func (b) { + if (b) { KI206.adjust_radial(n, -1.0); } + }, + func (b) { + if (b) { KI206.adjust_radial(n, 1.0); } + } + ]; +} + +########################################################################### +# Create a TDMDecoder action array for processing the radio state +# from the master. +# n - Nav# +var slave_receive_master_state = func(n) { + return + [ + func (v) { + props.globals.getNode(base[n] ~ "/" ~ selected_radial).setValue(v); + } + ]; +} + +########################################################################### +# Create a SwitchEncoder node array for sending button presses +# to the master +# n - Nav# +var slave_send_buttons = func(n) { + return + [ + props.globals.getNode(base[n] ~ "/" ~ radial_decS, 1), + props.globals.getNode(base[n] ~ "/" ~ radial_incS, 1), + ]; +} diff --git a/Aircraft/Generic/DualControl/Instruments/KR87/kr87-1.xml b/Aircraft/Generic/DualControl/Instruments/KR87/kr87-1.xml new file mode 100644 index 000000000..6e6cfdbd9 --- /dev/null +++ b/Aircraft/Generic/DualControl/Instruments/KR87/kr87-1.xml @@ -0,0 +1,362 @@ + + + + + kr87.ac + Aircraft/Generic/DualControl/Instruments/KX165/ + + + select + kr87.indicators + + instrumentation/adf[0]/serviceable + instrumentation/adf[0]/power-btn + + systems/electrical/outputs/adf[0] + 1 + + + + + + material + kr87.knobs.ADF + kr87.knobs.BFO + kr87.knobs.FRQ + kr87.knobs.FLT + kr87.knobs.SET + + sim/model/instrument-lighting/emission/red + sim/model/instrument-lighting/emission/green + sim/model/instrument-lighting/emission/blue + controls/lighting/instruments-norm + + + + + select + kr87.indicators.ANT + + + instrumentation/adf[0]/adf-btn + + + + + + select + kr87.indicators.ADF + + instrumentation/adf[0]/adf-btn + + + + + select + kr87.indicators.BFO + + instrumentation/adf[0]/bfo-btn + + + + + select + kr87.indicators.FRQ + + + instrumentation/adf[0]/display-mode + 0 + + + + + + select + kr87.indicators.FLT + + + instrumentation/adf[0]/display-mode + 1 + + + + + + select + kr87.indicators.ET + + + instrumentation/adf[0]/display-mode + 2 + + + + + + + select + kr87.indicators.Use.1000 + + + instrumentation/adf[0]/frequencies/selected-khz + 1000 + + + + + + textranslate + kr87.indicators.Use.1000 + instrumentation/adf[0]/frequencies/selected-khz + 1000 + 0.0001 + + 1 + 0 + 0 + + + + + textranslate + kr87.indicators.Use.100 + instrumentation/adf[0]/frequencies/selected-khz + 100 + 0.001 + + 1 + 0 + 0 + + + + + textranslate + kr87.indicators.Use.10 + instrumentation/adf[0]/frequencies/selected-khz + 10 + 0.01 + + 1 + 0 + 0 + + + + + textranslate + kr87.indicators.Use.1 + instrumentation/adf[0]/frequencies/selected-khz + 1 + 0.1 + + 1 + 0 + 0 + + + + + + + + instrumentation/adf[0]/display-mode + 0 + + + select + kr87.indicators.dots + + + + select + kr87.indicators.Stby.1000 + + + instrumentation/adf[0]/right-display + 1000 + + + + + + select + kr87.indicators.Stby.100 + + + instrumentation/adf[0]/right-display + 100 + + + + + + textranslate + kr87.indicators.Stby.1000 + instrumentation/adf[0]/right-display + 1000 + 0.0001 + + 1 + 0 + 0 + + + + + textranslate + kr87.indicators.Stby.100 + instrumentation/adf[0]/right-display + 100 + 0.001 + + 1 + 0 + 0 + + + + + textranslate + kr87.indicators.Stby.10 + instrumentation/adf[0]/right-display + 10 + 0.01 + + 1 + 0 + 0 + + + + + textranslate + kr87.indicators.Stby.1 + instrumentation/adf[0]/right-display + 1 + 0.1 + + 1 + 0 + 0 + + + + + noshadow + + + + + + pick + kr87.knobs.FRQ + + + false + + nasal + + + + + + + pick + kr87.knobs.FRQOuter + + + true + 0.2 + + nasal + + + + + + true + 0.2 + + nasal + + + + + + false + + nasal + + + + + + false + + nasal + + + + + + + pick + kr87.knobs.FRQInner + + + true + 0.2 + + nasal + + + + + + true + 0.2 + + nasal + + + + + + false + + nasal + + + + + + false + + nasal + + + + + + + pick + kr87.knobs.BFO + + + false + + nasal + + + + + + diff --git a/Aircraft/Generic/DualControl/Instruments/KR87/kr87.ac b/Aircraft/Generic/DualControl/Instruments/KR87/kr87.ac new file mode 100644 index 000000000..d2d0400e8 --- /dev/null +++ b/Aircraft/Generic/DualControl/Instruments/KR87/kr87.ac @@ -0,0 +1,1040 @@ +AC3Db +MATERIAL "ac3dmat1" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0 0 0 shi 10 trans 0 +MATERIAL "ac3dmat1" rgb 1 1 1 amb 1 1 1 emis 1 1 1 spec 0 0 0 shi 10 trans 0 +OBJECT world +kids 1 +OBJECT group +name "kr87" +loc -0.00753947 0.00469298 -0.00584703 +kids 3 +OBJECT group +name "kr87.indicators" +loc 0.0215961 0.00799046 0.0304622 +kids 9 +OBJECT group +name "kr87.indicators.Use" +loc -7.82311e-08 0.00610247 0.0236769 +kids 4 +OBJECT poly +name "kr87.indicators.Use.1" +loc 0 0 -0.0105809 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 -0.00698765 -0.000379302 +0 -0.00698765 -0.00743322 +0 -0.0172322 -0.00743322 +0 -0.0172322 -0.000379302 +numsurf 1 +SURF 0x0 +mat 1 +refs 4 +3 0.00304302 0.417856 +2 0.0923989 0.417857 +1 0.0923615 0.527152 +0 0.00300572 0.527152 +kids 0 +OBJECT poly +name "kr87.indicators.Use.10" +loc 0 0 -0.00352695 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 -0.0172322 -0.000379305 +0 -0.0172322 -0.00743322 +0 -0.00698765 -0.00743322 +0 -0.00698765 -0.000379305 +numsurf 1 +SURF 0x0 +mat 1 +refs 4 +0 0.00304302 0.417856 +1 0.0923989 0.417857 +2 0.0923615 0.527152 +3 0.00300572 0.527152 +kids 0 +OBJECT poly +name "kr87.indicators.Use.100" +loc 0 0 0.00352694 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 -0.00698765 -0.000379309 +0 -0.00698765 -0.00743323 +0 -0.0172322 -0.00743323 +0 -0.0172322 -0.000379309 +numsurf 1 +SURF 0x0 +mat 1 +refs 4 +3 0.00304302 0.417856 +2 0.0923989 0.417857 +1 0.0923615 0.527152 +0 0.00300572 0.527152 +kids 0 +OBJECT poly +name "kr87.indicators.Use.1000" +loc 0 0 0.0105809 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 -0.0172322 -0.000379309 +0 -0.0172322 -0.00743323 +0 -0.00698765 -0.00743323 +0 -0.00698765 -0.000379309 +numsurf 1 +SURF 0x0 +mat 1 +refs 4 +0 0.00304302 0.417856 +1 0.0923989 0.417857 +2 0.0923615 0.527152 +3 0.00300572 0.527152 +kids 0 +OBJECT poly +name "kr87.indicators.ANT" +loc 2.14204e-08 0.00134546 0.0475124 +texture "kx165tso.png" +crease 45.000000 +numvert 4 +0 -0.00791238 -0.000420451 +0 -0.00791238 -0.00823952 +0 -0.00320847 -0.00823952 +0 -0.00320847 -0.000420451 +numsurf 1 +SURF 0x0 +mat 1 +refs 4 +0 0.0030285 0.942086 +1 0.0885825 0.942086 +2 0.0885466 0.991477 +3 0.00299279 0.991477 +kids 0 +OBJECT poly +name "kr87.indicators.ADF" +loc 2.14204e-08 -0.00383404 0.0475124 +texture "kx165tso.png" +crease 45.000000 +numvert 4 +0 -0.00320847 -0.000420451 +0 -0.00320847 -0.00823952 +0 -0.00791238 -0.00823952 +0 -0.00791238 -0.000420451 +numsurf 1 +SURF 0x0 +mat 1 +refs 4 +3 0.102918 0.944029 +2 0.192274 0.94403 +1 0.192237 0.989141 +0 0.102881 0.989141 +kids 0 +OBJECT poly +name "kr87.indicators.FRQ" +loc 2.14204e-08 -0.00383404 0.0020287 +texture "kx165tso.png" +crease 45.000000 +numvert 4 +0 -0.00791238 -0.000420451 +0 -0.00791238 -0.00823952 +0 -0.00320847 -0.00823952 +0 -0.00320847 -0.000420451 +numsurf 1 +SURF 0x0 +mat 1 +refs 4 +0 0.310562 0.940691 +1 0.399918 0.940692 +2 0.399881 0.990558 +3 0.310525 0.990558 +kids 0 +OBJECT poly +name "kr87.indicators.BFO" +loc 2.14204e-08 0.00134546 0.0058652 +texture "kx165tso.png" +crease 45.000000 +numvert 4 +0 -0.00320847 -0.000420451 +0 -0.00320847 -0.00823952 +0 -0.00791238 -0.00823952 +0 -0.00791238 -0.000420451 +numsurf 1 +SURF 0x0 +mat 1 +refs 4 +3 0.206942 0.943559 +2 0.296297 0.943559 +1 0.29626 0.989146 +0 0.206904 0.989146 +kids 0 +OBJECT poly +name "kr87.indicators.ET" +loc 2.14204e-08 -0.00344675 -0.042369 +texture "kx165tso.png" +crease 45.000000 +numvert 4 +0 -0.00732147 -0.000316557 +0 -0.00732147 -0.0062035 +0 -0.00296885 -0.0062035 +0 -0.00296885 -0.000316557 +numsurf 1 +SURF 0x0 +mat 1 +refs 4 +0 0.51624 0.942628 +1 0.57423 0.942629 +2 0.574206 0.991068 +3 0.516216 0.991068 +kids 0 +OBJECT poly +name "kr87.indicators.FLT" +loc 2.14204e-08 0.00134546 -0.040333 +texture "kx165tso.png" +crease 45.000000 +numvert 4 +0 -0.00320847 -0.000420451 +0 -0.00320847 -0.00823952 +0 -0.00791238 -0.00823952 +0 -0.00791238 -0.000420451 +numsurf 1 +SURF 0x0 +mat 1 +refs 4 +3 0.417492 0.942615 +2 0.494492 0.942615 +1 0.494459 0.99153 +0 0.41746 0.99153 +kids 0 +OBJECT group +name "kr87.indicators.dots" +loc 2.14204e-08 -0.00512649 -0.0235679 +kids 2 +OBJECT poly +name "kr87.indicators.dot1" +loc 0 -0.00188601 0.000275044 +texture "kx165tso.png" +crease 45.000000 +numvert 4 +0 -0.000682086 -5.37726e-05 +0 -0.000682086 -0.00105377 +0 -0.00168209 -0.00105377 +0 -0.00168209 -5.37726e-05 +numsurf 1 +SURF 0x0 +mat 1 +refs 4 +3 0.170907 0.532511 +2 0.18244 0.532511 +1 0.182435 0.543691 +0 0.170903 0.543691 +kids 0 +OBJECT poly +name "kr87.indicators.dot0" +loc 0 0.00188601 -0.000275044 +texture "kx165tso.png" +crease 45.000000 +numvert 4 +0 -0.00168209 -5.37726e-05 +0 -0.00168209 -0.00105377 +0 -0.000682086 -0.00105377 +0 -0.000682086 -5.37726e-05 +numsurf 1 +SURF 0x0 +mat 1 +refs 4 +0 0.170907 0.532511 +1 0.18244 0.532511 +2 0.182435 0.543691 +3 0.170903 0.543691 +kids 0 +OBJECT group +name "kr87.indicators.Stby" +loc -7.82311e-08 0.00610246 -0.0203257 +kids 4 +OBJECT poly +name "kr87.indicators.Stby.1" +loc 0 5.58794e-09 -0.0117381 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 -0.0172322 -0.000379302 +0 -0.0172322 -0.00743322 +0 -0.00698765 -0.00743322 +0 -0.00698765 -0.000379302 +numsurf 1 +SURF 0x0 +mat 1 +refs 4 +0 0.00304302 0.417856 +1 0.0923989 0.417857 +2 0.0923615 0.527152 +3 0.00300572 0.527152 +kids 0 +OBJECT poly +name "kr87.indicators.Stby.10" +loc 0 5.58794e-09 -0.0046842 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 -0.00698765 -0.000379302 +0 -0.00698765 -0.00743323 +0 -0.0172322 -0.00743323 +0 -0.0172322 -0.000379302 +numsurf 1 +SURF 0x0 +mat 1 +refs 4 +3 0.00304302 0.417856 +2 0.0923989 0.417857 +1 0.0923615 0.527152 +0 0.00300572 0.527152 +kids 0 +OBJECT poly +name "kr87.indicators.Stby.100" +loc 0 -5.58794e-09 0.00468419 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 -0.00698765 -0.000379302 +0 -0.00698765 -0.00743322 +0 -0.0172322 -0.00743322 +0 -0.0172322 -0.000379302 +numsurf 1 +SURF 0x0 +mat 1 +refs 4 +3 0.00304302 0.417856 +2 0.0923989 0.417857 +1 0.0923615 0.527152 +0 0.00300572 0.527152 +kids 0 +OBJECT poly +name "kr87.indicators.Stby.1000" +loc 0 -5.58794e-09 0.0117381 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 -0.0172322 -0.000379302 +0 -0.0172322 -0.00743323 +0 -0.00698765 -0.00743323 +0 -0.00698765 -0.000379302 +numsurf 1 +SURF 0x0 +mat 1 +refs 4 +0 0.00304302 0.417856 +1 0.0923989 0.417857 +2 0.0923615 0.527152 +3 0.00300572 0.527152 +kids 0 +OBJECT poly +name "kr87.Chassis" +loc -0.0110046 -0.00469298 0.00584703 +texture "kx165tso.png" +crease 45.000000 +numvert 8 +0.0325441 -0.015 0.079 +0.0325441 -0.015 -0.079 +0.0325441 0.015 -0.079 +0.0325441 0.015 0.079 +0.0185441 -0.015 0.079 +0.0185441 -0.015 -0.079 +0.0185441 0.015 -0.079 +0.0185441 0.015 0.079 +numsurf 5 +SURF 0x10 +mat 0 +refs 4 +0 0.00030909 0.666277 +1 0.890554 0.666277 +2 0.890554 0.862647 +3 0.00030909 0.862647 +SURF 0x10 +mat 0 +refs 4 +0 0.335097 0.0290299 +3 0.335097 0.0757159 +7 0.335097 0.0757159 +4 0.335097 0.0290299 +SURF 0x10 +mat 0 +refs 4 +1 0.444789 0.0290299 +0 0.335097 0.0290299 +4 0.335097 0.0290299 +5 0.444789 0.0290299 +SURF 0x10 +mat 0 +refs 4 +2 0.444789 0.0757159 +1 0.444789 0.0290299 +5 0.444789 0.0290299 +6 0.444789 0.0757159 +SURF 0x10 +mat 0 +refs 4 +3 0.463307 0.0484428 +2 0.463307 0.0740378 +6 0.283371 0.0740378 +7 0.283371 0.0484428 +kids 0 +OBJECT group +name "kr87.Knobs" +loc -0.0105914 -0.00329748 -0.0363093 +kids 8 +OBJECT poly +name "kr87.knobs.SET" +loc -0.000413191 -0.0094949 -0.0212616 +texture "kx165tso.png" +crease 45.000000 +numvert 8 +0.0321433 1.21146e-05 0.0557888 +0.0321433 1.21146e-05 0.0467888 +0.0371433 1.21146e-05 0.0467888 +0.0371433 1.21146e-05 0.0557888 +0.0371433 -0.00498789 0.0557888 +0.0371433 -0.00498789 0.0467888 +0.0321433 -0.00498789 0.0467888 +0.0321433 -0.00498789 0.0557888 +numsurf 5 +SURF 0x10 +mat 0 +refs 4 +7 0.582319 0.323544 +6 0.595037 0.323544 +5 0.595037 0.338763 +4 0.582319 0.338763 +SURF 0x10 +mat 0 +refs 4 +0 0.582319 0.323544 +3 0.595037 0.323544 +2 0.595037 0.338763 +1 0.582319 0.338763 +SURF 0x10 +mat 0 +refs 4 +3 0.402077 0.933765 +4 0.402077 0.877259 +5 0.513648 0.877259 +2 0.513648 0.933765 +SURF 0x10 +mat 0 +refs 4 +0 0.582319 0.323544 +7 0.595037 0.323544 +4 0.595037 0.338763 +3 0.582319 0.338763 +SURF 0x10 +mat 0 +refs 4 +2 0.582319 0.323544 +5 0.595037 0.323544 +6 0.595037 0.338763 +1 0.582319 0.338763 +kids 0 +OBJECT poly +name "kr87.knobs.FLT" +loc -0.000413191 -0.0094949 -0.00605227 +texture "kx165tso.png" +crease 45.000000 +numvert 8 +0.0321433 -0.00498789 0.0557888 +0.0321433 -0.00498789 0.0467888 +0.0371433 -0.00498789 0.0467888 +0.0371433 -0.00498789 0.0557888 +0.0371433 1.21146e-05 0.0557888 +0.0371433 1.21146e-05 0.0467888 +0.0321433 1.21146e-05 0.0467888 +0.0321433 1.21146e-05 0.0557888 +numsurf 5 +SURF 0x10 +mat 0 +refs 4 +5 0.582319 0.323544 +2 0.595037 0.323544 +1 0.595037 0.338763 +6 0.582319 0.338763 +SURF 0x10 +mat 0 +refs 4 +7 0.582319 0.323544 +0 0.595037 0.323544 +3 0.595037 0.338763 +4 0.582319 0.338763 +SURF 0x10 +mat 0 +refs 4 +4 0.294354 0.93467 +3 0.294354 0.875186 +2 0.405925 0.875186 +5 0.405925 0.93467 +SURF 0x10 +mat 0 +refs 4 +7 0.582319 0.323544 +4 0.595037 0.323544 +5 0.595037 0.338763 +6 0.582319 0.338763 +SURF 0x10 +mat 0 +refs 4 +0 0.582319 0.323544 +1 0.595037 0.323544 +2 0.595037 0.338763 +3 0.582319 0.338763 +kids 0 +OBJECT poly +name "kr87.knobs.FRQ" +loc -0.000413191 -0.0094949 0.00865008 +texture "kx165tso.png" +crease 45.000000 +numvert 8 +0.0321433 1.21146e-05 0.0557888 +0.0321433 1.21146e-05 0.0467888 +0.0371433 1.21146e-05 0.0467888 +0.0371433 1.21146e-05 0.0557888 +0.0371433 -0.00498789 0.0557888 +0.0371433 -0.00498789 0.0467888 +0.0321433 -0.00498789 0.0467888 +0.0321433 -0.00498789 0.0557888 +numsurf 5 +SURF 0x10 +mat 0 +refs 4 +7 0.582319 0.323544 +6 0.595037 0.323544 +5 0.595037 0.338763 +4 0.582319 0.338763 +SURF 0x10 +mat 0 +refs 4 +0 0.582319 0.323544 +3 0.595037 0.323544 +2 0.595037 0.338763 +1 0.582319 0.338763 +SURF 0x10 +mat 0 +refs 4 +3 0.195742 0.93467 +4 0.195742 0.878164 +5 0.307313 0.878164 +2 0.307313 0.93467 +SURF 0x10 +mat 0 +refs 4 +0 0.582319 0.323544 +7 0.595037 0.323544 +4 0.595037 0.338763 +3 0.582319 0.338763 +SURF 0x10 +mat 0 +refs 4 +2 0.582319 0.323544 +5 0.595037 0.323544 +6 0.595037 0.338763 +1 0.582319 0.338763 +kids 0 +OBJECT poly +name "kr87.knobs.BFO" +loc -0.000413191 -0.0094949 0.0236904 +texture "kx165tso.png" +crease 45.000000 +numvert 8 +0.0321433 -0.00498789 0.0557888 +0.0321433 -0.00498789 0.0467888 +0.0371433 -0.00498789 0.0467888 +0.0371433 -0.00498789 0.0557888 +0.0371433 1.21146e-05 0.0557888 +0.0371433 1.21146e-05 0.0467888 +0.0321433 1.21146e-05 0.0467888 +0.0321433 1.21146e-05 0.0557888 +numsurf 5 +SURF 0x10 +mat 0 +refs 4 +5 0.582319 0.323544 +2 0.595037 0.323544 +1 0.595037 0.338763 +6 0.582319 0.338763 +SURF 0x10 +mat 0 +refs 4 +7 0.582319 0.323544 +0 0.595037 0.323544 +3 0.595037 0.338763 +4 0.582319 0.338763 +SURF 0x10 +mat 0 +refs 4 +4 0.0906125 0.937302 +3 0.0906125 0.874222 +2 0.190678 0.874222 +5 0.190678 0.937302 +SURF 0x10 +mat 0 +refs 4 +7 0.582319 0.323544 +4 0.595037 0.323544 +5 0.595037 0.338763 +6 0.582319 0.338763 +SURF 0x10 +mat 0 +refs 4 +0 0.582319 0.323544 +1 0.595037 0.323544 +2 0.595037 0.338763 +3 0.582319 0.338763 +kids 0 +OBJECT poly +name "kr87.knobs.ADF" +loc -0.000413191 -0.0094949 0.0394067 +texture "kx165tso.png" +crease 45.000000 +numvert 8 +0.0321433 1.21146e-05 0.0557888 +0.0321433 1.21146e-05 0.0467888 +0.0371433 1.21146e-05 0.0467888 +0.0371433 1.21146e-05 0.0557888 +0.0371433 -0.00498789 0.0557888 +0.0371433 -0.00498789 0.0467888 +0.0321433 -0.00498789 0.0467888 +0.0321433 -0.00498789 0.0557888 +numsurf 5 +SURF 0x10 +mat 0 +refs 4 +7 0.582319 0.323544 +6 0.595037 0.323544 +5 0.595037 0.338763 +4 0.582319 0.338763 +SURF 0x10 +mat 0 +refs 4 +0 0.582319 0.323544 +3 0.595037 0.323544 +2 0.595037 0.338763 +1 0.582319 0.338763 +SURF 0x10 +mat 0 +refs 4 +3 1.99996e-05 0.936424 +4 1.99996e-05 0.876486 +5 0.0927135 0.876486 +2 0.0927135 0.936424 +SURF 0x10 +mat 0 +refs 4 +0 0.582319 0.323544 +7 0.595037 0.323544 +4 0.595037 0.338763 +3 0.582319 0.338763 +SURF 0x10 +mat 0 +refs 4 +2 0.582319 0.323544 +5 0.595037 0.323544 +6 0.595037 0.338763 +1 0.582319 0.338763 +kids 0 +OBJECT poly +name "kr87.knobs.Volume" +loc -0.000332693 0.0310954 0.0645507 +texture "kx165tso.png" +crease 45.000000 +numvert 24 +0.0323582 -0.036308 -0.0526431 +0.0323582 -0.0381198 -0.0526431 +0.0323582 -0.0396888 -0.0535489 +0.0323582 -0.0405946 -0.0551179 +0.0323582 -0.0405946 -0.0569297 +0.0323582 -0.0396888 -0.0584987 +0.0323582 -0.0381198 -0.0594046 +0.0323582 -0.036308 -0.0594045 +0.0323582 -0.034739 -0.0584987 +0.0323582 -0.0338331 -0.0569297 +0.0323582 -0.0338331 -0.0551179 +0.0323582 -0.034739 -0.0535489 +0.0423582 -0.036308 -0.0526431 +0.0423582 -0.0381198 -0.0526431 +0.0423582 -0.0396888 -0.0535489 +0.0423582 -0.0405946 -0.0551179 +0.0423582 -0.0405946 -0.0569297 +0.0423582 -0.0396888 -0.0584987 +0.0423582 -0.0381198 -0.0594046 +0.0423582 -0.036308 -0.0594045 +0.0423582 -0.034739 -0.0584987 +0.0423582 -0.0338331 -0.0569297 +0.0423582 -0.0338331 -0.0551179 +0.0423582 -0.034739 -0.0535489 +numsurf 13 +SURF 0x10 +mat 0 +refs 12 +12 0.516431 0.379081 +13 0.493081 0.401879 +14 0.461184 0.410224 +15 0.429286 0.401879 +16 0.405936 0.379081 +17 0.397389 0.347938 +18 0.405936 0.316796 +19 0.429286 0.293998 +20 0.461184 0.285653 +21 0.493081 0.293998 +22 0.516431 0.316796 +23 0.524978 0.347938 +SURF 0x10 +mat 0 +refs 4 +1 0.0850871 0.380065 +13 0.0850871 0.316931 +12 0.0903819 0.316931 +0 0.0903819 0.380065 +SURF 0x10 +mat 0 +refs 4 +2 0.0797923 0.380065 +14 0.0797923 0.316931 +13 0.0850871 0.316931 +1 0.0850871 0.380065 +SURF 0x10 +mat 0 +refs 4 +3 0.0744975 0.380065 +15 0.0744975 0.316931 +14 0.0797923 0.316931 +2 0.0797923 0.380065 +SURF 0x10 +mat 0 +refs 4 +4 0.0692027 0.380065 +16 0.0692027 0.316931 +15 0.0744975 0.316931 +3 0.0744975 0.380065 +SURF 0x10 +mat 0 +refs 4 +5 0.0639079 0.380065 +17 0.0639079 0.316931 +16 0.0692027 0.316931 +4 0.0692027 0.380065 +SURF 0x10 +mat 0 +refs 4 +6 0.0586131 0.380065 +18 0.0586131 0.316931 +17 0.0639079 0.316931 +5 0.0639079 0.380065 +SURF 0x10 +mat 0 +refs 4 +7 0.0533183 0.380065 +19 0.0533183 0.316931 +18 0.0586131 0.316931 +6 0.0586131 0.380065 +SURF 0x10 +mat 0 +refs 4 +8 0.0480235 0.380065 +20 0.0480235 0.316931 +19 0.0533183 0.316931 +7 0.0533183 0.380065 +SURF 0x10 +mat 0 +refs 4 +9 0.0427287 0.380065 +21 0.0427287 0.316931 +20 0.0480235 0.316931 +8 0.0480235 0.380065 +SURF 0x10 +mat 0 +refs 4 +10 0.0374339 0.380065 +22 0.0374339 0.316931 +21 0.0427287 0.316931 +9 0.0427287 0.380065 +SURF 0x10 +mat 0 +refs 4 +11 0.0321392 0.380065 +23 0.0321392 0.316931 +22 0.0374339 0.316931 +10 0.0374339 0.380065 +SURF 0x10 +mat 0 +refs 4 +0 0.0268444 0.380065 +12 0.0268444 0.316931 +23 0.0321392 0.316931 +11 0.0321392 0.380065 +kids 0 +OBJECT poly +name "kr87.knobs.FRQInner" +loc 0.00119933 0.00927919 -0.0499293 +texture "kx165tso.png" +crease 45.000000 +numvert 24 +0.0440198 -0.0100351 0.0248547 +0.0440198 -0.008205 0.0266848 +0.0440198 -0.00753513 0.0291848 +0.0440198 -0.008205 0.0316848 +0.0440198 -0.0100351 0.033515 +0.0440198 -0.0125351 0.0341848 +0.0440198 -0.0150351 0.033515 +0.0440198 -0.0168653 0.0316848 +0.0440198 -0.0175351 0.0291848 +0.0440198 -0.0168653 0.0266848 +0.0440198 -0.0150351 0.0248547 +0.0440198 -0.0125351 0.0241848 +0.0540198 -0.0100351 0.0248547 +0.0540198 -0.008205 0.0266848 +0.0540198 -0.00753513 0.0291848 +0.0540198 -0.008205 0.0316848 +0.0540198 -0.0100351 0.033515 +0.0540198 -0.0125351 0.0341848 +0.0540198 -0.0150351 0.033515 +0.0540198 -0.0168653 0.0316848 +0.0540198 -0.0175351 0.0291848 +0.0540198 -0.0168653 0.0266848 +0.0540198 -0.0150351 0.0248547 +0.0540198 -0.0125351 0.0241848 +numsurf 13 +SURF 0x10 +mat 0 +refs 12 +12 0.115082 0.380737 +13 0.0923042 0.403588 +14 0.0611892 0.411951 +15 0.0300742 0.403588 +16 0.0072962 0.380737 +17 -0.00104079 0.349522 +18 0.0072962 0.318307 +19 0.0300742 0.295456 +20 0.0611892 0.287093 +21 0.0923042 0.295456 +22 0.115082 0.318307 +23 0.12342 0.349522 +SURF 0x10 +mat 0 +refs 4 +1 0.0886471 0.378893 +13 0.0886471 0.320799 +12 0.0941827 0.320799 +0 0.0941827 0.378893 +SURF 0x10 +mat 0 +refs 4 +2 0.0831115 0.378893 +14 0.0831115 0.320799 +13 0.0886471 0.320799 +1 0.0886471 0.378893 +SURF 0x10 +mat 0 +refs 4 +3 0.077576 0.378893 +15 0.077576 0.320799 +14 0.0831115 0.320799 +2 0.0831115 0.378893 +SURF 0x10 +mat 0 +refs 4 +4 0.0720404 0.378893 +16 0.0720404 0.320799 +15 0.077576 0.320799 +3 0.077576 0.378893 +SURF 0x10 +mat 0 +refs 4 +5 0.0665049 0.378893 +17 0.0665049 0.320799 +16 0.0720404 0.320799 +4 0.0720404 0.378893 +SURF 0x10 +mat 0 +refs 4 +6 0.0609693 0.378893 +18 0.0609693 0.320799 +17 0.0665049 0.320799 +5 0.0665049 0.378893 +SURF 0x10 +mat 0 +refs 4 +7 0.0554338 0.378893 +19 0.0554338 0.320799 +18 0.0609693 0.320799 +6 0.0609693 0.378893 +SURF 0x10 +mat 0 +refs 4 +8 0.0498982 0.378893 +20 0.0498982 0.320799 +19 0.0554338 0.320799 +7 0.0554338 0.378893 +SURF 0x10 +mat 0 +refs 4 +9 0.0443626 0.378893 +21 0.0443626 0.320799 +20 0.0498982 0.320799 +8 0.0498982 0.378893 +SURF 0x10 +mat 0 +refs 4 +10 0.0388271 0.378893 +22 0.0388271 0.320799 +21 0.0443626 0.320799 +9 0.0443626 0.378893 +SURF 0x10 +mat 0 +refs 4 +11 0.0332915 0.378893 +23 0.0332915 0.320799 +22 0.0388271 0.320799 +10 0.0388271 0.378893 +SURF 0x10 +mat 0 +refs 4 +0 0.027756 0.378893 +12 0.027756 0.320799 +23 0.0332915 0.320799 +11 0.0332915 0.378893 +kids 0 +OBJECT poly +name "kr87.knobs.FRQOuter" +loc 0.00119932 0.00927919 -0.0499293 +texture "kx165tso.png" +crease 45.000000 +numvert 24 +0.0438582 -0.0125351 0.0216848 +0.0438582 -0.0162851 0.0226896 +0.0438582 -0.0190303 0.0254348 +0.0438582 -0.0200351 0.0291848 +0.0438582 -0.0190303 0.0329348 +0.0438582 -0.0162851 0.03568 +0.0438582 -0.0125351 0.0366848 +0.0438582 -0.00878513 0.03568 +0.0438582 -0.00603994 0.0329348 +0.0438582 -0.00503513 0.0291848 +0.0438582 -0.00603994 0.0254348 +0.0438582 -0.00878513 0.0226896 +0.0308582 -0.0125351 0.0216848 +0.0308582 -0.0162851 0.0226896 +0.0308582 -0.0190303 0.0254348 +0.0308582 -0.0200351 0.0291848 +0.0308582 -0.0190303 0.0329348 +0.0308582 -0.0162851 0.03568 +0.0308582 -0.0125351 0.0366848 +0.0308582 -0.00878513 0.03568 +0.0308582 -0.00603994 0.0329348 +0.0308582 -0.00503513 0.0291848 +0.0308582 -0.00603994 0.0254348 +0.0308582 -0.00878513 0.0226896 +numsurf 13 +SURF 0x10 +mat 0 +refs 12 +10 0.0924867 0.40276 +9 0.0613282 0.411146 +8 0.0301697 0.40276 +7 0.00736005 0.379848 +6 -0.000988867 0.34855 +5 0.00736005 0.317252 +4 0.0301697 0.29434 +3 0.0613282 0.285954 +2 0.0924867 0.29434 +1 0.115296 0.317252 +0 0.123645 0.34855 +11 0.115296 0.379848 +SURF 0x10 +mat 0 +refs 4 +23 0.0294325 0.37989 +11 0.0294325 0.317513 +0 0.0345921 0.317513 +12 0.0345921 0.37989 +SURF 0x10 +mat 0 +refs 4 +12 0.0345921 0.37989 +0 0.0345921 0.317513 +1 0.0397517 0.317513 +13 0.0397517 0.37989 +SURF 0x10 +mat 0 +refs 4 +13 0.0397517 0.37989 +1 0.0397517 0.317513 +2 0.0449114 0.317513 +14 0.0449114 0.37989 +SURF 0x10 +mat 0 +refs 4 +14 0.0449114 0.37989 +2 0.0449114 0.317513 +3 0.050071 0.317513 +15 0.050071 0.37989 +SURF 0x10 +mat 0 +refs 4 +15 0.050071 0.37989 +3 0.050071 0.317513 +4 0.0552306 0.317513 +16 0.0552306 0.37989 +SURF 0x10 +mat 0 +refs 4 +16 0.0552306 0.37989 +4 0.0552306 0.317513 +5 0.0603903 0.317513 +17 0.0603903 0.37989 +SURF 0x10 +mat 0 +refs 4 +17 0.0603903 0.37989 +5 0.0603903 0.317513 +6 0.0655499 0.317513 +18 0.0655499 0.37989 +SURF 0x10 +mat 0 +refs 4 +18 0.0655499 0.37989 +6 0.0655499 0.317513 +7 0.0707095 0.317513 +19 0.0707095 0.37989 +SURF 0x10 +mat 0 +refs 4 +19 0.0707095 0.37989 +7 0.0707095 0.317513 +8 0.0758692 0.317513 +20 0.0758692 0.37989 +SURF 0x10 +mat 0 +refs 4 +20 0.0758692 0.37989 +8 0.0758692 0.317513 +9 0.0810288 0.317513 +21 0.0810288 0.37989 +SURF 0x10 +mat 0 +refs 4 +21 0.0810288 0.37989 +9 0.0810288 0.317513 +10 0.0861884 0.317513 +22 0.0861884 0.37989 +SURF 0x10 +mat 0 +refs 4 +22 0.0861884 0.37989 +10 0.0861884 0.317513 +11 0.0913481 0.317513 +23 0.0913481 0.37989 +kids 0 diff --git a/Aircraft/Generic/DualControl/Instruments/KR87/kr87.nas b/Aircraft/Generic/DualControl/Instruments/KR87/kr87.nas new file mode 100644 index 000000000..5ff2f485b --- /dev/null +++ b/Aircraft/Generic/DualControl/Instruments/KR87/kr87.nas @@ -0,0 +1,266 @@ +############################################################################### +## +## Nasal for dual control of a KR-87 ADF radio over the multiplayer +## network. +## +## Copyright (C) 2007 - 2010 Anders Gidenstam (anders(at)gidenstam.org) +## This file is licensed under the GPL license version 2 or later. +## +############################################################################### + +# Note: +# This module MUST be loaded as KR87. +# + +# Slave button presses. +var swap_btn = "frq-btn"; +var freq_decS = "freq-decS-clicked"; +var freq_incS = "freq-incS-clicked"; +var freq_decL = "freq-decL-clicked"; +var freq_incL = "freq-incL-clicked"; + +var bfo_btn = "bfo-btn"; + +# Settings +var freq_selected = "frequencies/selected-khz"; +var freq_standby = "frequencies/standby-khz"; + +var base = ["instrumentation/adf[0]", + "instrumentation/adf[1]"]; + +########################################################################### +var master_kr87 = { + new : func(n) { + var obj = {}; + obj.parents = [master_kr87]; + obj.base = props.globals.getNode(base[n]); + if (obj.base == nil) return; + obj.base.getNode("right-display", 1). + setValue(obj.base.getNode(freq_standby).getValue()); + # Always show the standby frequency. + obj.base.getNode("display-mode", 1).setValue(0); + return obj; + }, + swap : func() { + var tmp = me.base.getNode(freq_selected).getValue(); + me.base.getNode(freq_selected).setValue + (me.base.getNode(freq_standby).getValue()); + me.base.getNode(freq_standby).setValue(tmp); + me.base.getNode("right-display").setValue(tmp); + }, + adjust_frequency : func(d) { + adjust_radio_frequency( + me.base.getNode(freq_standby), + d, + 200, + 1800); + me.base.getNode("right-display"). + setValue(me.base.getNode(freq_standby).getValue()); + }, + toggle_BFO : func { + var p = me.base.getNode(bfo_btn).getValue() ? 0 : 1; + me.base.getNode(bfo_btn).setValue(p); + me.base.getNode("ident-audible").setValue(p); + } +}; + +########################################################################### +var slave_kr87 = { + new : func(n, airoot) { + var obj = {}; + obj.parents = [slave_kr87]; + obj.airoot = airoot; + obj.base = props.globals.getNode(base[n]); + if (obj.base == nil) return; + obj.base.getNode("right-display", 1). + setValue(obj.base.getNode(freq_standby).getValue()); + # Always show the standby frequency. + obj.base.getNode(base[n] ~ "/display-mode", 1).setValue(0); + return obj; + }, + swap : func() { + var p = me.base.getNode(swap_btn); +# print("KR87[?].SWAP"); + if (!p.getValue()) { + p.setValue(1); + settimer(func { p.setValue(0); }, + 1.0); + } + }, + adjust_frequency : func(d) { + var p = 0; + if (abs(d) < 50) { + p = (d < 0) ? me.base.getNode(freq_decS) + : me.base.getNode(freq_incS); + } else { + p = (d < 0) ? me.base.getNode(freq_decL) + : me.base.getNode(freq_incL); + } + if (!p.getValue()) { + p.setValue(1); + settimer(func { p.setValue(0); }, + 1.0); + } + }, +}; + +########################################################################### +# The KR-87 pick animations default to master. +# NOTE: Use make_master() and make_slave_to(). +# Do NOT change kr87 directly. +var kr87 = [master_kr87.new(0), master_kr87.new(1)]; + +########################################################################### +# API for pick animations. +########################################################################### + +########################################################################### +# n - ADF# +swap = func(n) { + kr87[n].swap(); +} + +########################################################################### +# n - ADF# +# d - adjustment +adjust_frequency = func(n, d) { + kr87[n].adjust_frequency(d); +} + +########################################################################### +# n - ADF# +# p - pressed +toggle_BFO = func(n) { + kr87[n].toggle_BFO(); +} + +########################################################################### +# API for dual control setup. +########################################################################### + +########################################################################### +# n - ADF# +var make_master = func(n) { + kr87[n] = master_kr87.new(n); +} + +########################################################################### +# n - ADF# +var make_slave_to = func(n, airoot) { + kr87[n] = slave_kr87.new(n, airoot); +} + +########################################################################### +# Create aliases to drive a KR-87 3d model in an AI/MP model. +# n - ADF# +var animate_aimodel = func(n, airoot) { + var p = "systems/electrical/outputs/adf["~ n ~"]"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = "instrumentation/adf["~ n ~"]/serviceable"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base[n] ~ "/" ~ freq_selected; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base[n] ~ "/" ~ freq_standby; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base[n] ~ "/display-mode"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base[n] ~ "/right-display"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base[n] ~ "/power-btn"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); +} + +########################################################################### +# Create a TDMEncoder node array for sending the current radio state to +# slaves. +# n - Adf# +var master_send_state = func(n) { + var b = props.globals.getNode(base[n]); + return + [ + b.getNode(freq_selected), + b.getNode(freq_standby) + ]; +} + +########################################################################### +# Create a SwitchDecoder action array for processing button presses +# from a slave. +# n - Adf# +var master_receive_slave_buttons = func(n) { + return + [ + func (b) { + if (b) { swap(n); } + }, + func (b) { + if (b) { adjust_frequency(n, -1.0); } + }, + func (b) { + if (b) { adjust_frequency(n, 1.0); } + }, + func (b) { + if (b) { adjust_frequency(n, -100.0); } + }, + func (b) { + if (b) { adjust_frequency(n, 100.0); } + } + ]; +} + +########################################################################### +# Create a TDMDecoder action array for processing the radio state +# from the master. +# n - Adf# +var slave_receive_master_state = func(n) { + var b = props.globals.getNode(base[n]); + return + [ + func (v) { + b.getNode(freq_selected).setValue(v); + }, + func (v) { + b.getNode(freq_standby).setValue(v); + b.getNode("right-display").setValue(v); + } + ]; +} + +########################################################################### +# Create a SwitchEncoder node array for sending button presses +# to the master +# n - Adf# +var slave_send_buttons = func(n) { + var b = props.globals.getNode(base[n]); + return + [ + b.getNode(swap_btn, 1), + b.getNode(freq_decS, 1), + b.getNode(freq_incS, 1), + b.getNode(freq_decL, 1), + b.getNode(freq_incL, 1), +# b.getNode(bfo_btn, 1) + ]; +} + +########################################################################### +# (Not so) Generic frequency stepper. +# f - frequency property +# d - change +# min - min frequency +# max - max frequency +var adjust_radio_frequency = func(f, d, min, max) { + var old = f.getValue(); + var new = old + d; + if (new < min - 0.05) { + new = max + (new - min); + if ((max - new) >= -d) new += -d; + } + if (new > max + 0.05) { + new = min + (new - max); + if ((new - min) >= d) new -= d; + } +# print("Old: " ~ old ~ " Intermediate: " ~ (old + d) ~ " New: " ~ new); + f.setValue(new); +} + diff --git a/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso.ac b/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso.ac new file mode 100644 index 000000000..3f0e68659 --- /dev/null +++ b/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso.ac @@ -0,0 +1,1961 @@ +AC3Db +MATERIAL "ac3dmat11" rgb 0.933333 0.501961 0.933333 amb 0.933333 0.501961 0.933333 emis 0 0 0 spec 0.2 0.2 0.2 shi 128 trans 1 +MATERIAL "ac3dmat1" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0 0 0 shi 10 trans 0 +MATERIAL "ac3dmat1" rgb 1 1 1 amb 1 1 1 emis 1 1 1 spec 0 0 0 shi 10 trans 0 +OBJECT world +kids 15 +OBJECT poly +name "Chassis" +loc -0.0185441 0 0 +texture "kx165tso.png" +crease 45.000000 +numvert 8 +0.0325441 -0.0255 0.079 +0.0325441 -0.0255 -0.079 +0.0325441 0.0255 -0.079 +0.0325441 0.0255 0.079 +0.0185441 -0.0255 0.079 +0.0185441 -0.0255 -0.079 +0.0185441 0.0255 -0.079 +0.0185441 0.0255 0.079 +numsurf 5 +SURF 0x10 +mat 1 +refs 4 +0 0.00195482 0.00231326 +1 0.877724 0.00231326 +2 0.877724 0.280521 +3 0.00195482 0.280521 +SURF 0x10 +mat 1 +refs 4 +0 0.918047 0.1704 +3 0.912783 0.1704 +7 0.912783 0.0114898 +4 0.918047 0.0114898 +SURF 0x10 +mat 1 +refs 4 +1 0.912783 0.1704 +0 0.918047 0.1704 +4 0.918047 0.0114898 +5 0.912783 0.0114898 +SURF 0x10 +mat 1 +refs 4 +2 0.912783 0.1704 +1 0.918047 0.1704 +5 0.918047 0.0114898 +6 0.912783 0.0114898 +SURF 0x10 +mat 1 +refs 4 +3 0.918047 0.1704 +2 0.912783 0.1704 +6 0.912783 0.0114898 +7 0.918047 0.0114898 +kids 0 +OBJECT group +name "CommUse" +loc 0.0117138 0.0026539 0.0457795 +kids 6 +OBJECT poly +name "CommUse100M" +loc 0.00234275 0.00053078 0.0232637 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 0.0172322 0.000379309 +0 0.0172322 0.00743323 +0 0.00698765 0.00743323 +0 0.00698765 0.000379309 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +0 0.0923401 0.527157 +1 0.00296877 0.527144 +2 0.00300568 0.419133 +3 0.0923396 0.419138 +kids 0 +OBJECT poly +name "CommUse10M" +loc 0.00234275 0.00053078 0.0162098 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 0.00698765 0.000379302 +0 0.00698765 0.00743322 +0 0.0172322 0.00743322 +0 0.0172322 0.000379302 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +3 0.0923401 0.527157 +2 0.00304349 0.527158 +1 0.0030804 0.419133 +0 0.0923396 0.419138 +kids 0 +OBJECT poly +name "CommUse1M" +loc 0.00234275 0.00053078 0.0091559 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 0.0172322 0.000379302 +0 0.0172322 0.00743322 +0 0.00698765 0.00743322 +0 0.00698765 0.000379302 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +0 0.0923401 0.527157 +1 0.00304349 0.527158 +2 0.0030804 0.419133 +3 0.0923396 0.419138 +kids 0 +OBJECT poly +name "CommUse100K" +loc 0.00234275 0.00053078 0.00210197 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 0.00698765 0.000379302 +0 0.00698765 0.00743323 +0 0.0172322 0.00743323 +0 0.0172322 0.000379302 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +3 0.0923401 0.527157 +2 0.00304349 0.527158 +1 0.0030804 0.419133 +0 0.0923396 0.419138 +kids 0 +OBJECT poly +name "CommUse10K" +loc 0.00234275 0.00053078 -0.00495195 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 0.0172322 0.000379302 +0 0.0172322 0.00743322 +0 0.00698765 0.00743322 +0 0.00698765 0.000379302 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +0 0.0923401 0.527157 +1 0.00304349 0.527158 +2 0.0030804 0.419133 +3 0.0923396 0.419138 +kids 0 +OBJECT poly +name "CommUseDot" +loc -0.0117138 -0.0026539 -0.0451466 +texture "kx165tso.png" +crease 45.000000 +numvert 4 +0.0141379 0.0113861 0.0553319 +0.0141379 0.0113861 0.0564392 +0.0141379 0.0102382 0.0564392 +0.0141379 0.0102382 0.0553319 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +0 0.18258 0.543597 +1 0.170966 0.543597 +2 0.170966 0.532376 +3 0.18258 0.532376 +kids 0 +OBJECT group +name "CommStby" +loc 0.0119151 0.0026539 0.00880883 +kids 6 +OBJECT poly +name "CommStby100M" +loc 0.00214136 0.00053078 0.0232527 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 0.00698765 0.000379309 +0 0.00698765 0.00743323 +0 0.0172322 0.00743323 +0 0.0172322 0.000379309 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +3 0.0923023 0.527151 +2 0.00300565 0.527151 +1 0.00304288 0.419142 +0 0.0923396 0.419138 +kids 0 +OBJECT poly +name "CommStby10M" +loc 0.00214136 0.00053078 0.0161988 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 0.0172322 0.000379302 +0 0.0172322 0.00743323 +0 0.00698765 0.00743323 +0 0.00698765 0.000379302 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +0 0.0923023 0.527151 +1 0.00300565 0.527151 +2 0.00304288 0.419142 +3 0.0923396 0.419138 +kids 0 +OBJECT poly +name "CommStby1M" +loc 0.00214136 0.00053078 0.00914484 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 0.00698765 0.000379302 +0 0.00698765 0.00743322 +0 0.0172322 0.00743322 +0 0.0172322 0.000379302 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +3 0.0923023 0.527151 +2 0.00300565 0.527151 +1 0.00304288 0.419142 +0 0.0923396 0.419138 +kids 0 +OBJECT poly +name "CommStby100K" +loc 0.00214136 0.00053078 0.00209092 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 0.0172322 0.000379302 +0 0.0172322 0.00743323 +0 0.00698765 0.00743323 +0 0.00698765 0.000379302 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +0 0.0923023 0.527151 +1 0.00300565 0.527151 +2 0.00304288 0.419142 +3 0.0923396 0.419138 +kids 0 +OBJECT poly +name "CommStby10K" +loc 0.00214136 0.00053078 -0.004963 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 0.00698765 0.000379302 +0 0.00698765 0.00743322 +0 0.0172322 0.00743322 +0 0.0172322 0.000379302 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +3 0.0923023 0.527151 +2 0.00300565 0.527151 +1 0.00304288 0.419142 +0 0.0923396 0.419138 +kids 0 +OBJECT poly +name "CommStbyDot" +loc -0.0119151 -0.00265385 -0.0450913 +texture "kx165tso.png" +crease 45.000000 +numvert 4 +0.0141379 0.0102382 0.0553319 +0.0141379 0.0102382 0.0564392 +0.0141379 0.0113861 0.0564392 +0.0141379 0.0113861 0.0553319 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +3 0.18258 0.543597 +2 0.170966 0.543597 +1 0.170966 0.532376 +0 0.18258 0.532376 +kids 0 +OBJECT group +name "NavUse" +loc 0.0121165 0.00265391 -0.0349148 +kids 6 +OBJECT poly +name "NavUse100M" +loc 0.00193996 0.0247506 0.031069 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 -0.00698765 -0.00037931 +0 -0.00698765 -0.00743323 +0 -0.0172322 -0.00743323 +0 -0.0172322 -0.00037931 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +3 0.00304292 0.419137 +2 0.0923396 0.419138 +1 0.0923023 0.527151 +0 0.00300564 0.527151 +kids 0 +OBJECT poly +name "NavUse10M" +loc 0.00193996 0.0247506 0.0240151 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 -0.0172322 -0.000379303 +0 -0.0172322 -0.00743322 +0 -0.00698765 -0.00743322 +0 -0.00698765 -0.000379303 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +0 0.00304292 0.419137 +1 0.0923396 0.419138 +2 0.0923023 0.527151 +3 0.00300564 0.527151 +kids 0 +OBJECT poly +name "NavUse1M" +loc 0.00193996 0.0247506 0.0169612 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 -0.00698765 -0.000379302 +0 -0.00698765 -0.00743322 +0 -0.0172322 -0.00743322 +0 -0.0172322 -0.000379302 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +3 0.00304292 0.419137 +2 0.0923396 0.419138 +1 0.0923023 0.527151 +0 0.00300564 0.527151 +kids 0 +OBJECT poly +name "NavUse100K" +loc 0.00193996 0.0247506 0.00990724 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 -0.0172322 -0.000379302 +0 -0.0172322 -0.00743323 +0 -0.00698765 -0.00743323 +0 -0.00698765 -0.000379302 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +0 0.00304292 0.419137 +1 0.0923396 0.419138 +2 0.0923023 0.527151 +3 0.00300564 0.527151 +kids 0 +OBJECT poly +name "NavUse10K" +loc 0.00193996 0.0247506 0.00285331 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 -0.00698765 -0.000379302 +0 -0.00698765 -0.00743322 +0 -0.0172322 -0.00743322 +0 -0.0172322 -0.000379302 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +3 0.00304292 0.419137 +2 0.0923396 0.419138 +1 0.0923023 0.527151 +0 0.00300564 0.527151 +kids 0 +OBJECT poly +name "NavUseDot" +loc -0.0121165 -0.00265386 -0.0451102 +texture "kx165tso.png" +crease 45.000000 +numvert 4 +0.0141379 0.0113861 0.0553319 +0.0141379 0.0113861 0.0564392 +0.0141379 0.0102382 0.0564392 +0.0141379 0.0102382 0.0553319 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +0 0.18258 0.543597 +1 0.170966 0.543597 +2 0.170966 0.532376 +3 0.18258 0.532376 +kids 0 +OBJECT group +name "NavStby" +loc 0.0123179 0.00265391 -0.0718956 +kids 6 +OBJECT poly +name "NavStby100M" +loc 0.00173857 0.0247506 0.031068 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 -0.0172322 -0.000379309 +0 -0.0172322 -0.00743323 +0 -0.00698765 -0.00743323 +0 -0.00698765 -0.000379309 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +0 0.00304292 0.419137 +1 0.0923396 0.419138 +2 0.0923023 0.527151 +3 0.00300564 0.527151 +kids 0 +OBJECT poly +name "NavStby10M" +loc 0.00173857 0.0247506 0.0240141 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 -0.00698765 -0.000379302 +0 -0.00698765 -0.00743323 +0 -0.0172322 -0.00743323 +0 -0.0172322 -0.000379302 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +3 0.00304292 0.419137 +2 0.0923396 0.419138 +1 0.0923023 0.527151 +0 0.00300564 0.527151 +kids 0 +OBJECT poly +name "NavStby1M" +loc 0.00173857 0.0247506 0.0169602 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 -0.0172322 -0.000379302 +0 -0.0172322 -0.00743322 +0 -0.00698765 -0.00743322 +0 -0.00698765 -0.000379302 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +0 0.00304292 0.419137 +1 0.0923396 0.419138 +2 0.0923023 0.527151 +3 0.00300564 0.527151 +kids 0 +OBJECT poly +name "NavStby100K" +loc 0.00173857 0.0247506 0.00990625 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 -0.00698765 -0.000379302 +0 -0.00698765 -0.00743323 +0 -0.0172322 -0.00743323 +0 -0.0172322 -0.000379302 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +3 0.00304292 0.419137 +2 0.0923396 0.419138 +1 0.0923023 0.527151 +0 0.00300564 0.527151 +kids 0 +OBJECT poly +name "NavStby10K" +loc 0.00173857 0.0247506 0.00285233 +texture "kx165tso.png" +texrep 1 1 +crease 45.000000 +numvert 4 +0 -0.0172322 -0.000379302 +0 -0.0172322 -0.00743322 +0 -0.00698765 -0.00743322 +0 -0.00698765 -0.000379302 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +0 0.00304292 0.419137 +1 0.0923396 0.419138 +2 0.0923023 0.527151 +3 0.00300564 0.527151 +kids 0 +OBJECT poly +name "NavStbyDot" +loc -0.0123179 -0.00265386 -0.0451054 +texture "kx165tso.png" +crease 45.000000 +numvert 4 +0.0141379 0.0102382 0.0553319 +0.0141379 0.0102382 0.0564392 +0.0141379 0.0113861 0.0564392 +0.0141379 0.0113861 0.0553319 +numsurf 1 +SURF 0x0 +mat 2 +refs 4 +3 0.18258 0.543597 +2 0.170966 0.543597 +1 0.170966 0.532376 +0 0.18258 0.532376 +kids 0 +OBJECT group +name "CommKnobs" +loc -0.0176169 0.00594301 0.0243414 +kids 4 +OBJECT poly +name "CommToggle" +loc -0.00052402 -0.00645512 -0.0306302 +texture "kx165tso.png" +crease 45.000000 +numvert 8 +0.0321433 -0.00498789 0.0557888 +0.0321433 -0.00498789 0.0467888 +0.0371433 -0.00498789 0.0467888 +0.0371433 -0.00498789 0.0557888 +0.0371433 1.21146e-05 0.0557888 +0.0371433 1.21146e-05 0.0467888 +0.0321433 1.21146e-05 0.0467888 +0.0321433 1.21146e-05 0.0557888 +numsurf 5 +SURF 0x10 +mat 1 +refs 4 +5 0.582319 0.323544 +2 0.595037 0.323544 +1 0.595037 0.338763 +6 0.582319 0.338763 +SURF 0x10 +mat 1 +refs 4 +7 0.582319 0.323544 +0 0.595037 0.323544 +3 0.595037 0.338763 +4 0.582319 0.338763 +SURF 0x10 +mat 1 +refs 4 +4 0.533687 0.343785 +3 0.533687 0.287279 +2 0.645258 0.287279 +5 0.645258 0.343785 +SURF 0x10 +mat 1 +refs 4 +7 0.582319 0.323544 +4 0.595037 0.323544 +5 0.595037 0.338763 +6 0.582319 0.338763 +SURF 0x10 +mat 1 +refs 4 +0 0.582319 0.323544 +1 0.595037 0.323544 +2 0.595037 0.338763 +3 0.582319 0.338763 +kids 0 +OBJECT poly +name "CommMHz" +loc 0.000685325 -0.00540788 -0.0315262 +texture "kx165tso.png" +crease 45.000000 +numvert 24 +0.0308582 -0.00878513 0.0226896 +0.0308582 -0.00603994 0.0254348 +0.0308582 -0.00503513 0.0291848 +0.0308582 -0.00603994 0.0329348 +0.0308582 -0.00878513 0.03568 +0.0308582 -0.0125351 0.0366848 +0.0308582 -0.0162851 0.03568 +0.0308582 -0.0190303 0.0329348 +0.0308582 -0.0200351 0.0291848 +0.0308582 -0.0190303 0.0254348 +0.0308582 -0.0162851 0.0226896 +0.0308582 -0.0125351 0.0216848 +0.0438582 -0.00878513 0.0226896 +0.0438582 -0.00603994 0.0254348 +0.0438582 -0.00503513 0.0291848 +0.0438582 -0.00603994 0.0329348 +0.0438582 -0.00878513 0.03568 +0.0438582 -0.0125351 0.0366848 +0.0438582 -0.0162851 0.03568 +0.0438582 -0.0190303 0.0329348 +0.0438582 -0.0200351 0.0291848 +0.0438582 -0.0190303 0.0254348 +0.0438582 -0.0162851 0.0226896 +0.0438582 -0.0125351 0.0216848 +numsurf 13 +SURF 0x10 +mat 1 +refs 4 +1 0.954002 0.128238 +13 0.954002 0.0156906 +12 0.989995 0.0156906 +0 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +2 0.954002 0.128238 +14 0.954002 0.0156906 +13 0.989995 0.0156906 +1 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +3 0.954002 0.128238 +15 0.954002 0.0156906 +14 0.989995 0.0156906 +2 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +4 0.954002 0.128238 +16 0.954002 0.0156906 +15 0.989995 0.0156906 +3 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +5 0.954002 0.128238 +17 0.954002 0.0156906 +16 0.989995 0.0156906 +4 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +6 0.954002 0.128238 +18 0.954002 0.0156906 +17 0.989995 0.0156906 +5 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +7 0.954002 0.128238 +19 0.954002 0.0156906 +18 0.989995 0.0156906 +6 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +8 0.954002 0.128238 +20 0.954002 0.0156906 +19 0.989995 0.0156906 +7 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +9 0.954002 0.128238 +21 0.954002 0.0156906 +20 0.989995 0.0156906 +8 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +10 0.954002 0.128238 +22 0.954002 0.0156906 +21 0.989995 0.0156906 +9 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +11 0.954002 0.128238 +23 0.954002 0.0156906 +22 0.989995 0.0156906 +10 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +0 0.954002 0.128238 +12 0.954002 0.0156906 +23 0.989995 0.0156906 +11 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 12 +13 0.077879 0.409873 +14 0.0454072 0.409909 +15 0.0173038 0.393864 +16 0.00109929 0.366036 +17 0.00113561 0.333883 +18 0.017403 0.30602 +19 0.0455428 0.289913 +20 0.0780147 0.289877 +21 0.106118 0.305922 +22 0.122322 0.33375 +23 0.122286 0.365902 +12 0.106018 0.393765 +kids 0 +OBJECT poly +name "CommKHz" +loc 0.000685325 -0.00540788 -0.0315262 +texture "kx165tso.png" +crease 45.000000 +numvert 24 +0.0540198 -0.0125351 0.0241848 +0.0540198 -0.0150351 0.0248547 +0.0540198 -0.0168653 0.0266848 +0.0540198 -0.0175351 0.0291848 +0.0540198 -0.0168653 0.0316848 +0.0540198 -0.0150351 0.033515 +0.0540198 -0.0125351 0.0341848 +0.0540198 -0.0100351 0.033515 +0.0540198 -0.008205 0.0316848 +0.0540198 -0.00753513 0.0291848 +0.0540198 -0.008205 0.0266848 +0.0540198 -0.0100351 0.0248547 +0.0440198 -0.0125351 0.0241848 +0.0440198 -0.0150351 0.0248547 +0.0440198 -0.0168653 0.0266848 +0.0440198 -0.0175351 0.0291848 +0.0440198 -0.0168653 0.0316848 +0.0440198 -0.0150351 0.033515 +0.0440198 -0.0125351 0.0341848 +0.0440198 -0.0100351 0.033515 +0.0440198 -0.008205 0.0316848 +0.0440198 -0.00753513 0.0291848 +0.0440198 -0.008205 0.0266848 +0.0440198 -0.0100351 0.0248547 +numsurf 13 +SURF 0x0 +mat 1 +refs 4 +23 0.954002 0.128238 +11 0.954002 0.0156906 +0 0.989995 0.0156906 +12 0.989995 0.128238 +SURF 0x0 +mat 1 +refs 4 +12 0.954002 0.128238 +0 0.954002 0.0156906 +1 0.989995 0.0156906 +13 0.989995 0.128238 +SURF 0x0 +mat 1 +refs 4 +13 0.954002 0.128238 +1 0.954002 0.0156906 +2 0.989995 0.0156906 +14 0.989995 0.128238 +SURF 0x0 +mat 1 +refs 4 +14 0.954002 0.128238 +2 0.954002 0.0156906 +3 0.989995 0.0156906 +15 0.989995 0.128238 +SURF 0x0 +mat 1 +refs 4 +15 0.954002 0.128238 +3 0.954002 0.0156906 +4 0.989995 0.0156906 +16 0.989995 0.128238 +SURF 0x0 +mat 1 +refs 4 +16 0.954002 0.128238 +4 0.954002 0.0156906 +5 0.989995 0.0156906 +17 0.989995 0.128238 +SURF 0x0 +mat 1 +refs 4 +17 0.954002 0.128238 +5 0.954002 0.0156906 +6 0.989995 0.0156906 +18 0.989995 0.128238 +SURF 0x0 +mat 1 +refs 4 +18 0.954002 0.128238 +6 0.954002 0.0156906 +7 0.989995 0.0156906 +19 0.989995 0.128238 +SURF 0x0 +mat 1 +refs 4 +19 0.954002 0.128238 +7 0.954002 0.0156906 +8 0.989995 0.0156906 +20 0.989995 0.128238 +SURF 0x0 +mat 1 +refs 4 +20 0.954002 0.128238 +8 0.954002 0.0156906 +9 0.989995 0.0156906 +21 0.989995 0.128238 +SURF 0x0 +mat 1 +refs 4 +21 0.954002 0.128238 +9 0.954002 0.0156906 +10 0.989995 0.0156906 +22 0.989995 0.128238 +SURF 0x0 +mat 1 +refs 4 +22 0.954002 0.128238 +10 0.954002 0.0156906 +11 0.989995 0.0156906 +23 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 12 +11 0.238004 0.393253 +10 0.210088 0.40943 +9 0.177868 0.409456 +8 0.149977 0.393323 +7 0.133889 0.365356 +6 0.133916 0.333047 +5 0.150047 0.305054 +4 0.177963 0.288877 +3 0.210184 0.288851 +2 0.238074 0.304983 +1 0.254162 0.332951 +0 0.254136 0.365259 +kids 0 +OBJECT poly +name "CommVolume" +loc -0.000846632 0.0172709 0.0936826 +texture "kx165tso.png" +crease 45.000000 +numvert 24 +0.0423582 -0.034739 -0.053549 +0.0423582 -0.0338331 -0.055118 +0.0423582 -0.0338331 -0.0569297 +0.0423582 -0.034739 -0.0584987 +0.0423582 -0.036308 -0.0594046 +0.0423582 -0.0381198 -0.0594046 +0.0423582 -0.0396888 -0.0584987 +0.0423582 -0.0405946 -0.0569297 +0.0423582 -0.0405946 -0.055118 +0.0423582 -0.0396888 -0.053549 +0.0423582 -0.0381198 -0.0526431 +0.0423582 -0.036308 -0.0526431 +0.0323582 -0.034739 -0.053549 +0.0323582 -0.0338331 -0.055118 +0.0323582 -0.0338331 -0.0569297 +0.0323582 -0.034739 -0.0584987 +0.0323582 -0.036308 -0.0594046 +0.0323582 -0.0381198 -0.0594046 +0.0323582 -0.0396888 -0.0584987 +0.0323582 -0.0405946 -0.0569297 +0.0323582 -0.0405946 -0.055118 +0.0323582 -0.0396888 -0.053549 +0.0323582 -0.0381198 -0.0526431 +0.0323582 -0.036308 -0.0526431 +numsurf 13 +SURF 0x10 +mat 1 +refs 4 +23 0.954002 0.128238 +11 0.954002 0.0156906 +0 0.989995 0.0156906 +12 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +12 0.954002 0.128238 +0 0.954002 0.0156906 +1 0.989995 0.0156906 +13 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +13 0.954002 0.128238 +1 0.954002 0.0156906 +2 0.989995 0.0156906 +14 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +14 0.954002 0.128238 +2 0.954002 0.0156906 +3 0.989995 0.0156906 +15 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +15 0.954002 0.128238 +3 0.954002 0.0156906 +4 0.989995 0.0156906 +16 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +16 0.954002 0.128238 +4 0.954002 0.0156906 +5 0.989995 0.0156906 +17 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +17 0.954002 0.128238 +5 0.954002 0.0156906 +6 0.989995 0.0156906 +18 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +18 0.954002 0.128238 +6 0.954002 0.0156906 +7 0.989995 0.0156906 +19 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +19 0.954002 0.128238 +7 0.954002 0.0156906 +8 0.989995 0.0156906 +20 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +20 0.954002 0.128238 +8 0.954002 0.0156906 +9 0.989995 0.0156906 +21 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +21 0.954002 0.128238 +9 0.954002 0.0156906 +10 0.989995 0.0156906 +22 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +22 0.954002 0.128238 +10 0.954002 0.0156906 +11 0.989995 0.0156906 +23 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 12 +11 0.505318 0.394852 +10 0.477464 0.410748 +9 0.445189 0.410554 +8 0.417142 0.394321 +7 0.400839 0.3664 +6 0.400648 0.334272 +5 0.41662 0.306546 +4 0.444475 0.29065 +3 0.47675 0.290844 +2 0.504796 0.307077 +1 0.521099 0.334997 +0 0.521291 0.367125 +kids 0 +OBJECT group +name "NavKnobs" +loc -0.0177177 0.00594301 -0.0556586 +kids 4 +OBJECT poly +name "NavToggle" +loc -0.000826385 -0.00645512 -0.0306302 +texture "kx165tso.png" +crease 45.000000 +numvert 8 +0.0321433 1.21146e-05 0.0557888 +0.0321433 1.21146e-05 0.0467888 +0.0371433 1.21146e-05 0.0467888 +0.0371433 1.21146e-05 0.0557888 +0.0371433 -0.00498789 0.0557888 +0.0371433 -0.00498789 0.0467888 +0.0321433 -0.00498789 0.0467888 +0.0321433 -0.00498789 0.0557888 +numsurf 5 +SURF 0x10 +mat 1 +refs 4 +7 0.582319 0.323544 +6 0.595037 0.323544 +5 0.595037 0.338763 +4 0.582319 0.338763 +SURF 0x10 +mat 1 +refs 4 +0 0.582319 0.323544 +3 0.595037 0.323544 +2 0.595037 0.338763 +1 0.582319 0.338763 +SURF 0x10 +mat 1 +refs 4 +3 0.533687 0.343785 +4 0.533687 0.287279 +5 0.645258 0.287279 +2 0.645258 0.343785 +SURF 0x10 +mat 1 +refs 4 +0 0.582319 0.323544 +7 0.595037 0.323544 +4 0.595037 0.338763 +3 0.582319 0.338763 +SURF 0x10 +mat 1 +refs 4 +2 0.582319 0.323544 +5 0.595037 0.323544 +6 0.595037 0.338763 +1 0.582319 0.338763 +kids 0 +OBJECT poly +name "NavMHz" +loc 0.000786129 -0.00540788 -0.0315262 +texture "kx165tso.png" +crease 45.000000 +numvert 24 +0.0438582 -0.0125351 0.0216848 +0.0438582 -0.0162851 0.0226896 +0.0438582 -0.0190303 0.0254348 +0.0438582 -0.0200351 0.0291848 +0.0438582 -0.0190303 0.0329348 +0.0438582 -0.0162851 0.03568 +0.0438582 -0.0125351 0.0366848 +0.0438582 -0.00878513 0.03568 +0.0438582 -0.00603994 0.0329348 +0.0438582 -0.00503513 0.0291848 +0.0438582 -0.00603994 0.0254348 +0.0438582 -0.00878513 0.0226896 +0.0308582 -0.0125351 0.0216848 +0.0308582 -0.0162851 0.0226896 +0.0308582 -0.0190303 0.0254348 +0.0308582 -0.0200351 0.0291848 +0.0308582 -0.0190303 0.0329348 +0.0308582 -0.0162851 0.03568 +0.0308582 -0.0125351 0.0366848 +0.0308582 -0.00878513 0.03568 +0.0308582 -0.00603994 0.0329348 +0.0308582 -0.00503513 0.0291848 +0.0308582 -0.00603994 0.0254348 +0.0308582 -0.00878513 0.0226896 +numsurf 13 +SURF 0x10 +mat 1 +refs 12 +10 0.0780978 0.409973 +9 0.0457745 0.409929 +8 0.0177597 0.393805 +7 0.00156012 0.365922 +6 0.00151628 0.33375 +5 0.01764 0.305911 +4 0.045611 0.289863 +3 0.0779343 0.289907 +2 0.105949 0.30603 +1 0.122148 0.333914 +0 0.122192 0.366085 +11 0.106068 0.393925 +SURF 0x10 +mat 1 +refs 4 +23 0.954002 0.128238 +11 0.954002 0.0156906 +0 0.989995 0.0156906 +12 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +12 0.954002 0.128238 +0 0.954002 0.0156906 +1 0.989995 0.0156906 +13 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +13 0.954002 0.128238 +1 0.954002 0.0156906 +2 0.989995 0.0156906 +14 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +14 0.954002 0.128238 +2 0.954002 0.0156906 +3 0.989995 0.0156906 +15 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +15 0.954002 0.128238 +3 0.954002 0.0156906 +4 0.989995 0.0156906 +16 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +16 0.954002 0.128238 +4 0.954002 0.0156906 +5 0.989995 0.0156906 +17 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +17 0.954002 0.128238 +5 0.954002 0.0156906 +6 0.989995 0.0156906 +18 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +18 0.954002 0.128238 +6 0.954002 0.0156906 +7 0.989995 0.0156906 +19 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +19 0.954002 0.128238 +7 0.954002 0.0156906 +8 0.989995 0.0156906 +20 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +20 0.954002 0.128238 +8 0.954002 0.0156906 +9 0.989995 0.0156906 +21 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +21 0.954002 0.128238 +9 0.954002 0.0156906 +10 0.989995 0.0156906 +22 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +22 0.954002 0.128238 +10 0.954002 0.0156906 +11 0.989995 0.0156906 +23 0.989995 0.128238 +kids 0 +OBJECT poly +name "NavKHz" +loc 0.0007861 -0.0054079 -0.0315262 +texture "kx165tso.png" +crease 45.000000 +numvert 24 +0.0440198 -0.0100351 0.0248547 +0.0440198 -0.008205 0.0266848 +0.0440198 -0.00753513 0.0291848 +0.0440198 -0.008205 0.0316848 +0.0440198 -0.0100351 0.033515 +0.0440198 -0.0125351 0.0341848 +0.0440198 -0.0150351 0.033515 +0.0440198 -0.0168653 0.0316848 +0.0440198 -0.0175351 0.0291848 +0.0440198 -0.0168653 0.0266848 +0.0440198 -0.0150351 0.0248547 +0.0440198 -0.0125351 0.0241848 +0.0540198 -0.0100351 0.0248547 +0.0540198 -0.008205 0.0266848 +0.0540198 -0.00753513 0.0291848 +0.0540198 -0.008205 0.0316848 +0.0540198 -0.0100351 0.033515 +0.0540198 -0.0125351 0.0341848 +0.0540198 -0.0150351 0.033515 +0.0540198 -0.0168653 0.0316848 +0.0540198 -0.0175351 0.0291848 +0.0540198 -0.0168653 0.0266848 +0.0540198 -0.0150351 0.0248547 +0.0540198 -0.0125351 0.0241848 +numsurf 13 +SURF 0x10 +mat 1 +refs 12 +12 0.371826 0.392792 +13 0.34391 0.408969 +14 0.31169 0.408994 +15 0.2838 0.392862 +16 0.267712 0.364895 +17 0.267738 0.332586 +18 0.28387 0.304592 +19 0.311787 0.288415 +20 0.344006 0.28839 +21 0.371896 0.304521 +22 0.387984 0.332489 +23 0.387959 0.364798 +SURF 0x10 +mat 1 +refs 4 +1 0.954002 0.128238 +13 0.954002 0.0156906 +12 0.989995 0.0156906 +0 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +2 0.954002 0.128238 +14 0.954002 0.0156906 +13 0.989995 0.0156906 +1 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +3 0.954002 0.128238 +15 0.954002 0.0156906 +14 0.989995 0.0156906 +2 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +4 0.954002 0.128238 +16 0.954002 0.0156906 +15 0.989995 0.0156906 +3 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +5 0.954002 0.128238 +17 0.954002 0.0156906 +16 0.989995 0.0156906 +4 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +6 0.954002 0.128238 +18 0.954002 0.0156906 +17 0.989995 0.0156906 +5 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +7 0.954002 0.128238 +19 0.954002 0.0156906 +18 0.989995 0.0156906 +6 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +8 0.954002 0.128238 +20 0.954002 0.0156906 +19 0.989995 0.0156906 +7 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +9 0.954002 0.128238 +21 0.954002 0.0156906 +20 0.989995 0.0156906 +8 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +10 0.954002 0.128238 +22 0.954002 0.0156906 +21 0.989995 0.0156906 +9 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +11 0.954002 0.128238 +23 0.954002 0.0156906 +22 0.989995 0.0156906 +10 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +0 0.954002 0.128238 +12 0.954002 0.0156906 +23 0.989995 0.0156906 +11 0.989995 0.128238 +kids 0 +OBJECT poly +name "NavVolume" +loc -0.000745887 0.0172709 0.0936824 +texture "kx165tso.png" +crease 45.000000 +numvert 24 +0.0323582 -0.036308 -0.0526431 +0.0323582 -0.0381198 -0.0526431 +0.0323582 -0.0396888 -0.0535489 +0.0323582 -0.0405946 -0.0551179 +0.0323582 -0.0405946 -0.0569297 +0.0323582 -0.0396888 -0.0584987 +0.0323582 -0.0381198 -0.0594046 +0.0323582 -0.036308 -0.0594045 +0.0323582 -0.034739 -0.0584987 +0.0323582 -0.0338331 -0.0569297 +0.0323582 -0.0338331 -0.0551179 +0.0323582 -0.034739 -0.0535489 +0.0423582 -0.036308 -0.0526431 +0.0423582 -0.0381198 -0.0526431 +0.0423582 -0.0396888 -0.0535489 +0.0423582 -0.0405946 -0.0551179 +0.0423582 -0.0405946 -0.0569297 +0.0423582 -0.0396888 -0.0584987 +0.0423582 -0.0381198 -0.0594046 +0.0423582 -0.036308 -0.0594045 +0.0423582 -0.034739 -0.0584987 +0.0423582 -0.0338331 -0.0569297 +0.0423582 -0.0338331 -0.0551179 +0.0423582 -0.034739 -0.0535489 +numsurf 13 +SURF 0x10 +mat 1 +refs 12 +12 0.505318 0.394852 +13 0.477464 0.410748 +14 0.445189 0.410554 +15 0.417142 0.394321 +16 0.400839 0.3664 +17 0.400648 0.334272 +18 0.41662 0.306546 +19 0.444475 0.29065 +20 0.47675 0.290844 +21 0.504796 0.307077 +22 0.521099 0.334997 +23 0.521291 0.367125 +SURF 0x10 +mat 1 +refs 4 +1 0.954002 0.128238 +13 0.954002 0.0156906 +12 0.989995 0.0156906 +0 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +2 0.954002 0.128238 +14 0.954002 0.0156906 +13 0.989995 0.0156906 +1 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +3 0.954002 0.128238 +15 0.954002 0.0156906 +14 0.989995 0.0156906 +2 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +4 0.954002 0.128238 +16 0.954002 0.0156906 +15 0.989995 0.0156906 +3 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +5 0.954002 0.128238 +17 0.954002 0.0156906 +16 0.989995 0.0156906 +4 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +6 0.954002 0.128238 +18 0.954002 0.0156906 +17 0.989995 0.0156906 +5 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +7 0.954002 0.128238 +19 0.954002 0.0156906 +18 0.989995 0.0156906 +6 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +8 0.954002 0.128238 +20 0.954002 0.0156906 +19 0.989995 0.0156906 +7 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +9 0.954002 0.128238 +21 0.954002 0.0156906 +20 0.989995 0.0156906 +8 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +10 0.954002 0.128238 +22 0.954002 0.0156906 +21 0.989995 0.0156906 +9 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +11 0.954002 0.128238 +23 0.954002 0.0156906 +22 0.989995 0.0156906 +10 0.989995 0.128238 +SURF 0x10 +mat 1 +refs 4 +0 0.954002 0.128238 +12 0.954002 0.0156906 +23 0.989995 0.0156906 +11 0.989995 0.128238 +kids 0 +OBJECT poly +name "NavVolumePickRight" +loc 0.0047947 0.0138945 -0.0325927 +crease 45.000000 +numvert 4 +0.0093053 -0.0188944 0.00559257 +0.0093053 -0.0188944 0.0145926 +0.0093053 -0.0368944 0.0145926 +0.0093053 -0.0368944 0.00559257 +numsurf 1 +SURF 0x10 +mat 0 +refs 4 +0 1 1 +1 0 1 +2 0 0 +3 1 0 +kids 0 +OBJECT poly +name "NavVolumePickLeft" +loc 0.0047947 0.0138945 -0.0325927 +crease 45.000000 +numvert 4 +0.0093053 -0.0368944 0.0145926 +0.0093053 -0.0368944 0.0235926 +0.0093053 -0.0188944 0.0235926 +0.0093053 -0.0188944 0.0145926 +numsurf 1 +SURF 0x10 +mat 0 +refs 4 +3 1 1 +2 0 1 +1 0 0 +0 1 0 +kids 0 +OBJECT poly +name "CommVolumePickLeft" +loc 0.0047947 0.0138945 0.0474076 +crease 45.000000 +numvert 4 +0.0093053 -0.0188944 0.0145926 +0.0093053 -0.0188944 0.0235926 +0.0093053 -0.0368944 0.0235926 +0.0093053 -0.0368944 0.0145926 +numsurf 1 +SURF 0x10 +mat 0 +refs 4 +0 1 1 +1 0 1 +2 0 0 +3 1 0 +kids 0 +OBJECT poly +name "CommVolumePickRight" +loc 0.0047947 0.0138945 0.0474076 +crease 45.000000 +numvert 4 +0.0093053 -0.0368944 0.00559257 +0.0093053 -0.0368944 0.0145926 +0.0093053 -0.0188944 0.0145926 +0.0093053 -0.0188944 0.00559257 +numsurf 1 +SURF 0x10 +mat 0 +refs 4 +3 1 1 +2 0 1 +1 0 0 +0 1 0 +kids 0 +OBJECT poly +name "CommFreqPickLeft" +loc 0.0254203 -0.012 0.0265 +crease 45.000000 +numvert 19 +0.0114937 0 -0.0045 +-0.0114937 -3.72529e-09 0.003 +-0.0114937 -0.00375 0.00199519 +-0.0114937 -0.00649519 -0.00075 +-0.0114937 -0.0075 -0.0045 +-0.0114937 0.0075 -0.0045 +-0.0114937 0.00649519 -0.00075 +-0.0114937 0.00375 0.00199519 +0.0114937 -3.72529e-09 0.003 +0.0114937 -0.00375 0.00199519 +0.0114937 -0.00649519 -0.00075 +0.0114937 -0.0075 -0.0045 +0.0114937 0.0075 -0.0045 +0.0114937 0.00649519 -0.00075 +0.0114937 0.00375 0.00199519 +-0.0113203 0.009 -0.0045 +-0.0113203 0.009 0.0045 +-0.0113203 -0.009 0.0045 +-0.0113203 -0.009 -0.0045 +numsurf 13 +SURF 0x10 +mat 0 +refs 3 +0 0 0 +14 0 0 +8 0 0 +SURF 0x10 +mat 0 +refs 3 +0 0 0 +8 0 0 +9 0 0 +SURF 0x10 +mat 0 +refs 3 +0 0 0 +9 0 0 +10 0 0 +SURF 0x10 +mat 0 +refs 3 +0 0 0 +10 0 0 +11 0 0 +SURF 0x10 +mat 0 +refs 3 +0 0 0 +12 0 0 +13 0 0 +SURF 0x10 +mat 0 +refs 3 +0 0 0 +13 0 0 +14 0 0 +SURF 0x10 +mat 0 +refs 4 +14 -2.98023e-08 1 +7 -2.98023e-08 0 +1 0.0833333 0 +8 0.0833333 1 +SURF 0x10 +mat 0 +refs 4 +8 0.0833333 1 +1 0.0833333 0 +2 0.166667 0 +9 0.166667 1 +SURF 0x10 +mat 0 +refs 4 +9 0.166667 1 +2 0.166667 0 +3 0.25 0 +10 0.25 1 +SURF 0x10 +mat 0 +refs 4 +10 0.25 1 +3 0.25 0 +4 0.333333 0 +11 0.333333 1 +SURF 0x10 +mat 0 +refs 4 +12 0.833333 1 +5 0.833333 0 +6 0.916667 0 +13 0.916667 1 +SURF 0x10 +mat 0 +refs 4 +13 0.916667 1 +6 0.916667 0 +7 1 0 +14 1 1 +SURF 0x10 +mat 0 +refs 4 +15 1 1 +16 0 1 +17 0 0 +18 1 0 +kids 0 +OBJECT poly +name "CommFreqPickRight" +loc 0.0254203 -0.012 0.0175 +crease 45.000000 +numvert 19 +0.0114937 0.0075 0.0045 +0.0114937 0.00649519 0.000750002 +0.0114937 0.00375 -0.00199519 +0.0114937 9.31323e-10 -0.003 +0.0114937 -0.00375 -0.00199519 +0.0114937 -0.00649519 0.000750002 +0.0114937 -0.0075 0.0045 +-0.0114937 0.0075 0.0045 +-0.0114937 0.00649519 0.000750002 +-0.0114937 0.00375 -0.00199519 +-0.0114937 9.31323e-10 -0.003 +-0.0114937 -0.00375 -0.00199519 +-0.0114937 -0.00649519 0.000750002 +-0.0114937 -0.0075 0.0045 +0.0114937 0 0.0045 +-0.0113203 -0.009 -0.0045 +-0.0113203 -0.009 0.0045 +-0.0113203 0.009 0.0045 +-0.0113203 0.009 -0.0045 +numsurf 13 +SURF 0x10 +mat 0 +refs 4 +1 0.75 1 +8 0.75 0 +7 0.833333 0 +0 0.833333 1 +SURF 0x10 +mat 0 +refs 4 +2 0.666667 1 +9 0.666667 0 +8 0.75 0 +1 0.75 1 +SURF 0x10 +mat 0 +refs 4 +3 0.583333 1 +10 0.583333 0 +9 0.666667 0 +2 0.666667 1 +SURF 0x10 +mat 0 +refs 4 +4 0.5 1 +11 0.5 0 +10 0.583333 0 +3 0.583333 1 +SURF 0x10 +mat 0 +refs 4 +5 0.416667 1 +12 0.416667 0 +11 0.5 0 +4 0.5 1 +SURF 0x10 +mat 0 +refs 4 +6 0.333333 1 +13 0.333333 0 +12 0.416667 0 +5 0.416667 1 +SURF 0x10 +mat 0 +refs 3 +14 0 0 +1 0 0 +0 0 0 +SURF 0x10 +mat 0 +refs 3 +14 0 0 +2 0 0 +1 0 0 +SURF 0x10 +mat 0 +refs 3 +14 0 0 +3 0 0 +2 0 0 +SURF 0x10 +mat 0 +refs 3 +14 0 0 +4 0 0 +3 0 0 +SURF 0x10 +mat 0 +refs 3 +14 0 0 +5 0 0 +4 0 0 +SURF 0x10 +mat 0 +refs 3 +14 0 0 +6 0 0 +5 0 0 +SURF 0x10 +mat 0 +refs 4 +18 1 1 +17 0 1 +16 0 0 +15 1 0 +kids 0 +OBJECT poly +name "NavFreqPickLeft" +loc 0.0254203 -0.012 -0.0535 +crease 45.000000 +numvert 19 +0.0114937 0.00375 0.00199519 +0.0114937 0.00649519 -0.000750002 +0.0114937 0.0075 -0.0045 +0.0114937 -0.0075 -0.0045 +0.0114937 -0.00649519 -0.000750002 +0.0114937 -0.00375 0.00199519 +0.0114937 -4.65661e-09 0.003 +-0.0114937 0.00375 0.00199519 +-0.0114937 0.00649519 -0.000750002 +-0.0114937 0.0075 -0.0045 +-0.0114937 -0.0075 -0.0045 +-0.0114937 -0.00649519 -0.000750002 +-0.0114937 -0.00375 0.00199519 +-0.0114937 -4.65661e-09 0.003 +0.0114937 -9.31323e-10 -0.0045 +-0.0113203 0.009 -0.00450001 +-0.0113203 0.009 0.0045 +-0.0113203 -0.009 0.0045 +-0.0113203 -0.009 -0.00450001 +numsurf 13 +SURF 0x10 +mat 0 +refs 4 +1 0.916667 1 +8 0.916667 0 +7 1 0 +0 1 1 +SURF 0x10 +mat 0 +refs 4 +2 0.833333 1 +9 0.833333 0 +8 0.916667 0 +1 0.916667 1 +SURF 0x10 +mat 0 +refs 4 +4 0.25 1 +11 0.25 0 +10 0.333333 0 +3 0.333333 1 +SURF 0x10 +mat 0 +refs 4 +5 0.166667 1 +12 0.166667 0 +11 0.25 0 +4 0.25 1 +SURF 0x10 +mat 0 +refs 4 +6 0.0833333 1 +13 0.0833333 0 +12 0.166667 0 +5 0.166667 1 +SURF 0x10 +mat 0 +refs 4 +0 -2.98023e-08 1 +7 -2.98023e-08 0 +13 0.0833333 0 +6 0.0833333 1 +SURF 0x10 +mat 0 +refs 3 +14 0 0 +1 0 0 +0 0 0 +SURF 0x10 +mat 0 +refs 3 +14 0 0 +2 0 0 +1 0 0 +SURF 0x10 +mat 0 +refs 3 +14 0 0 +4 0 0 +3 0 0 +SURF 0x10 +mat 0 +refs 3 +14 0 0 +5 0 0 +4 0 0 +SURF 0x10 +mat 0 +refs 3 +14 0 0 +6 0 0 +5 0 0 +SURF 0x10 +mat 0 +refs 3 +14 0 0 +0 0 0 +6 0 0 +SURF 0x10 +mat 0 +refs 4 +15 1 1 +16 0 1 +17 0 0 +18 1 0 +kids 0 +OBJECT poly +name "NavFreqPickRight" +loc 0.0254203 -0.012 -0.0625 +crease 45.000000 +numvert 19 +0.0114937 -9.31323e-10 0.0045 +-0.0114937 -0.0075 0.0045 +-0.0114937 -0.00649519 0.000750002 +-0.0114937 -0.00375 -0.00199519 +-0.0114937 0 -0.003 +-0.0114937 0.00375 -0.00199519 +-0.0114937 0.00649519 0.000750002 +-0.0114937 0.0075 0.0045 +0.0114937 -0.0075 0.0045 +0.0114937 -0.00649519 0.000750002 +0.0114937 -0.00375 -0.00199519 +0.0114937 0 -0.003 +0.0114937 0.00375 -0.00199519 +0.0114937 0.00649519 0.000750002 +0.0114937 0.0075 0.0045 +-0.0113203 -0.009 -0.0045 +-0.0113203 -0.009 0.0045 +-0.0113203 0.009 0.0045 +-0.0113203 0.009 -0.0045 +numsurf 13 +SURF 0x10 +mat 0 +refs 3 +0 0 0 +8 0 0 +9 0 0 +SURF 0x10 +mat 0 +refs 3 +0 0 0 +9 0 0 +10 0 0 +SURF 0x10 +mat 0 +refs 3 +0 0 0 +10 0 0 +11 0 0 +SURF 0x10 +mat 0 +refs 3 +0 0 0 +11 0 0 +12 0 0 +SURF 0x10 +mat 0 +refs 3 +0 0 0 +12 0 0 +13 0 0 +SURF 0x10 +mat 0 +refs 3 +0 0 0 +13 0 0 +14 0 0 +SURF 0x10 +mat 0 +refs 4 +8 0.333333 1 +1 0.333333 0 +2 0.416667 0 +9 0.416667 1 +SURF 0x10 +mat 0 +refs 4 +9 0.416667 1 +2 0.416667 0 +3 0.5 0 +10 0.5 1 +SURF 0x10 +mat 0 +refs 4 +10 0.5 1 +3 0.5 0 +4 0.583333 0 +11 0.583333 1 +SURF 0x10 +mat 0 +refs 4 +11 0.583333 1 +4 0.583333 0 +5 0.666667 0 +12 0.666667 1 +SURF 0x10 +mat 0 +refs 4 +12 0.666667 1 +5 0.666667 0 +6 0.75 0 +13 0.75 1 +SURF 0x10 +mat 0 +refs 4 +13 0.75 1 +6 0.75 0 +7 0.833333 0 +14 0.833333 1 +SURF 0x10 +mat 0 +refs 4 +18 1 1 +17 0 1 +16 0 0 +15 1 0 +kids 0 diff --git a/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso.nas b/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso.nas new file mode 100644 index 000000000..82fa04478 --- /dev/null +++ b/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso.nas @@ -0,0 +1,335 @@ +############################################################################### +## +## Nasal for dual control of a KX165 NavComm radio over the multiplayer +## network. +## +## Copyright (C) 2007 - 2010 Anders Gidenstam (anders(at)gidenstam.org) +## This file is licensed under the GPL license version 2 or later. +## +############################################################################### + +# Note: +# This module MUST be loaded as KX165. +# + +# Slave button presses. +var swap_btn = "frq-swap-btn"; +var freq_decS = "freq-decS-clicked"; +var freq_incS = "freq-incS-clicked"; +var freq_decL = "freq-decL-clicked"; +var freq_incL = "freq-incL-clicked"; + +# Settings +var freq_selected = "frequencies/selected-mhz"; +var freq_standby = "frequencies/standby-mhz"; + +var comm_base = ["instrumentation/comm[0]", + "instrumentation/comm[1]"]; +var nav_base = ["instrumentation/nav[0]", + "instrumentation/nav[1]"]; + +########################################################################### +var master_kx165tso = { + new : func(n) { + var obj = {}; + obj.parents = [master_kx165tso]; + obj.nav_base = props.globals.getNode("instrumentation/nav[" ~ n ~ "]"); + obj.comm_base = props.globals.getNode("instrumentation/comm[" ~ n ~ "]"); + return obj; + }, + swap_nav : func() { + var tmp = me.nav_base.getNode(freq_selected).getValue(); + me.nav_base.getNode(freq_selected).setValue + (me.nav_base.getNode(freq_standby).getValue()); + me.nav_base.getNode(freq_standby).setValue(tmp); + }, + swap_comm : func() { + var tmp = me.comm_base.getNode(freq_selected).getValue(); + me.comm_base.getNode(freq_selected).setValue + (me.comm_base.getNode(freq_standby).getValue()); + me.comm_base.getNode(freq_standby).setValue(tmp); + }, + adjust_nav_frequency : func(d) { + adjust_radio_frequency( + me.nav_base.getNode(freq_standby), + d, + 108, + 117.95); + }, + adjust_comm_frequency : func(d) { + adjust_radio_frequency( + me.comm_base.getNode(freq_standby), + d, + 118, + 135.975); + } +}; + +########################################################################### +var slave_kx165tso = { + new : func(n, airoot) { + var obj = {}; + obj.parents = [slave_kx165tso]; + obj.root = airoot; + obj.nav_base = props.globals.getNode("instrumentation/nav[" ~ n ~ "]"); + obj.comm_base = props.globals.getNode("instrumentation/comm[" ~ n ~ "]"); + return obj; + }, + swap_nav : func() { + var p = me.nav_base.getNode(swap_btn); +# print("KX165tso[?].NAVSWAP"); + if (!p.getValue()) { + p.setValue(1); + settimer(func { p.setValue(0); }, + 1.0); + } + }, + swap_comm : func() { + var p = me.comm_base.getNode(swap_btn); +# print("KX165tso[?].COMMSWAP"); + if (!p.getValue()) { + p.setValue(1); + settimer(func { p.setValue(0); }, + 1.0); + } + }, + adjust_nav_frequency : func(d) { + var p = 0; + if (abs(d) < 0.99) { + p = (d < 0) ? me.nav_base.getNode(freq_decS) + : me.nav_base.getNode(freq_incS); + } else { + p = (d < 0) ? me.nav_base.getNode(freq_decL) + : me.nav_base.getNode(freq_incL); + } + if (!p.getValue()) { + p.setValue(1); + settimer(func { p.setValue(0); }, + 1.0); + } + }, + adjust_comm_frequency : func(d) { + var p = 0; + if (abs(d) < 0.99) { + p = (d < 0) ? me.comm_base.getNode(freq_decS) + : me.comm_base.getNode(freq_incS); + } else { + p = (d < 0) ? me.comm_base.getNode(freq_decL) + : me.comm_base.getNode(freq_incL); + } + if (!p.getValue()) { + p.setValue(1); + settimer(func { p.setValue(0); }, + 1.0); + } + } +}; + +########################################################################### +# The KX-165 pick animations default to master. +# NOTE: Use make_master() and make_slave_to(). +# Do NOT change kx165tso directly. +var kx165tso = [master_kx165tso.new(0), master_kx165tso.new(1)]; + + +########################################################################### +# API for pick animations and dual control setup. +########################################################################### + +########################################################################### +# n - NavComm# +var make_master = func(n) { + kx165tso[n] = master_kx165tso.new(n); +} + +########################################################################### +# n - NavComm# +var make_slave_to = func(n, airoot) { + kx165tso[n] = slave_kx165tso.new(n, airoot); +} + +########################################################################### +# n - NavComm# +swap_nav = func(n) { + kx165tso[n].swap_nav(); +} + +########################################################################### +# n - NavComm# +swap_comm = func(n, b) { + kx165tso[n].comm_base.getNode(swap_btn, 1).setValue(b); + if (b) kx165tso[n].swap_comm(); +} + +########################################################################### +# n - NavComm# +# d - adjustment +adjust_nav_frequency = func(n, d) { + kx165tso[n].adjust_nav_frequency(d); +} + +########################################################################### +# n - NavComm# +# d - adjustment +adjust_comm_frequency = func(n, d) { + kx165tso[n].adjust_comm_frequency(d); +} + +########################################################################### +# Create aliases to drive a radio 3d model in an AI/MP model. +# n - NavComm# +var animate_aimodel = func(n, airoot) { + # Comm + var base = comm_base[n]; + var p = "systems/electrical/outputs/comm["~ n ~"]"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = "instrumentation/comm["~ n ~"]/serviceable"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base ~ "/" ~ freq_selected; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base ~ "/" ~ freq_standby; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base ~ "/" ~ swap_btn; + props.globals.getNode(p, 1).alias(airoot.getNode(p)); + # Nav + base = nav_base[n]; + p = "systems/electrical/outputs/nav["~ n ~"]"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = "instrumentation/nav["~ n ~"]/serviceable"; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base ~ "/" ~ freq_selected; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base ~ "/" ~ freq_standby; + airoot.getNode(p, 1).alias(props.globals.getNode(p)); + p = base ~ "/" ~ swap_btn; + props.globals.getNode(p, 1).alias(airoot.getNode(p)); +} + +########################################################################### +# Create a TDMEncoder node array for sending the current radio state to +# slaves. +# n - NavComm# +var master_send_state = func(n) { + var cb = props.globals.getNode(comm_base[n]); + var nb = props.globals.getNode(nav_base[n]); + return + [ + cb.getNode(freq_selected), + cb.getNode(freq_standby), + nb.getNode(freq_selected), + nb.getNode(freq_standby) + ]; +} + +########################################################################### +# Create a SwitchDecoder action array for processing button presses +# from a slave. +# n - Comm# +var master_receive_slave_buttons = func(n) { + return + [ + # Comm + func (b) { + if (b) { + swap_comm(n, 1); + settimer(func { swap_comm(n, 0); }, 1.0) + } + }, + func (b) { + if (b) { adjust_comm_frequency(n, -0.025); } + }, + func (b) { + if (b) { adjust_comm_frequency(n, 0.025); } + }, + func (b) { + if (b) { adjust_comm_frequency(n, -1.0); } + }, + func (b) { + if (b) { adjust_comm_frequency(n, 1.0); } + }, + # Nav + func (b) { + if (b) { swap_nav(n); } + }, + func (b) { + if (b) { adjust_nav_frequency(n, -0.05); } + }, + func (b) { + if (b) { adjust_nav_frequency(n, 0.05); } + }, + func (b) { + if (b) { adjust_nav_frequency(n, -1.0); } + }, + func (b) { + if (b) { adjust_nav_frequency(n, 1.0); } + } + ]; +} + +########################################################################### +# Create a TDMDecoder action array for processing the radio state +# from the master. +# n - NavComm# +var slave_receive_master_state = func(n) { + var cb = props.globals.getNode(comm_base[n]); + var nb = props.globals.getNode(nav_base[n]); + return + [ + func (v) { + cb.getNode(freq_selected).setValue(v); + }, + func (v) { + cb.getNode(freq_standby).setValue(v); + }, + func (v) { + nb.getNode(freq_selected).setValue(v); + }, + func (v) { + nb.getNode(freq_standby).setValue(v); + } + ]; +} + +########################################################################### +# Create a SwitchEncoder node array for sending button presses +# to the master +# n - NavComm# +var slave_send_buttons = func(n) { + var cb = props.globals.getNode(comm_base[n]); + var nb = props.globals.getNode(nav_base[n]); + return + [ + # Comm + cb.getNode(swap_btn, 1), + cb.getNode(freq_decS, 1), + cb.getNode(freq_incS, 1), + cb.getNode(freq_decL, 1), + cb.getNode(freq_incL, 1), + # Nav + nb.getNode(swap_btn, 1), + nb.getNode(freq_decS, 1), + nb.getNode(freq_incS, 1), + nb.getNode(freq_decL, 1), + nb.getNode(freq_incL, 1) + ]; +} + + + +########################################################################### +# Generic frequency stepper. +# f - frequency property +# d - change +# min - min frequency +# max - max frequency +var adjust_radio_frequency = func(f, d, min, max) { + var old = f.getValue(); + var new = old + d; + if (new < min - 0.005) { new = int(max) + (new - int(new)); } + if (new > max + 0.005) { + new = int(min) + (new - int(new)); + if (int(new + 0.005) > min) new -= 1; + } +# print("Old: " ~ old ~ " Intermediate: " ~ (old + d) ~ " New: " ~ new); + f.setValue(new); +} diff --git a/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso.png b/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso.png new file mode 100644 index 0000000000000000000000000000000000000000..9fe67f49be10fc27d7471adc7ef5e9d8e2ef1015 GIT binary patch literal 50513 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
    _ahcB+s`*_H=V6r{ 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 MX(g#L3BwQn3tq|FmjD0& literal 0 HcmV?d00001 diff --git a/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso1.xml b/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso1.xml new file mode 100644 index 000000000..724df7a99 --- /dev/null +++ b/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso1.xml @@ -0,0 +1,599 @@ + + + + + kx165tso.ac + + + select + CommUse + CommStby + NavUse + NavStby + + instrumentation/comm[0]/serviceable + instrumentation/nav[0]/serviceable + + + + + + + + material + CommToggle + NavToggle + + sim/model/instrument-lighting/emission/red + sim/model/instrument-lighting/emission/green + sim/model/instrument-lighting/emission/blue + controls/lighting/instruments-norm + + + + + translate + CommToggle + instrumentation/comm[0]/frq-swap-btn + -0.004 + + 1 + 0 + 0 + + + + + textranslate + CommUse100M + instrumentation/comm[0]/frequencies/selected-mhz + 100 + 0.001 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + CommUse10M + instrumentation/comm[0]/frequencies/selected-mhz + 10 + 0.01 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + CommUse1M + instrumentation/comm[0]/frequencies/selected-mhz + 1 + 0.1 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + CommUse100K + instrumentation/comm[0]/frequencies/selected-mhz + 0.1 + 1 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + CommUse10K + instrumentation/comm[0]/frequencies/selected-mhz + 0.01 + 10 + 0.0005 + + 1 + 0 + 0 + + + + + textranslate + CommStby100M + instrumentation/comm[0]/frequencies/standby-mhz + 100 + 0.001 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + CommStby10M + instrumentation/comm[0]/frequencies/standby-mhz + 10 + 0.01 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + CommStby1M + instrumentation/comm[0]/frequencies/standby-mhz + 1 + 0.1 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + CommStby100K + instrumentation/comm[0]/frequencies/standby-mhz + 0.1 + 1 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + CommStby10K + instrumentation/comm[0]/frequencies/standby-mhz + 0.01 + 10 + 0.0005 + + 1 + 0 + 0 + + + + + + + translate + NavToggle + instrumentation/nav[0]/frq-swap-btn + -0.004 + + 1 + 0 + 0 + + + + + textranslate + NavUse100M + instrumentation/nav[0]/frequencies/selected-mhz + 100 + 0.001 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + NavUse10M + instrumentation/nav[0]/frequencies/selected-mhz + 10 + 0.01 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + NavUse1M + instrumentation/nav[0]/frequencies/selected-mhz + 1 + 0.1 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + NavUse100K + instrumentation/nav[0]/frequencies/selected-mhz + 0.1 + 1 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + NavUse10K + instrumentation/nav[0]/frequencies/selected-mhz + 0.01 + 10 + 0.0005 + + 1 + 0 + 0 + + + + + textranslate + NavStby100M + instrumentation/nav[0]/frequencies/standby-mhz + 100 + 0.001 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + NavStby10M + instrumentation/nav[0]/frequencies/standby-mhz + 10 + 0.01 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + NavStby1M + instrumentation/nav[0]/frequencies/standby-mhz + 1 + 0.1 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + NavStby100K + instrumentation/nav[0]/frequencies/standby-mhz + 0.1 + 1 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + NavStby10K + instrumentation/nav[0]/frequencies/standby-mhz + 0.01 + 10 + 0.0005 + + 1 + 0 + 0 + + + + + + + rotate + CommVolume + instrumentation/comm[0]/volume + -270 + + 1 + 0 + 0 + +
    + 0.0188947 + -0.0620002 + -0.0139999 +
    +
    + + + translate + CommVolume + instrumentation/comm[0]/volume + 0.002 + + 1 + 0 + 0 + + + + + rotate + CommKHz + instrumentation/comm[0]/frequencies/standby-mhz + -1200 + + 1 + 0 + 0 + +
    + 0.0320882 + -0.022 + -0.012 +
    +
    + + rotate + NavVolume + instrumentation/nav[0]/volume + -270 + + 1 + 0 + 0 + +
    + 0.0188946 + 0.0180001 + -0.0139999 +
    +
    + + + translate + NavVolume + instrumentation/nav[0]/volume + 0.002 + + 1 + 0 + 0 + + + + + + + pick + CommToggle + + + false + + nasal + + + + + nasal + + + + + + + + pick + CommKHz + + + true + 0.2 + + nasal + + + + + + true + 0.2 + + nasal + + + + + + false + + nasal + + + + + + false + + nasal + + + + + + + pick + CommMHz + + + true + 0.2 + + nasal + + + + + + true + 0.2 + + nasal + + + + + + false + + nasal + + + + + + false + + nasal + + + + + + + pick + NavToggle + + + false + + nasal + + + + + + + pick + NavKHz + + + true + 0.2 + + nasal + + + + + + true + 0.2 + + nasal + + + + + + false + + nasal + + + + + + false + + nasal + + + + + + + pick + NavMHz + + + true + 0.2 + + nasal + + + + + + true + 0.2 + + nasal + + + + + + false + + nasal + + + + + + false + + nasal + + + + + + + noshadow + + + range + 0 + 10 + + +
    diff --git a/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso2.xml b/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso2.xml new file mode 100644 index 000000000..6bf3ae07d --- /dev/null +++ b/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso2.xml @@ -0,0 +1,599 @@ + + + + + kx165tso.ac + + + select + CommUse + CommStby + NavUse + NavStby + + instrumentation/comm[1]/serviceable + instrumentation/nav[1]/serviceable + + + + + + + + material + CommToggle + NavToggle + + sim/model/instrument-lighting/emission/red + sim/model/instrument-lighting/emission/green + sim/model/instrument-lighting/emission/blue + controls/lighting/instruments-norm + + + + + translate + CommToggle + instrumentation/comm[1]/frq-swap-btn + -0.004 + + 1 + 0 + 0 + + + + + textranslate + CommUse100M + instrumentation/comm[1]/frequencies/selected-mhz + 100 + 0.001 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + CommUse10M + instrumentation/comm[1]/frequencies/selected-mhz + 10 + 0.01 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + CommUse1M + instrumentation/comm[1]/frequencies/selected-mhz + 1 + 0.1 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + CommUse100K + instrumentation/comm[1]/frequencies/selected-mhz + 0.1 + 1 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + CommUse10K + instrumentation/comm[1]/frequencies/selected-mhz + 0.01 + 10 + 0.0005 + + 1 + 0 + 0 + + + + + textranslate + CommStby100M + instrumentation/comm[1]/frequencies/standby-mhz + 100 + 0.001 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + CommStby10M + instrumentation/comm[1]/frequencies/standby-mhz + 10 + 0.01 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + CommStby1M + instrumentation/comm[1]/frequencies/standby-mhz + 1 + 0.1 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + CommStby100K + instrumentation/comm[1]/frequencies/standby-mhz + 0.1 + 1 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + CommStby10K + instrumentation/comm[1]/frequencies/standby-mhz + 0.01 + 10 + 0.0005 + + 1 + 0 + 0 + + + + + + + translate + NavToggle + instrumentation/nav[1]/frq-swap-btn + -0.004 + + 1 + 0 + 0 + + + + + textranslate + NavUse100M + instrumentation/nav[1]/frequencies/selected-mhz + 100 + 0.001 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + NavUse10M + instrumentation/nav[1]/frequencies/selected-mhz + 10 + 0.01 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + NavUse1M + instrumentation/nav[1]/frequencies/selected-mhz + 1 + 0.1 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + NavUse100K + instrumentation/nav[1]/frequencies/selected-mhz + 0.1 + 1 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + NavUse10K + instrumentation/nav[1]/frequencies/selected-mhz + 0.01 + 10 + 0.0005 + + 1 + 0 + 0 + + + + + textranslate + NavStby100M + instrumentation/nav[1]/frequencies/standby-mhz + 100 + 0.001 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + NavStby10M + instrumentation/nav[1]/frequencies/standby-mhz + 10 + 0.01 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + NavStby1M + instrumentation/nav[1]/frequencies/standby-mhz + 1 + 0.1 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + NavStby100K + instrumentation/nav[1]/frequencies/standby-mhz + 0.1 + 1 + 0.0005 + + 1 + 0 + 0 + + + + textranslate + NavStby10K + instrumentation/nav[1]/frequencies/standby-mhz + 0.01 + 10 + 0.0005 + + 1 + 0 + 0 + + + + + + + rotate + CommVolume + instrumentation/comm[1]/volume + -270 + + 1 + 0 + 0 + +
    + 0.0188947 + -0.0620002 + -0.0139999 +
    +
    + + + translate + CommVolume + instrumentation/comm[1]/volume + 0.002 + + 1 + 0 + 0 + + + + + rotate + CommKHz + instrumentation/comm[1]/frequencies/standby-mhz + -1200 + + 1 + 0 + 0 + +
    + 0.0320882 + -0.022 + -0.012 +
    +
    + + rotate + NavVolume + instrumentation/nav[1]/volume + -270 + + 1 + 0 + 0 + +
    + 0.0188946 + 0.0180001 + -0.0139999 +
    +
    + + + translate + NavVolume + instrumentation/nav[1]/volume + 0.002 + + 1 + 0 + 0 + + + + + + + pick + CommToggle + + + false + + nasal + + + + + nasal + + + + + + + + pick + CommKHz + + + true + 0.2 + + nasal + + + + + + true + 0.2 + + nasal + + + + + + false + + nasal + + + + + + false + + nasal + + + + + + + pick + CommMHz + + + true + 0.2 + + nasal + + + + + + true + 0.2 + + nasal + + + + + + false + + nasal + + + + + + false + + nasal + + + + + + + pick + NavToggle + + + false + + nasal + + + + + + + pick + NavKHz + + + true + 0.2 + + nasal + + + + + + true + 0.2 + + nasal + + + + + + false + + nasal + + + + + + false + + nasal + + + + + + + pick + NavMHz + + + true + 0.2 + + nasal + + + + + + true + 0.2 + + nasal + + + + + + false + + nasal + + + + + + false + + nasal + + + + + + + noshadow + + + range + 0 + 10 + + +
    diff --git a/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl-22.png b/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl-22.png new file mode 100644 index 0000000000000000000000000000000000000000..45ec780842d4cadd10ebae5a58ea8567e3c07c44 GIT binary patch literal 21782 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 MQycm{6Sw&P0f1p2ZU6uP literal 0 HcmV?d00001 diff --git a/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22-com.xml b/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22-com.xml new file mode 100644 index 000000000..56824b1df --- /dev/null +++ b/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22-com.xml @@ -0,0 +1,387 @@ + + + + + + + + instrumentation/comm[0]/serviceable + systems/electrical/outputs/comm[0] + instrumentation/comm[0]/frequencies/selected-mhz + instrumentation/comm[0]/frequencies/standby-mhz + VHF22.swap(0); + VHF22.adjust_frequency(0, 0.025); + VHF22.adjust_frequency(0, -0.025); + VHF22.adjust_frequency(0, 1.0); + VHF22.adjust_frequency(0, -1.0); + + + ctl22.ac + + + select + freq.001 + freq.002 + freq.003 + freq.dec + freq.004 + freq.005 + freq.006 + + + + 1 + + + + + + select + stby.001 + stby.002 + stby.003 + stby.dec + stby.004 + stby.005 + stby.006 + + + + 1 + + + + + + select + mem.annun + + + + 1 + + + + + + rotate + CTL-22.pwr + + + 00 + 1.030 + +
    + 0.0 + -0.014 + -0.018 +
    + + -1 + 0 + 0 + +
    + + + + + textranslate + freq.001 + + 0.001 + 100 + 0.0005 + + 0 + 1 + 0 + + + + + textranslate + freq.002 + + 0.01 + 10 + 0.0005 + + 0 + 1 + 0 + + + + + textranslate + freq.003 + + 0.1 + 1 + 0.0005 + + 0 + 1 + 0 + + + + + textranslate + freq.004 + + 1.0 + 0.1 + 0.0005 + + 0 + 1 + 0 + + + + + textranslate + freq.005 + + 10.0 + 0.01 + 0.0005 + + 0 + 1 + 0 + + + + + textranslate + freq.006 + + 100.0 + 0.001 + 0.0005 + + 0 + 1 + 0 + + + + + + + textranslate + stby.001 + + 0.001 + 100 + 0.0005 + + 0 + 1 + 0 + + + + + textranslate + stby.002 + + 0.01 + 10 + 0.0005 + + 0 + 1 + 0 + + + + + textranslate + stby.003 + + 0.1 + 1 + 0.0005 + + 0 + 1 + 0 + + + + + textranslate + stby.004 + + 1.0 + 0.1 + 0.0005 + + 0 + 1 + 0 + + + + + textranslate + stby.005 + + 10.0 + 0.01 + 0.0005 + + 0 + 1 + 0 + + + + + textranslate + stby.006 + + 100 + 0.001 + 0.0005 + + 0 + 1 + 0 + + + + + pick + CTL-22.xfr + + + false + + nasal + - + @@ -44,7 +44,7 @@ setprop(d, f < 0 ? 0 : f > 2 ? 0 : f); - + false @@ -459,13 +459,13 @@ - + dialog-show ai - - + dialog-show formation @@ -483,7 +483,7 @@ - + tanker false @@ -493,7 +493,7 @@ - + dialog-show AIcarrier @@ -501,7 +501,7 @@ - + dialog-show scenario @@ -702,6 +702,14 @@ + + + + nasal + + + + joystick-info @@ -732,15 +740,7 @@ - - - nasal - - - - - - + From f4bab21d95bef0ed7bdb2a87cf619620541d9054 Mon Sep 17 00:00:00 2001 From: Stuart Buchanan Date: Fri, 24 Dec 2010 22:38:14 +0000 Subject: [PATCH 13/16] Remove duplicate menu from last commit. --- gui/menubar.xml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/gui/menubar.xml b/gui/menubar.xml index 0f0cf1a44..90f033091 100644 --- a/gui/menubar.xml +++ b/gui/menubar.xml @@ -731,14 +731,6 @@ - - - - nasal - - - - From 1d41380470146b1edbe5bd6a7500ad7e79e0f79b Mon Sep 17 00:00:00 2001 From: Victor Slavutinsky Date: Sat, 25 Dec 2010 04:46:24 +0300 Subject: [PATCH 14/16] 1) Cool engine effect --- gui/dialogs/radios.xml | 46 ++++++++++++++++++++++++++++++++---------- gui/menubar.xml | 12 +++++++++++ 2 files changed, 47 insertions(+), 11 deletions(-) diff --git a/gui/dialogs/radios.xml b/gui/dialogs/radios.xml index 900962601..0220eb3f6 100644 --- a/gui/dialogs/radios.xml +++ b/gui/dialogs/radios.xml @@ -4,7 +4,7 @@ radios 600 - 370 + 330 false @@ -381,6 +381,40 @@ + + 350 + 90 + + + + + + + transponder + 100 + 0 + 75 + 25 + /instrumentation/transponder/id-code + + + + + 0 60 @@ -505,15 +539,5 @@ - - 400 - 60 - - diff --git a/gui/menubar.xml b/gui/menubar.xml index e7ad39d78..be6e3a72b 100644 --- a/gui/menubar.xml +++ b/gui/menubar.xml @@ -550,6 +550,18 @@ + + + + + + dialog-show + sq_comm + + + + + From 33b364fd2e0c789c05cea3ba94769d3433e72df7 Mon Sep 17 00:00:00 2001 From: Victor Slavutinsky Date: Sat, 25 Dec 2010 18:40:10 +0300 Subject: [PATCH 15/16] 1) Pilot visible trough multiplayer --- gui/dialogs/radios.xml | 46 ++++++++++-------------------------------- gui/menubar.xml | 12 ----------- 2 files changed, 11 insertions(+), 47 deletions(-) diff --git a/gui/dialogs/radios.xml b/gui/dialogs/radios.xml index 0220eb3f6..900962601 100644 --- a/gui/dialogs/radios.xml +++ b/gui/dialogs/radios.xml @@ -4,7 +4,7 @@ radios 600 - 330 + 370 false @@ -381,40 +381,6 @@ - - 350 - 90 - - - - - - - transponder - 100 - 0 - 75 - 25 - /instrumentation/transponder/id-code - - - - - 0 60 @@ -539,5 +505,15 @@ + + 400 + 60 + + diff --git a/gui/menubar.xml b/gui/menubar.xml index be6e3a72b..e7ad39d78 100644 --- a/gui/menubar.xml +++ b/gui/menubar.xml @@ -550,18 +550,6 @@ - - - - - - dialog-show - sq_comm - - - - - From 97865312d25863d0ed7bbafff37295be2cc53d82 Mon Sep 17 00:00:00 2001 From: Torsten Dreyer Date: Sat, 25 Dec 2010 16:41:01 +0100 Subject: [PATCH 16/16] Merge branch 'master' of gitorious.org:fg/fgdata