mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
determine OpenVr headset namme
This commit is contained in:
parent
328b5a1e8b
commit
1bc8484a4b
4 changed files with 32 additions and 4 deletions
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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; }
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue