From e0ca6eb5edb1c8acd4a1cc1b1c77b6dce98a9934 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 27 Jul 2015 15:33:15 -0700 Subject: [PATCH] Add eye tracker class and menu item --- interface/src/Application.cpp | 22 +++++++++++++++++---- interface/src/Application.h | 2 ++ interface/src/Menu.cpp | 7 +++++++ interface/src/Menu.h | 1 + interface/src/devices/EyeTracker.cpp | 21 ++++++++++++++++++++ interface/src/devices/EyeTracker.h | 29 ++++++++++++++++++++++++++++ 6 files changed, 78 insertions(+), 4 deletions(-) create mode 100644 interface/src/devices/EyeTracker.cpp create mode 100644 interface/src/devices/EyeTracker.h diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index bb564824b0..1c7b2ff2df 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -108,12 +108,13 @@ #include "audio/AudioScope.h" #include "devices/DdeFaceTracker.h" +#include "devices/EyeTracker.h" #include "devices/Faceshift.h" #include "devices/Leapmotion.h" -#include "devices/RealSense.h" -#include "devices/SDL2Manager.h" #include "devices/MIDIManager.h" #include "devices/OculusManager.h" +#include "devices/RealSense.h" +#include "devices/SDL2Manager.h" #include "devices/TV3DManager.h" #include "scripting/AccountScriptingInterface.h" @@ -261,14 +262,14 @@ bool setupEssentials(int& argc, char** argv) { auto scriptCache = DependencyManager::set(); auto soundCache = DependencyManager::set(); auto faceshift = DependencyManager::set(); + auto ddeFaceTracker = DependencyManager::set(); + auto eyeTracker = DependencyManager::set(); auto audio = DependencyManager::set(); auto audioScope = DependencyManager::set(); auto deferredLightingEffect = DependencyManager::set(); auto textureCache = DependencyManager::set(); auto framebufferCache = DependencyManager::set(); - auto animationCache = DependencyManager::set(); - auto ddeFaceTracker = DependencyManager::set(); auto modelBlender = DependencyManager::set(); auto avatarManager = DependencyManager::set(); auto lodManager = DependencyManager::set(); @@ -635,6 +636,11 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : connect(ddeTracker.data(), &FaceTracker::muteToggled, this, &Application::faceTrackerMuteToggled); #endif +#ifdef HAVE_IVIEWHMD + auto eyeTracker = DependencyManager::get(); + eyeTracker->init(); +#endif + auto applicationUpdater = DependencyManager::get(); connect(applicationUpdater.data(), &AutoUpdater::newVersionIsAvailable, dialogsManager.data(), &DialogsManager::showUpdateDialog); applicationUpdater->checkForUpdate(); @@ -2007,6 +2013,13 @@ void Application::setActiveFaceTracker() { #endif } +void Application::setActiveEyeTracker() { +#ifdef HAVE_IVIEWHMD + auto eyeTracker = DependencyManager::get(); + eyeTracker->setEnabled(Menu::getInstance()->isOptionChecked(MenuOption::SMIEyeTracking)); +#endif +} + bool Application::exportEntities(const QString& filename, const QVector& entityIDs) { QVector entities; @@ -3408,6 +3421,7 @@ void Application::renderRearViewMirror(RenderArgs* renderArgs, const QRect& regi void Application::resetSensors() { DependencyManager::get()->reset(); DependencyManager::get()->reset(); + DependencyManager::get()->reset(); OculusManager::reset(); diff --git a/interface/src/Application.h b/interface/src/Application.h index d1886862d2..881d93cab2 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -406,6 +406,8 @@ public slots: void resetSensors(); void setActiveFaceTracker(); + void setActiveEyeTracker(); + void aboutApp(); void showEditEntitiesHelp(); diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 91ae6a4d02..c5a92747e9 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -437,6 +437,13 @@ Menu::Menu() { addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::AutoMuteAudio, 0, false); #endif +#ifdef HAVE_IVIEWHMD + MenuWrapper* eyeTrackingMenu = avatarDebugMenu->addMenu("Eye Tracking"); + QAction* smiEyeTracking = addCheckableActionToQMenuAndActionHash(eyeTrackingMenu, MenuOption::SMIEyeTracking, 0, false, + qApp, SLOT(setActiveEyeTracker())); + smiEyeTracking->setVisible(true); +#endif + auto avatarManager = DependencyManager::get(); addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::AvatarReceiveStats, 0, false, avatarManager.data(), SLOT(setShouldShowReceiveStats(bool))); diff --git a/interface/src/Menu.h b/interface/src/Menu.h index bf0f89abb5..b8ac2ef189 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -273,6 +273,7 @@ namespace MenuOption { const QString SixenseEnabled = "Enable Hydra Support"; const QString SixenseMouseInput = "Enable Sixense Mouse Input"; const QString ShiftHipsForIdleAnimations = "Shift hips for idle animations"; + const QString SMIEyeTracking = "SMI Eye Tracking"; const QString Stars = "Stars"; const QString Stats = "Stats"; const QString StopAllScripts = "Stop All Scripts"; diff --git a/interface/src/devices/EyeTracker.cpp b/interface/src/devices/EyeTracker.cpp new file mode 100644 index 0000000000..3e0d9b78dd --- /dev/null +++ b/interface/src/devices/EyeTracker.cpp @@ -0,0 +1,21 @@ +// +// EyeTracker.cpp +// interface/src/devices +// +// Created by David Rowe on 27 Jul 2015. +// Copyright 2015 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "EyeTracker.h" + +void EyeTracker::init() { +} + +void EyeTracker::setEnabled(bool enabled) { +} + +void EyeTracker::reset() { +} diff --git a/interface/src/devices/EyeTracker.h b/interface/src/devices/EyeTracker.h new file mode 100644 index 0000000000..a5529770a9 --- /dev/null +++ b/interface/src/devices/EyeTracker.h @@ -0,0 +1,29 @@ +// +// EyeTracker.h +// interface/src/devices +// +// Created by David Rowe on 27 Jul 2015. +// Copyright 2015 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_EyeTracker_h +#define hifi_EyeTracker_h + +#include + +#include + +class EyeTracker : public QObject, public Dependency { + Q_OBJECT + SINGLETON_DEPENDENCY + +public slots: + void init(); + void setEnabled(bool enabled); + void reset(); +}; + +#endif // hifi_EyeTracker_h