From ea03067a02515ab967ff6db502caae0b96f4e461 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Fri, 7 Aug 2015 12:23:43 -0700 Subject: [PATCH] When eye tracking data is lot for > N seconds handle as "not tracking" Revert to default look-at behaviour and saccades until tracking resumes. --- interface/src/Application.cpp | 2 +- interface/src/devices/EyeTracker.cpp | 9 +++++++++ interface/src/devices/EyeTracker.h | 5 ++++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index c9047e527f..56a33695bc 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2050,7 +2050,7 @@ void Application::setActiveEyeTracker() { bool isEyeTracking = Menu::getInstance()->isOptionChecked(MenuOption::SMIEyeTracking); bool isSimulating = Menu::getInstance()->isOptionChecked(MenuOption::SimulateEyeTracking); eyeTracker->setEnabled(isEyeTracking, isSimulating); - if (isEyeTracking && !eyeTracker->isTracking()) { + if (isEyeTracking && !eyeTracker->isEnabled()) { Menu::getInstance()->setIsOptionChecked(MenuOption::SMIEyeTracking, false); isEyeTracking = false; } diff --git a/interface/src/devices/EyeTracker.cpp b/interface/src/devices/EyeTracker.cpp index c8942a889b..9a35448bd0 100644 --- a/interface/src/devices/EyeTracker.cpp +++ b/interface/src/devices/EyeTracker.cpp @@ -13,6 +13,8 @@ #include +#include + #include "InterfaceLogging.h" #include "OctreeConstants.h" @@ -36,6 +38,8 @@ EyeTracker::~EyeTracker() { #ifdef HAVE_IVIEWHMD void EyeTracker::processData(smi_CallbackDataStruct* data) { + _lastProcessDataTimestamp = usecTimestampNow(); + if (!_isEnabled) { return; } @@ -150,6 +154,11 @@ void EyeTracker::reset() { // Nothing to do. } +bool EyeTracker::isTracking() const { + static const quint64 ACTIVE_TIMEOUT_USECS = 2000000; // 2 secs + return (usecTimestampNow() - _lastProcessDataTimestamp < ACTIVE_TIMEOUT_USECS); +} + #ifdef HAVE_IVIEWHMD void EyeTracker::calibrate(int points) { smi_CalibrationHMDStruct* calibrationHMDStruct; diff --git a/interface/src/devices/EyeTracker.h b/interface/src/devices/EyeTracker.h index 8747076340..4976c14d08 100644 --- a/interface/src/devices/EyeTracker.h +++ b/interface/src/devices/EyeTracker.h @@ -34,7 +34,8 @@ public: void reset(); bool isInitialized() const { return _isInitialized; } - bool isTracking() const { return _isEnabled; } + bool isEnabled() const { return _isEnabled; } + bool isTracking() const; bool isSimulating() const { return _isSimulating; } glm::vec3 getLookAtPosition() const { return _lookAtPosition; } // From mid eye point in head frame. @@ -52,6 +53,8 @@ private: bool _isEnabled = false; bool _isSimulating = false; + quint64 _lastProcessDataTimestamp; + glm::vec3 _lookAtPosition; };