From 5c180de2cfc5e8a95dfd4cc9504e33eaff39fad7 Mon Sep 17 00:00:00 2001 From: Ingo Ruhnke <grumbel@gmx.de> Date: Mon, 13 Dec 2010 22:28:02 +0100 Subject: [PATCH] Use get_axis_float() in --axismap instead of raw integer values, should fix some range issues --- src/modifier.cpp | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/src/modifier.cpp b/src/modifier.cpp index eabb645..eb7c613 100644 --- a/src/modifier.cpp +++ b/src/modifier.cpp @@ -45,27 +45,20 @@ void apply_axis_map(XboxGenericMsg& msg, const std::vector<AxisMapping>& lst) for(std::vector<AxisMapping>::const_iterator i = lst.begin(); i != lst.end(); ++i) { - set_axis(newmsg, i->lhs, 0); + set_axis_float(newmsg, i->lhs, 0); } for(std::vector<AxisMapping>::const_iterator i = lst.begin(); i != lst.end(); ++i) { - int lhs = get_axis(msg, i->lhs); - int nrhs = get_axis(newmsg, i->rhs); + float lhs = get_axis_float(msg, i->lhs); + float nrhs = get_axis_float(newmsg, i->rhs); if (i->invert) { - if (i->lhs == XBOX_AXIS_LT || - i->lhs == XBOX_AXIS_RT) - { - lhs = 255 - lhs; - } - else - { - lhs = -lhs; - } + lhs = -lhs; } - set_axis(newmsg, i->rhs, std::max(std::min(nrhs + lhs, 32767), -32768)); + + set_axis_float(newmsg, i->rhs, std::max(std::min(nrhs + lhs, 1.0f), -1.0f)); } msg = newmsg; }