######################### Processes Heading bug information ######################### var SetHdg = func{ #Sets heading bug to current heading setprop("autopilot/settings/heading-bug-deg", getprop("orientation/heading-magnetic-deg")); } var HeadingBug = func{ #Caluculate difference in actual and target headings, and write to bugoff. var hdg = getprop("orientation/heading-magnetic-deg"); var HdgTgt = getprop("autopilot/settings/heading-bug-deg"); var BugOff = (hdg - HdgTgt); setprop("autopilot/settings/bugoff-deg", BugOff); settimer(HeadingBug, 0.1); } #init = func { # settimer(HeadingBug, 1.0); #} ######################### Sorts out the RMI ######################### #First, set all RMI pointers to VOR, as per most real F50s: #We're going to use 0= VOR, 1=ADF, to make the animation easier. var SetupRMIs = func { setprop("instrumentation/rmi/captswitch1", 0); setprop("instrumentation/rmi/captswitch2", 0); setprop("instrumentation/rmi/foswitch1", 0); setprop("instrumentation/rmi/foswitch2", 0); } #Here's a recurring function to monitor whether VOR or ADF is selected, and to put the right value in the pointer. var RMIPointers = func{ #Define switch positions as variables: var cs1 = getprop ("instrumentation/rmi/captswitch1"); var cs2 = getprop ("instrumentation/rmi/captswitch2"); var fs1 = getprop ("instrumentation/rmi/foswitch1"); var fs2 = getprop ("instrumentation/rmi/foswitch2"); #Figure out pointer rotation directions for all possibilities: var a1 = getprop("instrumentation/adf/indicated-bearing-deg"); var a2 = getprop("instrumentation/adf[1]/indicated-bearing-deg"); var v1 = getprop("instrumentation/nav/heading-deg")-getprop("orientation/heading-magnetic-deg"); var v2 = getprop("instrumentation/nav[1]/heading-deg")-getprop("orientation/heading-magnetic-deg"); #Now figure out which is the active value if (cs1 == 0) {cp1 = v1} else {cp1 = a1} if (cs2 == 0) {cp2 = v2} else {cp2 = a2} if (fs1 == 0) {fp1 = v1} else {fp1 = a1} if (fs2 == 0) {fp2 = v2} else {fp2 = a1} #Now write everything to the FG properties: setprop("instrumentation/rmi/captpointer1", cp1); setprop("instrumentation/rmi/captpointer2", cp2); setprop("instrumentation/rmi/fopointer1", fp1); setprop("instrumentation/rmi/fopointer2", fp2); settimer(RMIPointers, 0.1); } setlistener("sim/signals/fdm-initialized", SetHdg); setlistener("sim/signals/fdm-initialized", HeadingBug); setlistener("sim/signals/fdm-initialized", SetupRMIs); setlistener("sim/signals/fdm-initialized", RMIPointers); #init();