@Override
    public void update() {

        // Manage cursor animation
        if (currentCursor != null && currentCursor.length > 1) {
            double now = glfwGetTime();
            double frameTime = (glfwGetTime() - currentCursorFrameStartTime) * 1000;
            if (currentCursorDelays == null || frameTime >= currentCursorDelays.get(currentCursorFrame)) {
                currentCursorFrame = ++currentCursorFrame % currentCursor.length;
                currentCursorFrameStartTime = now;
                glfwSetCursor(context.getWindowHandle(), currentCursor[currentCursorFrame]);
            }
        }

        // Process events
        while (!mouseMotionEvents.isEmpty()) {
            listener.onMouseMotionEvent(mouseMotionEvents.poll());
        }

        while (!mouseButtonEvents.isEmpty()) {
            listener.onMouseButtonEvent(mouseButtonEvents.poll());
        }
    }
Send the input listener a special mouse-motion event with zero deltas in
order to initialize the listener's cursor position.
jme3-lwjgl3/src/main/java/com/jme3/input/lwjgl/GlfwMouseInput.java