void resetPollingStates() { justTouched = false; keyJustPressed = false; for (int i = 0; i < justPressedKeys.length; i++) { justPressedKeys[i] = false; } eventQueue.setProcessor(null); eventQueue.drain(); }
@Override public long getCurrentEventTime() { // queue sets its event time for each event dequeued/processed return eventQueue.getCurrentEventTime(); }
@Override public void invoke(long window, int codepoint) { if ((codepoint & 0xff00) == 0xf700) return; lastCharacter = (char)codepoint; Lwjgl3Input.this.window.getGraphics().requestRendering(); eventQueue.keyTyped((char)codepoint); } };
public synchronized boolean mouseMoved (int screenX, int screenY) { // Skip any queued mouse moved events. for (int i = next(MOUSE_MOVED, 0); i >= 0; i = next(MOUSE_MOVED, i + 5)) { queue.set(i, SKIP); queue.set(i + 3, 2); } queue.add(MOUSE_MOVED); queueTime(); queue.add(screenX); queue.add(screenY); return false; }
@Override public void invoke(long window, int key, int scancode, int action, int mods) { switch (action) { case GLFW.GLFW_PRESS: key = getGdxKeyCode(key); eventQueue.keyDown(key); pressedKeys++; keyJustPressed = true; justPressedKeys[key] = true; Lwjgl3Input.this.window.getGraphics().requestRendering(); lastCharacter = 0; char character = characterForKeyCode(key); if (character != 0) charCallback.invoke(window, character); break; case GLFW.GLFW_RELEASE: pressedKeys--; Lwjgl3Input.this.window.getGraphics().requestRendering(); eventQueue.keyUp(getGdxKeyCode(key)); break; case GLFW.GLFW_REPEAT: if (lastCharacter != 0) { Lwjgl3Input.this.window.getGraphics().requestRendering(); eventQueue.keyTyped(lastCharacter); } break; } } };
public synchronized boolean keyTyped (char character) { queue.add(KEY_TYPED); queueTime(); queue.add(character); return false; }
@Override public void invoke(long windowHandle, double x, double y) { deltaX = (int)x - logicalMouseX; deltaY = (int)y - logicalMouseY; mouseX = logicalMouseX = (int)x; mouseY = logicalMouseY = (int)y; if(window.getConfig().hdpiMode == HdpiMode.Pixels) { float xScale = window.getGraphics().getBackBufferWidth() / (float)window.getGraphics().getLogicalWidth(); float yScale = window.getGraphics().getBackBufferHeight() / (float)window.getGraphics().getLogicalHeight(); deltaX = (int)(deltaX * xScale); deltaY = (int)(deltaY * yScale); mouseX = (int)(mouseX * xScale); mouseY = (int)(mouseY * yScale); } Lwjgl3Input.this.window.getGraphics().requestRendering(); if (mousePressed > 0) { eventQueue.touchDragged(mouseX, mouseY, 0); } else { eventQueue.mouseMoved(mouseX, mouseY); } } };
public void update () { deltaX = 0; deltaY = 0; justTouched = false; if (keyJustPressed) { keyJustPressed = false; for (int i = 0; i < justPressedKeys.length; i++) { justPressedKeys[i] = false; } } if (processorQueue != null) processorQueue.drain(); // Main loop is handled elsewhere and events are queued. else { currentEventTime = System.nanoTime(); glfwPollEvents(); // Use GLFW main loop to process events. } }
@Override public void invoke(long window, double scrollX, double scrollY) { Lwjgl3Input.this.window.getGraphics().requestRendering(); if (scrollYRemainder > 0 && scrollY < 0 || scrollYRemainder < 0 && scrollY > 0 || TimeUtils.nanoTime() - lastScrollEventTime > pauseTime ) { // fire a scroll event immediately: // - if the scroll direction changes; // - if the user did not move the wheel for more than 250ms scrollYRemainder = 0; int scrollAmount = (int)-Math.signum(scrollY); eventQueue.scrolled(scrollAmount); lastScrollEventTime = TimeUtils.nanoTime(); } else { scrollYRemainder += scrollY; while (Math.abs(scrollYRemainder) >= 1) { int scrollAmount = (int)-Math.signum(scrollY); eventQueue.scrolled(scrollAmount); lastScrollEventTime = TimeUtils.nanoTime(); scrollYRemainder += scrollAmount; } } } };
@Override public void invoke(long window, int key, int scancode, int action, int mods) { switch (action) { case GLFW.GLFW_PRESS: key = getGdxKeyCode(key); eventQueue.keyDown(key); pressedKeys++; keyJustPressed = true; justPressedKeys[key] = true; Lwjgl3Input.this.window.getGraphics().requestRendering(); lastCharacter = 0; char character = characterForKeyCode(key); if (character != 0) charCallback.invoke(window, character); break; case GLFW.GLFW_RELEASE: pressedKeys--; Lwjgl3Input.this.window.getGraphics().requestRendering(); eventQueue.keyUp(getGdxKeyCode(key)); break; case GLFW.GLFW_REPEAT: if (lastCharacter != 0) { Lwjgl3Input.this.window.getGraphics().requestRendering(); eventQueue.keyTyped(lastCharacter); } break; } } };
public synchronized boolean mouseMoved (int screenX, int screenY) { // Skip any queued mouse moved events. for (int i = next(MOUSE_MOVED, 0); i >= 0; i = next(MOUSE_MOVED, i + 5)) { queue.set(i, SKIP); queue.set(i + 3, 2); } queue.add(MOUSE_MOVED); queueTime(); queue.add(screenX); queue.add(screenY); return false; }
public synchronized boolean scrolled (int amount) { queue.add(SCROLLED); queueTime(); queue.add(amount); return false; }
@Override public void invoke(long windowHandle, double x, double y) { deltaX = (int)x - logicalMouseX; deltaY = (int)y - logicalMouseY; mouseX = logicalMouseX = (int)x; mouseY = logicalMouseY = (int)y; if(window.getConfig().hdpiMode == HdpiMode.Pixels) { float xScale = window.getGraphics().getBackBufferWidth() / (float)window.getGraphics().getLogicalWidth(); float yScale = window.getGraphics().getBackBufferHeight() / (float)window.getGraphics().getLogicalHeight(); deltaX = (int)(deltaX * xScale); deltaY = (int)(deltaY * yScale); mouseX = (int)(mouseX * xScale); mouseY = (int)(mouseY * yScale); } Lwjgl3Input.this.window.getGraphics().requestRendering(); if (mousePressed > 0) { eventQueue.touchDragged(mouseX, mouseY, 0); } else { eventQueue.mouseMoved(mouseX, mouseY); } } };
@Override public void invoke(long window, double scrollX, double scrollY) { Lwjgl3Input.this.window.getGraphics().requestRendering(); if (scrollYRemainder > 0 && scrollY < 0 || scrollYRemainder < 0 && scrollY > 0 || TimeUtils.nanoTime() - lastScrollEventTime > pauseTime ) { // fire a scroll event immediately: // - if the scroll direction changes; // - if the user did not move the wheel for more than 250ms scrollYRemainder = 0; int scrollAmount = (int)-Math.signum(scrollY); eventQueue.scrolled(scrollAmount); lastScrollEventTime = TimeUtils.nanoTime(); } else { scrollYRemainder += scrollY; while (Math.abs(scrollYRemainder) >= 1) { int scrollAmount = (int)-Math.signum(scrollY); eventQueue.scrolled(scrollAmount); lastScrollEventTime = TimeUtils.nanoTime(); scrollYRemainder += scrollAmount; } } } };
void resetPollingStates() { justTouched = false; keyJustPressed = false; for (int i = 0; i < justPressedKeys.length; i++) { justPressedKeys[i] = false; } eventQueue.setProcessor(null); eventQueue.drain(); }
@Override public void invoke(long window, int key, int scancode, int action, int mods) { switch (action) { case GLFW.GLFW_PRESS: key = getGdxKeyCode(key); eventQueue.keyDown(key); pressedKeys++; keyJustPressed = true; justPressedKeys[key] = true; Lwjgl3Input.this.window.getGraphics().requestRendering(); lastCharacter = 0; char character = characterForKeyCode(key); if (character != 0) charCallback.invoke(window, character); break; case GLFW.GLFW_RELEASE: pressedKeys--; Lwjgl3Input.this.window.getGraphics().requestRendering(); eventQueue.keyUp(getGdxKeyCode(key)); break; case GLFW.GLFW_REPEAT: if (lastCharacter != 0) { Lwjgl3Input.this.window.getGraphics().requestRendering(); eventQueue.keyTyped(lastCharacter); } break; } } };
public synchronized boolean touchDragged (int screenX, int screenY, int pointer) { // Skip any queued touch dragged events for the same pointer. for (int i = next(TOUCH_DRAGGED, 0); i >= 0; i = next(TOUCH_DRAGGED, i + 6)) { if (queue.get(i + 5) == pointer) { queue.set(i, SKIP); queue.set(i + 3, 3); } } queue.add(TOUCH_DRAGGED); queueTime(); queue.add(screenX); queue.add(screenY); queue.add(pointer); return false; }
public synchronized boolean keyDown (int keycode) { queue.add(KEY_DOWN); queueTime(); queue.add(keycode); return false; }
@Override public void invoke(long windowHandle, double x, double y) { deltaX = (int)x - logicalMouseX; deltaY = (int)y - logicalMouseY; mouseX = logicalMouseX = (int)x; mouseY = logicalMouseY = (int)y; if(window.getConfig().hdpiMode == HdpiMode.Pixels) { float xScale = window.getGraphics().getBackBufferWidth() / (float)window.getGraphics().getLogicalWidth(); float yScale = window.getGraphics().getBackBufferHeight() / (float)window.getGraphics().getLogicalHeight(); deltaX = (int)(deltaX * xScale); deltaY = (int)(deltaY * yScale); mouseX = (int)(mouseX * xScale); mouseY = (int)(mouseY * yScale); } Lwjgl3Input.this.window.getGraphics().requestRendering(); if (mousePressed > 0) { eventQueue.touchDragged(mouseX, mouseY, 0); } else { eventQueue.mouseMoved(mouseX, mouseY); } } };
@Override public long getCurrentEventTime() { // queue sets its event time for each event dequeued/processed return eventQueue.getCurrentEventTime(); }