diff --git a/Aircraft/Instruments-3d/kln94/auxPages.nas b/Aircraft/Instruments-3d/kln94/auxPages.nas new file mode 100644 index 000000000..e69de29bb diff --git a/Aircraft/Instruments-3d/kln94/cdi.svg b/Aircraft/Instruments-3d/kln94/cdi.svg new file mode 100644 index 000000000..6344701fa --- /dev/null +++ b/Aircraft/Instruments-3d/kln94/cdi.svg @@ -0,0 +1,249 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Aircraft/Instruments-3d/kln94/flightplanPages.nas b/Aircraft/Instruments-3d/kln94/flightplanPages.nas new file mode 100644 index 000000000..e69de29bb diff --git a/Aircraft/Instruments-3d/kln94/kln94.ac b/Aircraft/Instruments-3d/kln94/kln94.ac new file mode 100644 index 000000000..95f2e35c7 --- /dev/null +++ b/Aircraft/Instruments-3d/kln94/kln94.ac @@ -0,0 +1,1100 @@ +AC3Db +MATERIAL "DefaultWhite" rgb 1.0000 1.0000 1.0000 amb 0.2000 0.2000 0.2000 emis 0.0000 0.0000 0.0000 spec 0.5000 0.5000 0.5000 shi 10 trans 0.0000 +MATERIAL "ac3dmat1" rgb 1.0000 1.0000 1.0000 amb 1.0000 1.0000 1.0000 emis 0.0000 0.0000 0.0000 spec 0.0000 0.0000 0.0000 shi 50 trans 0.0000 +OBJECT world +name "Blender_export__kln94.ac" +kids 14 +OBJECT poly +name "alt-btn" +loc 0.0055797 -0.0150158 0.0137356 +texture "kln94.png" +texrep 1 1 +numvert 8 +-0.0012127 -0.0027196 -0.0050766 +0.0012127 -0.0027196 -0.0050766 +0.0012127 -0.0027196 0.0050766 +-0.0012127 -0.0027196 0.0050766 +-0.0012127 0.0027196 0.0050766 +0.0012127 0.0027196 0.0050766 +0.0012127 0.0027196 -0.0050766 +-0.0012127 0.0027196 -0.0050766 +numsurf 5 +SURF 0X30 +mat 1 +refs 4 +5 0.385231 0.051645 +2 0.385231 0.019019 +1 0.440236 0.019019 +6 0.440236 0.051645 +SURF 0X30 +mat 1 +refs 4 +0 0.437719 0.049125 +7 0.437719 0.045280 +6 0.389657 0.045280 +1 0.389657 0.049125 +SURF 0X30 +mat 1 +refs 4 +4 0.389657 0.049125 +3 0.389657 0.045280 +2 0.437719 0.045280 +5 0.437719 0.049125 +SURF 0X30 +mat 1 +refs 4 +7 0.388697 0.023085 +4 0.388697 0.020392 +5 0.438579 0.020392 +6 0.438579 0.023085 +SURF 0X30 +mat 1 +refs 4 +0 0.388184 0.023874 +1 0.388184 0.021447 +2 0.437528 0.021447 +3 0.437528 0.023874 +kids 0 +OBJECT poly +name "base" +loc -0.0000000 0.0000000 -0.0000000 +texture "kln94.png" +texrep 1 1 +numvert 8 +0.0050000 0.0302263 0.0793500 +0.0050000 0.0302263 -0.0793500 +0.0050000 -0.0207000 -0.0793500 +0.0050000 -0.0207000 0.0793500 +-0.0050000 -0.0207000 0.0793500 +-0.0050000 -0.0207000 -0.0793500 +-0.0050000 0.0302119 -0.0793500 +-0.0050000 0.0302119 0.0793500 +numsurf 5 +SURF 0X30 +mat 1 +refs 4 +0 0.000001 0.315633 +3 0.000001 0.000000 +2 0.998895 0.000000 +1 0.998895 0.315633 +SURF 0X30 +mat 1 +refs 4 +3 0.722656 0.652778 +4 0.964844 0.652778 +5 0.964844 0.685981 +2 0.722656 0.685981 +SURF 0X30 +mat 1 +refs 4 +7 0.722656 0.652778 +0 0.964844 0.652778 +1 0.964844 0.685981 +6 0.722656 0.685981 +SURF 0X30 +mat 1 +refs 4 +0 0.722656 0.652778 +7 0.964844 0.652778 +4 0.964844 0.685981 +3 0.722656 0.685981 +SURF 0X30 +mat 1 +refs 4 +2 0.722656 0.652778 +5 0.964844 0.652778 +6 0.964844 0.685981 +1 0.722656 0.685981 +kids 0 +OBJECT poly +name "clr-btn" +loc 0.0055797 -0.0149416 -0.0292896 +texture "kln94.png" +texrep 1 1 +numvert 8 +-0.0012127 0.0027196 -0.0050766 +0.0012127 0.0027196 -0.0050766 +0.0012127 0.0027196 0.0050766 +-0.0012127 0.0027196 0.0050766 +-0.0012127 -0.0027196 0.0050766 +0.0012127 -0.0027196 0.0050766 +0.0012127 -0.0027196 -0.0050766 +-0.0012127 -0.0027196 -0.0050766 +numsurf 5 +SURF 0X30 +mat 1 +refs 4 +7 0.660486 0.023405 +6 0.660486 0.020978 +5 0.709829 0.020978 +4 0.709829 0.023405 +SURF 0X30 +mat 1 +refs 4 +0 0.660998 0.022616 +3 0.660998 0.019923 +2 0.710881 0.019923 +1 0.710881 0.022616 +SURF 0X30 +mat 1 +refs 4 +3 0.661959 0.048656 +4 0.661959 0.044811 +5 0.710020 0.044811 +2 0.710020 0.048656 +SURF 0X30 +mat 1 +refs 4 +7 0.710020 0.048656 +0 0.710020 0.044811 +1 0.661959 0.044811 +6 0.661959 0.048656 +SURF 0X30 +mat 1 +refs 4 +2 0.657532 0.051176 +5 0.657532 0.018550 +6 0.712538 0.018550 +1 0.712538 0.051176 +kids 0 +OBJECT poly +name "crsr-btn" +loc 0.0055797 0.0147900 -0.0631796 +texture "kln94.png" +texrep 1 1 +numvert 8 +-0.0012127 -0.0027196 -0.0050766 +0.0012127 -0.0027196 -0.0050766 +0.0012127 -0.0027196 0.0050766 +-0.0012127 -0.0027196 0.0050766 +-0.0012127 0.0027196 0.0050766 +0.0012127 0.0027196 0.0050766 +0.0012127 0.0027196 -0.0050766 +-0.0012127 0.0027196 -0.0050766 +numsurf 5 +SURF 0X30 +mat 1 +refs 4 +5 0.869303 0.242886 +2 0.869303 0.210260 +1 0.924310 0.210260 +6 0.924310 0.242886 +SURF 0X30 +mat 1 +refs 4 +0 0.921792 0.240366 +7 0.921792 0.236521 +6 0.873731 0.236521 +1 0.873731 0.240366 +SURF 0X30 +mat 1 +refs 4 +4 0.873731 0.240366 +3 0.873731 0.236521 +2 0.921792 0.236521 +5 0.921792 0.240366 +SURF 0X30 +mat 1 +refs 4 +7 0.872769 0.214326 +4 0.872769 0.211633 +5 0.922653 0.211633 +6 0.922653 0.214326 +SURF 0X30 +mat 1 +refs 4 +0 0.872257 0.215115 +1 0.872257 0.212688 +2 0.921600 0.212688 +3 0.921600 0.215115 +kids 0 +OBJECT poly +name "dto-btn" +loc 0.0055797 -0.0150158 -0.0150005 +texture "kln94.png" +texrep 1 1 +numvert 8 +-0.0012127 -0.0027196 -0.0050766 +0.0012127 -0.0027196 -0.0050766 +0.0012127 -0.0027196 0.0050766 +-0.0012127 -0.0027196 0.0050766 +-0.0012127 0.0027196 0.0050766 +0.0012127 0.0027196 0.0050766 +0.0012127 0.0027196 -0.0050766 +-0.0012127 0.0027196 -0.0050766 +numsurf 5 +SURF 0X30 +mat 1 +refs 4 +5 0.567964 0.050395 +2 0.567964 0.017769 +1 0.622970 0.017769 +6 0.622970 0.050395 +SURF 0X30 +mat 1 +refs 4 +0 0.620452 0.047875 +7 0.620452 0.044030 +6 0.572391 0.044030 +1 0.572391 0.047875 +SURF 0X30 +mat 1 +refs 4 +4 0.572391 0.047875 +3 0.572391 0.044030 +2 0.620452 0.044030 +5 0.620452 0.047875 +SURF 0X30 +mat 1 +refs 4 +7 0.571430 0.021835 +4 0.571430 0.019142 +5 0.621313 0.019142 +6 0.621313 0.021835 +SURF 0X30 +mat 1 +refs 4 +0 0.570918 0.022624 +1 0.570918 0.020197 +2 0.620261 0.020197 +3 0.620261 0.022624 +kids 0 +OBJECT poly +name "ent-btn" +loc 0.0055797 -0.0148610 -0.0438817 +texture "kln94.png" +texrep 1 1 +numvert 8 +-0.0012127 -0.0027196 -0.0050766 +0.0012127 -0.0027196 -0.0050766 +0.0012127 -0.0027196 0.0050766 +-0.0012127 -0.0027196 0.0050766 +-0.0012127 0.0027196 0.0050766 +0.0012127 0.0027196 0.0050766 +0.0012127 0.0027196 -0.0050766 +-0.0012127 0.0027196 -0.0050766 +numsurf 5 +SURF 0X30 +mat 1 +refs 4 +5 0.750032 0.053176 +2 0.750032 0.020550 +1 0.805038 0.020550 +6 0.805038 0.053176 +SURF 0X30 +mat 1 +refs 4 +0 0.802520 0.050656 +7 0.802520 0.046811 +6 0.754459 0.046811 +1 0.754459 0.050656 +SURF 0X30 +mat 1 +refs 4 +4 0.754459 0.050656 +3 0.754459 0.046811 +2 0.802520 0.046811 +5 0.802520 0.050656 +SURF 0X30 +mat 1 +refs 4 +7 0.753498 0.024616 +4 0.753498 0.021923 +5 0.803381 0.021923 +6 0.803381 0.024616 +SURF 0X30 +mat 1 +refs 4 +0 0.752986 0.025405 +1 0.752986 0.022978 +2 0.802329 0.022978 +3 0.802329 0.025405 +kids 0 +OBJECT poly +name "knob-brightness" +loc 0.0070680 -0.0108757 0.0640361 +texture "kln94.png" +texrep 1 1 +numvert 25 +0.0003175 0.0001219 0.0000000 +-0.0019742 0.0001219 0.0042385 +-0.0019742 -0.0019974 0.0036706 +-0.0019742 -0.0035487 0.0021192 +-0.0019742 -0.0041166 0.0000000 +-0.0019742 -0.0035487 -0.0021192 +-0.0019742 -0.0019973 -0.0036706 +-0.0019742 0.0001219 -0.0042385 +-0.0019742 0.0022411 -0.0036706 +-0.0019742 0.0037925 -0.0021192 +-0.0019742 0.0043604 0.0000000 +-0.0019742 0.0037925 0.0021192 +-0.0019742 0.0022411 0.0036706 +0.0019834 0.0001219 0.0042385 +0.0019834 -0.0019974 0.0036706 +0.0019834 -0.0035487 0.0021192 +0.0019834 -0.0041166 0.0000000 +0.0019888 -0.0035487 -0.0021192 +0.0019888 -0.0019973 -0.0036706 +0.0019888 0.0001219 -0.0042385 +0.0019888 0.0022411 -0.0036706 +0.0019888 0.0037925 -0.0021192 +0.0019834 0.0043604 0.0000000 +0.0019834 0.0037925 0.0021192 +0.0019834 0.0022411 0.0036706 +numsurf 24 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +24 0.873306 0.113743 +13 0.867723 0.092904 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +13 0.867723 0.092904 +14 0.873306 0.072065 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +14 0.873306 0.072065 +15 0.888562 0.056810 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +15 0.888562 0.056810 +16 0.909401 0.051226 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +16 0.909401 0.051226 +17 0.930240 0.056810 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +17 0.930240 0.056810 +18 0.945495 0.072065 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +18 0.945495 0.072065 +19 0.951079 0.092904 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +19 0.951079 0.092904 +20 0.945495 0.113743 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +20 0.945495 0.113743 +21 0.930240 0.128999 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +21 0.930240 0.128999 +22 0.909401 0.134582 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +22 0.909401 0.134582 +23 0.888562 0.128999 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +23 0.888562 0.128999 +24 0.873306 0.113743 +SURF 0X30 +mat 1 +refs 4 +24 0.873306 0.113743 +12 0.873306 0.113743 +1 0.867723 0.092904 +13 0.867723 0.092904 +SURF 0X30 +mat 1 +refs 4 +13 0.867723 0.092904 +1 0.867723 0.092904 +2 0.873306 0.072065 +14 0.873306 0.072065 +SURF 0X30 +mat 1 +refs 4 +14 0.873306 0.072065 +2 0.873306 0.072065 +3 0.888562 0.056810 +15 0.888562 0.056810 +SURF 0X30 +mat 1 +refs 4 +15 0.888562 0.056810 +3 0.888562 0.056810 +4 0.909401 0.051226 +16 0.909401 0.051226 +SURF 0X30 +mat 1 +refs 4 +16 0.909401 0.051226 +4 0.909401 0.051226 +5 0.930240 0.056810 +17 0.930240 0.056810 +SURF 0X30 +mat 1 +refs 4 +17 0.930240 0.056810 +5 0.930240 0.056810 +6 0.945495 0.072065 +18 0.945495 0.072065 +SURF 0X30 +mat 1 +refs 4 +18 0.945495 0.072065 +6 0.945495 0.072065 +7 0.951079 0.092904 +19 0.951079 0.092904 +SURF 0X30 +mat 1 +refs 4 +19 0.951079 0.092904 +7 0.951079 0.092904 +8 0.945495 0.113743 +20 0.945495 0.113743 +SURF 0X30 +mat 1 +refs 4 +20 0.945495 0.113743 +8 0.945495 0.113743 +9 0.930240 0.128999 +21 0.930240 0.128999 +SURF 0X30 +mat 1 +refs 4 +21 0.930240 0.128999 +9 0.930240 0.128999 +10 0.909401 0.134582 +22 0.909401 0.134582 +SURF 0X30 +mat 1 +refs 4 +22 0.909401 0.134582 +10 0.909401 0.134582 +11 0.888562 0.128999 +23 0.888562 0.128999 +SURF 0X30 +mat 1 +refs 4 +23 0.888562 0.128999 +11 0.888562 0.128999 +12 0.873306 0.113743 +24 0.873306 0.113743 +kids 0 +OBJECT poly +name "knob-inner" +loc 0.0112497 -0.0038825 -0.0621865 +texture "kln94.png" +texrep 1 1 +numvert 25 +0.0017683 0.0000000 0.0000000 +-0.0017683 -0.0000000 0.0065408 +-0.0017683 -0.0032704 0.0056645 +-0.0017683 -0.0056645 0.0032704 +-0.0017683 -0.0065408 0.0000000 +-0.0017683 -0.0056645 -0.0032704 +-0.0017683 -0.0032704 -0.0056645 +-0.0017683 0.0000000 -0.0065408 +-0.0017683 0.0032704 -0.0056645 +-0.0017683 0.0056645 -0.0032704 +-0.0017683 0.0065408 0.0000000 +-0.0017683 0.0056645 0.0032704 +-0.0017683 0.0032704 0.0056645 +0.0017683 -0.0000000 0.0065408 +0.0017683 -0.0032704 0.0056645 +0.0017683 -0.0056645 0.0032704 +0.0017683 -0.0065408 0.0000000 +0.0017683 -0.0056645 -0.0032704 +0.0017683 -0.0032704 -0.0056645 +0.0017683 0.0000000 -0.0065408 +0.0017683 0.0032704 -0.0056645 +0.0017683 0.0056645 -0.0032704 +0.0017683 0.0065408 0.0000000 +0.0017683 0.0056645 0.0032704 +0.0017683 0.0032704 0.0056645 +numsurf 24 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +24 0.873306 0.113743 +13 0.867723 0.092904 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +13 0.867723 0.092904 +14 0.873306 0.072065 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +14 0.873306 0.072065 +15 0.888562 0.056810 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +15 0.888562 0.056810 +16 0.909401 0.051226 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +16 0.909401 0.051226 +17 0.930240 0.056810 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +17 0.930240 0.056810 +18 0.945495 0.072065 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +18 0.945495 0.072065 +19 0.951079 0.092904 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +19 0.951079 0.092904 +20 0.945495 0.113743 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +20 0.945495 0.113743 +21 0.930240 0.128999 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +21 0.930240 0.128999 +22 0.909401 0.134582 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +22 0.909401 0.134582 +23 0.888562 0.128999 +SURF 0X30 +mat 1 +refs 3 +0 0.909401 0.092904 +23 0.888562 0.128999 +24 0.873306 0.113743 +SURF 0X30 +mat 1 +refs 4 +24 0.873306 0.113743 +12 0.873306 0.113743 +1 0.867723 0.092904 +13 0.867723 0.092904 +SURF 0X30 +mat 1 +refs 4 +13 0.867723 0.092904 +1 0.867723 0.092904 +2 0.873306 0.072065 +14 0.873306 0.072065 +SURF 0X30 +mat 1 +refs 4 +14 0.873306 0.072065 +2 0.873306 0.072065 +3 0.888562 0.056810 +15 0.888562 0.056810 +SURF 0X30 +mat 1 +refs 4 +15 0.888562 0.056810 +3 0.888562 0.056810 +4 0.909401 0.051226 +16 0.909401 0.051226 +SURF 0X30 +mat 1 +refs 4 +16 0.909401 0.051226 +4 0.909401 0.051226 +5 0.930240 0.056810 +17 0.930240 0.056810 +SURF 0X30 +mat 1 +refs 4 +17 0.930240 0.056810 +5 0.930240 0.056810 +6 0.945495 0.072065 +18 0.945495 0.072065 +SURF 0X30 +mat 1 +refs 4 +18 0.945495 0.072065 +6 0.945495 0.072065 +7 0.951079 0.092904 +19 0.951079 0.092904 +SURF 0X30 +mat 1 +refs 4 +19 0.951079 0.092904 +7 0.951079 0.092904 +8 0.945495 0.113743 +20 0.945495 0.113743 +SURF 0X30 +mat 1 +refs 4 +20 0.945495 0.113743 +8 0.945495 0.113743 +9 0.930240 0.128999 +21 0.930240 0.128999 +SURF 0X30 +mat 1 +refs 4 +21 0.930240 0.128999 +9 0.930240 0.128999 +10 0.909401 0.134582 +22 0.909401 0.134582 +SURF 0X30 +mat 1 +refs 4 +22 0.909401 0.134582 +10 0.909401 0.134582 +11 0.888562 0.128999 +23 0.888562 0.128999 +SURF 0X30 +mat 1 +refs 4 +23 0.888562 0.128999 +11 0.888562 0.128999 +12 0.873306 0.113743 +24 0.873306 0.113743 +kids 0 +OBJECT poly +name "knob-outer" +loc 0.0065490 -0.0038825 -0.0621865 +texture "kln94.png" +texrep 1 1 +numvert 25 +0.0024725 0.0045729 0.0079206 +0.0024725 0.0079206 0.0045729 +0.0024725 0.0091459 0.0000000 +0.0024725 0.0079206 -0.0045730 +0.0024725 0.0045729 -0.0079206 +0.0024725 0.0000000 -0.0091459 +0.0024725 -0.0045729 -0.0079206 +0.0024725 -0.0079206 -0.0045730 +0.0024725 -0.0091459 0.0000000 +0.0024725 -0.0079206 0.0045729 +0.0024725 -0.0045730 0.0079206 +0.0024725 -0.0000000 0.0091459 +-0.0013043 0.0045729 0.0079206 +-0.0013043 0.0079206 0.0045729 +-0.0013043 0.0091459 0.0000000 +-0.0013043 0.0079206 -0.0045730 +-0.0013043 0.0045729 -0.0079206 +-0.0013043 0.0000000 -0.0091459 +-0.0013043 -0.0045729 -0.0079206 +-0.0013043 -0.0079206 -0.0045730 +-0.0013043 -0.0091459 0.0000000 +-0.0013043 -0.0079206 0.0045729 +-0.0013043 -0.0045730 0.0079206 +-0.0013043 -0.0000000 0.0091459 +0.0024725 -0.0000000 0.0000000 +numsurf 24 +SURF 0X30 +mat 1 +refs 4 +12 0.880262 0.143374 +0 0.880262 0.143374 +1 0.858931 0.122043 +13 0.858931 0.122043 +SURF 0X30 +mat 1 +refs 4 +2 0.909401 0.151182 +14 0.909401 0.151182 +13 0.880262 0.143374 +1 0.880262 0.143374 +SURF 0X30 +mat 1 +refs 4 +3 0.938540 0.143374 +15 0.938540 0.143374 +14 0.909401 0.151182 +2 0.909401 0.151182 +SURF 0X30 +mat 1 +refs 4 +4 0.959871 0.122043 +16 0.959871 0.122043 +15 0.938540 0.143374 +3 0.938540 0.143374 +SURF 0X30 +mat 1 +refs 4 +5 0.967679 0.092904 +17 0.967679 0.092904 +16 0.959871 0.122043 +4 0.959871 0.122043 +SURF 0X30 +mat 1 +refs 4 +6 0.959871 0.063765 +18 0.959871 0.063765 +17 0.967679 0.092904 +5 0.967679 0.092904 +SURF 0X30 +mat 1 +refs 4 +7 0.938540 0.042434 +19 0.938540 0.042434 +18 0.959871 0.063765 +6 0.959871 0.063765 +SURF 0X30 +mat 1 +refs 4 +8 0.909401 0.034626 +20 0.909401 0.034626 +19 0.938540 0.042434 +7 0.938540 0.042434 +SURF 0X30 +mat 1 +refs 4 +9 0.880262 0.042434 +21 0.880262 0.042434 +20 0.909401 0.034626 +8 0.909401 0.034626 +SURF 0X30 +mat 1 +refs 4 +10 0.858931 0.063765 +22 0.858931 0.063765 +21 0.880262 0.042434 +9 0.880262 0.042434 +SURF 0X30 +mat 1 +refs 4 +11 0.851123 0.092904 +23 0.851123 0.092904 +22 0.858931 0.063765 +10 0.858931 0.063765 +SURF 0X30 +mat 1 +refs 4 +0 0.858931 0.122043 +12 0.858931 0.122043 +23 0.851123 0.092904 +11 0.851123 0.092904 +SURF 0X30 +mat 1 +refs 3 +1 0.909401 0.092904 +0 0.880262 0.143374 +24 0.858931 0.122043 +SURF 0X30 +mat 1 +refs 3 +24 0.909401 0.092904 +2 0.909401 0.151182 +1 0.880262 0.143374 +SURF 0X30 +mat 1 +refs 3 +24 0.909401 0.092904 +3 0.938540 0.143374 +2 0.909401 0.151182 +SURF 0X30 +mat 1 +refs 3 +24 0.909401 0.092904 +4 0.959871 0.122043 +3 0.938540 0.143374 +SURF 0X30 +mat 1 +refs 3 +24 0.909401 0.092904 +5 0.967679 0.092904 +4 0.959871 0.122043 +SURF 0X30 +mat 1 +refs 3 +24 0.909401 0.092904 +6 0.959871 0.063765 +5 0.967679 0.092904 +SURF 0X30 +mat 1 +refs 3 +24 0.909401 0.092904 +7 0.938540 0.042434 +6 0.959871 0.063765 +SURF 0X30 +mat 1 +refs 3 +24 0.909401 0.092904 +8 0.909401 0.034626 +7 0.938540 0.042434 +SURF 0X30 +mat 1 +refs 3 +24 0.909401 0.092904 +9 0.880262 0.042434 +8 0.909401 0.034626 +SURF 0X30 +mat 1 +refs 3 +24 0.909401 0.092904 +10 0.858931 0.063765 +9 0.880262 0.042434 +SURF 0X30 +mat 1 +refs 3 +24 0.909401 0.092904 +11 0.851123 0.092904 +10 0.858931 0.063765 +SURF 0X30 +mat 1 +refs 3 +24 0.909401 0.092904 +0 0.858931 0.122043 +11 0.851123 0.092904 +kids 0 +OBJECT poly +name "msg-btn" +loc 0.0055797 -0.0151679 0.0430479 +texture "kln94.png" +texrep 1 1 +numvert 8 +-0.0012127 -0.0027196 -0.0050766 +0.0012127 -0.0027196 -0.0050766 +0.0012127 -0.0027196 0.0050766 +-0.0012127 -0.0027196 0.0050766 +-0.0012127 0.0027196 0.0050766 +0.0012127 0.0027196 0.0050766 +0.0012127 0.0027196 -0.0050766 +-0.0012127 0.0027196 -0.0050766 +numsurf 5 +SURF 0X30 +mat 1 +refs 4 +5 0.202809 0.051645 +2 0.202809 0.019019 +1 0.257814 0.019019 +6 0.257814 0.051645 +SURF 0X30 +mat 1 +refs 4 +0 0.255297 0.049125 +7 0.255297 0.045280 +6 0.207236 0.045280 +1 0.207236 0.049125 +SURF 0X30 +mat 1 +refs 4 +4 0.207236 0.049125 +3 0.207236 0.045280 +2 0.255297 0.045280 +5 0.255297 0.049125 +SURF 0X30 +mat 1 +refs 4 +7 0.206275 0.023085 +4 0.206275 0.020392 +5 0.256157 0.020392 +6 0.256157 0.023085 +SURF 0X30 +mat 1 +refs 4 +0 0.205763 0.023874 +1 0.205763 0.021447 +2 0.255106 0.021447 +3 0.255106 0.023874 +kids 0 +OBJECT poly +name "nrst-btn" +loc 0.0055797 -0.0150223 -0.0007310 +texture "kln94.png" +texrep 1 1 +numvert 8 +-0.0012127 0.0027196 -0.0050766 +0.0012127 0.0027196 -0.0050766 +0.0012127 0.0027196 0.0050766 +-0.0012127 0.0027196 0.0050766 +-0.0012127 -0.0027196 0.0050766 +0.0012127 -0.0027196 0.0050766 +0.0012127 -0.0027196 -0.0050766 +-0.0012127 -0.0027196 -0.0050766 +numsurf 5 +SURF 0X30 +mat 1 +refs 4 +7 0.478419 0.023874 +6 0.478419 0.021447 +5 0.527762 0.021447 +4 0.527762 0.023874 +SURF 0X30 +mat 1 +refs 4 +0 0.478931 0.023085 +3 0.478931 0.020392 +2 0.528814 0.020392 +1 0.528814 0.023085 +SURF 0X30 +mat 1 +refs 4 +3 0.479892 0.049125 +4 0.479892 0.045280 +5 0.527953 0.045280 +2 0.527953 0.049125 +SURF 0X30 +mat 1 +refs 4 +7 0.527953 0.049125 +0 0.527953 0.045280 +1 0.479892 0.045280 +6 0.479892 0.049125 +SURF 0X30 +mat 1 +refs 4 +2 0.475465 0.051645 +5 0.475465 0.019019 +6 0.530471 0.019019 +1 0.530471 0.051645 +kids 0 +OBJECT poly +name "obs-btn" +loc 0.0055797 -0.0150158 0.0285507 +texture "kln94.png" +texrep 1 1 +numvert 8 +-0.0012127 0.0027196 -0.0050766 +0.0012127 0.0027196 -0.0050766 +0.0012127 0.0027196 0.0050766 +-0.0012127 0.0027196 0.0050766 +-0.0012127 -0.0027196 0.0050766 +0.0012127 -0.0027196 0.0050766 +0.0012127 -0.0027196 -0.0050766 +-0.0012127 -0.0027196 -0.0050766 +numsurf 5 +SURF 0X30 +mat 1 +refs 4 +7 0.295512 0.023874 +6 0.295512 0.021447 +5 0.344855 0.021447 +4 0.344855 0.023874 +SURF 0X30 +mat 1 +refs 4 +0 0.296024 0.023085 +3 0.296024 0.020392 +2 0.345907 0.020392 +1 0.345907 0.023085 +SURF 0X30 +mat 1 +refs 4 +3 0.296985 0.049125 +4 0.296985 0.045280 +5 0.345046 0.045280 +2 0.345046 0.049125 +SURF 0X30 +mat 1 +refs 4 +7 0.345046 0.049125 +0 0.345046 0.045280 +1 0.296985 0.045280 +6 0.296985 0.049125 +SURF 0X30 +mat 1 +refs 4 +2 0.292558 0.051645 +5 0.292558 0.019019 +6 0.347564 0.019019 +1 0.347564 0.051645 +kids 0 +OBJECT poly +name "proc-btn" +loc 0.0055797 0.0146801 0.0588151 +texture "kln94.png" +texrep 1 1 +numvert 8 +-0.0012127 0.0027196 -0.0050766 +0.0012127 0.0027196 -0.0050766 +0.0012127 0.0027196 0.0050766 +-0.0012127 0.0027196 0.0050766 +-0.0012127 -0.0027196 0.0050766 +0.0012127 -0.0027196 0.0050766 +0.0012127 -0.0027196 -0.0050766 +-0.0012127 -0.0027196 -0.0050766 +numsurf 5 +SURF 0X30 +mat 1 +refs 4 +7 0.104981 0.212771 +6 0.104981 0.210345 +5 0.154325 0.210345 +4 0.154325 0.212771 +SURF 0X30 +mat 1 +refs 4 +0 0.106544 0.213032 +3 0.106544 0.210340 +2 0.156427 0.210340 +1 0.156427 0.213032 +SURF 0X30 +mat 1 +refs 4 +3 0.106454 0.238023 +4 0.106454 0.234178 +5 0.154516 0.234178 +2 0.154516 0.238023 +SURF 0X30 +mat 1 +refs 4 +7 0.154516 0.238023 +0 0.154516 0.234178 +1 0.106454 0.234178 +6 0.106454 0.238023 +SURF 0X30 +mat 1 +refs 4 +2 0.102028 0.240543 +5 0.102028 0.207917 +6 0.157033 0.207917 +1 0.157033 0.240543 +kids 0 +OBJECT poly +name "screen" +loc 0.0052287 0.0083597 0.0029861 +numvert 4 +-0.0000000 -0.0169880 -0.0441660 +-0.0000000 0.0169880 -0.0441660 +0.0000000 -0.0169880 0.0441660 +0.0000000 0.0169880 0.0441660 +numsurf 1 +SURF 0X20 +mat 0 +refs 4 +3 0 0 +2 0 0 +0 0 0 +1 0 0 +kids 0 diff --git a/Aircraft/Instruments-3d/kln94/kln94.blend b/Aircraft/Instruments-3d/kln94/kln94.blend new file mode 100644 index 000000000..c117b2aea Binary files /dev/null and b/Aircraft/Instruments-3d/kln94/kln94.blend differ diff --git a/Aircraft/Instruments-3d/kln94/kln94.nas b/Aircraft/Instruments-3d/kln94/kln94.nas new file mode 100644 index 000000000..969d41575 --- /dev/null +++ b/Aircraft/Instruments-3d/kln94/kln94.nas @@ -0,0 +1,385 @@ +var kln94 = nil; + +var KLN94 = { + + Page: { + new : func(owner, s, idx) + { + m = { + parents:[KLN94.Page], + section: s, + index: idx + }; + return m; + }, + + # encode various behavioural flags as predicates + # real Pages can over-ride these defaults as needed + hasActiveIdent: func { return 0; }, + numberOfCyanLines: func { return 0; }, + showsCDI: func { return 0; }, + isMulti: func { return 0; }, + + # cursor stuff + + display: func(gps) + { + + }, + + refresh: func(gps) + { + + }, + + }, + + pageNames : ['APT', 'VOR', 'NDB', 'INT', 'USR', 'ACT', 'NAV', 'FPL', 'SET', 'AUX'], + + PAGE_APT: 0, + PAGE_VOR: 1, + PAGE_NDB: 2, + PAGE_INT: 3, + PAGE_USR: 4, + PAGE_ACT: 5, + PAGE_NAV: 6, + PAGE_FPL: 7, + PAGE_SET: 8, + PAGE_AUX: 9, + + + PAGE_BAR_HEIGHT: 20, + NAV_DATA_WIDTH: 128, + + canvas_settings: { + "name": "KLN94", + "size": [512, 256], + "view": [480, 160], + "mipmapping": 1, + }, + + new : func(prop1, placement) + { + m = { parents : [KLN94]}; + + m.rootNode = props.globals.initNode(prop1); + m._setupCanvas(placement); + m._page = nil; + + m._messageScreenActive = 0; + m._messages = []; + + m._cursorActive = 0; + m._cursorField = 0; + m._enterAction = nil; + + + m._setupProps(); + + return m; + }, + + _setupCanvas: func(placement) + { + me._canvas = canvas.new(KLN94.canvas_settings); + var text_style = { + 'font': "LiberationFonts/LiberationMono-Bold.ttf", + 'character-size': 34, + 'character-aspect-ratio': 1.2 + }; + + me.rootNode.initNode('brightness-norm', 0.5, 'DOUBLE'); + + me._canvas.setColorBackground(1.0, 0.0, 0.0); + me._canvas.addPlacement(placement); + + me._navDataArea = me._canvas.createGroup(); + me._navDataArea.setTranslation(0, 0); + me._navDataLines = []; + + var navAreaH = (KLN94.canvas_settings.view[1] - KLN94.PAGE_BAR_HEIGHT) / 2; + var r1 = me._navDataArea.rect(0, 0, KLN94.NAV_DATA_WIDTH, navAreaH); + var r2 = me._navDataArea.rect(0, navAreaH, KLN94.NAV_DATA_WIDTH, navAreaH); + r1.setColor(0,1,1); # cyan + r2.setColor(0,1,1); + + var lineH = (KLN94.canvas_settings.view[1] - KLN94.PAGE_BAR_HEIGHT) / 5; + + for (var i=0; i<4; i +=1) { + var t = me._navDataArea.createChild("text"); + t.setColor(1, 1, 1); + t._node.setValues(text_style); + t.setAlignment("left-center"); + t.setTranslation(0.0, (i + 0.5) * lineH); + append(me._navDataLines, t); + } + + me._pageBarArea = me._canvas.createGroup(); + me._pageBarArea.setTranslation(0, KLN94.canvas_settings.view[1] - KLN94.PAGE_BAR_HEIGHT); + + var ln = me._pageBarArea.createChild('path'); + ln.setColor(0,1,1); # cyan + + me._pageBarText = me._pageBarArea.createChild("text"); + me._pageBarText._node.setValues(text_style); + me._pageBarText.setAlignment("left-center"); + me._pageBarText.setColor(0, 0, 1); + + me._pageBarInverseText = me._pageBarArea.createChild("text"); + me._pageBarInverseText._node.setValues(text_style); + me._pageBarInverseText.setAlignment("left-center"); + me._pageBarInverseText.setColor(1, 1, 1); + me._pageBarInverseText.setColorFill(0, 0, 1); + + me._pageArea = me._canvas.createGroup(); + me._pageBarArea.setTranslation(100, 0); + + me._pageAreaLines = []; + for (var i=0; i<5; i +=1) { + var t = me._pageArea.createChild("text"); + t.setColor(0, 1, 0); + t._node.setValues(text_style); + t.setAlignment("left-center"); + t.setTranslation(0.0, (i + 0.5) * lineH); + append(me._pageAreaLines, t); + } + + # inverted text block + me._pageAreaInverted = me._pageArea.createChild("text"); + me._pageAreaInverted.setColor(0, 0, 0); + me._pageAreaInverted.setColorFill(0, 1, 0); + me._pageAreaInverted._node.setValues(text_style); + me._pageAreaInverted.setAlignment("left-center"); + + me._cdiGroup = me._pageArea.createChild("group"); + canvas.parsesvg(me._cdiGroup, resolvepath('Aircraft/Instruments-3d/kln94/cdi.svg')); + me._cdiGroup.setTranslation(0, lineH); + }, + + _setupProps: func + { + var p = me.rootNode; + me.props = { + distanceToActiveNm: p.getNode(), + groundspeedKt: p.getNode(), + activeIdent: p.getNode(), + previousIdent: p.getNode(), + obsBearing: p.getNode(), + legTrack: p.getNode(), + groundTrack: p.getNode(), + cdiDeviationNm: p.getNode(), + }; + }, + + _setActivePage: func(pg) + { + me._page = pg; + if (pg == nil) return; + + # update line colors + for (var l=0; l<4; l+=1) { + me._pageAreaLines[l].setColor(0, 1, l < pg.numberOfCyanLines() ? 1 : 0); + } + + # hide or show the CDI area as appropriate + me._cdiGroup.setVisible(pg.showsCDI()); + }, + + _updateNavData : func + { + me._navDataLines[0].setText(sprintf('%4dnm', me._props.distanceToActiveNm.getValue())); + if (me._page.hasActiveIdent()) { + me._navDataLines[1].setText(sprintf('%4dkt', me._props.groundspeedKt.getValue())); + } else { + me._navDataLines[1].setText(me._props.activeIdent.getValue()); + } + if (me._obsMode) { + me._navDataLines[2].setText(sprintf('OBS%03d*', me._props.obsBearing.getValue())); + } else { + me._navDataLines[2].setText(sprintf('DTK%03d*', me._props.legTrack.getValue())); + } + me._navDataLines[3].setText(sprintf(' TK%03d*', me._props.groundTrack.getValue())); + }, + + _updateAnnunciationArea : func + { + if (size(me._messages) > 0) { + # show 'M' symbol + } + + if (me._enterAction != nil) { + # show 'ENT' symbol + } + + }, + + _updatePageBar : func + { + # hide in NAV-4 mode + if (me.inNav4Mode()) { + me._pageBarGroup.setVisible(0); + return; + } + + if (me._cursorActive) { + me._pageBarText.setText(''); + var t = ' * CRSR * ' ~ me.pageNames[activePage] ~ ' * CRSR *'; + me._pageBarInverseText.setText(t); + return; + } + + # assemble the string + var barString = ''; + var inverseBarString = ''; + var activePage = me.pageIndex[0]; + + for (var i=0; i < 10; i += 1) { + if (activePage == i) { + var sep = me.isMultiPage() ? '+' : ' '; + inverseBarString ~= me.pageNames[i] ~ sep ~ me.pageIndex[1]; + barString ~= ' '; # 5 spaces + } else { + barString ~= ' ' ~ me.pageNames[i]; + if (i < activePage) + inverseBarString ~= ' '; # 4 spaces + } + } + + me._pageBarText.setText(barString); + me._pageBarInverseText.setText(inverseBarString); + }, + + _setInverted: func(line, firstcol, numcols=1) + { + var t = me._pageAreaInverted; + var cellW = 20.0; + var lineH = (KLN94.canvas_settings.view[1] - KLN94.PAGE_BAR_HEIGHT) / 5; + t.setTranslation(firstcol * cellW, (line + 0.5) * lineH); + t.setText(substr(me._pageAreaLines[line].getText(), firstcol, numcols)); + t.setVisible(1); + }, + + _setBlink: func(line, firstcol, numcols=1) + { + + }, + + isPageActive: func(nm, idx) + { + if (me._page == nil) return 0; + return (me._page.section == nm) and (me._page.index == idx); + }, + + isMultiPage: func { return me._page.isMulti(); }, + + toggleCursor: func + { + me._cursorActive = !me._cursorActive; + if (me._cursorActive) { + me._cursorField = 0; + } + + me._updatePageBar(); + }, + + messageButton: func + { + if (me._messageScreenActive) { + me._messages = me._messages[1:]; # pop front + if (size(me._messages) == 0) { + me._messageScreenActive = 0; + # refresh normal screen + return; + } + + me._buildMessageScreen(); + return; + } + + if (size(me._messages) == 0) { + debug.dump('no messages to show'); + return; + } + + me._messageScreenActive = 1; + me._buildMessageScreen(); + }, + + _buildMessageScreen: func + { + + }, + + # Nav4 mode is special + inNav4Mode: func { return me.isPageActive(NAV, 4); }, + + formatDuration: func(timeInSeconds) + { + if (timeInSeconds > 60) { + return sprintf("0:%02d", timeInSeconds); + } + + if (timeInSeconds > 3600) { + var mins = int(timeInSeconds / 60); + var secs = timeInSeconds - (mins * 60); + return sprintf("%d:%02d", mins, secs); + } + + var hours = int(timeInSeconds / 3600); + timeInSeconds -= (hours * 3600); + var mins = int(timeInSeconds / 60); + var secs = timeInSeconds - (mins * 60); + return sprintf("%d:%02d:%02d", hours, mins, secs); + }, + + formatLatitude: func(lat) + { + var north = (lat >= 0.0); + var latDeg = int(lat); + var latMinutes = math.abs(lat - latDeg) * 60; + return sprintf('%s%02d*%04.1f', north ? "N" : "S", abs(latDeg), latMinutes); + }, + + formatLongitude: func(lon) + { + var east = (lon >= 0.0); + var lonDeg = int(lon); + var lonMinutes = math.abs(lon - lonDeg) * 60; + sprintf("%s%03d*%04.1f", east ? 'E' : 'W', abs(lonDeg), lonMinutes); + }, +}; + + +reload_gps = func +{ + kln94._setActivePage(nil); # force existing page to be undisplayed cleanly + + # make the cdu instance available inside the module namespace + # we are going to load into. + # for a reload this also wipes the existing namespace, which we want + globals['kln94_NS'] = { gps: kln94, KLN94:KLN94 }; + + var pages = ['navPages.nas', 'infoPages.nas', 'flightplanPages.nas', 'settingPages.nas', 'auxPages.nas']; + + #var settings = props.globals.getNode('/instrumentation/cdu/settings'); + foreach (var path; pages) { + # resolve the path in FG_ROOT, and --fg-aircraft dir, etc + var abspath = resolvepath('Aircraft/Instruments-3d/kln94/' ~ path); + if (io.stat(abspath) == nil) { + debug.dump('KN94 page not found:', path, abspath); + continue; + } + + # load pages code into a seperate namespace which we defined above + # also means we can clean out that namespace later + io.load_nasal(abspath, 'kln94_NS'); + } + # cdu.displayPageByTag(getprop('/instrumentation/cdu/settings/boot-page')); +}; + +setlistener("/nasal/canvas/loaded", func +{ + # create base PGS + kln94 = KLN94.new('/instrumentation/gps', {"node": "screen"}); + reload_gps(); +}, 1); diff --git a/Aircraft/Instruments-3d/kln94/kln94.png b/Aircraft/Instruments-3d/kln94/kln94.png new file mode 100644 index 000000000..f2227e14e Binary files /dev/null and b/Aircraft/Instruments-3d/kln94/kln94.png differ diff --git a/Aircraft/Instruments-3d/kln94/kln94.xml b/Aircraft/Instruments-3d/kln94/kln94.xml new file mode 100644 index 000000000..fe3633546 --- /dev/null +++ b/Aircraft/Instruments-3d/kln94/kln94.xml @@ -0,0 +1,164 @@ + + +kln94.ac + + + + + pick + ent-btn + + false + + nasal + + + + + + + pick + crsr-btn + + false + + nasal + + + + + + + pick + nrst-btn + + false + + nasal + + + + + + + pick + dto-btn + + false + + nasal + + + + + + + pick + obs-btn + + false + + nasal + + + + + + + pick + msg-btn + + false + + nasal + + + + + + + pick + alt-btn + + false + + nasal + + + + + + + pick + clr-btn + + false + + nasal + + + + + + + knob + knob-inner + + + nasal + + + + + + + knob + knob-outer + + + nasal + + + + + + + + knob + knob-brightness + + + property-adjust + /instrumentation/kln94/brightness-norm + 0.05 + 0 + 1 + false + + + + + \ No newline at end of file diff --git a/Aircraft/Instruments-3d/kln94/knob.rgb b/Aircraft/Instruments-3d/kln94/knob.rgb new file mode 100644 index 000000000..0b9064871 Binary files /dev/null and b/Aircraft/Instruments-3d/kln94/knob.rgb differ diff --git a/Aircraft/Instruments-3d/kln94/navPages.nas b/Aircraft/Instruments-3d/kln94/navPages.nas new file mode 100644 index 000000000..b66114d17 --- /dev/null +++ b/Aircraft/Instruments-3d/kln94/navPages.nas @@ -0,0 +1,80 @@ + + +var Nav1Page = +{ + a:2, + + + new: func() + { + m = {parents: [Nav1Page, KLN94.Page.new(KLN94.PAGE_NAV, 0)]}; + return m; + }, + + hasActiveIdent: func { 1 }, + showsCDI: func { 1 }, + + display: func(gps) + { + if (gps.isDirectToActive()) { + + } else { + # leg mode + gps.setLine(0, sprintf('%6s->%6s', + gps.props.previousIdent.getStringValue(), + gps.props.activeIdent.getStringValue()) + ); + } + + + gps.setLine(3, ' VNV Off'); + + var toFrom = gps.isTo() ? 'To' : 'Fr'; + var eteToWp1 = gps.formatDuration(gps.props.timeToWaypoint.getIntValue()); + gps.setLine(4, sprintf('%03d*%s ', bearingToWp1, toFrom) ~ eteToWp1); + }, + + refresh: func(gps) + { + + } +}; + +var Nav2Page = +{ + new: func() + { + m = {parents: [Nav2Page, KLN94.Page.new(KLN94.PAGE_NAV, 1)]}; + return m; + }, + + display: func(gps) + { + # select refnavaid! + + gps.setLine(0, ' PRESENT POSN'), + gps.setLine(1, ' Ref:%s', gps.refNavaid.id); + + gps.setLine(3, ' ' + gps.formatLatitude(gps.props.indicatedLat.getDoubleValue())); + gps.setLine(4, ' ' + gps.formatLongitude(gps.props.indicatedLon.getDoubleValue())); + } +}; + +var Nav3Page = +{ + new: func() + { + m = {parents: [Nav3Page, KLN94.Page.new(KLN94.PAGE_NAV, 2)]}; + return m; + }, +}; + +var nav1 = Nav1Page.new(); +gps.addPage(nav1); + + +gps.addPage(Nav2Page.new()); +gps.addPage(Nav3Page.new()); + + + diff --git a/Aircraft/Instruments-3d/kln94/settingPages.nas b/Aircraft/Instruments-3d/kln94/settingPages.nas new file mode 100644 index 000000000..e69de29bb diff --git a/Aircraft/Instruments-3d/kln94/waypointPages.nas b/Aircraft/Instruments-3d/kln94/waypointPages.nas new file mode 100644 index 000000000..e69de29bb