From fe576c6bafe98cdcd0432d0d13ca009f77a6e0bc Mon Sep 17 00:00:00 2001 From: Sam Gondelman Date: Mon, 15 Jun 2015 10:23:24 -0700 Subject: [PATCH] hands reset when hydras disconnect --- interface/src/devices/SixenseManager.cpp | 10 ++++++++++ interface/src/devices/SixenseManager.h | 1 + 2 files changed, 11 insertions(+) diff --git a/interface/src/devices/SixenseManager.cpp b/interface/src/devices/SixenseManager.cpp index 54cf202838..3927850a44 100644 --- a/interface/src/devices/SixenseManager.cpp +++ b/interface/src/devices/SixenseManager.cpp @@ -65,6 +65,8 @@ SixenseManager::SixenseManager() : _bumperPressed[1] = false; _oldX[1] = -1; _oldY[1] = -1; + _prevPalms[0] = nullptr; + _prevPalms[1] = nullptr; } SixenseManager::~SixenseManager() { @@ -162,6 +164,12 @@ void SixenseManager::update(float deltaTime) { if (_deviceID) { Application::getUserInputMapper()->removeDevice(_deviceID); _deviceID = 0; + if (_prevPalms[0]) { + _prevPalms[0]->setActive(false); + } + if (_prevPalms[1]) { + _prevPalms[1]->setActive(false); + } } return; } @@ -209,6 +217,7 @@ void SixenseManager::update(float deltaTime) { for (size_t j = 0; j < hand->getNumPalms(); j++) { if (hand->getPalms()[j].getSixenseID() == data->controller_index) { palm = &(hand->getPalms()[j]); + _prevPalms[numActiveControllers - 1] = palm; foundHand = true; } } @@ -217,6 +226,7 @@ void SixenseManager::update(float deltaTime) { hand->getPalms().push_back(newPalm); palm = &(hand->getPalms()[hand->getNumPalms() - 1]); palm->setSixenseID(data->controller_index); + _prevPalms[numActiveControllers - 1] = palm; qCDebug(interfaceapp, "Found new Sixense controller, ID %i", data->controller_index); } diff --git a/interface/src/devices/SixenseManager.h b/interface/src/devices/SixenseManager.h index 2ca6b0fb5b..63aa8846ec 100644 --- a/interface/src/devices/SixenseManager.h +++ b/interface/src/devices/SixenseManager.h @@ -132,6 +132,7 @@ private: bool _bumperPressed[2]; int _oldX[2]; int _oldY[2]; + PalmData* _prevPalms[2]; bool _lowVelocityFilter; bool _controllersAtBase;