determine OpenVr headset namme

This commit is contained in:
Dante Ruiz 2018-02-28 11:50:52 -08:00
parent 328b5a1e8b
commit 1bc8484a4b
4 changed files with 32 additions and 4 deletions

View file

@ -54,7 +54,8 @@ QStringList InputConfiguration::activeInputPlugins() {
if (plugin->configurable()) {
QString pluginName = plugin->getName();
if (pluginName == QString("OpenVR")) {
activePlugins << QString("Vive");
QString headsetName = plugin->getDeviceName();
activePlugins << headsetName;
} else {
activePlugins << pluginName;
}
@ -74,7 +75,7 @@ QString InputConfiguration::configurationLayout(QString pluginName) {
QString sourcePath;
for (auto plugin : PluginManager::getInstance()->getInputPlugins()) {
if (plugin->getName() == pluginName) {
if (plugin->getName() == pluginName || plugin->getDeviceName() == pluginName) {
return plugin->configurationLayout();
}
}

View file

@ -26,10 +26,11 @@ public:
// If an input plugin is only a single device, it will only return it's primary name.
virtual QStringList getSubdeviceNames() { return { getName() }; };
virtual void setConfigurationSettings(const QJsonObject configurationSettings) { }
virtual QJsonObject configurationSettings() { return QJsonObject(); }
virtual QJsonObject configurationSettings() { return QJsonObject(); }
virtual QString configurationLayout() { return QString(); }
virtual QString getDeviceName() { return QString(); }
virtual void calibrate() {}
virtual bool uncalibrate() { return false; }
virtual bool uncalibrate() { return false; }
virtual bool configurable() { return false; }
virtual bool isHandController() const { return false; }
virtual bool isHeadController() const { return false; }

View file

@ -11,6 +11,7 @@
#include "ViveControllerManager.h"
#include <algorithm>
#include <string>
#include <PerfStat.h>
#include <PathUtils.h>
@ -333,12 +334,33 @@ ViveControllerManager::InputDevice::InputDevice(vr::IVRSystem*& system) :
_configStringMap[Config::FeetHipsChestAndShoulders] = QString("FeetHipsChestAndShoulders");
}
std::string ViveControllerManager::InputDevice::getTrackingSystemName() {
std::string trackingSystemName = "";
if (_system) {
uint32_t HmdTrackingIndex = 0;
uint32_t bufferLength = _system->GetStringTrackedDeviceProperty(HmdTrackingIndex, vr::Prop_TrackingSystemName_String, NULL, 0, NULL);
if (bufferLength > 0) {
char* stringBuffer = new char[bufferLength];
_system->GetStringTrackedDeviceProperty(HmdTrackingIndex, vr::Prop_ManufacturerName_String, stringBuffer, bufferLength, NULL);
trackingSystemName = stringBuffer;
delete[] stringBuffer;
}
}
return trackingSystemName;
}
void ViveControllerManager::InputDevice::update(float deltaTime, const controller::InputCalibrationData& inputCalibrationData) {
_poseStateMap.clear();
_buttonPressedMap.clear();
_validTrackedObjects.clear();
_trackedControllers = 0;
if (_headsetName == "") {
_headsetName = getTrackingSystemName();
if (_headsetName == "HTC") {
_headsetName += " Vive";
}
}
// While the keyboard is open, we defer strictly to the keyboard values
if (isOpenVrKeyboardShown()) {
_axisStateMap.clear();

View file

@ -52,6 +52,8 @@ public:
bool activate() override;
void deactivate() override;
QString getDeviceName() { return QString::fromStdString(_inputDevice->_headsetName); }
void pluginFocusOutEvent() override { _inputDevice->focusOutEvent(); }
void pluginUpdate(float deltaTime, const controller::InputCalibrationData& inputCalibrationData) override;
@ -76,6 +78,7 @@ private:
void calibrateOrUncalibrate(const controller::InputCalibrationData& inputCalibration);
void calibrate(const controller::InputCalibrationData& inputCalibration);
void uncalibrate();
std::string getTrackingSystemName();
void sendUserActivityData(QString activity);
void configureCalibrationSettings(const QJsonObject configurationSettings);
QJsonObject configurationSettings();
@ -161,6 +164,7 @@ private:
HandConfig _handConfig { HandConfig::HandController };
FilteredStick _filteredLeftStick;
FilteredStick _filteredRightStick;
std::string _headsetName {""};
std::vector<PuckPosePair> _validTrackedObjects;
std::map<uint32_t, glm::mat4> _pucksPostOffset;