void TuioServer::stopUntouchedMovingCursors() { std::list<TuioCursor*> untouched; for (std::list<TuioCursor*>::iterator tuioCursor = cursorList.begin(); tuioCursor!=cursorList.end(); tuioCursor++) { TuioCursor *tcur = (*tuioCursor); if ((tcur->getTuioTime()!=currentFrameTime) && (tcur->isMoving())) { tcur->stop(currentFrameTime); updateCursor = true; if (verbose) { if (mode3d) { std::cout << "set cur " << tcur->getCursorID() << " (" << tcur->getSessionID() << ") " << tcur->getX() << " " << tcur->getY() << " " << tcur->getZ() << " " << tcur->getXSpeed() << " " << tcur->getYSpeed()<< " " << tcur->getZSpeed()<< " " << tcur->getMotionAccel() << " " << std::endl; } else { std::cout << "set cur " << tcur->getCursorID() << " (" << tcur->getSessionID() << ") " << tcur->getX() << " " << tcur->getY() << " " << tcur->getXSpeed() << " " << tcur->getYSpeed()<< " " << tcur->getMotionAccel() << " " << std::endl; } } } } }
TuioCursor* TuioServer::addTuioCursor(float x, float y, float z) { sessionID++; int cursorID = (int)cursorList.size(); if (((int)(cursorList.size())<=maxCursorID) && ((int)(freeCursorList.size())>0)) { std::list<TuioCursor*>::iterator closestCursor = freeCursorList.begin(); for(std::list<TuioCursor*>::iterator iter = freeCursorList.begin(); iter!= freeCursorList.end(); iter++) { if((*iter)->getDistance(x,y,z)<(*closestCursor)->getDistance(x,y,z)) closestCursor = iter; } TuioCursor *freeCursor = (*closestCursor); cursorID = (*closestCursor)->getCursorID(); freeCursorList.erase(closestCursor); delete freeCursor; } else maxCursorID = cursorID; TuioCursor *tcur = new TuioCursor(currentFrameTime, sessionID, cursorID, x, y, z); cursorList.push_back(tcur); updateCursor = true; if (verbose) { if (mode3d) { std::cout << "add cur " << tcur->getCursorID() << " (" << tcur->getSessionID() << ") " << tcur->getX() << " " << tcur->getY() << " " << tcur->getZ() << std::endl; } else { std::cout << "add cur " << tcur->getCursorID() << " (" << tcur->getSessionID() << ") " << tcur->getX() << " " << tcur->getY() << std::endl; } } return tcur; }