#ifndef CORE_LIBS_PRX_LIBSCEVIDEOOUT_PADINPUT_HPP #define CORE_LIBS_PRX_LIBSCEVIDEOOUT_PADINPUT_HPP #include "SDL_events.h" #include "SDL_gamecontroller.h" #include "prx/libScePad/include/InputMapping.hpp" #include "prx/libScePad/include/PadState.hpp" #include #include #include class DisplayWindow; class PadInput { public: PadInput(); ~PadInput(); void HandleEvent(const SDL_Event& event, DisplayWindow& window); void Update(); private: void publish(); void setMouseMode(bool enabled); void openFirstAvailableController(); void openController(int deviceIndex); void closeController(); PadInputState sampleController() const; void applyOutput(); void enableSensors(); std::vector bindings; std::vector pressed; std::vector wheelReleaseTimes; std::array mouseStick{128, 128}; std::chrono::steady_clock::time_point nextMousePoll{}; bool mouseEnabled = false; SDL_GameController* controller = nullptr; PadInputState controllerState{}; std::uint32_t outputSequence = 0; PadOutputState outputState{}; bool outputPending = false; std::chrono::steady_clock::time_point nextRumbleRefresh{}; }; #endif