diff options
Diffstat (limited to 'facetracknoir/tracker.h')
-rw-r--r-- | facetracknoir/tracker.h | 77 |
1 files changed, 17 insertions, 60 deletions
diff --git a/facetracknoir/tracker.h b/facetracknoir/tracker.h index 54350164..05ae4180 100644 --- a/facetracknoir/tracker.h +++ b/facetracknoir/tracker.h @@ -11,85 +11,42 @@ #include <QDebug> #include <QMutex> #include "plugin-support.h" +#include "mappings.hpp" + #include <vector> +#include <atomic> #include <qfunctionconfigurator/functionconfig.h> #include "tracker_types.h" #include "facetracknoir/main-settings.hpp" #include "facetracknoir/options.h" #include "facetracknoir/timer.hpp" -using namespace options; -class THeadPoseDOF { -public: - THeadPoseDOF(QString primary, - QString secondary, - int maxInput1, - int maxOutput1, - int maxInput2, - int maxOutput2, - axis_opts* opts) : - headPos(0), - curve(maxInput1, maxOutput1), - curveAlt(maxInput2, maxOutput2), - opts(*opts), - name1(primary), - name2(secondary) - { - QSettings settings("opentrack"); - QString currentFile = settings.value ( "SettingsFile", QCoreApplication::applicationDirPath() + "/settings/default.ini" ).toString(); - QSettings iniFile( currentFile, QSettings::IniFormat ); - curve.loadSettings(iniFile, primary); - curveAlt.loadSettings(iniFile, secondary); - } - volatile double headPos; - FunctionConfig curve; - FunctionConfig curveAlt; - axis_opts& opts; - QString name1, name2; -}; -class FaceTrackNoIR; class Tracker : protected QThread { - Q_OBJECT - + Q_OBJECT private: - FaceTrackNoIR *mainApp; QMutex mtx; main_settings& s; - volatile bool should_quit; + // XXX can be const-cast when functionconfig const-correct -sh 20141004 + Mappings& m; Timer t; -protected: - void run(); + T6DOF output_pose, raw_6dof; + std::atomic<bool> centerp; + std::atomic<bool> enabledp; + std::atomic<bool> should_quit; + static void get_curve(double pos, double& out, Mapping& axis); +protected: + void run() override; public: - Tracker( FaceTrackNoIR *parent, main_settings& s); + Tracker(main_settings& s, Mappings& m); ~Tracker(); - void getHeadPose(double *data); - void getOutputHeadPose(double *data); - volatile bool do_center; - volatile bool enabled; - - T6DOF output_camera, raw_6dof; - + void get_raw_and_mapped_poses(double* mapped, double* raw) const; void start() { QThread::start(); } + void center() { centerp.store(true); } + void toggle_enabled() { enabledp.store(!enabledp.load()); } }; - -class HeadPoseData { -public: - THeadPoseDOF axes[6]; - HeadPoseData(std::vector<axis_opts*> opts) : - axes { - THeadPoseDOF("tx","tx_alt", 100, 100, 100, 100, opts[TX]), - THeadPoseDOF("ty","ty_alt", 100, 100, 100, 100, opts[TY]), - THeadPoseDOF("tz","tz_alt", 100, 100, 100, 100, opts[TZ]), - THeadPoseDOF("rx", "rx_alt", 180, 180, 180, 180, opts[Yaw]), - THeadPoseDOF("ry", "ry_alt", 90, 90, 90, 90, opts[Pitch]), - THeadPoseDOF("rz", "rz_alt", 180, 180, 180, 180, opts[Roll]) - } - {} -}; - #endif |