115 lines · 4.4 KB · C
RawDownload
////  JoystickScriptingInterface.h//  interface/src/devices////  Created by Andrzej Kapolka on 5/15/14.//  Copyright 2014 High Fidelity, Inc.////  Distributed under the Apache License, Version 2.0.//  See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html// #ifndef hifi_JoystickScriptingInterface_h#define hifi_JoystickScriptingInterface_h #include <QObject>#include <QVector> #ifdef HAVE_SDL2#include <SDL.h>#endif #include "devices/Joystick.h" /// Handles joystick input through SDL.class JoystickScriptingInterface : public QObject {    Q_OBJECT #ifdef HAVE_SDL2    Q_PROPERTY(int AXIS_INVALID READ axisInvalid)    Q_PROPERTY(int AXIS_LEFT_X READ axisLeftX)    Q_PROPERTY(int AXIS_LEFT_Y READ axisLeftY)    Q_PROPERTY(int AXIS_RIGHT_X READ axisRightX)    Q_PROPERTY(int AXIS_RIGHT_Y READ axisRightY)    Q_PROPERTY(int AXIS_TRIGGER_LEFT READ axisTriggerLeft)    Q_PROPERTY(int AXIS_TRIGGER_RIGHT READ axisTriggerRight)    Q_PROPERTY(int AXIS_MAX READ axisMax)     Q_PROPERTY(int BUTTON_INVALID READ buttonInvalid)    Q_PROPERTY(int BUTTON_FACE_BOTTOM READ buttonFaceBottom)    Q_PROPERTY(int BUTTON_FACE_RIGHT READ buttonFaceRight)    Q_PROPERTY(int BUTTON_FACE_LEFT READ buttonFaceLeft)    Q_PROPERTY(int BUTTON_FACE_TOP READ buttonFaceTop)    Q_PROPERTY(int BUTTON_BACK READ buttonBack)    Q_PROPERTY(int BUTTON_GUIDE READ buttonGuide)    Q_PROPERTY(int BUTTON_START READ buttonStart)    Q_PROPERTY(int BUTTON_LEFT_STICK READ buttonLeftStick)    Q_PROPERTY(int BUTTON_RIGHT_STICK READ buttonRightStick)    Q_PROPERTY(int BUTTON_LEFT_SHOULDER READ buttonLeftShoulder)    Q_PROPERTY(int BUTTON_RIGHT_SHOULDER READ buttonRightShoulder)    Q_PROPERTY(int BUTTON_DPAD_UP READ buttonDpadUp)    Q_PROPERTY(int BUTTON_DPAD_DOWN READ buttonDpadDown)    Q_PROPERTY(int BUTTON_DPAD_LEFT READ buttonDpadLeft)    Q_PROPERTY(int BUTTON_DPAD_RIGHT READ buttonDpadRight)    Q_PROPERTY(int BUTTON_MAX READ buttonMax)     Q_PROPERTY(int BUTTON_PRESSED READ buttonPressed)    Q_PROPERTY(int BUTTON_RELEASED READ buttonRelease)#endif public:    static JoystickScriptingInterface& getInstance();     void update(); public slots:    Joystick* joystickWithName(const QString& name);    const QObjectList getAllJoysticks() const; signals:    void joystickAdded(Joystick* joystick);    void joystickRemoved(Joystick* joystick); private:#ifdef HAVE_SDL2    int axisInvalid() const { return SDL_CONTROLLER_AXIS_INVALID; }    int axisLeftX() const { return SDL_CONTROLLER_AXIS_LEFTX; }    int axisLeftY() const { return SDL_CONTROLLER_AXIS_LEFTY; }    int axisRightX() const { return SDL_CONTROLLER_AXIS_RIGHTX; }    int axisRightY() const { return SDL_CONTROLLER_AXIS_RIGHTY; }    int axisTriggerLeft() const { return SDL_CONTROLLER_AXIS_TRIGGERLEFT; }    int axisTriggerRight() const { return SDL_CONTROLLER_AXIS_TRIGGERRIGHT; }    int axisMax() const { return SDL_CONTROLLER_AXIS_MAX; }     int buttonInvalid() const { return SDL_CONTROLLER_BUTTON_INVALID; }    int buttonFaceBottom() const { return SDL_CONTROLLER_BUTTON_A; }    int buttonFaceRight() const { return SDL_CONTROLLER_BUTTON_B; }    int buttonFaceLeft() const { return SDL_CONTROLLER_BUTTON_X; }    int buttonFaceTop() const { return SDL_CONTROLLER_BUTTON_Y; }    int buttonBack() const { return SDL_CONTROLLER_BUTTON_BACK; }    int buttonGuide() const { return SDL_CONTROLLER_BUTTON_GUIDE; }    int buttonStart() const { return SDL_CONTROLLER_BUTTON_START; }    int buttonLeftStick() const { return SDL_CONTROLLER_BUTTON_LEFTSTICK; }    int buttonRightStick() const { return SDL_CONTROLLER_BUTTON_RIGHTSTICK; }    int buttonLeftShoulder() const { return SDL_CONTROLLER_BUTTON_LEFTSHOULDER; }    int buttonRightShoulder() const { return SDL_CONTROLLER_BUTTON_RIGHTSHOULDER; }    int buttonDpadUp() const { return SDL_CONTROLLER_BUTTON_DPAD_UP; }    int buttonDpadDown() const { return SDL_CONTROLLER_BUTTON_DPAD_DOWN; }    int buttonDpadLeft() const { return SDL_CONTROLLER_BUTTON_DPAD_LEFT; }    int buttonDpadRight() const { return SDL_CONTROLLER_BUTTON_DPAD_RIGHT; }    int buttonMax() const { return SDL_CONTROLLER_BUTTON_MAX; }     int buttonPressed() const { return SDL_PRESSED; }    int buttonRelease() const { return SDL_RELEASED; }#endif     JoystickScriptingInterface();    ~JoystickScriptingInterface(); #ifdef HAVE_SDL2    QMap<SDL_JoystickID, Joystick*> _openJoysticks;#endif    bool _isInitialized;}; #endif // hifi_JoystickScriptingInterface_h