round10 = func(v) { if (v == nil) return 0; return 0.1*int(v*10); } round100 = func(v) { if (v == nil) return 0; return 0.01*int(v*100); } var update_quad = func( ) { asl_ft = getprop("/position/altitude-ft"); ground = getprop("/position/ground-elev-ft"); agl_m = (asl_ft - ground) * 0.3048; setprop("/apm/altitude", round10(agl_m)); setprop("/apm/pitch", round10(getprop("/orientation/pitch-deg"))); setprop("/apm/roll", round10(getprop("/orientation/roll-deg"))); setprop("/apm/heading", round10(getprop("/orientation/heading-deg"))); # airspeed-kt is actually in feet per second (FDM NET bug) setprop("/apm/airspeed", round10(0.3048*getprop("/velocities/airspeed-kt"))); setprop("/apm/motor_right", round10(getprop("/engines/engine[0]/rpm")/10.0)); setprop("/apm/motor_left", round10(getprop("/engines/engine[1]/rpm")/10.0)); setprop("/apm/motor_front", round10(getprop("/engines/engine[2]/rpm")/10.0)); setprop("/apm/motor_back", round10(getprop("/engines/engine[3]/rpm")/10.0)); } var main_loop = func { update_quad(); settimer(main_loop, 0); } setlistener("/sim/signals/fdm-initialized", func { main_loop(); });