12 #ifndef hifi_Joystick_h
13 #define hifi_Joystick_h
21 #include <controllers/InputDevice.h>
22 #include <controllers/StandardControls.h>
24 class Joystick :
public QObject,
public controller::InputDevice {
26 Q_PROPERTY(QString name READ getName)
27 Q_PROPERTY(
int instanceId READ getInstanceId)
30 using Pointer = std::shared_ptr<Joystick>;
32 const QString getName()
const {
return _name; }
34 SDL_GameController* getGameController() {
return _sdlGameController; }
37 virtual controller::Input::NamedVector getAvailableInputs()
const override;
38 virtual QString getDefaultMappingConfig()
const override;
39 virtual void update(
float deltaTime,
const controller::InputCalibrationData& inputCalibrationData)
override;
40 virtual void focusOutEvent()
override;
42 bool triggerHapticPulse(
float strength,
float duration, uint16_t index)
override;
44 Joystick() : InputDevice(
"GamePad") {}
47 Joystick(SDL_JoystickID instanceId, SDL_GameController* sdlGameController);
51 void handleAxisEvent(
const SDL_ControllerAxisEvent& event);
52 void handleButtonEvent(
const SDL_ControllerButtonEvent& event);
54 int getInstanceId()
const {
return _instanceId; }
57 SDL_GameController* _sdlGameController;
58 SDL_Joystick* _sdlJoystick;
59 SDL_Haptic* _sdlHaptic;
60 SDL_JoystickID _instanceId;
62 mutable controller::Input::NamedVector _availableInputs;