void MagicLightCircle::updateOSC() { while(receiver.hasWaitingMessages()) { ofxOscMessage m; receiver.getNextMessage(&m); string address = m.getAddress(); if(mapToOfParameterFloatValue[address] != NULL) { mapToOfParameterFloatValue[address]->set(m.getArgAsFloat(0) * multipliers[address]); } if(address == "/savePreset") { ((ofApp*)ofGetAppPtr())->saveGUIPreset(); } if(address == "/changePreset") { ((ofApp*)ofGetAppPtr())->presetId = m.getArgAsInt32(0); } if(address == "/loadPreset") { ((ofApp*)ofGetAppPtr())->presetId = m.getArgAsInt32(0); ((ofApp*)ofGetAppPtr())->loadGUIPreset(m.getArgAsInt32(0)); } if(address == "/turnOnRandomLight") { turnOnRandomLight(); } if(address == "/turnOnLight") { turnOnLight(m.getArgAsInt32(0)); } if(address.find("newPoint") <= 10) { int pointPos = ofToInt(address.substr(10,1)); ofVec3f point; point.x = (m.getArgAsFloat(0) * radius * 2); point.y = (m.getArgAsFloat(1) * radius * 2); point.z = m.getArgAsFloat(2); // cout << point.z << endl; Blob tempBlob; tempBlob.point = point; tempBlob.life = MAX_DURATION_FRAMES_BLOB_WITH_NO_INTERACTION; if(pointPos+1>blobs.size()) blobs.push_back(tempBlob); else blobs[pointPos] = tempBlob; timerNoPoints = 0; } if(address == "ControlLight" && useOSC) { for(int a = 0; a < totMagicPoints; a++) { magicPoints[a]->intensity = float(m.getArgAsInt32(a))/255.0; } } } }
void EpLight::fadeInLight() { turnOnLight(); m_fFadeTimer += 0.01f; m_fFadeTimerSign = 1.0f; m_bInFading = true; }
void EpLight::fadeInLightForcedDelayed( float delay ) { turnOnLight(); m_fFadeTimer = 0.01f; m_fFadeTimerSign = 1.0f; m_fDelay = delay; }
void MagicLightCircle::turnOnRandomLight() { int count = 0; int selectedMagicPoint = -666;; do { selectedMagicPoint = ofRandom(0, totMagicPoints); count++; }while(magicPoints[selectedMagicPoint]->getIntensity() > .1&&count < 100); if(selectedMagicPoint != -666) turnOnLight(selectedMagicPoint); }
void callSpecialFunc(int key, int x, int y) { int sens; /* sens positif ou negatif */ if(glutGetModifiers() == GLUT_ACTIVE_SHIFT) { sens = -1; } else { sens = 1; } // Global modifications switch(key) { case GLUT_KEY_LEFT: rotateHead(OBS_ROTATING_HEAD); break; case GLUT_KEY_RIGHT: rotateHead(-OBS_ROTATING_HEAD); break; case GLUT_KEY_UP: nodHead(-OBS_NODING_HEAD); break; case GLUT_KEY_DOWN: nodHead(OBS_NODING_HEAD); break; case GLUT_KEY_F7: if(scene->tabsource[0].allume == 0) { scene->tabsource[0].allume = 1; } else { scene->tabsource[0].allume = 0; } break; case GLUT_KEY_F8: /* switch lighting */ g_switchLight ^= 1; break; case GLUT_KEY_F9: /* turn on or off infinite light */ if(g_dayTime == DAY) { g_dayTime = NIGHT; charger_skybox(NIGHT); scene->tabsource[0].allume = 0; turnOnLight(g_scenes3DS[ANIMATED_KART_ID].lights[0]); turnOnLight(g_scenes3DS[ANIMATED_KART_ID].lights[1]); } else if(g_dayTime == NIGHT) { g_dayTime = DAY; charger_skybox(DAY); scene->tabsource[0].allume = 1; turnOffLight(g_scenes3DS[ANIMATED_KART_ID].lights[0]); turnOffLight(g_scenes3DS[ANIMATED_KART_ID].lights[1]); } redefineLights(); break; case GLUT_KEY_F10: switchLight(g_scenes3DS[ANIMATED_KART_ID].lights[0]); switchLight(g_scenes3DS[ANIMATED_KART_ID].lights[1]); redefineLights(); break; case GLUT_KEY_F11: /* turn on or off kart's lights */ switchLight(g_scenes3DS[KART_ID].lights[0]); switchLight(g_scenes3DS[KART_ID].lights[1]); redefineLights(); break; case GLUT_KEY_F12: /* rotate selon direction axe z */ rotateZ(sens * OBS_ROTATING_Z); break; } // Is an object currently selected ? if(g_currentObj < 0) { return ; } // Local modification ==> On an object switch (key) { case GLUT_KEY_F1: /* avance selon direction axe x */ translate(&(scene->tabobj[g_currentObj]), TRANSLATING * sens, 0.0, 0.0); break; case GLUT_KEY_F2: /* avance selon direction axe y */ if(g_currentObj < 0) { return ; } translate(&(scene->tabobj[g_currentObj]), 0.0, TRANSLATING * sens, 0.0); break; case GLUT_KEY_F3: /* avance selon direction axe z */ if(g_currentObj < 0) { return ; } translate(&(scene->tabobj[g_currentObj]), 0.0, 0.0, TRANSLATING * sens); break; case GLUT_KEY_F4: /* rotate selon direction axe x */ if(g_currentObj < 0) { return ; } rotate(&(scene->tabobj[g_currentObj]), ROTATING * sens, 0.0, 0.0); break; case GLUT_KEY_F5: /* rotate selon direction axe y */ if(g_currentObj < 0) { return ; } rotate(&(scene->tabobj[g_currentObj]), 0.0, ROTATING * sens, 0.0); break; case GLUT_KEY_F6: /* rotate selon direction axe z */ if(g_currentObj < 0) { return ; } rotate(&(scene->tabobj[g_currentObj]), 0.0, 0.0, ROTATING * sens); break; } glutPostRedisplay(); }