diff options
| author | Stanislaw Halik <sthalik@misaki.pl> | 2015-10-30 07:37:41 +0100 | 
|---|---|---|
| committer | Stanislaw Halik <sthalik@misaki.pl> | 2015-10-30 08:39:32 +0100 | 
| commit | aa066bdd4622d4f6824fee864f6be6806813f04d (patch) | |
| tree | 3df328b8b364cba2373a85827191b259bd78d546 /tracker-hydra | |
| parent | d6a54431d178632a2bf466c9904f74abd143afe6 (diff) | |
move to subdirectory-based build system
Closes #224
Diffstat (limited to 'tracker-hydra')
| -rw-r--r-- | tracker-hydra/CMakeLists.txt | 44 | ||||
| -rw-r--r-- | tracker-hydra/ftnoir_hydra_clientcontrols.ui | 53 | ||||
| -rw-r--r-- | tracker-hydra/ftnoir_tracker_hydra.cpp | 46 | ||||
| -rw-r--r-- | tracker-hydra/ftnoir_tracker_hydra.h | 46 | ||||
| -rw-r--r-- | tracker-hydra/ftnoir_tracker_hydra_dialog.cpp | 22 | 
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(); +} +  | 
