From cdcb1f018a7635ef82d045c61f3ec879e8f02261 Mon Sep 17 00:00:00 2001 From: briaguya <70942617+briaguya-ai@users.noreply.github.com> Date: Thu, 4 Apr 2024 21:19:01 -0400 Subject: [PATCH] Fixed controller weirdness (#464) Co-authored-by: KiritoDv --- .../controller/ControllerStick.cpp | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/controller/controldevice/controller/ControllerStick.cpp b/src/controller/controldevice/controller/ControllerStick.cpp index 72a0c84b1..1d53ee489 100644 --- a/src/controller/controldevice/controller/ControllerStick.cpp +++ b/src/controller/controldevice/controller/ControllerStick.cpp @@ -11,15 +11,15 @@ #include #include -#define M_TAU 6.2831853071795864769252867665590057 // 2 * pi -#define MINIMUM_RADIUS_TO_MAP_NOTCH 0.9 - // for some reason windows isn't seeing M_PI // this is copied from my system's math.h #ifndef M_PI #define M_PI 3.14159265358979323846 #endif +#define M_TAU 2 * M_PI +#define MINIMUM_RADIUS_TO_MAP_NOTCH 0.9 + namespace LUS { ControllerStick::ControllerStick(uint8_t portIndex, Stick stick) : mPortIndex(portIndex), mStick(stick), mUseKeydownEventToCreateNewMapping(false), @@ -230,11 +230,11 @@ float ControllerStick::GetAxisDirectionValue(Direction direction) { } void ControllerStick::Process(int8_t& x, int8_t& y) { - auto sx = GetAxisDirectionValue(RIGHT) - GetAxisDirectionValue(LEFT); - auto sy = GetAxisDirectionValue(UP) - GetAxisDirectionValue(DOWN); + double sx = GetAxisDirectionValue(RIGHT) - GetAxisDirectionValue(LEFT); + double sy = GetAxisDirectionValue(UP) - GetAxisDirectionValue(DOWN); - auto ux = fabs(sx) * mSensitivity; - auto uy = fabs(sy) * mSensitivity; + double ux = fabs(sx) * mSensitivity; + double uy = fabs(sy) * mSensitivity; // create scaled circular dead-zone auto len = sqrt(ux * ux + uy * uy); @@ -265,11 +265,11 @@ void ControllerStick::Process(int8_t& x, int8_t& y) { const double distance = std::sqrt((ux * ux) + (uy * uy)) / MAX_AXIS_RANGE; if (distance >= MINIMUM_RADIUS_TO_MAP_NOTCH) { - auto angle = atan2(uy, ux) + M_TAU; + auto angle = std::atan2(uy, ux) + M_TAU; auto newAngle = GetClosestNotch(angle, notchProximityValRadians); - ux = cos(newAngle) * distance * MAX_AXIS_RANGE; - uy = sin(newAngle) * distance * MAX_AXIS_RANGE; + ux = std::cos(newAngle) * distance * MAX_AXIS_RANGE; + uy = std::sin(newAngle) * distance * MAX_AXIS_RANGE; } // assign back to original sign