Untitled

 avatar
unknown
c_cpp
15 days ago
1.8 kB
5
Indexable
inline void controller_move(float tarx, float tary, float screenX, float screenY, int smooth) {
    float centerX = screenX / 2.0f;
    float centerY = screenY / 2.0f;
    float deltaX = (tarx - centerX) / smooth;
    float deltaY = (tary - centerY) / smooth;
    // deltaY = -deltaY;

    const int min_mouse = -127;
    const int max_mouse = 127;
    int mouseDeltaX = static_cast<int>(std::clamp(deltaX, (float)min_mouse, (float)max_mouse));
    int mouseDeltaY = static_cast<int>(std::clamp(deltaY, (float)min_mouse, (float)max_mouse));
    const int min_xinput = -32768;
    const int max_xinput = 32767;
    const int deadzone = static_cast<int>(max_xinput * 0.2f);

    float scale = (max_xinput - deadzone) / static_cast<float>(max_mouse);

    int newRX, newRY;
    if (mouseDeltaX > 0) {
        newRX = static_cast<int>(mouseDeltaX * scale) + deadzone;
    }
    else if (mouseDeltaX < 0) {
        newRX = static_cast<int>(mouseDeltaX * scale) - deadzone;
    }
    else {
        newRX = 0;
    }
    if (mouseDeltaY > 0) {
        newRY = static_cast<int>(mouseDeltaY * scale) + deadzone;
    }
    else if (mouseDeltaY < 0) {
        newRY = static_cast<int>(mouseDeltaY * scale) - deadzone;
    }
    else {
        newRY = 0;
    }

    newRX = std::clamp(newRX, min_xinput, max_xinput);
    newRY = std::clamp(newRY, min_xinput, max_xinput);

    {
        std::lock_guard<std::mutex> lock(controllerMutex);
        aimbotRightStickX = static_cast<short>(newRX);
        aimbotRightStickY = static_cast<short>(newRY);
    }
    //std::cout << "[ControllerAim] Set Aimbot RS: tarx=" << tarx << ", tary=" << tary
        //<< " | Delta=(" << deltaX << ", " << deltaY << ")"
        //<< " -> newRX=" << newRX << ", newRY=" << newRY << std::endl;
    UpdateVirtualController();
}
Editor is loading...
Leave a Comment