diff --git a/doc/en/scripting/builtins/libinput.md b/doc/en/scripting/builtins/libinput.md index 9856abc0b..9cf754d33 100644 --- a/doc/en/scripting/builtins/libinput.md +++ b/doc/en/scripting/builtins/libinput.md @@ -63,6 +63,13 @@ input.get_mouse_delta() --> {int, int} Returns cursor movement delta. +```lua +input.get_mouse_scroll() --> int +``` + +Returns the vertical mouse wheel offset accumulated during the current frame. +A positive value indicates scrolling up; a negative value indicates scrolling down. + ```lua input.get_bindings() --> strings array ``` diff --git a/doc/ru/scripting/builtins/libinput.md b/doc/ru/scripting/builtins/libinput.md index 17df1f8aa..f3ac4b699 100644 --- a/doc/ru/scripting/builtins/libinput.md +++ b/doc/ru/scripting/builtins/libinput.md @@ -34,6 +34,10 @@ input.get_mouse_pos() -> {number, number} -- Возращает дельту позиции курсора. input.get_mouse_delta() -> {number, number} + +-- Возвращает вертикальное смещение колеса мыши, накопленное за текущий кадр. +-- Положительное значение соответствует прокрутке вверх, отрицательное - вниз. +input.get_mouse_scroll() -> number ``` ## Создание обработчиков diff --git a/src/logic/scripting/lua/libs/libinput.cpp b/src/logic/scripting/lua/libs/libinput.cpp index 28f87f3c2..68469bb23 100644 --- a/src/logic/scripting/lua/libs/libinput.cpp +++ b/src/logic/scripting/lua/libs/libinput.cpp @@ -91,6 +91,12 @@ static int l_get_mouse_delta(lua::State* L) { return lua::pushvec2(L, engine->getInput().getCursor().delta); } +static int l_get_mouse_scroll(lua::State* L) { + if (engine->isHeadless()) + return 0; + return lua::pushinteger(L, engine->getInput().getScroll()); +} + static int l_get_bindings(lua::State* L) { if (engine->isHeadless()) return 0; @@ -181,6 +187,7 @@ const luaL_Reg inputlib[] = { {"add_callback", lua::wrap}, {"get_mouse_pos", lua::wrap}, {"get_mouse_delta", lua::wrap}, + {"get_mouse_scroll", lua::wrap}, {"get_bindings", lua::wrap}, {"get_binding_text", lua::wrap}, {"is_active", lua::wrap},