From c52b5ad0a8340012fab7982f0c670a46c3e5d93d Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Tue, 30 May 2017 02:32:23 +0200 Subject: logic/tracker: allow for "hold-toggle" hold-enable Must press "keypress-toggle" to toggle (uh) that mode. --- logic/tracker.cpp | 13 +++++++++++-- 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; 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 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 -- cgit v1.2.3