diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2017-05-30 02:32:23 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2017-05-30 02:32:23 +0200 |
commit | c52b5ad0a8340012fab7982f0c670a46c3e5d93d (patch) | |
tree | b54b567b006d4f2981285e320845dc1e05e47ff5 | |
parent | 5b819219889e78093e0dd32615adb6dcdc66cbcb (diff) |
logic/tracker: allow for "hold-toggle" hold-enable
Must press "keypress-toggle" to toggle (uh) that mode.
-rw-r--r-- | logic/tracker.cpp | 13 | ||||
-rw-r--r-- | logic/tracker.h | 21 |
2 files changed, 21 insertions, 13 deletions
diff --git a/logic/tracker.cpp b/logic/tracker.cpp index e09000e2..1a37a8a1 100644 --- a/logic/tracker.cpp +++ b/logic/tracker.cpp @@ -132,7 +132,7 @@ void Tracker::logic() Pose tmp; libs.pTracker->data(tmp); - if (get(f_enabled)) + if (get(f_enabled_p) ^ !get(f_enabled_h)) for (int i = 0; i < 6; i++) newpose[i] = elide_nan(tmp(i), newpose(i)); } @@ -445,6 +445,14 @@ void Tracker::raw_and_mapped_pose(double* mapped, double* raw) const } } +void Tracker::center() { set(f_center, true); } + +void Tracker::set_toggle(bool value) { set(f_enabled_h, value); } +void Tracker::set_zero(bool value) { set(f_zero, value); } + +void Tracker::zero() { negate(f_zero); } +void Tracker::toggle_enabled() { negate(f_enabled_p); } + void bits::set(bits::flags flag_, bool val_) { @@ -486,7 +494,8 @@ bool bits::get(bits::flags flag) bits::bits() : b(0u) { set(f_center, true); - set(f_enabled, true); + set(f_enabled_p, true); + set(f_enabled_h, true); set(f_zero, false); set(f_should_quit, false); } diff --git a/logic/tracker.h b/logic/tracker.h index 2e6350d7..79961378 100644 --- a/logic/tracker.h +++ b/logic/tracker.h @@ -35,11 +35,12 @@ using Pose = Mat<double, 6, 1>; struct bits { - enum flags { + enum flags : unsigned { f_center = 1 << 0, - f_enabled = 1 << 1, - f_zero = 1 << 2, - f_should_quit = 1 << 3, + f_enabled_h = 1 << 1, + f_enabled_p = 1 << 2, + f_zero = 1 << 3, + f_should_quit = 1 << 4, }; std::atomic<unsigned> b; @@ -108,13 +109,11 @@ public: void raw_and_mapped_pose(double* mapped, double* raw) const; void start() { QThread::start(); } - void center() { set(f_center, true); } - - void set_toggle(bool value) { set(f_enabled, value); } - void set_zero(bool value) { set(f_zero, value); } - - void zero() { negate(f_zero); } - void toggle_enabled() { negate(f_enabled); } + void center(); + void set_toggle(bool value); + void set_zero(bool value); + void zero(); + void toggle_enabled(); }; } // ns impl |