summaryrefslogtreecommitdiffhomepage
path: root/tracker-steamvr
diff options
context:
space:
mode:
Diffstat (limited to 'tracker-steamvr')
-rw-r--r--tracker-steamvr/CMakeLists.txt2
-rw-r--r--tracker-steamvr/lang/zh_CN.ts2
-rw-r--r--tracker-steamvr/steamvr.cpp46
3 files changed, 35 insertions, 15 deletions
diff --git a/tracker-steamvr/CMakeLists.txt b/tracker-steamvr/CMakeLists.txt
index dc487cba..eb8b20b9 100644
--- a/tracker-steamvr/CMakeLists.txt
+++ b/tracker-steamvr/CMakeLists.txt
@@ -38,7 +38,7 @@ if(steamvr-dll AND opentrack-intel)
SET(SDK_VALVE_STEAMVR "" CACHE PATH "Valve's SteamVR")
if(SDK_VALVE_STEAMVR)
otr_module(tracker-steamvr)
- install(FILES "${SDK_VALVE_STEAMVR}/bin/${steamvr-dir}/${steamvr-dll}" DESTINATION "${opentrack-hier-pfx}")
+ install(FILES "${SDK_VALVE_STEAMVR}/bin/${steamvr-dir}/${steamvr-dll}" DESTINATION "${opentrack-libexec}")
target_include_directories(opentrack-tracker-steamvr SYSTEM PRIVATE "${SDK_VALVE_STEAMVR}/headers")
target_link_libraries(opentrack-tracker-steamvr "${SDK_VALVE_STEAMVR}/lib/${steamvr-dir}/${steamvr-lib}")
diff --git a/tracker-steamvr/lang/zh_CN.ts b/tracker-steamvr/lang/zh_CN.ts
index 7b68034b..2c6f7230 100644
--- a/tracker-steamvr/lang/zh_CN.ts
+++ b/tracker-steamvr/lang/zh_CN.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.1">
+<TS version="2.1" language="zh_CN">
<context>
<name>dialog</name>
<message>
diff --git a/tracker-steamvr/steamvr.cpp b/tracker-steamvr/steamvr.cpp
index 3bcfcc25..05b5ed35 100644
--- a/tracker-steamvr/steamvr.cpp
+++ b/tracker-steamvr/steamvr.cpp
@@ -89,12 +89,17 @@ void device_list::fill_device_specs(QList<device_spec>& list)
switch (v->GetTrackedDeviceClass(k))
{
- case vr::ETrackedDeviceClass::TrackedDeviceClass_HMD:
+ using enum vr::ETrackedDeviceClass;
+ case TrackedDeviceClass_HMD:
dev.type = "HMD"; break;
- case vr::ETrackedDeviceClass::TrackedDeviceClass_Controller:
+ case TrackedDeviceClass_Controller:
dev.type = "Controller"; break;
- case vr::ETrackedDeviceClass::TrackedDeviceClass_TrackingReference:
- dev.type = "Tracker"; break;
+ case TrackedDeviceClass_TrackingReference:
+ dev.type = "Tracking reference"; break;
+ case TrackedDeviceClass_DisplayRedirect:
+ dev.type = "Display redirect"; break;
+ case TrackedDeviceClass_GenericTracker:
+ dev.type = "Generic"; break;
default:
dev.type = "Unknown"; break;
}
@@ -216,9 +221,17 @@ module_status steamvr::start_tracker(QFrame*)
err = tr("Can't find device with that serial");
if (err.isEmpty())
- return status_ok();
- else
- return error(err);
+ {
+ if (auto* c = vr::VRCompositor(); c != nullptr)
+ {
+ c->SetTrackingSpace(origin::TrackingUniverseSeated);
+ return status_ok();
+ }
+ else
+ return error("vr::VRCompositor == NULL");
+ }
+
+ return error(err);
});
}
@@ -253,12 +266,19 @@ bool steamvr::center()
{
if (v->GetTrackedDeviceClass(device_index) == vr::ETrackedDeviceClass::TrackedDeviceClass_HMD)
{
- // Reset yaw and position
- v->ResetSeatedZeroPose();
-
- // Use chaperone universe real world up instead of opentrack's initial pose centering
- // Note: Controllers will be centered based on initial headset position.
- return true;
+ auto* c = vr::VRChaperone();
+ if (!c)
+ {
+ eval_once(qDebug() << "steamvr: vr::VRChaperone == NULL");
+ return false;
+ }
+ else
+ {
+ c->ResetZeroPose(origin::TrackingUniverseSeated);
+ // Use chaperone universe real world up instead of opentrack's initial pose centering
+ // Note: Controllers will be centered based on initial headset position.
+ return true;
+ }
}
else
// with controllers, resetting the seated pose does nothing