diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/backend/GraphicsBackend.java b/src/main/java/ru/windcorp/progressia/client/graphics/backend/GraphicsBackend.java index 1635c7a..63c6958 100644 --- a/src/main/java/ru/windcorp/progressia/client/graphics/backend/GraphicsBackend.java +++ b/src/main/java/ru/windcorp/progressia/client/graphics/backend/GraphicsBackend.java @@ -19,6 +19,7 @@ package ru.windcorp.progressia.client.graphics.backend; import glm.vec._2.i.Vec2i; + import org.lwjgl.glfw.GLFWVidMode; import static org.lwjgl.glfw.GLFW.*; @@ -42,6 +43,13 @@ public class GraphicsBackend { private static boolean vSyncEnabled = false; private static boolean isGLFWInitialized = false; private static boolean isOpenGLInitialized = false; + + private static boolean allowDisablingCursor; + static { + String key = GraphicsBackend.class.getName() + ".allowDisablingCursor"; + allowDisablingCursor = Boolean.parseBoolean(System.getProperty(key, "false")); + } + private static boolean forceCursorToCenter = false; private GraphicsBackend() { } @@ -114,6 +122,10 @@ public class GraphicsBackend { frameLength = now - frameStart; frameStart = now; } + + if (forceCursorToCenter) { + glfwSetCursorPos(windowHandle, FRAME_SIZE.x / 2.0, FRAME_SIZE.y / 2.0); + } } static void endFrame() { @@ -194,10 +206,18 @@ public class GraphicsBackend { } public static boolean isMouseCaptured() { + if (!allowDisablingCursor) { + return forceCursorToCenter; + } return glfwGetInputMode(windowHandle, GLFW_CURSOR) == GLFW_CURSOR_DISABLED; } public static void setMouseCaptured(boolean capture) { + if (!allowDisablingCursor) { + forceCursorToCenter = capture; + return; + } + int mode = capture ? GLFW_CURSOR_DISABLED : GLFW_CURSOR_NORMAL; glfwSetInputMode(windowHandle, GLFW_CURSOR, mode); diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/gui/Component.java b/src/main/java/ru/windcorp/progressia/client/graphics/gui/Component.java index bb6f24d..8f1aa9a 100644 --- a/src/main/java/ru/windcorp/progressia/client/graphics/gui/Component.java +++ b/src/main/java/ru/windcorp/progressia/client/graphics/gui/Component.java @@ -807,7 +807,7 @@ public class Component extends Named { for (ARTrigger trigger : triggers) { if (!autoReassemblyTriggerObjects.containsKey(trigger)) { Object triggerObject = createTriggerObject(trigger); - addListener(trigger); + addListener(triggerObject); autoReassemblyTriggerObjects.put(trigger, triggerObject); } } diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/gui/Label.java b/src/main/java/ru/windcorp/progressia/client/graphics/gui/Label.java index 4450f33..a87ed3b 100755 --- a/src/main/java/ru/windcorp/progressia/client/graphics/gui/Label.java +++ b/src/main/java/ru/windcorp/progressia/client/graphics/gui/Label.java @@ -85,7 +85,6 @@ public class Label extends Component { public void setFont(Font font) { this.font = font; - requestReassembly(); } public String getCurrentText() {