summaryrefslogtreecommitdiffhomepage
path: root/ftnoir_tracker_udp/ftnoir_tracker_udp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ftnoir_tracker_udp/ftnoir_tracker_udp.cpp')
-rw-r--r--ftnoir_tracker_udp/ftnoir_tracker_udp.cpp69
1 files changed, 14 insertions, 55 deletions
diff --git a/ftnoir_tracker_udp/ftnoir_tracker_udp.cpp b/ftnoir_tracker_udp/ftnoir_tracker_udp.cpp
index 02ae21f0..136e075d 100644
--- a/ftnoir_tracker_udp/ftnoir_tracker_udp.cpp
+++ b/ftnoir_tracker_udp/ftnoir_tracker_udp.cpp
@@ -1,37 +1,7 @@
-/********************************************************************************
-* FaceTrackNoIR This program is a private project of some enthusiastic *
-* gamers from Holland, who don't like to pay much for *
-* head-tracking. *
-* *
-* Copyright (C) 2012 Wim Vriend (Developing) *
-* Ron Hendriks (Researching and Testing) *
-* *
-* Homepage: http://facetracknoir.sourceforge.net/home/default.htm *
-* *
-* This program is free software; you can redistribute it and/or modify it *
-* under the terms of the GNU General Public License as published by the *
-* Free Software Foundation; either version 3 of the License, or (at your *
-* option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, but *
-* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
-* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
-* more details. *
-* *
-* You should have received a copy of the GNU General Public License along *
-* with this program; if not, see <http://www.gnu.org/licenses/>. *
-* *
-********************************************************************************/
#include "ftnoir_tracker_udp.h"
-#include "facetracknoir/global-settings.h"
+#include "facetracknoir/plugin-support.h"
-FTNoIR_Tracker::FTNoIR_Tracker() : should_quit(false)
-{
- should_quit = false;
-
- for (int i = 0; i < 6; i++)
- newHeadPose[i] = 0;
-}
+FTNoIR_Tracker::FTNoIR_Tracker() : last_recv_pose { 0,0,0, 0,0,0 }, should_quit(false) {}
FTNoIR_Tracker::~FTNoIR_Tracker()
{
@@ -39,45 +9,34 @@ FTNoIR_Tracker::~FTNoIR_Tracker()
wait();
}
-/** QThread run @override **/
void FTNoIR_Tracker::run() {
- forever {
+ QByteArray datagram;
+ datagram.resize(sizeof(last_recv_pose));
+ for (;;) {
if (should_quit)
break;
- while (inSocket.hasPendingDatagrams()) {
- QMutexLocker foo(&mutex);
- QByteArray datagram;
- datagram.resize(sizeof(newHeadPose));
- inSocket.readDatagram((char * ) newHeadPose, sizeof(double[6]));
+ QMutexLocker foo(&mutex);
+ while (sock.hasPendingDatagrams()) {
+ sock.readDatagram((char * ) last_recv_pose, sizeof(double[6]));
}
- usleep(10000);
- }
+ msleep(1);
+ }
}
void FTNoIR_Tracker::StartTracker(QFrame*)
{
- (void) inSocket.bind(QHostAddress::Any, (int) s.port, QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint);
+ (void) sock.bind(QHostAddress::Any, (int) s.port, QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint);
start();
}
void FTNoIR_Tracker::GetHeadPoseData(double *data)
{
QMutexLocker foo(&mutex);
- if (s.enable_x)
- data[TX] = newHeadPose[TX];
- if (s.enable_y)
- data[TY] = newHeadPose[TY];
- if (s.enable_z)
- data[TZ] = newHeadPose[TZ];
- if (s.enable_yaw)
- data[Yaw] = newHeadPose[Yaw];
- if (s.enable_pitch)
- data[Pitch] = newHeadPose[Pitch];
- if (s.enable_roll)
- data[Roll] = newHeadPose[Roll];
+ for (int i = 0; i < 6; i++)
+ data[i] = last_recv_pose[i];
}
-extern "C" FTNOIR_TRACKER_BASE_EXPORT ITracker* CALLING_CONVENTION GetConstructor()
+extern "C" OPENTRACK_EXPORT ITracker* GetConstructor()
{
return new FTNoIR_Tracker;
}