summaryrefslogtreecommitdiffhomepage
path: root/logic/pipeline.hpp
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2018-08-03 04:43:28 +0000
committerStanislaw Halik <sthalik@misaki.pl>2018-08-04 13:41:56 +0000
commitc172c327c2b927427c24a7e3a5f345673d0e5929 (patch)
treed1e2d0a1fcb3619bfa0b453b743db78b37e2b727 /logic/pipeline.hpp
parente841b3324655b5862dc6d79d482b2af474239791 (diff)
logic/pipeline: rotation order fixrevert-geometry-stuff
v2: fix comments v3: fix reltrans
Diffstat (limited to 'logic/pipeline.hpp')
-rw-r--r--logic/pipeline.hpp34
1 files changed, 18 insertions, 16 deletions
diff --git a/logic/pipeline.hpp b/logic/pipeline.hpp
index 0b48d741..b293663f 100644
--- a/logic/pipeline.hpp
+++ b/logic/pipeline.hpp
@@ -31,6 +31,16 @@ using euler_t = euler::euler_t;
using vec6_bool = Mat<bool, 6, 1>;
using vec3_bool = Mat<bool, 6, 1>;
+static constexpr inline double scale_c = 8;
+static constexpr inline double scale_inv_c = 1/scale_c;
+
+struct state_
+{
+ rmat inv_rot_center { rmat::eye() };
+ rmat rotation { rmat::eye() };
+ euler_t t_center;
+};
+
class reltrans
{
euler_t interp_pos;
@@ -85,7 +95,7 @@ DEFINE_ENUM_OPERATORS(bits::flags);
class OTR_LOGIC_EXPORT pipeline : private QThread, private bits
{
Q_OBJECT
-private:
+
QMutex mtx;
main_settings s;
Mappings& m;
@@ -101,21 +111,12 @@ private:
// the logger while the tracker is running.
TrackLogger& logger;
- struct state_
- {
- rmat inv_rot_center;
- rmat rotation;
- euler_t t_center;
-
- state_() : inv_rot_center(rmat::eye())
- {}
- };
-
reltrans rel;
- state_ state;
+ //state_ state, scaled_state;
+ state_ scaled_state;
- ns backlog_time = ns(0);
+ ns backlog_time { ns{} };
bool tracking_started = false;
@@ -124,16 +125,17 @@ private:
void run() override;
bool maybe_enable_center_on_tracking_started();
void maybe_set_center_pose(const Pose& value, bool own_center_logic);
+ void store_tracker_pose(const Pose& value);
Pose clamp_value(Pose value) const;
Pose apply_center(Pose value) const;
- std::tuple<Pose, Pose, vec6_bool> get_selected_axis_value(const Pose& newpose) const;
+ std::tuple<Pose, Pose, vec6_bool> get_selected_axis_values(const Pose& newpose) const;
Pose maybe_apply_filter(const Pose& value) const;
Pose apply_reltrans(Pose value, vec6_bool disabled, bool centerp);
Pose apply_zero_pos(Pose value) const;
public:
pipeline(Mappings& m, runtime_libraries& libs, event_handler& ev, TrackLogger& logger);
- ~pipeline();
+ ~pipeline() override;
void raw_and_mapped_pose(double* mapped, double* raw) const;
void start() { QThread::start(QThread::HighPriority); }
@@ -149,4 +151,4 @@ public:
} // ns pipeline_impl
-using pipeline_impl::pipeline;
+using pipeline = pipeline_impl::pipeline;