diff options
Diffstat (limited to 'tracker-steamvr/steamvr.hpp')
| -rw-r--r-- | tracker-steamvr/steamvr.hpp | 53 |
1 files changed, 22 insertions, 31 deletions
diff --git a/tracker-steamvr/steamvr.hpp b/tracker-steamvr/steamvr.hpp index e979b9e3..61da2e05 100644 --- a/tracker-steamvr/steamvr.hpp +++ b/tracker-steamvr/steamvr.hpp @@ -1,27 +1,24 @@ #pragma once -#include "api/plugin-api.hpp" + #include "ui_dialog.h" -#include "compat/util.hpp" +#include "api/plugin-api.hpp" #include "options/options.hpp" -#include "compat/euler.hpp" - -#include <openvr.h> - -#include <cmath> -#include <memory> #include <tuple> +#include <climits> #include <QString> #include <QMutex> -#include <QMutexLocker> #include <QList> +#include <openvr.h> + using namespace options; -using error_t = vr::EVRInitError; + +using vr_error_t = vr::EVRInitError; using vr_t = vr::IVRSystem*; -using tt = std::tuple<vr_t, error_t>; +using tt = std::tuple<vr_t, vr_error_t>; using pose_t = vr::TrackedDevicePose_t; using origin = vr::ETrackingUniverseOrigin; @@ -40,6 +37,7 @@ struct device_spec QString model, serial, type; unsigned k; QString to_string() const; + bool is_connected; }; struct device_list final @@ -48,20 +46,19 @@ struct device_list final device_list(); void refresh_device_list(); - const QList<device_spec>& devices() const & { return device_specs; } + const QList<device_spec>& devices() const { return device_specs; } - static OTR_NEVER_INLINE maybe_pose get_pose(int k); - static QString strerror(error_t error); - static constexpr int max_devices = int(vr::k_unMaxTrackedDeviceCount); + static never_inline maybe_pose get_pose(int k); + static QString error_string(vr_error_t error); + static constexpr unsigned max_devices = vr::k_unMaxTrackedDeviceCount; template<typename F> - friend auto with_vr_lock(F&& fun) -> decltype(fun(vr_t(), error_t())); + friend auto with_vr_lock(F&& fun) -> decltype(fun(vr_t(), vr_error_t())); private: QList<device_spec> device_specs; static QMutex mtx; static tt vr_init_(); - static void vr_deleter(); static void fill_device_specs(QList<device_spec>& list); static tt vr_init(); }; @@ -70,24 +67,17 @@ class steamvr : public QObject, public ITracker { Q_OBJECT - using error_t = vr::EVRInitError; - using vr_t = vr::IVRSystem*; + static void matrix_to_euler(double& yaw, double& pitch, double& roll, const vr::HmdMatrix34_t& result); + + settings s; + unsigned device_index{UINT_MAX}; public: steamvr(); ~steamvr() override; - void start_tracker(QFrame *) override; + module_status start_tracker(QFrame *) override; void data(double *data) override; bool center() override; - -private: - static void matrix_to_euler(double &yaw, double &pitch, double &roll, const vr::HmdMatrix34_t& result); - - settings s; - int device_index; - - using rmat = euler::rmat; - using euler_t = euler::euler_t; }; class steamvr_dialog : public ITrackerDialog @@ -107,7 +97,8 @@ private slots: class steamvr_metadata : public Metadata { -public: - QString name() override { return QString(QCoreApplication::translate("steamvr_metadata", "Valve SteamVR")); } + Q_OBJECT + + QString name() override { return tr("Valve SteamVR"); } QIcon icon() override { return QIcon(":/images/rift_tiny.png"); } }; |
