//--------------------------------------------------------------
void ParticleVisualization::update(){

    for (cursorMap::iterator i = cursors.begin(); i != cursors.end(); ++i) {
        tuioCursor tc = (i->second);
        makeBubble(tc.x, tc.y, tc.dx, tc.dy);
    }
	updateBubbles();
}
Ejemplo n.º 2
0
int CglWnd::drawGL()
{
	//esDPrint(L"DrawBegin\n");

	glClear(GL_COLOR_BUFFER_BIT);
	//复位坐标
	memcpy(m_dTexVertex, m_oTexVertex, sizeof(m_oTexVertex));
	if (!m_bEdit)
	{
		updateBubbles();
	}
	glVertexAttribPointer(positionLoc, 3, GL_INT, GL_FALSE, 0, m_dTexVertex);
	glVertexAttribPointer(texCoordLoc, 2, GL_FLOAT, GL_FALSE, 0, m_texCoord);
	glBindTexture(GL_TEXTURE_2D, texture[TEXID_BG]);
	glDrawElements(GL_TRIANGLES /*GL_LINE_LOOP*/, columnPieces*rowPieces*3*2, GL_UNSIGNED_SHORT, m_indices);

	if (m_bEdit)
	{	
		int nHide = 0;
		Bubble *bubbleSelect = NULL;
		glBindTexture(GL_TEXTURE_2D, texture[TEXID_SET]);
		for (int i = 0; i < MAX_BUBBLES; i++)
		{
			Bubble *b = &m_bubbles[i];
			if (b->eState == ST_REMOVED) continue;
			b->update();
			if (b->eState == ST_NORMAL)
			{
				nHide++;
				continue;
			}
			if (b->bSelect)
				bubbleSelect = b;
			else
				drawSquare(b->ox, b->oy, b->r * b->zoomRate);
		}
		if (bubbleSelect)
		{
			glBindTexture(GL_TEXTURE_2D, texture[TEXID_SET_SELECT]);
			drawSquare(bubbleSelect->ox, bubbleSelect->oy, bubbleSelect->r * bubbleSelect->zoomRate);
		}
		
		if ( m_activeBubbles > 0)
			m_bEdit = nHide < m_activeBubbles;
	}
	m_toolbar.draw();
	//esDPrint(L"Draw\n");
	eglSwapBuffers(m_Display, m_Surface);
	g_fps_count++;
	return 1;
}
Ejemplo n.º 3
0
//--------------------------------------------------------------
void testApp::update(){

	// hide old messages
	for(int i = 0; i < NUM_MSG_STRINGS; i++){
		if(timers[i] < ofGetElapsedTimef()){
			msg_strings[i] = "";
		}
	}

	// check for waiting messages
	while(receiver.hasWaitingMessages()){
		// get the next message
		ofxOscMessage m;
		receiver.getNextMessage(&m);

		if (m.getAddress() == "/tuio/2Dcur" && m.getNumArgs()==7 && m.getArgType(0)==OFXOSC_TYPE_STRING && m.getArgAsString(0)=="set"){
			tuioCursor tc;

			tc.s = m.getArgAsInt32(1);
			tc.x = m.getArgAsFloat(2);
			tc.y = m.getArgAsFloat(3);
			tc.dx = m.getArgAsFloat(4);
			tc.dy = m.getArgAsFloat(5);
			tc.m = m.getArgAsFloat(6);
			tc.age = 0;

			string msg_string;

			if (cursors.find(tc.s)==cursors.end()) msg_string += "NEW ";
			cursors[tc.s] = tc;

			msg_string += ofToString(tc.s) + ": " + ofToString((int)(1024*tc.x)) + ", " + ofToString((int)(768*tc.y));

			msg_strings[current_msg_string] = msg_string;
			timers[current_msg_string] = ofGetElapsedTimef() + 5.0f;
			current_msg_string = (current_msg_string + 1) % NUM_MSG_STRINGS;
			// clear the next line
			msg_strings[current_msg_string] = "";
            //if(randf(0,1) < 0.50){
                makeBubble(tc.x, tc.y, tc.dx, tc.dy);
            //}
		}

		else if (m.getAddress() == "/tuio/2Dcur" && m.getNumArgs()==2 && m.getArgType(0)==OFXOSC_TYPE_STRING && m.getArgAsString(0)=="fseq"){
			lastFrame = m.getArgAsInt32(1);

			msg_strings[current_msg_string] = "FRAME " + ofToString(lastFrame);



			timers[current_msg_string] = ofGetElapsedTimef() + 5.0f;
			current_msg_string = (current_msg_string + 1) % NUM_MSG_STRINGS;
			// clear the next line
			msg_strings[current_msg_string] = "";
		}

		else{
			// unrecognized message: display on the bottom of the screen
			string msg_string;
			msg_string = m.getAddress();
			msg_string += ": ";
			for(int i = 0; i < m.getNumArgs(); i++){
				// get the argument type
				msg_string += m.getArgTypeName(i);
				msg_string += ":";
				// display the argument - make sure we get the right type
				if(m.getArgType(i) == OFXOSC_TYPE_INT32){
					msg_string += ofToString(m.getArgAsInt32(i));
				}
				else if(m.getArgType(i) == OFXOSC_TYPE_FLOAT){
					msg_string += ofToString(m.getArgAsFloat(i));
				}
				else if(m.getArgType(i) == OFXOSC_TYPE_STRING){
					msg_string += m.getArgAsString(i);
				}
				else{
					msg_string += "unknown";
				}
				msg_string += " ";
			}
			// add to the list of strings to display
			msg_strings[current_msg_string] = msg_string;
			timers[current_msg_string] = ofGetElapsedTimef() + 5.0f;
			current_msg_string = (current_msg_string + 1) % NUM_MSG_STRINGS;
			// clear the next line
			msg_strings[current_msg_string] = "";
		}


	}

	updateBubbles();
}