summaryrefslogtreecommitdiffhomepage
path: root/tracker-hydra
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2015-10-30 07:37:41 +0100
committerStanislaw Halik <sthalik@misaki.pl>2015-10-30 08:39:32 +0100
commitaa066bdd4622d4f6824fee864f6be6806813f04d (patch)
tree3df328b8b364cba2373a85827191b259bd78d546 /tracker-hydra
parentd6a54431d178632a2bf466c9904f74abd143afe6 (diff)
move to subdirectory-based build system
Closes #224
Diffstat (limited to 'tracker-hydra')
-rw-r--r--tracker-hydra/CMakeLists.txt44
-rw-r--r--tracker-hydra/ftnoir_hydra_clientcontrols.ui53
-rw-r--r--tracker-hydra/ftnoir_tracker_hydra.cpp46
-rw-r--r--tracker-hydra/ftnoir_tracker_hydra.h46
-rw-r--r--tracker-hydra/ftnoir_tracker_hydra_dialog.cpp22
5 files changed, 211 insertions, 0 deletions
diff --git a/tracker-hydra/CMakeLists.txt b/tracker-hydra/CMakeLists.txt
new file mode 100644
index 00000000..6a4a7cfe
--- /dev/null
+++ b/tracker-hydra/CMakeLists.txt
@@ -0,0 +1,44 @@
+SET(SDK_HYDRA "" CACHE PATH "libSixense path for Razer Hydra")
+SET(SDK_HYDRA_AMD64 FALSE CACHE BOOL "whether libSixense is amd64 (else ia-32)")
+if(SDK_HYDRA)
+ opentrack_boilerplate(opentrack-tracker-hydra)
+ target_include_directories(opentrack-tracker-hydra SYSTEM PUBLIC ${SDK_HYDRA}/include ${SDK_HYDRA}/include/sixense_utils)
+ if(WIN32)
+ if(MSVC)
+ set(dir lib)
+ set(ext lib)
+ else()
+ set(dir bin)
+ set(ext dll)
+ endif()
+ target_link_libraries(opentrack-tracker-hydra
+ "${SDK_HYDRA}/${dir}/win32/release_dll/sixense.${ext}"
+ #"${SDK_HYDRA}/${dir}/win32/release_dll/sixense_utils.${ext}"
+ )
+ install(FILES "${SDK_HYDRA}/bin/win32/release_dll/sixense.dll"
+ #"${SDK_HYDRA}/bin/win32/release_dll/sixense_utils.dll"
+ DESTINATION . ${opentrack-perms})
+ else()
+ if(SDK_HYDRA_AMD64)
+ set(six4 _x64)
+ else()
+ set(six4)
+ endif()
+ if(APPLE)
+ set(under-dll _dll)
+ set(soext dylib)
+ set(plat osx)
+ else()
+ set(under-dll)
+ set(soext so)
+ set(plat linux)
+ endif()
+ install(FILES
+ "${SDK_HYDRA}/lib/${plat}${six4}/release${under-dll}/libsixense${six4}.${soext}"
+ DESTINATION .
+ )
+ target_link_libraries(opentrack-tracker-hydra
+ "${SDK_HYDRA}/lib/${plat}${six4}/release${under-dll}/libsixense${six4}.${soext}"
+ )
+ endif()
+endif()
diff --git a/tracker-hydra/ftnoir_hydra_clientcontrols.ui b/tracker-hydra/ftnoir_hydra_clientcontrols.ui
new file mode 100644
index 00000000..7cfac075
--- /dev/null
+++ b/tracker-hydra/ftnoir_hydra_clientcontrols.ui
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>UIHydraControls</class>
+ <widget class="QWidget" name="UIHydraControls">
+ <property name="windowModality">
+ <enum>Qt::NonModal</enum>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>190</width>
+ <height>62</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Sixense Hydra tracker settings FaceTrackNoIR</string>
+ </property>
+ <property name="windowIcon">
+ <iconset>
+ <normaloff>images/FaceTrackNoIR.png</normaloff>images/FaceTrackNoIR.png</iconset>
+ </property>
+ <property name="layoutDirection">
+ <enum>Qt::LeftToRight</enum>
+ </property>
+ <property name="autoFillBackground">
+ <bool>false</bool>
+ </property>
+ <layout class="QFormLayout" name="formLayout">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>None whatsoever</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+ <slots>
+ <slot>startEngineClicked()</slot>
+ <slot>stopEngineClicked()</slot>
+ <slot>cameraSettingsClicked()</slot>
+ </slots>
+</ui>
diff --git a/tracker-hydra/ftnoir_tracker_hydra.cpp b/tracker-hydra/ftnoir_tracker_hydra.cpp
new file mode 100644
index 00000000..8d0e6832
--- /dev/null
+++ b/tracker-hydra/ftnoir_tracker_hydra.cpp
@@ -0,0 +1,46 @@
+/* Copyright: "i couldn't care less what anyone does with the 5 lines of code i wrote" - mm0zct */
+#include "ftnoir_tracker_hydra.h"
+#include "opentrack/plugin-api.hpp"
+#include <cstdio>
+#ifdef _WIN32
+# define SIXENSE_STATIC_LIB
+# define SIXENSE_UTILS_STATIC_LIB
+#endif
+#include <sixense.h>
+
+Hydra_Tracker::Hydra_Tracker() : should_quit(false) {}
+
+#include <sixense_math.hpp>
+
+Hydra_Tracker::~Hydra_Tracker()
+{
+
+ sixenseExit();
+}
+
+void Hydra_Tracker::start_tracker(QFrame*)
+{
+ sixenseInit();
+}
+
+void Hydra_Tracker::data(double *data)
+{
+
+ sixenseSetActiveBase(0);
+ sixenseAllControllerData acd;
+ sixenseGetAllNewestData( &acd );
+ sixenseMath::Matrix4 mat = sixenseMath::Matrix4(acd.controllers[0].rot_mat);
+
+ float ypr[3];
+
+ mat.getEulerAngles().fill(ypr);
+ data[TX] = acd.controllers[0].pos[0]/50.0;
+ data[TY] = acd.controllers[0].pos[1]/50.0;
+ data[TZ] = acd.controllers[0].pos[2]/50.0;
+ static constexpr double r2d = 57.295781;
+ data[Yaw] = ypr[0] * r2d;
+ data[Pitch] = ypr[1] * r2d;
+ data[Roll] = ypr[2] * r2d;
+}
+
+OPENTRACK_DECLARE_TRACKER(Hydra_Tracker, TrackerControls, FTNoIR_TrackerDll)
diff --git a/tracker-hydra/ftnoir_tracker_hydra.h b/tracker-hydra/ftnoir_tracker_hydra.h
new file mode 100644
index 00000000..47a1eb9a
--- /dev/null
+++ b/tracker-hydra/ftnoir_tracker_hydra.h
@@ -0,0 +1,46 @@
+#include "ui_ftnoir_hydra_clientcontrols.h"
+#include "opentrack/plugin-api.hpp"
+#include "opentrack/options.hpp"
+using namespace options;
+
+struct settings : opts {
+ settings() :
+ opts("tracker-hydra")
+ {}
+};
+
+class Hydra_Tracker : public ITracker
+{
+public:
+ Hydra_Tracker();
+ ~Hydra_Tracker();
+ void start_tracker(QFrame *) override;
+ void data(double *data) override;
+ volatile bool should_quit;
+private:
+ settings s;
+ QMutex mutex;
+};
+
+class TrackerControls: public ITrackerDialog
+{
+ Q_OBJECT
+public:
+ TrackerControls();
+ void register_tracker(ITracker *) {}
+ void unregister_tracker() {}
+private:
+ settings s;
+ Ui::UIHydraControls ui;
+private slots:
+ void doOK();
+ void doCancel();
+};
+
+class FTNoIR_TrackerDll : public Metadata
+{
+public:
+ QString name() { return QString("Razer Hydra -- inertial device"); }
+ QIcon icon() { return QIcon(":/images/facetracknoir.png"); }
+};
+
diff --git a/tracker-hydra/ftnoir_tracker_hydra_dialog.cpp b/tracker-hydra/ftnoir_tracker_hydra_dialog.cpp
new file mode 100644
index 00000000..2c23ee46
--- /dev/null
+++ b/tracker-hydra/ftnoir_tracker_hydra_dialog.cpp
@@ -0,0 +1,22 @@
+#include "ftnoir_tracker_hydra.h"
+#include "opentrack/plugin-api.hpp"
+
+TrackerControls::TrackerControls()
+{
+ ui.setupUi( this );
+
+ // Connect Qt signals to member-functions
+ connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(doOK()));
+ connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(doCancel()));
+}
+
+void TrackerControls::doOK() {
+ s.b->save();
+ this->close();
+}
+
+void TrackerControls::doCancel() {
+ s.b->reload();
+ close();
+}
+