From 2105d56b3b1255b371fcaa0f9bb66195f74f0be0 Mon Sep 17 00:00:00 2001 From: "@clasher113" Date: Tue, 4 Feb 2025 10:34:28 +0200 Subject: [PATCH 1/2] add side mouse buttons definitions --- src/window/input.cpp | 29 ++++++++++++++++++++--------- src/window/input.hpp | 8 +++++++- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/window/input.cpp b/src/window/input.cpp index a4b4a9138..8738f1fd3 100644 --- a/src/window/input.cpp +++ b/src/window/input.cpp @@ -40,21 +40,22 @@ static std::unordered_map mousecodes { {"left", GLFW_MOUSE_BUTTON_1}, {"right", GLFW_MOUSE_BUTTON_2}, {"middle", GLFW_MOUSE_BUTTON_3}, + {"side1", GLFW_MOUSE_BUTTON_4}, + {"side2", GLFW_MOUSE_BUTTON_5}, + {"side3", GLFW_MOUSE_BUTTON_6}, + {"side4", GLFW_MOUSE_BUTTON_7}, + {"side5", GLFW_MOUSE_BUTTON_8}, }; static std::unordered_map keynames {}; +static std::unordered_map buttonsnames{}; std::string input_util::get_name(mousecode code) { - switch (code) { - case mousecode::BUTTON_1: - return "left"; - case mousecode::BUTTON_2: - return "right"; - case mousecode::BUTTON_3: - return "middle"; - default: - return "unknown"; + auto found = buttonsnames.find(static_cast(code)); + if (found == buttonsnames.end()) { + return "unknown"; } + return found->second; } std::string input_util::get_name(keycode code) { @@ -91,6 +92,9 @@ void input_util::initialize() { for (const auto& entry : keycodes) { keynames[entry.second] = entry.first; } + for (const auto& entry : mousecodes) { + buttonsnames[entry.second] = entry.first; + } } keycode input_util::keycode_from(const std::string& name) { @@ -210,6 +214,13 @@ std::string input_util::to_string(mousecode code) { return "RMB"; case mousecode::BUTTON_3: return "MMB"; + case mousecode::BUTTON_4: + case mousecode::BUTTON_5: + case mousecode::BUTTON_6: + case mousecode::BUTTON_7: + case mousecode::BUTTON_8: + return "XButton " + std::to_string(static_cast(code) - + static_cast(mousecode::BUTTON_3)); default: return "unknown button"; } diff --git a/src/window/input.hpp b/src/window/input.hpp index ca532e825..0f94fca33 100644 --- a/src/window/input.hpp +++ b/src/window/input.hpp @@ -102,11 +102,17 @@ enum class mousecode : int { BUTTON_1 = 0, // Left mouse button BUTTON_2 = 1, // Right mouse button BUTTON_3 = 2, // Middle mouse button + BUTTON_4 = 3, // Side mouse button 1 + BUTTON_5 = 4, // Side mouse button 2 + BUTTON_6 = 5, // Side mouse button 3 + BUTTON_7 = 6, // Side mouse button 4 + BUTTON_8 = 7, // Side mouse button 5 UNKNOWN = -1, }; inline mousecode MOUSECODES_ALL[] { - mousecode::BUTTON_1, mousecode::BUTTON_2, mousecode::BUTTON_3}; + mousecode::BUTTON_1, mousecode::BUTTON_2, mousecode::BUTTON_3, mousecode::BUTTON_4, + mousecode::BUTTON_5, mousecode::BUTTON_6, mousecode::BUTTON_7, mousecode::BUTTON_8 }; namespace input_util { void initialize(); From aeb5312ed2d781dfc5d5211d43a4dc588f911870 Mon Sep 17 00:00:00 2001 From: "@clasher113" Date: Tue, 4 Feb 2025 13:31:40 +0200 Subject: [PATCH 2/2] bug fix --- src/audio/AL/ALAudio.cpp | 2 +- src/graphics/ui/elements/InputBindBox.cpp | 7 +++-- src/graphics/ui/elements/InputBindBox.hpp | 3 +- src/logic/PlayerController.cpp | 34 ++++++++++++----------- 4 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/audio/AL/ALAudio.cpp b/src/audio/AL/ALAudio.cpp index 6843cba0f..7f28882b6 100644 --- a/src/audio/AL/ALAudio.cpp +++ b/src/audio/AL/ALAudio.cpp @@ -278,7 +278,7 @@ void ALSpeaker::play() { AL_CHECK(alSourcef( source, AL_GAIN, - volume * p_channel->getVolume() * get_channel(0)->getVolume() + volume * p_channel->getVolume() )); AL_CHECK(alSourcePlay(source)); } diff --git a/src/graphics/ui/elements/InputBindBox.cpp b/src/graphics/ui/elements/InputBindBox.cpp index 2729cbb69..780b875be 100644 --- a/src/graphics/ui/elements/InputBindBox.cpp +++ b/src/graphics/ui/elements/InputBindBox.cpp @@ -13,6 +13,7 @@ InputBindBox::InputBindBox(Binding& binding, glm::vec4 padding) label(std::make_shared