Add InputManager::getSubdeviceNames

This commit is contained in:
Ryan Huffman 2016-11-01 13:36:20 -07:00
parent dc8d0bf31c
commit ba0dbeac80
3 changed files with 12 additions and 1 deletions

View file

@ -21,6 +21,9 @@ public:
virtual void pluginFocusOutEvent() = 0;
virtual void pluginUpdate(float deltaTime, const controller::InputCalibrationData& inputCalibrationData) = 0;
// Some input plugins are comprised of multiple subdevices (SDL2, for instance).
// If an input plugin is only a single device, it will only return it's primary name.
virtual QStringList getSubdeviceNames() { return { getName() }; };
virtual bool isHandController() const = 0;
};

View file

@ -65,8 +65,10 @@ void SDL2Manager::init() {
_openJoysticks[id] = joystick;
auto userInputMapper = DependencyManager::get<controller::UserInputMapper>();
userInputMapper->registerDevice(joystick);
auto name = SDL_GameControllerName(controller);
_subdeviceNames << name;
emit joystickAdded(joystick.get());
emit subdeviceConnected(getName(), SDL_GameControllerName(controller));
emit subdeviceConnected(getName(), name);
}
}
}
@ -78,6 +80,10 @@ void SDL2Manager::init() {
}
}
QStringList SDL2Manager::getSubdeviceNames() {
return _subdeviceNames;
}
void SDL2Manager::deinit() {
_openJoysticks.clear();

View file

@ -26,6 +26,7 @@ public:
bool isSupported() const override;
const QString& getName() const override { return NAME; }
QStringList getSubdeviceNames() override;
bool isHandController() const override { return false; }
void init() override;
@ -79,6 +80,7 @@ private:
QMap<SDL_JoystickID, Joystick::Pointer> _openJoysticks;
bool _isInitialized { false } ;
static const QString NAME;
QStringList _subdeviceNames;
};
#endif // hifi__SDL2Manager_h