Hi all,
I wanted to share my modification of the axisHandler Nasal function (the
one that implements control.throttleAxis, mixtureAxis, etc).
Purpose of the mod:
I have one of those joysticks that uses only 50% of the available
movement range for the throttle. Unfortunately for me, if a binding in
joystick.xml has a script target (eg. controls.throttleAxis) then the
offset, factor, etc modifiers are all ignored. This resulted in me not
being able to reduce throttle below 50%. I could have just mapped all
the /controls/engines/engine[n]/throttle properties to this axis
(Input/Joysticks/Logitech/wingman-force.xml does exactly that). Sadly at
the time I didn't know that I can bind multiple actions to an axis, and
somehow even after a lot of googling I didn't find the "obvious"
solution to this problem.
Also it strikes me that throttleAxis exists so you don't have to map
eight or more engines like that in the first place.
The mod:
The solution was really simple. I just extended the axisHanlder function
in Nasal/controls.nas with extra parameters for factor and offset, and
used those instead of the hard-coded values:
var axisHandler = func(pre, post) {
func(invert = 0, factor = 2, offset = 1) {
var val = cmdarg().getNode("setting").getValue();
if(invert) val = -val;
foreach(var e; engines)
if(e.selected.getValue()) {
setprop(pre ~ e.index ~ post, (offset - val) * factor);
}
}
}
My throttle binding now looks like this:
<axis n="2">
<desc>Throttle</desc>
<binding>
<command>nasal</command>
<!-- throttleAxis params: invert (0 or 1), factor, offset -->
<script>controls.throttleAxis(0, 1.1, -0.1)</script>
</binding>
</axis>
Note that the invert param is really superfluous now -- you could just
use a negative factor instead. But I kept it for backwards-compatibility
with the way it works now. You could simplify the above function if you
got rid of it but fgjs will need to be edited as well.
I hope you find this mod useful and add it to the next Flightgear
release. If not, then at least it might show up in a Google search for
the next guy with this problem :)
Cheers,
Vik
PS: thanks for all the hard work on Flightgear so far! :)
------------------------------------------------------------------------------
_______________________________________________
Flightgear-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/flightgear-devel