adding mouse wheel support

This commit is contained in:
2023-12-08 12:24:20 +01:00
parent bfcc8cb758
commit 5184e9500d
5 changed files with 24 additions and 44 deletions

View File

@@ -6,7 +6,7 @@
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */ /* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/10/04 16:56:35 by maldavid #+# #+# */ /* Created: 2022/10/04 16:56:35 by maldavid #+# #+# */
/* Updated: 2023/11/23 14:32:06 by maldavid ### ########.fr */ /* Updated: 2023/12/08 12:14:31 by kbz_8 ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@@ -25,7 +25,8 @@ typedef enum
MLX_KEYUP = 1, MLX_KEYUP = 1,
MLX_MOUSEDOWN = 2, MLX_MOUSEDOWN = 2,
MLX_MOUSEUP = 3, MLX_MOUSEUP = 3,
MLX_WINDOW_EVENT = 4 MLX_MOUSEWHEEL = 4,
MLX_WINDOW_EVENT = 5
} mlx_event_type; } mlx_event_type;
/** /**

View File

@@ -6,7 +6,7 @@
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */ /* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/10/05 16:30:19 by maldavid #+# #+# */ /* Created: 2022/10/05 16:30:19 by maldavid #+# #+# */
/* Updated: 2023/08/28 10:49:03 by maldavid ### ########.fr */ /* Updated: 2023/12/08 12:17:40 by kbz_8 ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@@ -77,6 +77,23 @@ namespace mlx
break; break;
} }
case SDL_MOUSEWHEEL:
{
if(hooks[MLX_MOUSEWHEEL].hook)
{
if(_event.wheel.y > 0) // scroll up
hooks[MLX_MOUSEWHEEL].hook(1, hooks[MLX_MOUSEWHEEL].param);
else if(_event.wheel.y < 0) // scroll down
hooks[MLX_MOUSEWHEEL].hook(2, hooks[MLX_MOUSEWHEEL].param);
if(_event.wheel.x > 0) // scroll right
hooks[MLX_MOUSEWHEEL].hook(3, hooks[MLX_MOUSEWHEEL].param);
else if(_event.wheel.x < 0) // scroll left
hooks[MLX_MOUSEWHEEL].hook(4, hooks[MLX_MOUSEWHEEL].param);
}
break;
}
case SDL_WINDOWEVENT: case SDL_WINDOWEVENT:
{ {
auto& win_hook = hooks[MLX_WINDOW_EVENT]; auto& win_hook = hooks[MLX_WINDOW_EVENT];

View File

@@ -6,7 +6,7 @@
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */ /* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/10/05 16:27:35 by maldavid #+# #+# */ /* Created: 2022/10/05 16:27:35 by maldavid #+# #+# */
/* Updated: 2023/04/19 12:14:43 by maldavid ### ########.fr */ /* Updated: 2023/12/08 12:14:39 by kbz_8 ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@@ -68,7 +68,7 @@ namespace mlx
private: private:
std::array<uint8_t, SDL_NUM_SCANCODES> _keys; std::array<uint8_t, SDL_NUM_SCANCODES> _keys;
std::unordered_map<uint32_t, std::shared_ptr<MLX_Window>> _windows; std::unordered_map<uint32_t, std::shared_ptr<MLX_Window>> _windows;
std::unordered_map<uint32_t, std::array<Hook, 5>> _events_hooks; std::unordered_map<uint32_t, std::array<Hook, 6>> _events_hooks;
SDL_Event _event; SDL_Event _event;
std::array<uint8_t, 8> _mouse; std::array<uint8_t, 8> _mouse;

View File

@@ -6,7 +6,7 @@
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */ /* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/10/04 17:55:21 by maldavid #+# #+# */ /* Created: 2022/10/04 17:55:21 by maldavid #+# #+# */
/* Updated: 2023/11/25 11:57:57 by maldavid ### ########.fr */ /* Updated: 2023/12/08 12:23:07 by kbz_8 ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View File

@@ -1,38 +0,0 @@
--------------------------------------------------------------------------------
-- --
-- ::: :::::::: --
-- xmake.lua :+: :+: :+: --
-- +:+ +:+ +:+ --
-- By: kbz_8 </var/spool/mail/kbz_8> +#+ +:+ +#+ --
-- +#+#+#+#+#+ +#+ --
-- Created: 2023/12/07 15:21:38 by kbz_8 #+# #+# --
-- Updated: 2023/12/07 15:21:38 by kbz_8 ### ########.fr --
-- --
--------------------------------------------------------------------------------
-- Global settings
add_requires("libsdl", "vulkan-headers")
add_rules("mode.debug", "mode.release")
set_languages("cxx17")
set_objectdir("objs/xmake/$(os)_$(arch)")
set_targetdir("./")
set_optimize("fastest")
target("libmlx")
set_default(true)
set_license("MIT")
set_kind("shared")
add_includedirs("includes", "srcs", "third_party")
add_files("srcs/**.cpp")
add_packages("libsdl", "vulkan-headers")
if is_mode("debug") then
add_defines("DEBUG")
end
target_end() -- optional but I think the code is cleaner with this -- optional but I think the code is cleaner with this