From 1f495205af73ad38b75f001b1063cc27f43b6c5a Mon Sep 17 00:00:00 2001 From: Wojciech Figat Date: Mon, 25 Jul 2022 10:32:48 +0200 Subject: [PATCH] Add `GamepadDPadX`/`GamepadDPadY` input axes for gamepad DPad --- Source/Engine/Input/Enums.h | 10 ++++++++++ Source/Engine/Input/Input.cpp | 15 ++++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/Source/Engine/Input/Enums.h b/Source/Engine/Input/Enums.h index 6dc4b78b1..130ae18fe 100644 --- a/Source/Engine/Input/Enums.h +++ b/Source/Engine/Input/Enums.h @@ -358,4 +358,14 @@ API_ENUM() enum class InputAxisType /// The keyboard only mode. For key inputs. /// KeyboardOnly = 9, + + /// + /// Pad X axis - left/right (DPad / Directional Pad). + /// + GamepadDPadX = 10, + + /// + /// Pad Y axis - up/down (DPad / Directional Pad). + /// + GamepadDPadY = 11, }; diff --git a/Source/Engine/Input/Input.cpp b/Source/Engine/Input/Input.cpp index aba26b6a0..91bde0625 100644 --- a/Source/Engine/Input/Input.cpp +++ b/Source/Engine/Input/Input.cpp @@ -862,7 +862,7 @@ void InputService::Update() } // Get axis raw value - float axisRawValue; + float axisRawValue = 0.0f; switch (config.Axis) { case InputAxisType::MouseX: @@ -892,8 +892,17 @@ void InputService::Update() case InputAxisType::GamepadRightTrigger: axisRawValue = Input::GetGamepadAxis(config.Gamepad, GamepadAxis::RightTrigger); break; - default: - axisRawValue = 0.0f; + case InputAxisType::GamepadDPadX: + if (Input::GetGamepadButton(config.Gamepad, GamepadButton::DPadRight)) + axisRawValue = 1; + else if (Input::GetGamepadButton(config.Gamepad, GamepadButton::DPadLeft)) + axisRawValue = -1; + break; + case InputAxisType::GamepadDPadY: + if (Input::GetGamepadButton(config.Gamepad, GamepadButton::DPadUp)) + axisRawValue = 1; + else if (Input::GetGamepadButton(config.Gamepad, GamepadButton::DPadDown)) + axisRawValue = -1; break; }