Beispiel #1
0
void testApp::objectRemoved(ofxTuioObject & tuioObject){
    //マーカー削除
    log = " object removed: " + ofToString(tuioObject.getFiducialId())+
    " X: "+ofToString(tuioObject.getX())+
    " Y: "+ofToString(tuioObject.getY())+
    " angle: "+ofToString(tuioObject.getAngleDegrees());
}
Beispiel #2
0
void testApp::objectUpdated(ofxTuioObject & tuioObject){
    //マーカーの状態更新
    log = " object updated: " + ofToString(tuioObject.getFiducialId())+
    " X: "+ofToString(tuioObject.getX())+
    " Y: "+ofToString(tuioObject.getY())+
    " angle: "+ofToString(tuioObject.getAngleDegrees());
}
Beispiel #3
0
void testApp::objectRemoved(ofxTuioObject & tuioObject) {
    int i;
    objects.erase(tuioObject.getFiducialId());
    isActive[tuioObject.getFiducialId()]=false;
    if(types[tuioObject.getFiducialId()]==TYPE_BGM) {
        for(i=0; i<BGM_NUM; i++) {
            if(soundIndex[i]==tuioObject.getFiducialId())
                if(sounds[i].getIsPlaying())
                    sounds[i].stop();
        }
    } else if(types[tuioObject.getFiducialId()]==TYPE_VIDEO) {
        for(i=0; i<VIDEO_NUM; i++) {
            if(videoIndex[i]==tuioObject.getFiducialId())
                if(vplayers[i].isPlaying())
                    vplayers[i].closeMovie();
        }
    }
    for(line_itr=lines.begin(); line_itr!=lines.end(); ++line_itr) {
        if((*line_itr).getFromID()==tuioObject.getFiducialId()||
                (*line_itr).getToID()==tuioObject.getFiducialId()) {
            lines.erase(line_itr);
            break;
        }
    }
#ifdef DEBUG
    log="Object Removed: "+ofToString(tuioObject.getFiducialId())+
        " X: "+ofToString(tuioObject.getX())+
        " Y: "+ofToString(tuioObject.getY());
    ofLog()<<log;
#endif
}
Beispiel #4
0
void testApp::objectAdded(ofxTuioObject & tuioObject){
    //マーカー追加
    log = " new object: " + ofToString(tuioObject.getFiducialId())+
    " X: "+ofToString(tuioObject.getX())+
    " Y: "+ofToString(tuioObject.getY())+
    " angle: "+ofToString(tuioObject.getAngleDegrees());
}
Beispiel #5
0
void testApp::tuioRemoved(ofxTuioObject &tuioObject){
	cout << "TUIO object, removed " << tuioObject.getFiducialId() << endl;
	switch (tuioObject.getFiducialId()) {
		case 12:
			theVideos[4]->hide();
			break;
		case 15:
			theVideos[5]->hide();
			break;
        case 16:
			theVideos[0]->hide();
			break;
		case 17:
			theVideos[1]->hide();
			break;
        case 18:
			theVideos[2]->hide();
			break;
        case 19:
			theVideos[3]->hide();
			break;
		default:
			break;
	}
}
Beispiel #6
0
void testApp::tuioAdded(ofxTuioObject &tuioObject){	
	cout << "TUIO object, added " << tuioObject.getFiducialId() << endl;
	switch (tuioObject.getFiducialId()) {
		case 12:
			//tell a clip 
			theVideos[4]->show();
			break;
        case 15:
			//tell a clip 
			theVideos[5]->show();
			break;
		case 16:
			//tell a clip 
			theVideos[0]->show();
			break;
		case 17:
			theVideos[1]->show();
			break;
        case 18:
			//tell a clip 
			theVideos[2]->show();
			break;
		case 19:
			theVideos[3]->show();
		default:
			break;
	}
}
Beispiel #7
0
void testApp::tuioAdded(ofxTuioObject &tuioObject){	
	cout << "TUIO object, added " << tuioObject.getFiducialId() << endl;
	switch (tuioObject.getFiducialId()) {
		case 17:
			//tell a clip 
			theScenes[0]->showAnimation();
			break;
		case 14:
			theScenes[1]->showAnimation();
			break;
		default:
			break;
	}
    //this does not account for non-moving symbols
//    if (selection != prevselection) {
//		//update all the videos as to the selection state
//		for (int i=0; i < NUMOFSCENES; i++) {
//			if (i+1 != selection) {
//				theScenes[i]->setSelected(false);
//			}else {
//				theScenes[i]->setSelected(true);
//			}
//		}
//		prevselection = selection;
//	}

}
Beispiel #8
0
void testApp::objectUpdated(ofxTuioObject& tuioObject)
{
    log  = " object updated: ";
	log += ofToString(tuioObject.getFiducialId());
	log += " X: " + ofToString(tuioObject.getX());
	log += " Y: " + ofToString(tuioObject.getY());
	log += " angle: " + ofToString(tuioObject.getAngleDegrees());
}
Beispiel #9
0
void testApp::objectAdded(ofxTuioObject & tuioObject) {
    objects.insert(map<int,ofxTuioObject>::value_type(tuioObject.getFiducialId(),
                   &tuioObject));
    isActive[tuioObject.getFiducialId()]=true;
#ifdef DEBUG
    log="New Object: "+ofToString(tuioObject.getFiducialId())+
        " X: "+ofToString(tuioObject.getX())+
        " Y: "+ofToString(tuioObject.getY());
    ofLog()<<log;
#endif
}
Beispiel #10
0
void testApp::tuioRemoved(ofxTuioObject &tuioObject){
	cout << "TUIO object, removed " << tuioObject.getFiducialId() << endl;
	switch (tuioObject.getFiducialId()) {
		case 17:
			theScenes[0]->pauseAnimationSoon();
			break;
		case 14:
			theScenes[1]->pauseAnimationSoon();
			break;
		default:
			break;
	}
}
Beispiel #11
0
//call when TuioObject is moved
void testApp::objectUpdated(ofxTuioObject & tuioObject) {
    //TODO update objects corresponding to tuioObject's FiducialID
    int i=0,max,*array=getIndex(tuioObject.getFiducialId());
    if(array==NULL)return;
    while(0) {
        if(array[i]==tuioObject.getFiducialId())
            break;
        i++;
    }
    switch(types[tuioObject.getFiducialId()]) {
    case TYPE_IDEA:
        ideas[i].update(&tuioObject);
        break;
    case TYPE_VIDEO:
        videos[i].update(&tuioObject);
        break;
    case TYPE_BGM:
        bgms[i].update(&tuioObject);
        break;
    case TYPE_IMAGE:
        imageobjs[i].update(&tuioObject);
        ofLogWarning()<<"image update";
        break;
    }
    for(line_itr=lines.begin(); line_itr!=lines.end(); line_itr++) {
        (*line_itr).update(&tuioObject);
    }
#ifdef DEBUG
    log="Object Updated: "+ofToString(tuioObject.getFiducialId())+
        " X: "+ofToString(tuioObject.getX())+
        " Y: "+ofToString(tuioObject.getY());
    ofLog()<<log;
#endif
}
Beispiel #12
0
void testApp::tuioUpdated(ofxTuioObject &tuioObject){
	//cout << "TUIO object " << tuioObject.getFiducialId() << " updated at angle " << tuioObject.getAngle()<< " x= " << tuioObject.getXpos() <<endl;
	int sel;
	switch (tuioObject.getFiducialId()) {
		case 17:
			sel=1; //selection = 1;
			theScenes[sel-1]->setRotation(tuioObject.getAngle());
			theScenes[sel-1]->setTargetLocPct(tuioObject.getXpos(), tuioObject.getYpos());
			break;
		case 14:
			sel=2; //selection = 2;
			theScenes[sel-1]->setRotation(tuioObject.getAngle());
			theScenes[sel-1]->setTargetLocPct(tuioObject.getXpos(), tuioObject.getYpos());
			break;
		default:
			break;
	}

}
Beispiel #13
0
// OBJECT ADDED ////////////////////////////////////////////////////////
// ogni volta che una oggetto viene aggiunto sulla superficie di gioco
void testApp::objectAdded(ofxTuioObject & tuioObject)
{	
	int posX; // variabile di appoggio per identificare la posizione relativa del fiducial dentro alla matrice 
	int session_id	= tuioObject.getSessionId();
	int fiducial_id = tuioObject.getFiducialId();
	int piano;
	
	angolo = tuioObject.getAngle() * (-1);			// passo anche il (-1) perchè da reactivision, l'angolo è invertito
	rot_vel = tuioObject.getRotationSpeed() * (-1);	// passo anche il (-1) perchè da reactivision, l'angolo è invertito
	// calcolo la posizione del fiducial per disegnarla graficamente
	pos.x = wQuadro * tuioObject.getX();		// i valori tuioObject.getX() e tuioObject.getY() variano tra 0 e 1
	pos.y = hQuadro * tuioObject.getY();
	

	switch(fiducial_id)
	{
		 
		case KICK:
		{

			posX = tuioObject.getX() * 8; //in che croma siamo?
			piano=1;
			matrice.add_to_table(posX, piano, session_id);
			
			rotondo = new Fid_Round(fiducial_id, session_id);
			rnd_list.push_back(rotondo);
			rnd_list.back()->setup(&pos, &centro, angolo, color_kick);
			rnd_list.back()->added();
			
			break;
		}
		case SNARE:
		{
			
			posX = tuioObject.getX() * 8;
			piano=2;
			matrice.add_to_table(posX, piano, session_id);
			
			quadrato = new Fid_Sqr(fiducial_id, session_id);
			sqr_list.push_back(quadrato);
			sqr_list.back()->setup(&pos, &centro, angolo, color_snare);
			sqr_list.back()->added();
			
			break;
		}
		case HIHAT: 
		{
			posX = tuioObject.getX() * 8;
			piano=3;
			matrice.add_to_table(posX, piano, session_id);
			
			quadrato = new Fid_Sqr(fiducial_id, session_id);
			sqr_list.push_back(quadrato);
			sqr_list.back()->setup(&pos, &centro, angolo, color_hihat);
			sqr_list.back()->added();

			break;
		}
		case BPM: 
		{			
			
			rotativo = new Fid_Rot(fiducial_id, session_id);
			rot_list.push_back(rotativo);
			rot_list.back()->setup(&pos, &centro, angolo, memoria_bpm_angle, color_bpm, color_bpm_corona);
			rot_list.back()->added();
			rot_list.back()->update_interrupt(&pos, &centro, angolo, rot_vel); //commentarlo?
			// aggiorno la mamoria dell'angolo per poterlo riutilizzare la prossima creazione di uno stsso tipo d'oggetto
			memoria_bpm_angle = rot_list.back()->get_lim_angle(); 
			digit.set_bpm(bpm);
			break;

		}
		case BASS:
		{
			core.send_float("bass", 1.0);
			
			
			//posX = tuioObject.getX() * 8; //in che croma siamo?
			//piano=1;
			//matrice.add_to_table(posX, piano, session_id);
			
			basso = new Fid_Bass(fiducial_id, session_id);
			bass_list.push_back(basso);
			bass_list.back()->setup(&pos, &centro, angolo, color_bass);
			bass_list.back()->added();
			
			break;			
		}
		case PADS:
		{
			core.send_float("pads", 1.0);
			
			//posX = tuioObject.getX() * 8;
			//piano=3;
			//matrice.add_to_table(posX, piano, session_id);
			
			pads = new Fid_Synth(fiducial_id, session_id);
			sint_list.push_back(pads);
			sint_list.back()->setup(&pos, &centro, angolo, color_pads);
			sint_list.back()->added();
			
			break;
		}
		case CHORD_0:
		{
			chord_number=0;
			core.send_float("chords", chord_number);
			
			accordo = new Fid_Chords(fiducial_id, session_id);
			chords_list.push_back(accordo);
			chords_list.back()->setup(&pos, &centro, angolo, color_accordo_0);
			chords_list.back()->added();
			chords_list.back()->update_interrupt(&pos, &centro, angolo, rot_vel); //commentarlo?

			
			break;
		}
		case CHORD_1:
		{
			chord_number=1;
			core.send_float("chords", chord_number);
			
			accordo = new Fid_Chords(fiducial_id, session_id);
			chords_list.push_back(accordo);
			chords_list.back()->setup(&pos, &centro, angolo, color_accordo_1);
			chords_list.back()->added();
			chords_list.back()->update_interrupt(&pos, &centro, angolo, rot_vel);
			
			break;
		}
		case CHORD_2:
		{
			chord_number=2;
			core.send_float("chords", chord_number);
			
			accordo = new Fid_Chords(fiducial_id, session_id);
			chords_list.push_back(accordo);
			chords_list.back()->setup(&pos, &centro, angolo, color_accordo_2);
			chords_list.back()->added();
			chords_list.back()->update_interrupt(&pos, &centro, angolo, rot_vel);
			
			break;
		}
		case CHORD_3:
		{
			chord_number=3;
			core.send_float("chords", chord_number);
			
			accordo = new Fid_Chords(fiducial_id, session_id);
			chords_list.push_back(accordo);
			chords_list.back()->setup(&pos, &centro, angolo, color_accordo_3);
			chords_list.back()->added();
			chords_list.back()->update_interrupt(&pos, &centro, angolo, rot_vel);
			
			break;
		}
		case CHORD_4:
		{
			chord_number=4;
			core.send_float("chords", chord_number);
			
			accordo = new Fid_Chords(fiducial_id, session_id);
			chords_list.push_back(accordo);
			chords_list.back()->setup(&pos, &centro, angolo, color_accordo_4);
			chords_list.back()->added();
			chords_list.back()->update_interrupt(&pos, &centro, angolo, rot_vel);
			
			break;
		}
		case CHORD_5:
		{
			chord_number=5;
			core.send_float("chords", chord_number);
			
			accordo = new Fid_Chords(fiducial_id, session_id);
			chords_list.push_back(accordo);
			chords_list.back()->setup(&pos, &centro, angolo, color_accordo_5);
			chords_list.back()->added();
			chords_list.back()->update_interrupt(&pos, &centro, angolo, rot_vel);
			
			break;
		}
		default:
		{
			cout << "Fiducial ID non valido.\n";
			break;
		}
	}
		
}
Beispiel #14
0
// OBJECT UPDATED //////////////////////////////////////////////////////
// ogni volta che una oggetto viene modificato sulla superficie di gioco
void testApp::objectUpdated(ofxTuioObject & tuioObject)
{	
	int posX;
	int session_id	= tuioObject.getSessionId();
	int fiducial_id	= tuioObject.getFiducialId();
	int piano;

	angolo = tuioObject.getAngle() * (-1);			// passo anche il (-1) perchè da reactivision, l'angolo è invertito
	rot_vel = tuioObject.getRotationSpeed() * (-1);	// passo anche il (-1) perchè da reactivision, l'angolo è invertito
	pos.x = wQuadro * tuioObject.getX();
	pos.y = hQuadro * tuioObject.getY();	
	
	switch(fiducial_id)
	{
		case KICK:
		{
			posX = tuioObject.getX() * 8;
			piano=1;
			matrice.update_table(posX, piano, session_id);
			
			for (list<Fid_Round*>::iterator it=rnd_list.begin(); it !=rnd_list.end(); ++it) 
			{
				if ( (*it)->get_s_id() == session_id) 
				{
					(*it)->update_interrupt(&pos, &centro, angolo, rot_vel);	
					break;
				}
				
			}	
			break;
		}
		case SNARE:
		{
			posX = tuioObject.getX() * 8;
			piano=2;
			matrice.update_table(posX, piano, session_id);
	
			for (list<Fid_Sqr*>::iterator it=sqr_list.begin(); it !=sqr_list.end(); ++it) 
			{
				if ( (*it)->get_s_id() == session_id) 
				{
					(*it)->update_interrupt(&pos, &centro, angolo, rot_vel);	
					break;
				}
				
			}
			break;
		}
		case HIHAT:
		{
			posX = tuioObject.getX() * 8;
			piano=3;
			matrice.update_table(posX, piano, session_id);

			for (list<Fid_Sqr*>::iterator it=sqr_list.begin(); it !=sqr_list.end(); ++it) 
			{
				if ( (*it)->get_s_id() == session_id) 
				{
					(*it)->update_interrupt(&pos, &centro, angolo, rot_vel);	
					break;
				}
			}
			break;
		}
		case BPM:
		{

			for (list<Fid_Rot*>::iterator it=rot_list.begin(); it !=rot_list.end(); ++it) 
			{
				if ( (*it)->get_s_id() == session_id) 
				{
					(*it)->update_interrupt(&pos, &centro, angolo, rot_vel);
					// aggiorno la mamoria dell'angolo per poterlo riutilizzare la porssima creazione di uno stsso tipo d'oggetto
					memoria_bpm_angle = rot_list.back()->get_lim_angle(); 
					
					break;
				}
				
			}
			
			bpm = ofMap(memoria_bpm_angle, -FIDUCIAL_MER, FIDUCIAL_MER, 30, 260, true);
			digit.set_bpm(bpm);
			break;

		}
		case BASS:
		{
			//posX = tuioObject.getX() * 8;
			//piano=1;
			//matrice.update_table(posX, piano, session_id);
			
			for (list<Fid_Bass*>::iterator it=bass_list.begin(); it !=bass_list.end(); ++it) 
			{
				if ( (*it)->get_s_id() == session_id) 
				{
					(*it)->update_interrupt(&pos, &centro, angolo, rot_vel);	
					break;
				}
				
			}	
			break;
		}
		case CHORD_0:
		case CHORD_1:
		case CHORD_2:
		case CHORD_3:
		case CHORD_4:
		case CHORD_5:
		{
			
			for (list<Fid_Chords*>::iterator it=chords_list.begin(); it !=chords_list.end(); ++it) 
			{
				if ( (*it)->get_s_id() == session_id) 
				{
					(*it)->update_interrupt(&pos, &centro, angolo, rot_vel);
					// aggiorno la mamoria dell'angolo per poterlo riutilizzare la porssima creazione di uno stsso tipo d'oggetto
					//memoria_bpm_angle = rot_list.back()->get_lim_angle(); 
					
					break;
				}
				
			}
			
			//bpm = ofMap(memoria_bpm_angle, -FIDUCIAL_MER, FIDUCIAL_MER, 30, 260, true);
			//digit.set_bpm(bpm);
			break;
			
		}
		case PADS:
		{
			//posX = tuioObject.getX() * 8;
			//piano=2;
			//matrice.update_table(posX, piano, session_id);
			
			for (list<Fid_Synth*>::iterator it=sint_list.begin(); it !=sint_list.end(); ++it) 
			{
				if ( (*it)->get_s_id() == session_id) 
				{
					(*it)->update_interrupt(&pos, &centro, angolo, rot_vel);	
					break;
				}
				
			}
			break;
		}
		default:
		{
			cout << "Fiducial ID non valido.\n";
			break;
			
		}
	}
}
Beispiel #15
0
// OBJECT REMOVED //////////////////////////////////////////////////////
// ogni volta che una oggetto viene rimosso dalla superficie di gioco
void testApp::objectRemoved(ofxTuioObject & tuioObject)
{
	int session_id	= tuioObject.getSessionId();
	int fiducial_id	= tuioObject.getFiducialId();
	int piano;
	
	switch(fiducial_id)
	{
		case KICK:
		{
			piano=1;
			// forse è superfluo passare il "piano" alla funzione "matrice.remove_from_table"
			matrice.remove_from_table(piano, session_id);
			
			list<Fid_Round*>::iterator it;
			for (it=rnd_list.begin(); it !=rnd_list.end(); ++it) 
			{
				if ( (*it)->get_s_id() == session_id) 
				{
					(*it)->removed();
					break;
				}
			}
			rnd_list.erase(it);
			
			
			break;
		}
		case SNARE:
		{
			piano=2;
			matrice.remove_from_table(piano, session_id);
			
			list<Fid_Sqr*>::iterator it;
			for (it=sqr_list.begin(); it !=sqr_list.end(); ++it) 
			{
				if ( (*it)->get_s_id() == session_id) 
				{
					(*it)->removed();
					break;
				}
			}
			sqr_list.erase(it);
			break;
		}
		case HIHAT:
		{
			piano=3;
			matrice.remove_from_table(piano, session_id);
			
			list<Fid_Sqr*>::iterator it;
			for (it=sqr_list.begin(); it !=sqr_list.end(); ++it) 
			{
				if ( (*it)->get_s_id() == session_id) 
				{
					(*it)->removed();
					break;
				}
			}
			sqr_list.erase(it);
			break;
		}
		case BPM:
		{

			list<Fid_Rot*>::iterator it;
			for (it=rot_list.begin(); it !=rot_list.end(); ++it) 
			{
				if ( (*it)->get_s_id() == session_id) 
				{
					(*it)->removed();
					break;
				}
			}
			rot_list.erase(it);
			
			break;
		}
		case BASS:
		{
			core.send_float("bass", 0.0);
			
			//piano=1;
			// forse è superfluo passare il "piano" alla funzione "matrice.remove_from_table"
			//matrice.remove_from_table(piano, session_id);
			
			list<Fid_Bass*>::iterator it;
			for (it=bass_list.begin(); it !=bass_list.end(); ++it) 
			{
				if ( (*it)->get_s_id() == session_id) 
				{
					(*it)->removed();
					break;
				}
			}
			bass_list.erase(it);
			
			break;
			
		}
		case PADS:
		{
			core.send_float("pads", 0.0);
	
			//piano=3;
			//matrice.remove_from_table(piano, session_id);
				
			list<Fid_Synth*>::iterator it;
			for (it=sint_list.begin(); it !=sint_list.end(); ++it) 
			{
				if ( (*it)->get_s_id() == session_id) 
				{
					(*it)->removed();
					break;
				}
			}
			sint_list.erase(it);
			
			break;
		}
		case CHORD_0:
		case CHORD_1:
		case CHORD_2:
		case CHORD_3:
		case CHORD_4:
		case CHORD_5:
		{
			
			list<Fid_Chords*>::iterator it;
			for (it=chords_list.begin(); it !=chords_list.end(); ++it) 
			{
				if ( (*it)->get_s_id() == session_id) 
				{
					(*it)->removed();
					break;
				}
			}
			chords_list.erase(it);
			
			break;
		}
		default:
		{
			cout << "Fiducial ID non valido.\n";
			break;
		}
	}
	

}
Beispiel #16
0
void testApp::tuioUpdated(ofxTuioObject &tuioObject){
	//cout << "TUIO object " << tuioObject.getFiducialId() << " updated at angle " << tuioObject.getAngle()<< " x= " << tuioObject.getXpos() <<endl;
	
	switch (tuioObject.getFiducialId()) {
		case 12:
			selection = 5;
			theVideos[selection-1]->setRotation(tuioObject.getAngle());
			theVideos[selection-1]->setTargetLocPct(tuioObject.getXpos(), tuioObject.getYpos());
			break;
        case 15:
			selection = 6;
			theVideos[selection-1]->setRotation(tuioObject.getAngle());
			theVideos[selection-1]->setTargetLocPct(tuioObject.getXpos(), tuioObject.getYpos());
			break;
		case 16:
			selection = 1;
			theVideos[selection-1]->setRotation(tuioObject.getAngle());
			theVideos[selection-1]->setTargetLocPct(tuioObject.getXpos(), tuioObject.getYpos());
			break;
		case 17:
			selection = 2;
			theVideos[selection-1]->setRotation(tuioObject.getAngle());
			theVideos[selection-1]->setTargetLocPct(tuioObject.getXpos(), tuioObject.getYpos());
			break;
        case 18:
			selection = 3;
			theVideos[selection-1]->setRotation(tuioObject.getAngle());
			theVideos[selection-1]->setTargetLocPct(tuioObject.getXpos(), tuioObject.getYpos());
			break;
        case 19:
			selection = 4;
			theVideos[selection-1]->setRotation(tuioObject.getAngle());
			theVideos[selection-1]->setTargetLocPct(tuioObject.getXpos(), tuioObject.getYpos());
        
		default:
			break;
	}
	if (selection != prevselection) {
		//update all the videos as to the selection state 
		for (int i=0; i < NUMOFCLIPS; i++) {
			if (i+1 != selection) {
				theVideos[i]->setSelected(false);
			}else {
				theVideos[i]->setSelected(true);
			}
		}
		prevselection = selection;
	}
}