diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2016-05-04 11:41:14 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2016-05-04 11:45:04 +0200 |
commit | bfb6fdec01dc6faf641e2ae7a5604660e6fceadd (patch) | |
tree | 9e88e8aeedd437603266b6adcd2c558294776abf /tracker-hatire | |
parent | 3e90bbcf004ac543ff1cf6cac4c0c78b2d5927af (diff) |
tracker/hatire: remove copy-pasted code
Diffstat (limited to 'tracker-hatire')
-rwxr-xr-x | tracker-hatire/ftnoir_tracker_hat.cpp | 53 |
1 files changed, 21 insertions, 32 deletions
diff --git a/tracker-hatire/ftnoir_tracker_hat.cpp b/tracker-hatire/ftnoir_tracker_hat.cpp index 08313be0..845bbc02 100755 --- a/tracker-hatire/ftnoir_tracker_hat.cpp +++ b/tracker-hatire/ftnoir_tracker_hat.cpp @@ -160,38 +160,27 @@ void hatire::data(double *data) // if we have no new data, we don't populate it and so 0 pose gets handed back which is wrong. By always running the code below, if we // have no new data, we will just give it the previous pose data which is the best thing we can do really. - if (bEnableYaw) { - if (bInvertYaw ) data[Yaw] = HAT.Rot[iYawAxe] * -1.0f; - else data[Yaw] = HAT.Rot[iYawAxe]; - - } else data[Yaw] =0; - - if (bEnablePitch) { - if (bInvertPitch) data[Pitch] = HAT.Rot[iPitchAxe] * -1.0f; - else data[Pitch] = HAT.Rot[iPitchAxe]; - } else data[Pitch] = 0; - - if (bEnableRoll) { - if (bInvertRoll) data[Roll] = HAT.Rot[iRollAxe] * -1.0f; - else data[Roll] = HAT.Rot[iRollAxe]; - } else data[Roll] =0; - - if (bEnableX) { - if (bInvertX) data[TX] = HAT.Trans[iXAxe]* -1.0f; - else data[TX] = HAT.Trans[iXAxe]; - } else data[TX] =0; - - if (bEnableY) { - if (bInvertY) data[TY] = HAT.Trans[iYAxe]* -1.0f; - else data[TY] = HAT.Trans[iYAxe]; - } else data[TY] =0; - - if (bEnableZ) { - if (bInvertZ) data[TZ] = HAT.Trans[iZAxe]* -1.0f; - else data[TZ] = HAT.Trans[iZAxe]; - } else data[TZ] =0; - - new_frame=false; + const struct + { + bool enable; + bool sign; + float input; + double& place; + } spec[] = + { + { bEnableX, bInvertX, HAT.Trans[iXAxis], data[TX] }, + { bEnableY, bInvertY, HAT.Trans[iYAxis], data[TY] }, + { bEnableZ, bInvertZ, HAT.Trans[iZAxis], data[TZ] }, + { bEnableYaw, bInvertYaw, HAT.Rot[iYawAxis], data[Yaw] }, + { bEnablePitch, bInvertPitch, HAT.Rot[iPitchAxis], data[Pitch] }, + { bEnableRoll, bInvertRoll, HAT.Rot[iRollAxis], data[Roll] }, + }; + + for (unsigned i = 0; i < sizeof(spec) / sizeof(*spec); i++) + { + auto& k = spec[i]; + k.place = (k.sign ? -1.f : 1.f) * (k.enable ? k.input : 0.f); + } // For debug //data->x=dataRead.length(); |