summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authormm0zct <the_cartographer@hotmail.com>2013-10-21 22:12:36 +0100
committermm0zct <the_cartographer@hotmail.com>2013-10-21 22:12:36 +0100
commit7e659504cb12541a571c042d01838d5c72b11bb2 (patch)
tree9158d2db6644443b14a02ed699e4b7b271b8331d
parent6f51a22726266cc88cb061cab2c2bfead49ed4ef (diff)
fixed Rift tracker for libovr SDK 0.2.5
-rw-r--r--ftnoir_tracker_rift/ftnoir_tracker_rift.cpp65
-rw-r--r--ftnoir_tracker_rift/ftnoir_tracker_rift.h11
2 files changed, 34 insertions, 42 deletions
diff --git a/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp b/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp
index e94b9d03..7fade51c 100644
--- a/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp
+++ b/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp
@@ -6,9 +6,6 @@
using namespace OVR;
-//used to turn on the re-centre spring effect
-//#define OPENTRACK_RIFT_RECENTRE_SPRING
-
Rift_Tracker::Rift_Tracker()
{
bEnableRoll = true;
@@ -20,71 +17,67 @@ Rift_Tracker::Rift_Tracker()
bEnableZ = true;
#endif
should_quit = false;
+ pManager = NULL;
+ pHMD = NULL;
+ pSensor = NULL;
+ pSFusion = NULL;
}
Rift_Tracker::~Rift_Tracker()
{
- pSensor.Clear();
- pHMD.Clear();
- pManager.Clear();
+ pSensor->Release();
+ delete pSFusion;
+ pHMD->Release();
+ pManager->Release();
System::Destroy();
}
-/*
-void controller_manager_setup_callback( sixenseUtils::ControllerManager::setup_step step ) {
-
- QMessageBox::warning(0,"OpenTrack Info", "controller manager callback",QMessageBox::Ok,QMessageBox::NoButton);
- if( sixenseUtils::getTheControllerManager()->isMenuVisible() ) {
- // Ask the controller manager what the next instruction string should be.
- std::string controller_manager_text_string = sixenseUtils::getTheControllerManager()->getStepString();
- QMessageBox::warning(0,"OpenTrack Info", controller_manager_text_string.c_str(),QMessageBox::Ok,QMessageBox::NoButton);
- // We could also load the supplied controllermanager textures using the filename: sixenseUtils::getTheControllerManager()->getTextureFileName();
- }
-}*/
void Rift_Tracker::StartTracker(QFrame* videoFrame)
{
- //QMessageBox::warning(0,"FaceTrackNoIR Notification", "Tracking loading settings...",QMessageBox::Ok,QMessageBox::NoButton);
+
loadSettings();
//
// Startup the Oculus SDK device handling, use the first Rift sensor we find.
//
System::Init(Log::ConfigureDefaultLog(LogMask_All));
- auto ptr_manager = DeviceManager::Create();
- if (ptr_manager != nullptr)
+ pManager = DeviceManager::Create();
+ if (pManager != NULL)
{
- pManager = *ptr_manager;
DeviceEnumerator<HMDDevice> enumerator = pManager->EnumerateDevices<HMDDevice>();
if (enumerator.IsAvailable())
{
- auto ptr_hmd = enumerator.CreateDevice();
+ pHMD = enumerator.CreateDevice();
- if (ptr_hmd != nullptr)
+ if (pHMD != NULL)
{
- pHMD = *ptr_hmd;
- auto ptr_sensor = pHMD->GetSensor();
- if (ptr_sensor != 0)
- pSensor = *ptr_sensor;
+ pSensor = pHMD->GetSensor();
+ }else{
+ QMessageBox::warning(0,"FaceTrackNoIR Error", "Unable to find Rift tracker",QMessageBox::Ok,QMessageBox::NoButton);
}
if (pSensor){
- SFusion.reset(new OVR::SensorFusion());
- SFusion->AttachToSensor(pSensor);
+ pSFusion = new OVR::SensorFusion();
+ pSFusion->Reset();
+ pSFusion->AttachToSensor(pSensor);
}else{
- QMessageBox::warning(0,"FaceTrackNoIR Error", "Unable to find Rift tracker",QMessageBox::Ok,QMessageBox::NoButton);
+ QMessageBox::warning(0,"FaceTrackNoIR Error", "Unable to create Rift sensor",QMessageBox::Ok,QMessageBox::NoButton);
}
- //isCalibrated = false;
- //MagCal.BeginAutoCalibration(SFusion);
+
+ }else{
+ QMessageBox::warning(0,"FaceTrackNoIR Error", "Unable to find Rift tracker",QMessageBox::Ok,QMessageBox::NoButton);
}
- }
+ }else{
+ QMessageBox::warning(0,"FaceTrackNoIR Error", "Unable to start Rift tracker",QMessageBox::Ok,QMessageBox::NoButton);
+ }
}
bool Rift_Tracker::GiveHeadPoseData(double *data)
{
- if (SFusion != nullptr) {
- Quatf hmdOrient = SFusion->GetOrientation();
+ if (pSFusion != NULL) {
+ Quatf hmdOrient = pSFusion->GetOrientation();
float newHeadPose[6];
float yaw = 0.0f;
@@ -120,7 +113,7 @@ bool Rift_Tracker::GiveHeadPoseData(double *data)
data[Roll] = newHeadPose[Roll] * 57.295781f;
}
}
- return pHMD.GetPtr() != NULL;
+ return pHMD != NULL;
}
diff --git a/ftnoir_tracker_rift/ftnoir_tracker_rift.h b/ftnoir_tracker_rift/ftnoir_tracker_rift.h
index 34742d6c..970a64a2 100644
--- a/ftnoir_tracker_rift/ftnoir_tracker_rift.h
+++ b/ftnoir_tracker_rift/ftnoir_tracker_rift.h
@@ -22,11 +22,10 @@ protected:
private:
static bool isInitialised;
- OVR::Ptr<OVR::DeviceManager> pManager;
- OVR::Ptr<OVR::HMDDevice> pHMD;
- OVR::Ptr<OVR::SensorDevice> pSensor;
- std::unique_ptr<OVR::SensorFusion> SFusion;
- // Magnetometer calibration and yaw correction
+ OVR::DeviceManager* pManager;
+ OVR::HMDDevice* pHMD;
+ OVR::SensorDevice* pSensor;
+ OVR::SensorFusion* pSFusion;
bool bEnableRoll;
bool bEnablePitch;
bool bEnableYaw;
@@ -35,7 +34,7 @@ private:
bool bEnableY;
bool bEnableZ;
#endif
- QMutex mutex;
+
};
// Widget that has controls for FTNoIR protocol client-settings.