From a2ff460d78cff4cc94b62974b4b8b79ed3d86453 Mon Sep 17 00:00:00 2001 From: Jonathan Bosson Date: Wed, 22 Feb 2017 18:52:11 -0700 Subject: [PATCH] small fix on processedList to lastList, TuioTime still not a good way to compare different timestamped inputs --- modules/touch/include/TuioEar.h | 2 -- modules/touch/src/TuioEar.cpp | 13 +------------ modules/touch/touchmodule.cpp | 23 +++++++++++++++++++---- modules/touch/touchmodule.h | 2 ++ 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/modules/touch/include/TuioEar.h b/modules/touch/include/TuioEar.h index ffee968e3a..7597ae8c3a 100644 --- a/modules/touch/include/TuioEar.h +++ b/modules/touch/include/TuioEar.h @@ -60,7 +60,6 @@ class TuioEar : public TuioListener { void refresh(TuioTime frameTime); - TuioTime getLastProcessedTime(int id); std::vector getInput(); void clearInput(); @@ -70,7 +69,6 @@ class TuioEar : public TuioListener { std::vector _list; std::vector _removeList; - std::vector> _processedPath; std::mutex _mx; }; diff --git a/modules/touch/src/TuioEar.cpp b/modules/touch/src/TuioEar.cpp index 7704b348da..0755dfe3fb 100644 --- a/modules/touch/src/TuioEar.cpp +++ b/modules/touch/src/TuioEar.cpp @@ -58,7 +58,7 @@ void TuioEar::addTuioCursor(TuioCursor *tcur) { // find same id in _list if it exists in _removeList (new input with same ID as a previously stored) int i = tcur->getSessionID(); - auto foundID = std::find_if( + std::vector::iterator foundID = std::find_if( _removeList.begin(), _removeList.end(), [&i](int id) { return id == i; }); @@ -116,19 +116,8 @@ void TuioEar::refresh(TuioTime frameTime) { //LINFO("refresh " << frameTime.getTotalMilliseconds() << "\n"); // about every 15ms on TuioPad app } -TuioTime TuioEar::getLastProcessedTime(int id) { - return std::find_if( - _processedPath.begin(), - _processedPath.end(), - [&id](std::pair t) { return id = t.first; } - )->second; -} - std::vector TuioEar::getInput() { std::lock_guard lock(_mx); - _processedPath.clear(); - for (const TuioCursor& c : _list) - _processedPath.push_back(std::make_pair(c.getSessionID(), c.getTuioTime())); return _list; } diff --git a/modules/touch/touchmodule.cpp b/modules/touch/touchmodule.cpp index f949c380f8..b28d8231f7 100644 --- a/modules/touch/touchmodule.cpp +++ b/modules/touch/touchmodule.cpp @@ -74,7 +74,7 @@ TouchModule::TouchModule() OpenSpaceEngine::CallbackOption::PreSync, [&]() { //std::this_thread::sleep_for(std::chrono::seconds(1)); - std::vector list = ear->getInput(); + list = ear->getInput(); ear->clearInput(); glm::vec2 centroid; @@ -83,11 +83,23 @@ TouchModule::TouchModule() std::string s = ""; std::ostringstream os; for (const TuioCursor &j : list) { - - os << j.getCursorID() << ", path size: " << j.getPath().size() << ", (" << j.getX() << "," << j.getY() << ") "; + + int count = 0; + std::list path = j.getPath(); + if (lastList.size() > 0 && list.size() > 0) { // sanity check + std::vector::iterator last = find_if( + lastList.begin(), + lastList.end(), + [&j](const TuioCursor& c) { return c.getSessionID() == j.getSessionID(); } + ); + if (last != lastList.end()) + (path.size() < 128) ? count = path.size() - last->getPath().size() : count = 1; // guess how many? all? + } + + os << ", Id: " << j.getCursorID() << ", path size: " << j.getPath().size() << ", (" << j.getX() << "," << j.getY() << "), To Process: " << count; } if (list.size() > 0) - LINFO("List size: " << list.size() << ", Id: " << os.str() << "\n"); + LINFO("List size: " << list.size() << os.str() << "\n"); os.clear(); /* // calculate centroid if multipleID @@ -105,7 +117,10 @@ TouchModule::TouchModule() */ glm::mat4 t; + //OsEng.interactionHandler().camera()->rotate(); + + lastList = list; } ); diff --git a/modules/touch/touchmodule.h b/modules/touch/touchmodule.h index 7f14817d58..6601a6266b 100644 --- a/modules/touch/touchmodule.h +++ b/modules/touch/touchmodule.h @@ -35,6 +35,8 @@ public: TouchModule(); TuioEar *ear; + std::vector list; + std::vector lastList; }; } // namespace openspace