From 90e121ba476e0ded27f622da5f01288d4daf05bc Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 9 Dec 2016 15:13:33 -0800 Subject: [PATCH] Extend HMD scripting interface to check subdevices --- interface/src/scripting/HMDScriptingInterface.cpp | 13 +++++++++---- interface/src/scripting/HMDScriptingInterface.h | 5 +++-- libraries/plugins/src/plugins/PluginUtils.cpp | 6 +++--- libraries/plugins/src/plugins/PluginUtils.h | 3 ++- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/interface/src/scripting/HMDScriptingInterface.cpp b/interface/src/scripting/HMDScriptingInterface.cpp index fb1440ebdf..0a5a113526 100644 --- a/interface/src/scripting/HMDScriptingInterface.cpp +++ b/interface/src/scripting/HMDScriptingInterface.cpp @@ -49,12 +49,17 @@ glm::vec2 HMDScriptingInterface::overlayToSpherical(const glm::vec2 & position) return qApp->getApplicationCompositor().overlayToSpherical(position); } -bool HMDScriptingInterface::isHMDAvailable() { - return PluginUtils::isHMDAvailable(); +bool HMDScriptingInterface::isHMDAvailable(const QString& name) { + return PluginUtils::isHMDAvailable(name); } -bool HMDScriptingInterface::isHandControllerAvailable() { - return PluginUtils::isHandControllerAvailable(); +bool HMDScriptingInterface::isHandControllerAvailable(const QString& name) { + return PluginUtils::isHandControllerAvailable(name); +} + + +bool HMDScriptingInterface::isSubdeviceContainingNameAvailable(const QString& name) { + return PluginUtils::isSubdeviceContainingNameAvailable(name); } void HMDScriptingInterface::requestShowHandControllers() { diff --git a/interface/src/scripting/HMDScriptingInterface.h b/interface/src/scripting/HMDScriptingInterface.h index c9ed7f0097..52b16c5eed 100644 --- a/interface/src/scripting/HMDScriptingInterface.h +++ b/interface/src/scripting/HMDScriptingInterface.h @@ -38,8 +38,9 @@ public: Q_INVOKABLE QString preferredAudioInput() const; Q_INVOKABLE QString preferredAudioOutput() const; - Q_INVOKABLE bool isHMDAvailable(); - Q_INVOKABLE bool isHandControllerAvailable(); + Q_INVOKABLE bool isHMDAvailable(const QString& name = ""); + Q_INVOKABLE bool isHandControllerAvailable(const QString& name = ""); + Q_INVOKABLE bool isSubdeviceContainingNameAvailable(const QString& name); Q_INVOKABLE void requestShowHandControllers(); Q_INVOKABLE void requestHideHandControllers(); diff --git a/libraries/plugins/src/plugins/PluginUtils.cpp b/libraries/plugins/src/plugins/PluginUtils.cpp index bbb8d5c259..20dc011f25 100644 --- a/libraries/plugins/src/plugins/PluginUtils.cpp +++ b/libraries/plugins/src/plugins/PluginUtils.cpp @@ -24,16 +24,16 @@ bool PluginUtils::isHMDAvailable(const QString& pluginName) { return false; } -bool PluginUtils::isHandControllerAvailable() { +bool PluginUtils::isHandControllerAvailable(const QString& pluginName) { for (auto& inputPlugin : PluginManager::getInstance()->getInputPlugins()) { - if (inputPlugin->isHandController()) { + if (inputPlugin->isHandController() && (pluginName.isEmpty() || inputPlugin->getName() == pluginName)) { return true; } } return false; }; -bool isSubdeviceContainingNameAvailable(QString name) { +bool PluginUtils::isSubdeviceContainingNameAvailable(QString name) { for (auto& inputPlugin : PluginManager::getInstance()->getInputPlugins()) { if (inputPlugin->isActive()) { auto subdeviceNames = inputPlugin->getSubdeviceNames(); diff --git a/libraries/plugins/src/plugins/PluginUtils.h b/libraries/plugins/src/plugins/PluginUtils.h index 6cb2a7f980..351c9e7e58 100644 --- a/libraries/plugins/src/plugins/PluginUtils.h +++ b/libraries/plugins/src/plugins/PluginUtils.h @@ -15,7 +15,8 @@ class PluginUtils { public: static bool isHMDAvailable(const QString& pluginName = ""); - static bool isHandControllerAvailable(); + static bool isHandControllerAvailable(const QString& pluginName = ""); + static bool isSubdeviceContainingNameAvailable(QString name); static bool isViveControllerAvailable(); static bool isOculusTouchControllerAvailable(); static bool isXboxControllerAvailable();