#ifndef XboxControllerInputHandler_h__ #define XboxControllerInputHandler_h__ #include "InputHandler.h" #include "Core/EKeyDown.h" #include "Core/EKeyUp.h" struct _XINPUT_STATE; typedef _XINPUT_STATE XINPUT_STATE; class XboxControllerInputHandler : public InputHandler { public: XboxControllerInputHandler(EventBroker* eventBroker, InputProxy* inputProxy); bool BindOrigin(std::string origin, std::string command, float value) override; void Update(double dt) override; virtual float GetCommandValue(std::string command) override; private: std::unordered_map m_OriginButtons; std::unordered_map m_OriginAxes; std::unordered_map> m_ButtonBindings; // GLFW_KEY... -> command string & value std::unordered_map> m_AxisBindings; // GLFW_KEY... -> command string & value std::unordered_map m_CommandValues; static const short MAX_GAMEPADS = 4; float getAxisValue(XINPUT_STATE& state, int axis); //typedef std::array(Gamepad::Axis::LAST) + 1> GamepadAxisState; //std::array m_CurrentGamepadAxisState; //std::array m_LastGamepadAxisState; //typedef std::array(Gamepad::Button::LAST) + 1> GamepadButtonState; //std::array m_CurrentGamepadButtonState; //std::array m_LastGamepadButtonState; }; #endif