예제 #1
0
	void Sender::commitFrame(){
		if (mUpdateCursor){
			startCursorBundle();
			for (std::list<Cursor*>::iterator it = mCursors.begin(); it != mCursors.end(); it++){
				Cursor *cursor = (*it);
				if (mFullUpdate || (cursor->getTime() == mCurrentFrameTime)) addCursorMessage(cursor);
			}
			sendCursorBundle(mCurrentFrame);
		}else if (mLastCursorUpdate < mCurrentFrameTime) {
			mLastCursorUpdate = mCurrentFrameTime;
			startCursorBundle();
			sendCursorBundle(mCurrentFrame);
		}
		mUpdateCursor = false;
		
		if (mUpdateObject){
			startObjectBundle();
			for (std::list<Object*>::iterator it = mObjects.begin(); it != mObjects.end(); it++){
				Object *object = (*it);
				if (mFullUpdate || object->getTime() == mCurrentFrameTime) addObjectMessage(object);
			}
			sendObjectBundle(mCurrentFrame);
		}else if (mLastObjectUpdate < mCurrentFrameTime) {
			mLastObjectUpdate = mCurrentFrameTime;
			startObjectBundle();
			sendObjectBundle(mCurrentFrame);
		}
		mUpdateObject = false;
		
	}
예제 #2
0
	std::list<Cursor*> Sender::getUntouchedCursors(){
		std::list<Cursor*> untouched;
		for (std::list<Cursor*>::iterator it = mCursors.begin(); it != mCursors.end(); it++) {
			Cursor *cursor = (*it);
			if (cursor->getTime() != mCurrentFrameTime) untouched.push_back(cursor);
		}	
		return untouched;
	}
예제 #3
0
	void Sender::removeUntouchedStoppedCursors(){
		std::list<Cursor*>::iterator it = mCursors.begin();
		while (it != mCursors.end()) {
			Cursor *cursor = (*it);
			if ((cursor->getTime() != mCurrentFrameTime) && (!cursor->isMoving())) {
				removeTuioCursor(cursor);
				it = mCursors.begin();
			} else it++;
		}
	}
예제 #4
0
	void Sender::stopUntouchedMovingCursors(){
		std::list<Cursor*> untouched;
		for (std::list<Cursor*>::iterator it = mCursors.begin(); it != mCursors.end(); it++) {
			
			Cursor *cursor = (*it);
			if ((cursor->getTime() != mCurrentFrameTime) && (cursor->isMoving())) {
				cursor->stop(mCurrentFrameTime);
				mUpdateCursor = true;
			}
		}
	}