diff --git a/4J.Input/4J_Input.cpp b/4J.Input/4J_Input.cpp index 8f6f880a8..4aadc69ea 100644 --- a/4J.Input/4J_Input.cpp +++ b/4J.Input/4J_Input.cpp @@ -61,13 +61,21 @@ static GLFWwindow *getWindow() { // GLFW callbacks // --------------------------------------------------------------------------- -static void onCursorPos(GLFWwindow * /*w*/, double x, double y) { +static void onCursorPos(GLFWwindow* w, double x, double y) { + float scaleX = 1; + float scaleY = 1; + glfwGetWindowContentScale(w, &scaleX, &scaleY); + + x *= scaleX; + y *= scaleX; + if (s_cursorInitialized) { s_mouseAccumX += (float)(x - s_lastCursorX); s_mouseAccumY += (float)(y - s_lastCursorY); } else { s_cursorInitialized = true; } + s_lastCursorX = x; s_lastCursorY = y; } @@ -208,24 +216,25 @@ void C_4JInput::Tick(void) { s_mouseAccumX = s_mouseAccumY = 0.0f; // 6. Mouse buttons (only meaningful when locked in-game) - if (s_mouseLocked) { - s_mouseLeftCurrent = (glfwGetMouseButton(w, GLFW_MOUSE_BUTTON_LEFT) == GLFW_PRESS); - s_mouseRightCurrent = (glfwGetMouseButton(w, GLFW_MOUSE_BUTTON_RIGHT) == GLFW_PRESS); - } else { - // Not locked. Allow a left-click to re-lock (if not in a menu) - bool lclick = (glfwGetMouseButton(w, GLFW_MOUSE_BUTTON_LEFT) == GLFW_PRESS); - if (!menuNow && lclick) { - s_mouseLocked = true; - glfwSetInputMode(w, GLFW_CURSOR, GLFW_CURSOR_DISABLED); - if (glfwRawMouseMotionSupported()) - glfwSetInputMode(w, GLFW_RAW_MOUSE_MOTION, GLFW_TRUE); - s_mouseAccumX = s_mouseAccumY = 0.0f; - s_cursorInitialized = false; - } - s_mouseLeftCurrent = false; - s_mouseRightCurrent = false; - s_frameRelX = s_frameRelY = 0.0f; - } + s_mouseLeftCurrent = (glfwGetMouseButton(w, GLFW_MOUSE_BUTTON_LEFT) == GLFW_PRESS); + s_mouseRightCurrent = (glfwGetMouseButton(w, GLFW_MOUSE_BUTTON_RIGHT) == GLFW_PRESS); + // if (s_mouseLocked) { + // printf("locked\n"); + // } else { + // // Not locked. Allow a left-click to re-lock (if not in a menu) + // bool lclick = (glfwGetMouseButton(w, GLFW_MOUSE_BUTTON_LEFT) == GLFW_PRESS); + // if (!menuNow && lclick) { + // s_mouseLocked = true; + // glfwSetInputMode(w, GLFW_CURSOR, GLFW_CURSOR_DISABLED); + // if (glfwRawMouseMotionSupported()) + // glfwSetInputMode(w, GLFW_RAW_MOUSE_MOTION, GLFW_TRUE); + // s_mouseAccumX = s_mouseAccumY = 0.0f; + // s_cursorInitialized = false; + // } + // s_mouseLeftCurrent = false; + // s_mouseRightCurrent = false; + // s_frameRelX = s_frameRelY = 0.0f; + // } } // --------------------------------------------------------------------------- diff --git a/Minecraft.Client/UI/Button.cpp b/Minecraft.Client/UI/Button.cpp index d3cfe3e3b..484c7438c 100644 --- a/Minecraft.Client/UI/Button.cpp +++ b/Minecraft.Client/UI/Button.cpp @@ -44,7 +44,6 @@ void Button::render(Minecraft *minecraft, int xm, int ym) glBindTexture(GL_TEXTURE_2D, minecraft->textures->loadTexture(TN_GUI_GUI)); // 4J was L"/gui/gui.png" glColor4f(1, 1, 1, 1); - bool hovered = xm >= x && ym >= y && xm < x + w && ym < y + h; int yImage = getYImage(hovered); diff --git a/Minecraft.Client/UI/Screen.cpp b/Minecraft.Client/UI/Screen.cpp index 1bac8ed36..f66e14953 100644 --- a/Minecraft.Client/UI/Screen.cpp +++ b/Minecraft.Client/UI/Screen.cpp @@ -106,32 +106,23 @@ void Screen::updateEvents() { // TODO: update for SDL if we ever get around to that #if (defined (ENABLE_JAVA_GUIS)) - int fbw, fbh; - RenderManager.GetFramebufferSize(fbw, fbh); - glViewport(0, 0, fbw, fbh); + int fbw, fbh; + RenderManager.GetFramebufferSize(fbw, fbh); + glViewport(0, 0, fbw, fbh); ScreenSizeCalculator ssc(minecraft->options, minecraft->width, minecraft->height); - int screenWidth = ssc.getWidth(); - int screenHeight = ssc.getHeight(); - - GLFWwindow* window = glfwGetCurrentContext(); - if (!window) return; - - float windowScaleX = 1; - float windowScaleY = 1; - glfwGetWindowContentScale(window, &windowScaleX, &windowScaleY); - - double xpos, ypos; - glfwGetCursorPos(window, &xpos, &ypos); - - int xMouse = (int)(xpos * windowScaleX) * screenWidth / fbw; - int yMouse = (int)(ypos * windowScaleY) * screenHeight / fbh - 1; + int screenWidth = ssc.getWidth(); + int screenHeight = ssc.getHeight(); + int xMouse = InputManager.GetMouseX() * screenWidth / fbw; + int yMouse = InputManager.GetMouseY() * screenHeight / fbh - 1; static bool prevLeftState = false; static bool prevRightState = false; + + bool leftState = InputManager.ButtonDown(0, MINECRAFT_ACTION_ACTION); + bool rightState = InputManager.ButtonDown(0, MINECRAFT_ACTION_USE); - bool leftState = glfwGetMouseButton(window, GLFW_MOUSE_BUTTON_LEFT) == GLFW_PRESS; - bool rightState = glfwGetMouseButton(window, GLFW_MOUSE_BUTTON_RIGHT) == GLFW_PRESS; - + printf("%d, %d\n", leftState, rightState); + if (leftState && !prevLeftState) { mouseClicked(xMouse, yMouse, 0); }