Получить колесо мыши Delta на LWJGL3 (GLFW) - PullRequest
0 голосов
/ 06 октября 2019

Я пытаюсь создать 3D камеру вокруг игрока в игре, созданной с помощью LWJGL3. С помощью колеса прокрутки мыши вы сможете увеличивать изображение на плеере. Какой должна быть моя функция?

Как я запрашиваю каждое событие значение колесика мыши.

        glfwSetScrollCallback(window.getWindowHandle(), (windowHandle, xoffset, yoffset) -> {
            currentMouseWheel.x = xoffset;
            currentMouseWheel.y = yoffset;
        });

Моя функция для получения дельты прокрутки на основе предыдущего вызова: (PS: input вызывается для каждого gameLoop)

    public void input(Window window) {
        dMouseWheel.x = 0;
        dMouseWheel.y = 0;
        if (inWindow) {
            double dx = currentMouseWheel.x - previousMouseWheel.x;
            double dy = currentMouseWheel.y - previousMouseWheel.y;
            if (dx != 0) {
                dMouseWheel.x = (float) dx;
            }
            if (dy != 0) {
                dMouseWheel.y = (float) dy;
            }
        }
        previousMouseWheel.x = currentMouseWheel.x;
        previousMouseWheel.y = currentMouseWheel.y;
    }

xoffset и yoffset никогда не равны 0.

Мне нужно сделать большой импульс на колесе прокрутки, чтобы увидеть изменение дельты.

Что я должен делать ? Можете привести пример?

ОБНОВЛЕНИЕ: Я узнал! Как это сделать:

Сначала установите 2 переменных вектора:

private Vector2d currentMouseWheel;
private Vector2f dMouseWheel;

Затем в обратном вызове Scroll:

glfwSetScrollCallback(window.getWindowHandle(), (windowHandle, xoffset, yoffset) -> {
 currentMouseWheel.x = xoffset;
 currentMouseWheel.y = yoffset;
});

Затем на каждой итерации игрового цикла вывызовите функцию для ее обновления

public void input() {
 dMouseWheel.x = 0;
 dMouseWheel.y = 0;

 if (inWindow) {
 dMouseWheel.x = (float) currentMouseWheel.x;
 dMouseWheel.y = (float) currentMouseWheel.y;
 }

 currentMouseWheel.x = 0;
 currentMouseWheel.y = 0;
}

Тогда у вас будет dMouseWheel с правильной дельтой прокрутки!

...