<?xml version="1.0"?> <!-- Overlay that rotates the stick angle. Copyright (c) 2011 Melchior FRANZ mfranz # aon : at Usage: fgfs ~~prop:input/joysticks/overlays=stick_rotate ~~prop:d:input/joysticks/stick-angle=15 --> <PropertyList> <nasal> <script> contains(caller(0)[0], "stick") and removelistener(stick.listener); var stick = { init: func { me.x = me.y = 0; var a = props.globals.initNode("/input/joysticks/stick-angle"); me.listener = setlistener(a, func(n) { me.angle = n.getValue() * D2R; me.sin = math.sin(me.angle); me.cos = math.cos(me.angle); }, 1); }, value: func cmdarg().getNode("setting").getValue(), setx: func { me.x = me.value(); me.update(); }, sety: func { me.y = -me.value(); me.update(); }, update: func { setprop("/controls/flight/aileron", me.x * me.cos + me.y * me.sin); setprop("/controls/flight/elevator", me.y * me.cos - me.x * me.sin); }, }; stick.init(); </script> </nasal> <axis n="0"> <tolerance>0.00001</tolerance> <binding> <command>nasal</command> <script>stick.setx()</script> </binding> </axis> <axis n="1"> <tolerance>0.00001</tolerance> <binding> <command>nasal</command> <script>stick.sety()</script> </binding> </axis> </PropertyList>