void moEffectCubeMap::Draw( moTempo* tempogral,moEffectState* parentstate) { PreDraw( tempogral,parentstate); glEnable(GL_DEPTH_TEST); // Disables Depth Testing glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); glMatrixMode(GL_PROJECTION); // Select The Projection Matrix glPushMatrix(); // Store The Projection Matrix glLoadIdentity(); // Reset The Projection Matrix //gluLookAt(0, 0, 0, 0, 0, 1, 0, 1, 0); gluPerspective(45,1.33f,0.0f,3.0f); glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPushMatrix(); // Store The Modelview Matrix glLoadIdentity(); // Reset The Modelview Matrix glTranslatef( m_Config[moR(CUBEMAP_TRANSLATEX)].GetData()->Fun()->Eval(state.tempo.ang), m_Config[moR(CUBEMAP_TRANSLATEY)].GetData()->Fun()->Eval(state.tempo.ang), m_Config[moR(CUBEMAP_TRANSLATEZ)].GetData()->Fun()->Eval(state.tempo.ang)); glRotatef( m_Config[moR(CUBEMAP_ROTATEX)].GetData()->Fun()->Eval(state.tempo.ang), 1.0, 0.0, 0.0 ); glRotatef( m_Config[moR(CUBEMAP_ROTATEY)].GetData()->Fun()->Eval(state.tempo.ang), 0.0, 1.0, 0.0 ); glRotatef( m_Config[moR(CUBEMAP_ROTATEZ)].GetData()->Fun()->Eval(state.tempo.ang), 0.0, 0.0, 1.0 ); glScalef( m_Config[moR(CUBEMAP_SCALEX)].GetData()->Fun()->Eval(state.tempo.ang), m_Config[moR(CUBEMAP_SCALEY)].GetData()->Fun()->Eval(state.tempo.ang), m_Config[moR(CUBEMAP_SCALEZ)].GetData()->Fun()->Eval(state.tempo.ang)); glColor4f( m_Config[moR(CUBEMAP_COLOR)][MO_SELECTED][MO_RED].Fun()->Eval(state.tempo.ang) * state.tintr, m_Config[moR(CUBEMAP_COLOR)][MO_SELECTED][MO_GREEN].Fun()->Eval(state.tempo.ang) * state.tintg, m_Config[moR(CUBEMAP_COLOR)][MO_SELECTED][MO_BLUE].Fun()->Eval(state.tempo.ang) * state.tintb, m_Config[moR(CUBEMAP_COLOR)][MO_SELECTED][MO_ALPHA].Fun()->Eval(state.tempo.ang) * m_Config[moR(CUBEMAP_ALPHA)].GetData()->Fun()->Eval(state.tempo.ang) * state.alpha); moTexture* pImageLeft = (moTexture*) m_Config[moR(CUBEMAP_TEXTURELEFT)].GetData()->Pointer(); moTexture* pImageRight = (moTexture*) m_Config[moR(CUBEMAP_TEXTURERIGHT)].GetData()->Pointer(); moTexture* pImageFront = (moTexture*) m_Config[moR(CUBEMAP_TEXTUREFRONT)].GetData()->Pointer(); moTexture* pImageBack = (moTexture*) m_Config[moR(CUBEMAP_TEXTUREBACK)].GetData()->Pointer(); moTexture* pImageTop = (moTexture*) m_Config[moR(CUBEMAP_TEXTURETOP)].GetData()->Pointer(); moTexture* pImageBottom = (moTexture*) m_Config[moR(CUBEMAP_TEXTUREBOTTOM)].GetData()->Pointer(); //front glBindTexture( GL_TEXTURE_2D, m_Config[moR(CUBEMAP_TEXTUREFRONT)].GetData()->GetGLId(&state.tempo, 1, NULL ) ); glBegin(GL_QUADS); glTexCoord2f(pImageFront->GetMaxCoordS(),0); glVertex3f(-1,-1,-1); glTexCoord2f(0,0); glVertex3f(1,-1,-1); glTexCoord2f(0,pImageFront->GetMaxCoordT()); glVertex3f(1,1,-1); glTexCoord2f(pImageFront->GetMaxCoordS(),pImageFront->GetMaxCoordT()); glVertex3f(-1,1,-1); glEnd(); //up glBindTexture( GL_TEXTURE_2D, m_Config[moR(CUBEMAP_TEXTURETOP)].GetData()->GetGLId(&state.tempo, 1, NULL ) ); glBegin(GL_QUADS); glTexCoord2f(pImageTop->GetMaxCoordS(),0); glVertex3f(-1,1,-1); glTexCoord2f(0,0); glVertex3f(1,1,-1); glTexCoord2f(0,pImageTop->GetMaxCoordT()); glVertex3f(1,1,1); glTexCoord2f(pImageTop->GetMaxCoordS(),pImageTop->GetMaxCoordT()); glVertex3f(-1,1,1); glEnd(); //left glBindTexture( GL_TEXTURE_2D, m_Config[moR(CUBEMAP_TEXTURELEFT)].GetData()->GetGLId(&state.tempo, 1, NULL ) ); glBegin(GL_QUADS); glTexCoord2f(pImageLeft->GetMaxCoordS(),pImageLeft->GetMaxCoordT()); glVertex3f(-1,1,1); glTexCoord2f(0,pImageLeft->GetMaxCoordT()); glVertex3f(-1,1,-1); glTexCoord2f(0,0); glVertex3f(-1,-1,-1); glTexCoord2f(pImageLeft->GetMaxCoordS(),0); glVertex3f(-1,-1,1); glEnd(); //right glBindTexture( GL_TEXTURE_2D, m_Config[moR(CUBEMAP_TEXTURERIGHT)].GetData()->GetGLId(&state.tempo, 1, NULL ) ); glBegin(GL_QUADS); glTexCoord2f(0,pImageRight->GetMaxCoordT()); glVertex3f(1,1,1); glTexCoord2f(pImageRight->GetMaxCoordS(),pImageRight->GetMaxCoordT()); glVertex3f(1,1,-1); glTexCoord2f(pImageRight->GetMaxCoordS(),0); glVertex3f(1,-1,-1); glTexCoord2f(0,0); glVertex3f(1,-1,1); glEnd(); //down glBindTexture( GL_TEXTURE_2D, m_Config[moR(CUBEMAP_TEXTUREBOTTOM)].GetData()->GetGLId(&state.tempo, 1, NULL ) ); glBegin(GL_QUADS); glTexCoord2f(pImageBottom->GetMaxCoordS(),pImageBottom->GetMaxCoordT()); glVertex3f(-1,-1,-1); glTexCoord2f(0,pImageBottom->GetMaxCoordT()); glVertex3f(1,-1,-1); glTexCoord2f(0,0); glVertex3f(1,-1,1); glTexCoord2f(pImageBottom->GetMaxCoordS(),0); glVertex3f(-1,-1,1); glEnd(); //back glBindTexture( GL_TEXTURE_2D, m_Config[moR(CUBEMAP_TEXTUREBACK)].GetData()->GetGLId(&state.tempo, 1, NULL ) ); glBegin(GL_QUADS); glTexCoord2f(0,0); glVertex3f(-1,-1,1); glTexCoord2f(pImageBack->GetMaxCoordS(),0); glVertex3f(1,-1,1); glTexCoord2f(pImageBack->GetMaxCoordS(),pImageBack->GetMaxCoordT()); glVertex3f(1,1,1); glTexCoord2f(0,pImageBack->GetMaxCoordT()); glVertex3f(-1,1,1); glEnd(); glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPopMatrix(); glMatrixMode(GL_PROJECTION); // Select The Projection Matrix glPopMatrix(); // Restore The Old Projection Matrix }
void moPostEffectColorFilter::UpdateParameters() { for (int i = MO_RED; i <= MO_ALPHA; i++) color[i] = m_Config[moR(COLORFILTER_COLOR)][MO_SELECTED][i].Float(); blending = m_Config[moR(COLORFILTER_BLENDING)].GetData()->Float(); sensibility = m_Config[moR(COLORFILTER_SENSIBILITY)].GetData()->Float(); }
void moPreEffectErase::Draw( moTempo* tempogral, moEffectState* parentstate ) { PreDraw(tempogral, parentstate); moVector4d ClearColor = m_Config.EvalColor( moR((MOint)ERASE_COLOR) ); glClearColor( ClearColor.X() * state.tintr, ClearColor.Y() * state.tintg, ClearColor.Z() * state.tintb, ClearColor.W() * m_Config.Eval(moR((MOint)ERASE_ALPHA)) * state.alpha ); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); }
void moSceneEffect::UpdateParameters() { //int key = 0; ///next sequence is next sequence in config param "sequence_states" if (m_i_scene_states!=m_Config[ moR(SCENE_STATES)].GetIndexValue()) { m_i_scene_states = m_Config[ moR(SCENE_STATES)].GetIndexValue(); SetSceneState(m_i_scene_states); } else { //i_sequence_states = m_Config[ moR(SEQUENCE_STATES)].GetIndexValue() UpdateSceneState(m_i_scene_states); } }
void moEffectSound::Update( moEventList *Events ) { //get the pointer from the Moldeo Object sending it... moMoldeoObject::Update(Events); ///SE APAGA EL SONIDO SI EL EFECTO ESTA DESACTIVADO if ( Activated() && m_Config.Sound( moR(SOUND_SOUND) ).State()!=MO_STREAMSTATE_PLAYING ) { m_Config.Sound( moR(SOUND_SOUND) ).Play(); } else if ( !Activated() && m_Config.Sound( moR(SOUND_SOUND) ).State()==MO_STREAMSTATE_PLAYING ) { m_Config.Sound( moR(SOUND_SOUND) ).Pause(); } }
void moDeformationGrid::ResetPuntos() { float cx,incx; float cy,incy; float inctx,incty; int w = m_pResourceManager->GetRenderMan()->ScreenWidth(); int h = m_pResourceManager->GetRenderMan()->ScreenHeight(); bool saveto = false; inctx = (PosTextX1 - PosTextX0) / (float)(m_Width-1); incty = (PosTextY1 - PosTextY0) / (float)(m_Height-1); cx = -1.0 / 2; incx = 1.0 / (float)( m_Width - 1); cy = -(1.0 * h / w ) / 2; incy = (1.0 * h / w) / (float)(m_Height - 1); if (m_Config[moR(DEFORMATIONGRID_POINTS)].GetValue().GetSubValueCount()>0) saveto = true; for(int j=0; j < m_Height; j++) for(int i=0; i < m_Width; i++) { m_Points[ i + j*m_Width ] = moVector2f( cx + i*incx, cy + j*incy ); m_TPoints[ i + j*m_Width ] = moVector2f( PosTextX0 + inctx*i, PosTextY0 + incty*j ); if (saveto) SavePoint( i, j ); } }
void moDeformationGrid::SavePoint( int i, int j ) { moValue& myPoints = m_Config[moR(DEFORMATIONGRID_POINTS)].GetValue(); int index = (i + j*m_Width)*4; int index2 = i + j*m_Width; myPoints.GetSubValue( index).SetFloat(m_Points[index2].X()); myPoints.GetSubValue( index+ 1 ).SetFloat(m_Points[index2].Y()); myPoints.GetSubValue( index + 2).SetFloat(m_TPoints[index2].X()); myPoints.GetSubValue( index + 3).SetFloat(m_TPoints[index2].Y()); }
void moNetOSCOut::UpdateParameters() { sendInterval = m_Config.Double( moR( NETOSCOUT_LATENCY ) ); m_Port = m_Config.Int( moR( NETOSCOUT_PORT ) ); maxEventNum = m_Config.Int( moR( NETOSCOUT_MAXEVENTS ) ); m_SendEvents = m_Config.Int( moR( NETOSCOUT_SENDEVENTS ) ); delete_events = m_Config.Int( moR( NETOSCOUT_DELETEEVENTS ) ); m_sendMoldeoApi = m_Config.Int( moR( NETOSCOUT_SENDMOLDEOAPI ) ); debug_is_on = ( 0 != m_Config.Int( moR(NETOSCOUT_DEBUG) ) ); }
MOboolean moDeformationGrid::Init() { if (!PreInit()) return false; moDefineParamIndex( DEFORMATIONGRID_ALPHA, moText("alpha") ); moDefineParamIndex( DEFORMATIONGRID_COLOR, moText("color") ); moDefineParamIndex( DEFORMATIONGRID_SYNC, moText("syncro") ); moDefineParamIndex( DEFORMATIONGRID_PHASE, moText("phase") ); moDefineParamIndex( DEFORMATIONGRID_TEXTURE, moText("texture") ); moDefineParamIndex( DEFORMATIONGRID_WIDTH, moText("width") ); moDefineParamIndex( DEFORMATIONGRID_HEIGHT, moText("height") ); moDefineParamIndex( DEFORMATIONGRID_POINTS, moText("points") ); moDefineParamIndex( DEFORMATIONGRID_TEXCOORD_X1, moText("texcoord_x1") ); moDefineParamIndex( DEFORMATIONGRID_TEXCOORD_Y1, moText("texcoord_y1") ); moDefineParamIndex( DEFORMATIONGRID_TEXCOORD_X2, moText("texcoord_x2") ); moDefineParamIndex( DEFORMATIONGRID_TEXCOORD_Y2, moText("texcoord_y2") ); moDefineParamIndex( DEFORMATIONGRID_TRANSLATEX, moText("translatex") ); moDefineParamIndex( DEFORMATIONGRID_TRANSLATEY, moText("translatey") ); moDefineParamIndex( DEFORMATIONGRID_TRANSLATEZ, moText("translatez") ); moDefineParamIndex( DEFORMATIONGRID_ROTATEX, moText("rotatex") ); moDefineParamIndex( DEFORMATIONGRID_ROTATEY, moText("rotatey") ); moDefineParamIndex( DEFORMATIONGRID_ROTATEZ, moText("rotatez") ); moDefineParamIndex( DEFORMATIONGRID_SCALEX, moText("scalex") ); moDefineParamIndex( DEFORMATIONGRID_SCALEY, moText("scaley") ); moDefineParamIndex( DEFORMATIONGRID_SCALEZ, moText("scalez") ); moDefineParamIndex( DEFORMATIONGRID_SHOWGRID, moText("showgrid") ); moDefineParamIndex( DEFORMATIONGRID_CLEAR, moText("clear") ); moDefineParamIndex( DEFORMATIONGRID_PRECISION, moText("precision") ); moDefineParamIndex( DEFORMATIONGRID_MODE, moText("mode") ); m_Width = 0; m_Height = 0; pImage = NULL; m_Points = NULL; m_TPoints = NULL; UpdateParameters(); m_Selector_I = 0; m_Selector_J = 0; m_Modo = (moDeformationGridMode)m_Config.Int( moR(DEFORMATIONGRID_MODE) ); return true; }
int moSceneEffect::NextSceneState( int i_state ) { int i_next_state = i_state + 1; if (0<=i_next_state && i_next_state<m_n_scene_states) { MODebug2->Message("Next Scene State: " + IntToStr(i_next_state)); } else { if (m_Config.Int( moR(SCENE_SEQUENCE_LOOP)) > 0) { i_next_state = 0; MODebug2->Message("Looping States."); } else { i_next_state = m_n_scene_states-1; MODebug2->Message("End of States reached."); return -1; } } return SetSceneState( i_next_state ); }
void moEffectSampleTest::Draw( moTempo* tempogral, moEffectState* parentstate ) { MOint indeximage; MOdouble PosTextX0, PosTextX1, PosTextY0, PosTextY1; int ancho,alto; int w = m_pResourceManager->GetRenderMan()->ScreenWidth(); int h = m_pResourceManager->GetRenderMan()->ScreenHeight(); PreDraw( tempogral, parentstate); // Guardar y resetar la matriz de vista del modelo // glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glLoadIdentity(); // Reset The View // Cambiar la proyeccion para una vista ortogonal // glDisable(GL_DEPTH_TEST); // Disables Depth Testing glMatrixMode(GL_PROJECTION); // Select The Projection Matrix glLoadIdentity(); // Reset The Projection Matrix glOrtho(0,w,0,h,-1,1); // Set Up An Ortho Screen // Funcion de blending y de alpha channel // glEnable(GL_BLEND); glDisable(GL_ALPHA); // Draw // glTranslatef( ( m_Config[moR(SAMPLETEST_TRANSLATEX)].GetData()->Fun()->Eval(m_EffectState.tempo.ang)+Tx )*w, ( m_Config[moR(SAMPLETEST_TRANSLATEY)].GetData()->Fun()->Eval(m_EffectState.tempo.ang)+Ty )*h, m_Config[moR(SAMPLETEST_TRANSLATEZ)].GetData()->Fun()->Eval(m_EffectState.tempo.ang)+Tz); glRotatef( m_Config[moR(SAMPLETEST_ROTATEX)].GetData()->Fun()->Eval(m_EffectState.tempo.ang), 1.0, 0.0, 0.0 ); glRotatef( m_Config[moR(SAMPLETEST_ROTATEY)].GetData()->Fun()->Eval(m_EffectState.tempo.ang), 0.0, 1.0, 0.0 ); glRotatef( m_Config[moR(SAMPLETEST_ROTATEZ)].GetData()->Fun()->Eval(m_EffectState.tempo.ang), 0.0, 0.0, 1.0 ); glScalef( m_Config[moR(SAMPLETEST_SCALEX)].GetData()->Fun()->Eval(m_EffectState.tempo.ang)*Sx, m_Config[moR(SAMPLETEST_SCALEY)].GetData()->Fun()->Eval(m_EffectState.tempo.ang)*Sy, m_Config[moR(SAMPLETEST_SCALEZ)].GetData()->Fun()->Eval(m_EffectState.tempo.ang)*Sz); SetColor( m_Config[moR(SAMPLETEST_COLOR)][MO_SELECTED], m_Config[moR(SAMPLETEST_ALPHA)][MO_SELECTED], m_EffectState ); SetBlending( (moBlendingModes) m_Config[moR(SAMPLETEST_BLENDING)][MO_SELECTED][0].Int() ); moTexture* pImage = (moTexture*) m_Config[moR(SAMPLETEST_TEXTURE)].GetData()->Pointer(); glBindTexture( GL_TEXTURE_2D, m_Config[moR(SAMPLETEST_TEXTURE)].GetData()->GetGLId(&m_EffectState.tempo) ); PosTextX0 = 0.0; PosTextX1 = 1.0 * ( pImage!=NULL ? pImage->GetMaxCoordS() : 1.0 ); PosTextY0 = 0.0; PosTextY1 = 1.0 * ( pImage!=NULL ? pImage->GetMaxCoordT() : 1.0 ); //ancho = (int)m_Config[ moR(SAMPLETEST_WIDTH) ].GetData()->Fun()->Eval(m_EffectState.tempo.ang)* (float)(w/800.0); //alto = (int)m_Config[ moR(SAMPLETEST_HEIGHT) ].GetData()->Fun()->Eval(m_EffectState.tempo.ang)* (float)(h/600.0); glBegin(GL_QUADS); glTexCoord2f( PosTextX0, PosTextY1); glVertex2f( -0.5*w, -0.5*h); glTexCoord2f( PosTextX1, PosTextY1); glVertex2f( 0.5*w, -0.5*h); glTexCoord2f( PosTextX1, PosTextY0); glVertex2f( 0.5*w, 0.5*h); glTexCoord2f( PosTextX0, PosTextY0); glVertex2f( -0.5*w, 0.5*h); glEnd(); moTrackerSystemData* m_pTrackerData = NULL; bool m_bTrackerInit = false; //Procesar Inlets for(int i=0; i<m_Inlets.Count(); i++) { moInlet* pInlet = m_Inlets[i]; if (pInlet->Updated() && ( pInlet->GetConnectorLabelName()==moText("TRACKERKLT") || pInlet->GetConnectorLabelName()==moText("TRACKERGPUKLT") || pInlet->GetConnectorLabelName()==moText("TRACKERGPUKLT2")) ) { m_pTrackerData = (moTrackerSystemData *)pInlet->GetData()->Pointer(); if (m_pTrackerData && !m_bTrackerInit) { m_bTrackerInit = true; //SelectScriptFunction("Reset"); //RunSelectedFunction(); //MODebug2->Push(IntToStr(TrackerId)); //MODebug2->Push(moText("Receiving:") + IntToStr(m_pTrackerData->GetFeaturesCount()) ); if (m_pTrackerData->GetFeaturesCount()>0) { int tw = m_pTrackerData->GetVideoFormat().m_Width; int th = m_pTrackerData->GetVideoFormat().m_Height; //MODebug2->Push(moText("vformat:")+IntToStr(tw)+moText("th")+IntToStr(th)); for (i = 0; i < m_pTrackerData->GetFeaturesCount(); i++) { moTrackerFeature* pF = m_pTrackerData->GetFeature(i); //if (pF && pF->valid) { float x = (pF->x / (float)tw) - 0.5; float y = -(pF->y / (float)th) + 0.5; float tr_x = (pF->tr_x / (float)tw) - 0.5; float tr_y = -(pF->tr_y / (float)th) + 0.5; float v_x = (pF->v_x / (float)tw); float v_y = -(pF->v_y / (float)th); float vel = sqrtf( v_x*v_x+v_y*v_y ); int v = pF->val; //MODebug2->Log(moText(" x:")+FloatToStr(pF->x) + moText(" y:")+FloatToStr(pF->y) ); glBindTexture(GL_TEXTURE_2D,0); glColor4f(1.0, 0.0, 0.0, 1.0); if (v >= KLT_TRACKED) glColor4f(0.0, 1.0, 0.0, 1.0); else if (v == KLT_NOT_FOUND) glColor4f(1.0, 0.0, 1.0, 1.0); else if (v == KLT_SMALL_DET) glColor4f(1.0, 0.0, 1.0, 1.0); else if (v == KLT_MAX_ITERATIONS) glColor4f(1.0, 0.0, 1.0, 1.0); else if (v == KLT_OOB) glColor4f(1.0, 0.0, 1.0, 1.0); else if (v == KLT_LARGE_RESIDUE) glColor4f(1.0, 0.0, 1.0, 1.0); if ( pF->valid ) { glBegin(GL_QUADS); glVertex2f((tr_x - 0.008)*w, (tr_y - 0.008)*h); glVertex2f((tr_x - 0.008)*w, (tr_y + 0.008)*h); glVertex2f((tr_x + 0.008)*w, (tr_y + 0.008)*h); glVertex2f((tr_x + 0.008)*w, (tr_y - 0.008)*h); glEnd(); glBegin(GL_QUADS); glVertex2f((x - 0.008)*w, (y - 0.008)*h); glVertex2f((x - 0.008)*w, (y + 0.008)*h); glVertex2f((x + 0.008)*w, (y + 0.008)*h); glVertex2f((x + 0.008)*w, (y - 0.008)*h); glEnd(); glDisable(GL_TEXTURE_2D); glColor4f(1.0, 1.0, 1.0, 1.0); glBegin(GL_LINES); glVertex2f( x*w, y*h); glVertex2f( tr_x*w, tr_y*h); glEnd(); if ( vel > 0.001 ) { glDisable(GL_TEXTURE_2D); glColor4f(0.0, 0.0, 1.0, 1.0); //glPointSize((GLfloat)10); glLineWidth((GLfloat)10.0); glBegin(GL_LINES); glVertex2f( x*w, y*h); glVertex2f( x*w+v_x*w, y*h+v_y*h); glEnd(); } } } } } } } }
void moPostEffectDebug::Draw( moTempo* tempogral,moEffectState* parentstate) { //calculamos ticks y frames x seg moTextArray TextArray; MOulong timecodeticks; int w; int h; BeginDraw( tempogral, parentstate); if (m_pResourceManager) { w = m_pResourceManager->GetRenderMan()->ScreenWidth(); h = m_pResourceManager->GetRenderMan()->ScreenHeight(); } ticksprevious = ticks; ticks = moGetTicksAbsolute(); tickselapsed = ticks - ticksprevious; fps_current = 1000.0 / tickselapsed; fps_mean += fps_current; fps_count++; if (fps_count % 10 == 0) { fps_mean /= 10; fps_text = moText("FPS = ") + (moText)FloatToStr(fps_mean); fps_mean = 0; fps_count = 0; } TextArray.Add(fps_text); /* for(int g=560;g>=80 ;g-=20) { //glPrint(0,g,MODebug2->Pop(),0,1.0,1.0); //glPrint(0,g,moText("test"),0,1.0,1.0); } */ /* moText state_datos; moText state_luminosidad; moText state_colorido; moText state_magnitude; state_datos+= "SINC: "; state_datos+= IntToStr(state.synchronized); state_datos+= " FAC: "; state_datos+= FloatToStr(m_EffectState.tempo.factor,4); state_datos+= " SYNCRO: "; state_datos+= FloatToStr(m_EffectState.tempo.syncro,4); state_luminosidad+="ALPHA:"; state_luminosidad+= FloatToStr(state.alpha,4); state_luminosidad+="LUM:"; state_luminosidad+= FloatToStr(state.tint,4); state_colorido+="ALPHA:"; state_colorido+= FloatToStr(state.tintc,4); state_colorido+="SAT:"; state_colorido+= FloatToStr(state.tints,4); state_magnitude+="DELTA:"; state_magnitude+= FloatToStr(m_EffectState.tempo.delta,4); state_magnitude+="AMP:"; state_magnitude+= FloatToStr(state.amplitude,4); MODebug2->Push(state_datos); MODebug2->Push(state_luminosidad); MODebug2->Push(state_colorido); MODebug2->Push(state_magnitude); */ moFont mFont = m_Config.Font( moR(DEBUG_FONT) ); PreDraw( tempogral, parentstate); // Cambiar la proyeccion para una vista ortogonal // glDisable(GL_DEPTH_TEST); // Disables Depth Testing glMatrixMode(GL_PROJECTION); // Select The Projection Matrix glLoadIdentity(); // Reset The Projection Matrix glOrtho(0,w,0,h,-1,1); // Set Up An Ortho Screen glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glLoadIdentity(); // Reset The View glEnable(GL_BLEND); //color SetColor( m_Config[moR(DEBUG_COLOR)], m_Config[moR(DEBUG_ALPHA)], m_EffectState ); moText Texto = moText(""); int minutes; int seconds; int frames; //if (mFont) { /* pFont->Draw( 0.0, 0.0, Texto, m_Config[moR(DEBUG_FONT)][MO_SELECTED][2].Int(), 0 ); */ Texto+= fps_text; timecodeticks = moGetTicks(); minutes = timecodeticks / (1000*60); seconds = (timecodeticks - minutes*1000*60) / 1000; frames = (timecodeticks - minutes*1000*60 - seconds*1000 ) * 25 / 1000; Texto+= moText(" ticks: ") + (moText)IntToStr(timecodeticks,10) + moText(" ang: ") + (moText)FloatToStr((float)tempogral->ang) + moText(" timecode: ") + (moText)IntToStr(minutes, 2) + moText(":") + (moText)IntToStr(seconds,2) + moText(":") + (moText)IntToStr(frames,2); //glTranslatef( 0.0, 2.0, 0.0 ); mFont.Draw( 0.0, 0.0, Texto, m_Config[moR(DEBUG_FONT)][MO_SELECTED][2].Int(), 0 ); moText Final; int cint = 0; //Final = moText("Debug "); //for( int i=0; i<MODebug2->Count(); i++ ) { // cint++; //Final = MODebug2->GetMessages().Get(i); //} cint = MODebug2->Count(); //Final = Final + moText("(")+IntToStr( cint ) + moText("):"); //if (cint>0) Final = Final + (moText)MODebug2->GetLast(); /* for( int i=0; i<(cint-1); i++ ) { Final = MODebug2->Pop(); } */ mFont.Draw( 0.0, 48.0, Final ); //moText infod = moText("screen width:")+IntToStr(w)+moText(" screen height:")+IntToStr(h); //pFont->Draw( 0, 0, infod, m_Config[moR(TEXT_FONT)][MO_SELECTED][2].Int(), 0, 2.0, 2.0, 0.0); //} glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPopMatrix(); // Restore The Old Projection Matrix glMatrixMode(GL_PROJECTION); // Select The Projection Matrix glPopMatrix(); // Restore The Old Projection Matrix }
void moNetOSCIn::UpdateParameters() { m_ReceiveEvents = m_Config.Int( moR(NETOSCIN_RECEIVEEVENTS) ); }
void moDeformationGrid::Draw( moTempo* tempogral, moEffectState* parentstate ) { MOint indeximage; int ancho,alto; int w = m_pResourceManager->GetRenderMan()->ScreenWidth(); int h = m_pResourceManager->GetRenderMan()->ScreenHeight(); UpdateParameters(); PreDraw( tempogral, parentstate); if (clear) { glClearColor(0.0,0.0,0.0,1.0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); } glDisable(GL_DEPTH_TEST); // Disables Depth Testing glMatrixMode(GL_PROJECTION); // Select The Projection Matrix glLoadIdentity(); // Reset The Projection Matrix glOrtho(-0.5,0.5,-0.5*h/w,0.5*h/w,-1,1); // Set Up An Ortho Screen /* glMatrixMode(GL_PROJECTION); // Select The Projection Matrix glLoadIdentity(); // Reset The Projection Matrix // glOrtho(0,w,0,h,-1,1); // Set Up An Ortho Screen m_pResourceManager->GetGLMan()->SetPerspectiveView( w, h ); glMatrixMode(GL_PROJECTION); gluLookAt( 0, 0, 10.0, 0, 0, 0, 0, 1, 0); */ glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPushMatrix(); // Store The Modelview Matrix glLoadIdentity(); // Reset The View glTranslatef( m_Config[moR(DEFORMATIONGRID_TRANSLATEX)].GetData()->Fun()->Eval(state.tempo.ang), m_Config[moR(DEFORMATIONGRID_TRANSLATEY)].GetData()->Fun()->Eval(state.tempo.ang), m_Config[moR(DEFORMATIONGRID_TRANSLATEZ)].GetData()->Fun()->Eval(state.tempo.ang)); glRotatef( m_Config[moR(DEFORMATIONGRID_ROTATEX)].GetData()->Fun()->Eval(state.tempo.ang), 1.0, 0.0, 0.0 ); glRotatef( m_Config[moR(DEFORMATIONGRID_ROTATEY)].GetData()->Fun()->Eval(state.tempo.ang), 0.0, 1.0, 0.0 ); glRotatef( m_Config[moR(DEFORMATIONGRID_ROTATEZ)].GetData()->Fun()->Eval(state.tempo.ang), 0.0, 0.0, 1.0 ); glScalef( m_Config[moR(DEFORMATIONGRID_SCALEX)].GetData()->Fun()->Eval(state.tempo.ang), m_Config[moR(DEFORMATIONGRID_SCALEY)].GetData()->Fun()->Eval(state.tempo.ang), m_Config[moR(DEFORMATIONGRID_SCALEZ)].GetData()->Fun()->Eval(state.tempo.ang)); SetColor( m_Config[moR(DEFORMATIONGRID_COLOR)][MO_SELECTED], m_Config[moR(DEFORMATIONGRID_ALPHA)][MO_SELECTED], state ); glEnable( GL_TEXTURE_2D ); glBindTexture( GL_TEXTURE_2D,m_Config[moR(DEFORMATIONGRID_TEXTURE)].GetData()->GetGLId(&state.tempo) ); if (m_Points && m_TPoints) for(int j=0; j< (m_Height-1); j++) { glBegin(GL_QUAD_STRIP); for( int i=0; i < m_Width; i++ ) { glTexCoord2f( m_TPoints[i + j * m_Width].X(), m_TPoints[i + j * m_Width].Y() ); glVertex2f( m_Points[i + j * m_Width].X(), m_Points[i + j * m_Width].Y() ); glTexCoord2f( m_TPoints[i + (j+1) * m_Width].X(), m_TPoints[i + (j+1) * m_Width].Y() ); glVertex2f( m_Points[i + (j+1) * m_Width].X(), m_Points[i + (j+1) * m_Width].Y() ); } glEnd(); } if (showgrid>0) { glDisable( GL_TEXTURE_2D ); glPolygonMode( GL_FRONT_AND_BACK, GL_LINE ); for(int j=0; j< m_Height; j++) { for( int i=0; i < m_Width; i++ ) { glColor4f( 0.0, 1.0, 0.0, 1.0); glBegin(GL_QUADS); glVertex2f( m_Points[i + j * m_Width].X() -0.002, m_Points[i + j * m_Width].Y() +0.002); glVertex2f( m_Points[i + j * m_Width].X()+0.002, m_Points[i + j * m_Width].Y() +0.002); glVertex2f( m_Points[i + j * m_Width].X()+0.002, m_Points[i + j * m_Width].Y() -0.002 ); glVertex2f( m_Points[i + j * m_Width].X() -0.002, m_Points[i + j * m_Width].Y() -0.002 ); glEnd(); if ( m_Selector_I == i && m_Selector_J == j ) { glColor4f( 1.0, 1.0, 0.0, 1.0); glBegin(GL_QUADS); glVertex2f( m_Points[i + j * m_Width].X() -0.01, m_Points[i + j * m_Width].Y() +0.01); glVertex2f( m_Points[i + j * m_Width].X()+0.01, m_Points[i + j * m_Width].Y() +0.01); glVertex2f( m_Points[i + j * m_Width].X()+0.01, m_Points[i + j * m_Width].Y() -0.01 ); glVertex2f( m_Points[i + j * m_Width].X() -0.01, m_Points[i + j * m_Width].Y() -0.01 ); glEnd(); } } } glEnable( GL_TEXTURE_2D ); } /* glBegin (GL_QUADS); glTexCoord2f( PosTextX0, PosTextY1); glVertex3f (-7.69, 5.77, 0); glTexCoord2f( PosTextX1, PosTextY1); glVertex3f (7.69, 5.77, 0); glTexCoord2f( PosTextX1, PosTextY0); glVertex3f (7.69, -5.77, 0); glTexCoord2f( PosTextX0, PosTextY0); glVertex3f (-7.69, -5.77, 0); glEnd(); */ //MODebug2->Push(IntToStr(showgrid)); if (showgrid>0) { ///DRAW THE REFERENCE GRID TO SEE THE DEFORMATION RESULT /*** * for each vertex in the value index selected for the POINTS parameters * draw */ glColor4f(1.0,1.0,1.0,1.0); glDisable( GL_TEXTURE_2D ); glLineWidth( 1.0 ); glBegin (GL_LINES); glVertex3f (-0.25, h/w / 4, 0); glVertex3f (0.25, -h/w / 4, 0); glEnd (); glBegin (GL_LINES); glVertex3f (h/w / 4, h/w / 4, 0); glVertex3f (-h/w / 4, -h/w / 4, 0); glEnd (); glPolygonMode( GL_FRONT_AND_BACK, GL_LINE ); glBegin (GL_QUADS); glVertex3f (-0.5, h/w / 2, 0); glVertex3f (0.5, h/w / 2, 0); glVertex3f (0.5, -h/w / 2, 0); glVertex3f (-0.5, -h/w / 2, 0); glEnd (); glScalef(1.2,1.2,0); glBegin (GL_QUADS); glVertex3f (-0.5, h/w / 2, 0); glVertex3f (0.5, h/w / 2, 0); glVertex3f (0.5, -h/w / 2, 0); glVertex3f (-0.5, -h/w / 2, 0); glEnd (); } glLineWidth( 1.0 ); glEnable( GL_TEXTURE_2D ); glMatrixMode(GL_MODELVIEW); glPopMatrix(); glMatrixMode(GL_PROJECTION); glPopMatrix(); }
void moDeformationGrid::UpdateParameters() { int p_Width; int p_Height; p_Width = m_Width; p_Height = m_Height; m_Width = m_Config.Int( moR(DEFORMATIONGRID_WIDTH) ); m_Height = m_Config.Int( moR(DEFORMATIONGRID_HEIGHT) ); m_Precision = m_Config.Double( moR(DEFORMATIONGRID_PRECISION) ); showgrid = m_Config.Int(moR(DEFORMATIONGRID_SHOWGRID)); clear = m_Config.Int( moR(DEFORMATIONGRID_CLEAR) ); pImage = (moTexture*) m_Config[moR(DEFORMATIONGRID_TEXTURE)].GetData()->Pointer(); PosTextX0 = m_Config[moR(DEFORMATIONGRID_TEXCOORD_X1)].GetData()->Fun()->Eval(state.tempo.ang); PosTextX1 = m_Config[moR(DEFORMATIONGRID_TEXCOORD_X2)].GetData()->Fun()->Eval(state.tempo.ang) * ( pImage!=NULL ? pImage->GetMaxCoordS() : 1.0 ); PosTextY0 = m_Config[moR(DEFORMATIONGRID_TEXCOORD_Y1)].GetData()->Fun()->Eval(state.tempo.ang); PosTextY1 = m_Config[moR(DEFORMATIONGRID_TEXCOORD_Y2)].GetData()->Fun()->Eval(state.tempo.ang) * ( pImage!=NULL ? pImage->GetMaxCoordT() : 1.0 ); moParam& PointParam = m_Config[moR(DEFORMATIONGRID_POINTS)]; int nsaved = PointParam.GetValue().GetSubValueCount(); if (m_Width!=p_Width || m_Height!=p_Height) { if ( nsaved == 0 || nsaved!=m_Width*m_Height*4 ) { MODebug2->Log(moText("moDeformationGrid::UpdateParameters ") + moText(" craeting new set of points") + IntToStr(m_Width*m_Height) ); ///Es una nueva configuracion , generamos los puntos que modificaremos.... ///creamos el nuevo array pero ojo!!!!! ///si ya existen datos y qrmos generar mas puntos , deberiamos interpolar aquellos nuevos a los viejos!!!! if (m_Points) { delete [] m_Points; } m_Points = new moVector2f [ m_Width * m_Height ]; if (m_TPoints) { delete [] m_TPoints; } m_TPoints = new moVector2f [ m_Width * m_Height ]; if ( nsaved>0 && nsaved!=m_Width*m_Height*4 ) { ///copy points???? ///interpolating?!!?! ugggglyyyy ///reset for now or Duplicate.... i like duplicate!!! or divide!!!! ResetPuntos(); } else { ResetPuntos(); } ///saving to a new value in the config file!!!! moValue myPoints; moValueBase mBase; mBase.SetType( MO_VALUE_NUM_FLOAT ); for(int j =0 ; j< m_Height; j++) { for(int i =0 ; i< m_Width; i++) { mBase.SetFloat( m_Points[i+j*m_Width].X() ); myPoints.AddSubValue( mBase ); mBase.SetFloat( m_Points[i+j*m_Width].Y() ); myPoints.AddSubValue( mBase ); mBase.SetFloat( m_TPoints[i+j*m_Width].X() ); myPoints.AddSubValue( mBase ); mBase.SetFloat( m_TPoints[i+j*m_Width].Y() ); myPoints.AddSubValue( mBase ); } } ///Finally we add the points PointParam.AddValue( myPoints ); m_PointsActualIndex = PointParam.GetValuesCount() - 1; PointParam.SetIndexValue( m_PointsActualIndex ); ///And save!!! or not ?! } else if ( nsaved==m_Width*m_Height*4 ) { MODebug2->Log(moText("moDeformationGrid::UpdateParameters ") + moText(" loading points from config file: ") + IntToStr(m_Width*m_Height) ); if (m_Points) { delete [] m_Points; } m_Points = new moVector2f [ m_Width * m_Height ]; if (m_TPoints) { delete [] m_TPoints; } m_TPoints = new moVector2f [ m_Width * m_Height ]; moValue& myPoints = PointParam.GetValue(); m_PointsActualIndex = PointParam.GetIndexValue(); ///LOAD from config file!!!!! surely from first time, it could be that we didnt match te correcte param value with our width and height too ///if you have a width and height, and you choose a correct config value, it will works??? for(int j =0 ; j< m_Height; j++) { for(int i =0 ; i< m_Width; i++) { m_Points[i+j*m_Width].X()= myPoints.GetSubValue( (i + j*m_Width)*4 ).Float(); m_Points[i+j*m_Width].Y()= myPoints.GetSubValue( (i + j*m_Width)*4 + 1 ).Float(); m_TPoints[i+j*m_Width].X()= myPoints.GetSubValue( (i + j*m_Width)*4 + 2 ).Float(); m_TPoints[i+j*m_Width].Y()= myPoints.GetSubValue( (i + j*m_Width)*4 + 3 ).Float(); } } } } }
MOboolean moNetOSCIn::Init() { int dev; MOuint i, n, n_dev, n_hosts; moText conf, dev_name; //========================== // CORRESPONDE A UN PREINIT //========================== // Loading config file. conf = m_pResourceManager->GetDataMan()->GetDataPath() + moSlash; conf += GetConfigName(); conf += moText(".cfg"); if (m_Config.LoadConfig(conf) != MO_CONFIG_OK ) { moText text = "Couldn't load netoscin config"; MODebug->Push(text); return false; } //========================== // INIT //========================== moDefineParamIndex( NETOSCIN_INLET, moText("inlet") ); moDefineParamIndex( NETOSCIN_OUTLET, moText("outlet") ); moDefineParamIndex( NETOSCIN_HOSTS , moText("hosts") ); moDefineParamIndex( NETOSCIN_PORT , moText("port") ); moDefineParamIndex( NETOSCIN_RECEIVEEVENTS, moText("receive_events") ); bool events_present; bool trackersystem_present; events_present = false; trackersystem_present = false; for( int i=0; i<m_Config.GetParam( moR(NETOSCIN_OUTLET) ).GetValuesCount(); i++) { moValue val( m_Config.GetParam( moR(NETOSCIN_OUTLET) ).GetValue(i)); if ( val.GetSubValue().Text()==moText("EVENTS")) { events_present = true; } if ( val.GetSubValue().Text()==moText("TRACKERSYSTEM")) { trackersystem_present = true; } } if (!events_present) { m_Config.GetParam( moR(NETOSCIN_OUTLET) ).AddValue( moValue( "EVENTS", "TXT", "DATA", "TXT" ).Ref() ); } if (!trackersystem_present) { m_Config.GetParam( moR(NETOSCIN_OUTLET) ).AddValue( moValue( "EVENTS", "TXT", "DATA", "TXT" ).Ref() ); } moMoldeoObject::Init(); for(int a=0; a <GetOutlets()->Count(); a++) { if ( m_Outlets[a]->GetConnectorLabelName() == moText("EVENTS") ) { m_pEvents = m_Outlets[a]; } } // Reading hosts names and ports. n = m_Config.GetParamIndex("hosts"); n_hosts = m_Config.GetValuesCount(n); host_name.Init(n_hosts, moText("")); host_port.Init(n_hosts, 0); for(i = 0; i < n_hosts; i++) { host_name.Set(i, m_Config.GetParam(n).GetValue(i).GetSubValue(0).Text()); host_port.Set(i, m_Config.GetParam(n).GetValue(i).GetSubValue(1).Int()); } for(i = 0; i < n_hosts; i++) { moOscPacketListener* pListener = NULL; pListener = new moOscPacketListener(); if (pListener) { /* if ( host_name[i] == moText("all") ) { if (host_port[i]>0) pListener->Set( new UdpListeningReceiveSocket( IpEndpointName( IpEndpointName::ANY_ADDRESS, host_port[i] ), pListener ) ); else pListener->Set( new UdpListeningReceiveSocket( IpEndpointName( IpEndpointName::ANY_ADDRESS, IpEndpointName::ANY_PORT ), pListener ) ); } else if ( host_name[i] != moText("") ) { moTextArray ipNumbers; unsigned long ipaddress = 0; unsigned long i1=0, i2=0, i3=0, i4=0; ipNumbers = host_name[i].Explode("."); if (ipNumbers.Count()==4) { i1 = atoi(ipNumbers[0]); i2 = atoi(ipNumbers[1]); i3 = atoi(ipNumbers[2]); i4 = atoi(ipNumbers[3]); ipaddress = (i1 << 24) & (i2<<16) & (i3<<8) & i4; } else { ipaddress = IpEndpointName::ANY_ADDRESS; } if (host_port[i]>0) pListener->Set( new UdpListeningReceiveSocket( IpEndpointName( ipaddress, host_port[i] ), pListener ) ); else pListener->Set( new UdpListeningReceiveSocket( IpEndpointName( ipaddress, IpEndpointName::ANY_PORT ), pListener ) ); } else { pListener->Set( new UdpListeningReceiveSocket( IpEndpointName( IpEndpointName::ANY_ADDRESS, IpEndpointName::ANY_PORT ), pListener ) ); } */ UdpListeningReceiveSocket *socket = NULL; try { socket = new UdpListeningReceiveSocket( IpEndpointName( IpEndpointName::ANY_ADDRESS, host_port[i] ), pListener ); } catch (std::exception &e) { MODebug2->Error(moText("could not bind to UDP port ")); socket = NULL; } if (socket!=NULL) { if (!socket->IsBound()) { delete socket; socket = NULL; MODebug2->Error( moText("NETOSCIN UDP socket not connected:") + + (moText)host_name[i] + moText(" PORT:") + IntToStr(host_port[i]) ); } else { MODebug2->Message( moText("NetOSCIn listening to OSC messages on UDP port ")); pListener->Set(socket); } } if (socket) { m_OscPacketListeners.Add( pListener ); if (pListener->CreateThread()) { MODebug2->Message( moText(" NETOSCIN OK: HOST NAME:") + (moText)host_name[i] + moText(" PORT:") + IntToStr(host_port[i]) ); } else { MODebug2->Error( moText("NETOSCIN:") + + (moText)host_name[i] + moText(" PORT:") + IntToStr(host_port[i]) ); } } } } return true; }
MOboolean moSceneEffect::Init() { if (!PreInit()) return false; moDefineParamIndex( SCENE_INLET, "inlet" ); moDefineParamIndex( SCENE_OUTLET, "outlet" ); moDefineParamIndex( SCENE_SCRIPT, "script" ); moDefineParamIndex( SCENE_ALPHA, "alpha" ); moDefineParamIndex( SCENE_COLOR, "color" ); moDefineParamIndex( SCENE_SYNC, "syncro" ); moDefineParamIndex( SCENE_PHASE, "phase" ); moDefineParamIndex( SCENE_PREEFFECTS, "preeffect" ); moDefineParamIndex( SCENE_EFFECTS, "effect" ); moDefineParamIndex( SCENE_POSTEFFECTS, "posteffect" ); moDefineParamIndex( SCENE_STATES, "scene_states" ); moDefineParamIndex( SCENE_SEQUENCE_MODE, "sequence_mode" ); moDefineParamIndex( SCENE_SEQUENCE_DURATION, "sequence_duration" ); moDefineParamIndex( SCENE_SEQUENCE_LOOP, "sequence_loop" ); moDefineParamIndex( SCENE_CREATE_LAYER, "create_layer" ); m_i_scene_states = -1; m_EffectManager.Init(); m_EffectManager.m_pEffectManager = &m_EffectManager; m_EffectManager.m_pResourceManager = GetResourceManager(); moEffect* newEffect = NULL; bool res = false; int pre=-1,on=-1; /** CREATING NEW LAYER!! */ //RenderMan->CreateNewLayer( this ); m_Config.SetCurrentParam( "preeffect" ); if (m_Config.FirstValue()) { do { moValue& mVal(m_Config.GetCurrentValue()); moMobDefinition MoldeoObjectDef( mVal.GetSubValue( MO_CFG_EFFECT).Text(), mVal.GetSubValue( MO_CFG_EFFECT_CONFIG).Text(), MO_OBJECT_PREEFFECT, mVal.GetSubValue( MO_CFG_EFFECT_LABEL).Text() ); newEffect = m_EffectManager.New( MoldeoObjectDef ); if (newEffect) { res = newEffect->Init(); pre = mVal.GetSubValue(MO_CFG_EFFECT_PRE).Int(); on = mVal.GetSubValue(MO_CFG_EFFECT_ON).Int(); if (pre>=0) newEffect->GetConfig()->SetCurrentPreConf(pre); if (on>0) newEffect->Activate(); else newEffect->Deactivate(); } } while (m_Config.NextValue()); } m_Config.SetCurrentParam( "effect" ); if (m_Config.FirstValue()) { do { moValue& mVal(m_Config.GetCurrentValue()); moMobDefinition MoldeoObjectDef( mVal.GetSubValue( MO_CFG_EFFECT).Text(), mVal.GetSubValue( MO_CFG_EFFECT_CONFIG).Text(), MO_OBJECT_EFFECT, mVal.GetSubValue( MO_CFG_EFFECT_LABEL).Text() ); newEffect = m_EffectManager.New( MoldeoObjectDef ); if (newEffect) { res = newEffect->Init(); pre = mVal.GetSubValue(MO_CFG_EFFECT_PRE).Int(); on = mVal.GetSubValue(MO_CFG_EFFECT_ON).Int(); if (pre>=0) newEffect->GetConfig()->SetCurrentPreConf(pre); if (on>0) newEffect->Activate(); else newEffect->Deactivate(); } } while (m_Config.NextValue()); } m_Config.SetCurrentParam( "posteffect" ); if (m_Config.FirstValue()) { do { moValue& mVal(m_Config.GetCurrentValue()); moMobDefinition MoldeoObjectDef( mVal.GetSubValue( MO_CFG_EFFECT).Text(), mVal.GetSubValue( MO_CFG_EFFECT_CONFIG).Text(), MO_OBJECT_POSTEFFECT, mVal.GetSubValue( MO_CFG_EFFECT_LABEL).Text() ); newEffect = m_EffectManager.New( MoldeoObjectDef ); if (newEffect) { res = newEffect->Init(); pre = mVal.GetSubValue(MO_CFG_EFFECT_PRE).Int(); on = mVal.GetSubValue(MO_CFG_EFFECT_ON).Int(); if (pre>=0) newEffect->GetConfig()->SetCurrentPreConf(pre); if (on>0) newEffect->Activate(); else newEffect->Deactivate(); } } while (m_Config.NextValue()); } m_Config.SetCurrentParam( "scene_states" ); m_n_scene_states = m_Config.GetCurrentParam().GetValuesCount(); int i_scene_states = 0; if (m_Config.FirstValue()) { do { moValue& mVal(m_Config.GetCurrentValue()); moSceneState SceneState; if (mVal.GetSubValueCount()>1) { SceneState.m_state_name = mVal.GetSubValue( 0 ).Text(); SceneState.Set( mVal.GetSubValue( 1 ).Text()); } m_SceneStates[i_scene_states] = SceneState; MODebug2->Message("scene_states: " + mVal.GetSubValue( 0 ).Text() ); i_scene_states+= 1; } while (m_Config.NextValue()); } m_Config[ moR(SCENE_STATES)].SetIndexValue(0); m_Config.SetCurrentPreConf( 0 ); return true; }
void moEffectSound::Draw( moTempo* tempogral, moEffectState* parentstate ) { MOint indeximage; MOdouble PosTextX0, PosTextX1, PosTextY0, PosTextY1; int ancho,alto; int w = m_pResourceManager->GetRenderMan()->ScreenWidth(); int h = m_pResourceManager->GetRenderMan()->ScreenHeight(); bool bReBalance = false; PreDraw( tempogral, parentstate); /* if (m_SoundFilename!=m_Config[moParamReference(SOUND_SOUND)][MO_SELECTED][0].Text() ) { m_SoundFilename = m_Config[moParamReference(SOUND_SOUND)][MO_SELECTED][0].Text(); m_SoundFilenameFull = (moText)m_pResourceManager->GetDataMan()->GetDataPath() + (moText)moSlash + (moText)m_SoundFilename; m_Audio.BuildLiveSound( m_SoundFilenameFull ); } */ /* if ( tempogral->ticks>1 && !moTimeManager::MoldeoTimer->Paused() && !m_bAudioStarted ) { m_Audio.Seek( tempogral->ticks ); m_Audio.Play(); m_bAudioStarted = true; } else if ( tempogral->ticks==0 && !moTimeManager::MoldeoTimer->Started() ) { m_Audio.Stop(); m_bAudioStarted = false; } if ( last_ticks == tempogral->ticks ) { m_Audio.Pause(); m_Audio.Seek( tempogral->ticks ); m_bAudioStarted = false; } */ /* moStreamState audiostate = m_Audio.GetState(); moText textstate = m_Audio.StateToText( audiostate ); long audioposition; last_ticks = moGetTicks(); audioposition = m_Audio.GetPosition(); if ( (long) abs(audioposition - last_ticks) > 8000 ) { if (audiostate!=MO_STREAMSTATE_STOPPED) m_Audio.Seek( last_ticks ); audioposition = last_ticks; } moSetDuration( audioposition ); if (moTimeManager::MoldeoTimer->Paused()) { if (audiostate!=MO_STREAMSTATE_PAUSED) m_Audio.Pause(); } else { if ( moTimeManager::MoldeoTimer->Started() ) { if (audiostate!=MO_STREAMSTATE_PLAYING) m_Audio.Play(); } else { if (audiostate!=MO_STREAMSTATE_STOPPED) m_Audio.Stop(); } } */ // Guardar y resetar la matriz de vista del modelo // glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glLoadIdentity(); // Reset The View // Cambiar la proyeccion para una vista ortogonal // glDisable(GL_DEPTH_TEST); // Disables Depth Testing glMatrixMode(GL_PROJECTION); // Select The Projection Matrix glLoadIdentity(); // Reset The Projection Matrix glOrtho(0,w,0,h,-1,1); // Set Up An Ortho Screen // Funcion de blending y de alpha channel // glEnable(GL_BLEND); glDisable(GL_ALPHA); SetColor( m_Config[moR(SOUND_COLOR)][MO_SELECTED], m_Config[moR(SOUND_ALPHA)][MO_SELECTED], m_EffectState ); moSound* NextSound = NULL; if (m_Config[ moR(SOUND_SOUND) ].GetData()) NextSound = m_Config[ moR(SOUND_SOUND) ].GetData()->Sound(); if (NextSound && Sound) { ///si se cambió de película if ( Sound->GetName() != NextSound->GetName() ) { if (Sound->Initialized()) { ///parar o pausar... ///faltaria un parametro: STOP on CHANGE, o PAUSE ON CHANGE Sound->Stop(); bReBalance = true; } } } Sound = NextSound; int mLoop = m_Config.Int(moR(SOUND_LOOP)); int mMode = m_Config.Int(moR(SOUND_MODE)); MOulong AudioPosition,AudioDuration; //in ms moText tPosition,tDuration; if (Sound) { AudioPosition = Sound->GetPosition(); AudioDuration = Sound->GetDuration(); tPosition = moVideoManager::NanosecondsToTimecode((MOuint64)AudioPosition*(MOuint64)1000000); tDuration = moVideoManager::NanosecondsToTimecode((MOuint64)AudioDuration*(MOuint64)1000000); double mUserPosition = m_Config.Eval(moR(SOUND_POSITION)); if (mUserPosition!=m_UserPosition) { //MODebug2->Push(" mUserPosition:" + FloatToStr(mUserPosition) + "/" + FloatToStr(m_UserPosition) ); Sound->Seek( (MOulong)mUserPosition, 1.0 ); m_UserPosition = mUserPosition; } ///estamos en syncro de todas maneras con el clock de la Consola... if ( moIsTimerPaused() ) { Sound->Pause(); } /// caso por Timer PARADO (NOT STARTED) if ( moIsTimerStopped() ) { if (Sound->IsPlaying()) Sound->Stop(); } if (!Sound->IsPlaying() && moIsTimerPlaying() ) { Sound->Play(); } switch((SoundMode)mMode) { case MO_SOUND_MODE_PLAYLIST: if ( AudioPosition >= AudioDuration || Sound->IsEOS()) { if ( mLoop && m_Config.GetParam(moR(SOUND_SOUND)).GetIndexValue() == (m_Config.GetParam(moR(SOUND_SOUND)).GetValuesCount()-1) ) { m_Config.GetParam(moR(SOUND_SOUND)).FirstValue(); } else m_Config.GetParam(moR(SOUND_SOUND)).NextValue(); if (Sound->State()!=MO_STREAMSTATE_STOPPED) { Sound->Stop(); } MODebug2->Push( "EOS:" + IntToStr((int)Sound->IsEOS()) ); } break; default: if (mLoop) { if ( AudioPosition >= AudioDuration || Sound->IsEOS()) { Sound->Pause(); Sound->Seek( 0, 1.0 ); //if ( m_FramePosition >= (Sound->GetFrameCount()-1) || Sound->IsEOS() ) { //Sound->Pause(); // //Sound->Play(); //} } } break; } float mVolume = m_Config.Eval( moR(SOUND_VOLUME) ); if ( mVolume != Sound->GetVolume() || bReBalance ) { Sound->SetVolume( mVolume ); } float mPitch = m_Config.Eval( moR(SOUND_PITCH) ); long pitchi1 = ( mPitch * 100.0 ); long pitchi2 = ( Sound->GetPitch() * 100.0 ); if ( pitchi1 != pitchi2 ) { mPitch = (float)pitchi1 / 100.0; Sound->SetPitch( mPitch ); } float mBalance = m_Config.Eval( moR(SOUND_BALANCE) ); if ( mBalance != Sound->GetBalance() || bReBalance ) { Sound->SetBalance( mBalance ); } float mEchoDelay = m_Config.Eval( moR(SOUND_ECHO_DELAY) ); if ( mEchoDelay != Sound->GetEchoDelay() || bReBalance ) { Sound->SetEchoDelay( mEchoDelay ); } float mEchoIntensity = m_Config.Eval( moR(SOUND_ECHO_INTENSITY) ); if ( mEchoIntensity != Sound->GetEchoIntensity() || bReBalance ) { Sound->SetEchoIntensity( mEchoIntensity ); } float mEchoFeedback = m_Config.Eval( moR(SOUND_ECHO_FEEDBACK) ); if ( mEchoFeedback != Sound->GetEchoFeedback() || bReBalance ) { Sound->SetEchoFeedback( mEchoFeedback ); } } moFont* pFont = m_pResourceManager->GetFontMan()->GetFont(0); /* textstate+= moText(" position") + IntToStr(audioposition); textstate+= moText(" diff:") + (moText)IntToStr( abs(audioposition - last_ticks) ); */ moText textaudio = tPosition + " / " + tDuration; if (pFont) { /* pFont->Draw( 0.0, 0.0, textaudio ); */ } }
void moPostEffectVideoWall::Draw( moTempo* tempogral,moEffectState* parentstate) { PreDraw( tempogral, parentstate); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); /* glColor4f( m_Config[moR(VIDEOWALL_COLOR)][MO_SELECTED][MO_RED].Fun()->Eval(m_EffectState.tempo.ang) * state.tintr, m_Config[moR(VIDEOWALL_COLOR)][MO_SELECTED][MO_GREEN].Fun()->Eval(m_EffectState.tempo.ang) * state.tintg, m_Config[moR(VIDEOWALL_COLOR)][MO_SELECTED][MO_BLUE].Fun()->Eval(m_EffectState.tempo.ang) * state.tintb, m_Config[moR(VIDEOWALL_COLOR)][MO_SELECTED][MO_ALPHA].Fun()->Eval(m_EffectState.tempo.ang) * m_Config[moR(VIDEOWALL_ALPHA)].GetData()->Fun()->Eval(m_EffectState.tempo.ang) * state.alpha); */ SetColor( m_Config[moR(VIDEOWALL_COLOR)], m_Config[moR(VIDEOWALL_ALPHA)], m_EffectState ); MOint cf,i,j; cf = m_Config.GetParam(moR(VIDEOWALL_CONFIGURATION)).GetValue().GetSubValue(0).Int(); glClearColor(0.0, 0.0, 0.0, 1.0); //glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClear(GL_DEPTH_BUFFER_BIT); //glDisable(GL_BLEND); glDisable(GL_DEPTH_TEST); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); MOint w = m_pResourceManager->GetRenderMan()->RenderWidth(); MOint h = m_pResourceManager->GetRenderMan()->RenderHeight(); MOfloat s0 = 0.35; MOfloat s1 = 0.55; MOfloat t0 = 0.35; MOfloat t1 = 0.55; glBindTexture(GL_TEXTURE_2D, m_pResourceManager->GetRenderMan()->RenderTexGLId(MO_EFFECTS_TEX)); if(cf==0) { glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glTranslatef(0.0, 0.0, -2.5+m_Config[moR(VIDEOWALL_TRANSLATEZ)].GetData()->Fun()->Eval(m_EffectState.tempo.ang)); //glRotatef(m_EffectState.tempo.ang * 30.0, 1, 0, 0); //glRotatef(m_EffectState.tempo.ang * 40.0, 0, 1, 0); //glRotatef(m_EffectState.tempo.ang * 50.0, 0, 0, 1); glBegin(GL_QUADS); glTexCoord2f(s0, t0); glVertex2f(-0.5, -0.5); glTexCoord2f(s0, t1); glVertex2f(-0.5, 0.5); glTexCoord2f(s1, t1); glVertex2f( 0.5, 0.5); glTexCoord2f(s1, t0); glVertex2f( 0.5, -0.5); glEnd(); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glTranslatef(0.0, 1.0, -2.5+m_Config[moR(VIDEOWALL_TRANSLATEZ)].GetData()->Fun()->Eval(m_EffectState.tempo.ang)); glBegin(GL_QUADS); glTexCoord2f(s0, t0); glVertex2f(-0.5, -0.5); glTexCoord2f(s0, t1); glVertex2f(-0.5, 0.5); glTexCoord2f(s1, t1); glVertex2f( 0.5, 0.5); glTexCoord2f(s1, t0); glVertex2f( 0.5, -0.5); glEnd(); // Update the modelview matrix glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glTranslatef(1.0, 0.0, -2.5+m_Config[moR(VIDEOWALL_TRANSLATEZ)].GetData()->Fun()->Eval(m_EffectState.tempo.ang)); glBegin(GL_QUADS); glTexCoord2f(s0, t0); glVertex2f(-0.5, -0.5); glTexCoord2f(s0, t1); glVertex2f(-0.5, 0.5); glTexCoord2f(s1, t1); glVertex2f( 0.5, 0.5); glTexCoord2f(s1, t0); glVertex2f( 0.5, -0.5); glEnd(); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glTranslatef(1.0, 1.0, -2.5+m_Config[moR(VIDEOWALL_TRANSLATEZ)].GetData()->Fun()->Eval(m_EffectState.tempo.ang)); glBegin(GL_QUADS); glTexCoord2f(s0, t0); glVertex2f(-0.5, -0.5); glTexCoord2f(s0, t1); glVertex2f(-0.5, 0.5); glTexCoord2f(s1, t1); glVertex2f( 0.5, 0.5); glTexCoord2f(s1, t0); glVertex2f( 0.5, -0.5); glEnd(); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glTranslatef(1.0, -1.0, -2.5+m_Config[moR(VIDEOWALL_TRANSLATEZ)].GetData()->Fun()->Eval(m_EffectState.tempo.ang)); glBegin(GL_QUADS); glTexCoord2f(s0, t0); glVertex2f(-0.5, -0.5); glTexCoord2f(s0, t1); glVertex2f(-0.5, 0.5); glTexCoord2f(s1, t1); glVertex2f( 0.5, 0.5); glTexCoord2f(s1, t0); glVertex2f( 0.5, -0.5); glEnd(); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glTranslatef(-1.0, 1.0, -2.5+m_Config[moR(VIDEOWALL_TRANSLATEZ)].GetData()->Fun()->Eval(m_EffectState.tempo.ang)); glBegin(GL_QUADS); glTexCoord2f(s0, t0); glVertex2f(-0.5, -0.5); glTexCoord2f(s0, t1); glVertex2f(-0.5, 0.5); glTexCoord2f(s1, t1); glVertex2f( 0.5, 0.5); glTexCoord2f(s1, t0); glVertex2f( 0.5, -0.5); glEnd(); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glTranslatef(-1.0, -1.0, -2.5+m_Config[moR(VIDEOWALL_TRANSLATEZ)].GetData()->Fun()->Eval(m_EffectState.tempo.ang)); glBegin(GL_QUADS); glTexCoord2f(s0, t0); glVertex2f(-0.5, -0.5); glTexCoord2f(s0, t1); glVertex2f(-0.5, 0.5); glTexCoord2f(s1, t1); glVertex2f( 0.5, 0.5); glTexCoord2f(s1, t0); glVertex2f( 0.5, -0.5); glEnd(); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glTranslatef(-1.0, 0.0, -2.5+m_Config[moR(VIDEOWALL_TRANSLATEZ)].GetData()->Fun()->Eval(m_EffectState.tempo.ang)); glBegin(GL_QUADS); glTexCoord2f(s0, t0); glVertex2f(-0.5, -0.5); glTexCoord2f(s0, t1); glVertex2f(-0.5, 0.5); glTexCoord2f(s1, t1); glVertex2f( 0.5, 0.5); glTexCoord2f(s1, t0); glVertex2f( 0.5, -0.5); glEnd(); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glTranslatef(0.0, -1.0, -2.5+m_Config[moR(VIDEOWALL_TRANSLATEZ)].GetData()->Fun()->Eval(m_EffectState.tempo.ang)); glBegin(GL_QUADS); glTexCoord2f(s0, t0); glVertex2f(-0.5, -0.5); glTexCoord2f(s0, t1); glVertex2f(-0.5, 0.5); glTexCoord2f(s1, t1); glVertex2f( 0.5, 0.5); glTexCoord2f(s1, t0); glVertex2f( 0.5, -0.5); glEnd(); } /*version cuatro reflejados*/ if(cf==1) { glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glTranslatef(0.0, 0.0, -2.5+m_Config[moR(VIDEOWALL_TRANSLATEZ)].GetData()->Fun()->Eval(m_EffectState.tempo.ang)); glRotatef(m_EffectState.tempo.ang*2*15.0,0.0,0.0,1.0); glBegin(GL_QUADS); glTexCoord2f(s0, t0); glVertex2f(-1.0, 0.0); glTexCoord2f(s0, t1); glVertex2f(-1.0, 1.0); glTexCoord2f(s1, t1); glVertex2f( 0.0, 1.0); glTexCoord2f(s1, t0); glVertex2f( 0.0, 0.0); glTexCoord2f(s0, t0); glVertex2f(1.0, 0.0); glTexCoord2f(s0, t1); glVertex2f(1.0, 1.0); glTexCoord2f(s1, t1); glVertex2f( 0.0, 1.0); glTexCoord2f(s1, t0); glVertex2f( 0.0, 0.0); glTexCoord2f(s0, t0); glVertex2f(-1.0, 0.0); glTexCoord2f(s0, t1); glVertex2f(-1.0, -1.0); glTexCoord2f(s1, t1); glVertex2f( 0.0, -1.0); glTexCoord2f(s1, t0); glVertex2f( 0.0, 0.0); glTexCoord2f(s0, t0); glVertex2f(1.0, 0.0); glTexCoord2f(s0, t1); glVertex2f(1.0, -1.0); glTexCoord2f(s1, t1); glVertex2f( 0.0, -1.0); glTexCoord2f(s1, t0); glVertex2f( 0.0, 0.0); glEnd(); } if(cf==2) { glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glTranslatef(0.0, 0.0, -2.5+m_Config[moR(VIDEOWALL_TRANSLATEZ)].GetData()->Fun()->Eval(m_EffectState.tempo.ang)); glRotatef(m_EffectState.tempo.ang*2.0*15,0.0,0.0,1.0); glBegin(GL_QUADS); glTexCoord2f(s0, t0); glVertex2f(-1.0-1.0, 0.0+1.0); glTexCoord2f(s0, t1); glVertex2f(-1.0-1.0, 1.0+1.0); glTexCoord2f(s1, t1); glVertex2f( 0.0-1.0, 1.0+1.0); glTexCoord2f(s1, t0); glVertex2f( 0.0-1.0, 0.0+1.0); glTexCoord2f(s0, t0); glVertex2f(1.0+1.0, 0.0+1.0); glTexCoord2f(s0, t1); glVertex2f(1.0+1.0, 1.0+1.0); glTexCoord2f(s1, t1); glVertex2f( 0.0+1.0, 1.0+1.0); glTexCoord2f(s1, t0); glVertex2f( 0.0+1.0, 0.0+1.0); glTexCoord2f(s0, t0); glVertex2f(-1.0, 0.0); glTexCoord2f(s0, t1); glVertex2f(-1.0, 1.0); glTexCoord2f(s1, t1); glVertex2f( 0.0, 1.0); glTexCoord2f(s1, t0); glVertex2f( 0.0, 0.0); glTexCoord2f(s0, t0); glVertex2f(1.0, 0.0); glTexCoord2f(s0, t1); glVertex2f(1.0, 1.0); glTexCoord2f(s1, t1); glVertex2f( 0.0, 1.0); glTexCoord2f(s1, t0); glVertex2f( 0.0, 0.0); glTexCoord2f(s0, t0); glVertex2f(-1.0, 0.0); glTexCoord2f(s0, t1); glVertex2f(-1.0, -1.0); glTexCoord2f(s1, t1); glVertex2f( 0.0, -1.0); glTexCoord2f(s1, t0); glVertex2f( 0.0, 0.0); glTexCoord2f(s0, t0); glVertex2f(1.0, 0.0); glTexCoord2f(s0, t1); glVertex2f(1.0, -1.0); glTexCoord2f(s1, t1); glVertex2f( 0.0, -1.0); glTexCoord2f(s1, t0); glVertex2f( 0.0, 0.0); glTexCoord2f(s0, t0); glVertex2f(-1.0-1.0, 0.0-1.0); glTexCoord2f(s0, t1); glVertex2f(-1.0-1.0, -1.0-1.0); glTexCoord2f(s1, t1); glVertex2f( 0.0-1.0, -1.0-1.0); glTexCoord2f(s1, t0); glVertex2f( 0.0-1.0, 0.0-1.0); glTexCoord2f(s0, t0); glVertex2f(1.0+1.0, 0.0-1.0); glTexCoord2f(s0, t1); glVertex2f(1.0+1.0, -1.0-1.0); glTexCoord2f(s1, t1); glVertex2f( 0.0+1.0, -1.0-1.0); glTexCoord2f(s1, t0); glVertex2f( 0.0+1.0, 0.0-1.0); glEnd(); } if(cf==3) { glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glTranslatef(0.0, 0.0, -2.5+m_Config[moR(VIDEOWALL_TRANSLATEZ)].GetData()->Fun()->Eval(m_EffectState.tempo.ang)); glRotatef(m_EffectState.tempo.ang*2.0*15,0.0,0.0,1.0); glBegin(GL_TRIANGLES); for(i=0;i<4;i++) { for(j=0;j<4;j++) { if((i % 2)==0 &&(j % 2)==0) { glTexCoord2f(s1, t1); glVertex2f(-2.0+1.0*i,2.0-1.0*j); glTexCoord2f(s1, t0); glVertex2f(-2.0+1.0*i,2.0-1.0*(j+1)); glTexCoord2f(s0, t0); glVertex2f(-2.0+1.0*(i+1), 2.0-1.0*(j+1)); glTexCoord2f(s1, t1); glVertex2f(-2.0+1.0*i,2.0-1.0*j); glTexCoord2f(s0, t0); glVertex2f(-2.0+1.0*(i+1), 2.0-1.0*(j+1)); glTexCoord2f(s1, t0); glVertex2f(-2.0+1.0*(i+1),2.0-1.0*j); } else if((i % 2)==1 &&(j % 2)==0) { glTexCoord2f(s1, t0); glVertex2f(-2.0+1.0*i,2.0-1.0*j); glTexCoord2f(s0, t0); glVertex2f(-2.0+1.0*i,2.0-1.0*(j+1)); glTexCoord2f(s1, t1); glVertex2f(-2.0+1.0*(i+1), 2.0-1.0*j); glTexCoord2f(s1, t1); glVertex2f(-2.0+1.0*(i+1),2.0-1.0*j); glTexCoord2f(s1, t0); glVertex2f(-2.0+1.0*(i+1), 2.0-1.0*(j+1)); glTexCoord2f(s0, t0); glVertex2f(-2.0+1.0*i,2.0-1.0*(j+1)); } else if((i % 2)==0 &&(j % 2)==1) { glTexCoord2f(s1, t0); glVertex2f(-2.0+1.0*i,2.0-1.0*j); glTexCoord2f(s1, t1); glVertex2f(-2.0+1.0*i,2.0-1.0*(j+1)); glTexCoord2f(s0, t0); glVertex2f(-2.0+1.0*(i+1), 2.0-1.0*j); glTexCoord2f(s0, t0); glVertex2f(-2.0+1.0*(i+1),2.0-1.0*j); glTexCoord2f(s1, t0); glVertex2f(-2.0+1.0*(i+1), 2.0-1.0*(j+1)); glTexCoord2f(s1, t1); glVertex2f(-2.0+1.0*i,2.0-1.0*(j+1)); } else if((i % 2)==1 &&(j % 2)==1) { glTexCoord2f(s0, t0); glVertex2f(-2.0+1.0*i,2.0-1.0*j); glTexCoord2f(s1, t0); glVertex2f(-2.0+1.0*i,2.0-1.0*(j+1)); glTexCoord2f(s1, t1); glVertex2f(-2.0+1.0*(i+1), 2.0-1.0*(j+1)); glTexCoord2f(s0, t0); glVertex2f(-2.0+1.0*i,2.0-1.0*j); glTexCoord2f(s1, t1); glVertex2f(-2.0+1.0*(i+1), 2.0-1.0*(j+1)); glTexCoord2f(s1, t0); glVertex2f(-2.0+1.0*(i+1),2.0-1.0*j); } } } glEnd(); } float an,an2,rad; rad = 2.0 * m_EffectState.amplitude; if(cf==4) { glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glTranslatef(0.0, 0.0, -2.5+m_Config[moR(VIDEOWALL_TRANSLATEZ)].GetData()->Fun()->Eval(m_EffectState.tempo.ang)); glRotatef(m_EffectState.tempo.ang*2.0*15,0.0,0.0,1.0); glBegin(GL_TRIANGLE_FAN); //el centro glTexCoord2f(s0, t0); glVertex2f(0.0,0.0); //los bordes for(i=0;i<23;i++) { an =(float)(i) *(moMathf::PI / 12.0f); an2 =(float)(i+1) *(moMathf::PI / 12.0f); if((i % 2) ==0) { glTexCoord2f(s0, t1); glVertex2f(rad*cos(an),2.0*sin(an)); glTexCoord2f(s1, t1); glVertex2f(rad*cos(an2),2.0*sin(an2)); } else { glTexCoord2f(s1, t1); glVertex2f(rad*cos(an),2.0*sin(an)); glTexCoord2f(s0, t1); glVertex2f(rad*cos(an2),2.0*sin(an2)); } } glTexCoord2f(s0, t1); glVertex2f(rad*cos(0.0),rad*sin(0.0)); glEnd(); } if(cf==5) { glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glTranslatef(0.0, 0.0, -2.5+m_Config[moR(VIDEOWALL_TRANSLATEZ)].GetData()->Fun()->Eval(m_EffectState.tempo.ang)); glRotatef(m_EffectState.tempo.ang*2.0*15,1.0,1.0,1.0); glBegin(GL_TRIANGLE_FAN); //el centro glTexCoord2f(s0, t0); glVertex2f(0.0,0.0); //los bordes for(i=0;i<23;i++) { an =(float)(i) *(moMathf::PI / 12.0f); an2 =(float)(i+1) *(moMathf::PI / 12.0f); if((i % 2) ==0) { glTexCoord2f(s0, t1); glVertex2f(rad*cos(an),2.0*sin(an)); glTexCoord2f(s1, t1); glVertex2f(rad*cos(an2),2.0*sin(an2)); } else { glTexCoord2f(s1, t1); glVertex2f(rad*cos(an),2.0*sin(an)); glTexCoord2f(s0, t1); glVertex2f(rad*cos(an2),2.0*sin(an2)); } } glTexCoord2f(s0, t1); glVertex2f(rad*cos(0.0),rad*sin(0.0)); glEnd(); } if(cf==6) { glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glTranslatef(0.0, 0.0, -2.5+m_Config[moR(VIDEOWALL_TRANSLATEZ)].GetData()->Fun()->Eval(m_EffectState.tempo.ang)); glRotatef(m_EffectState.tempo.ang*togra,1.0,0.0,1.0); glBegin(GL_QUADS); glTexCoord2f(s0, t0); glVertex2f(-1.0-1.0, 0.0+1.0); glTexCoord2f(s0, t1); glVertex2f(-1.0-1.0, 1.0+1.0); glTexCoord2f(s1, t1); glVertex2f( 0.0-1.0, 1.0+1.0); glTexCoord2f(s1, t0); glVertex2f( 0.0-1.0, 0.0+1.0); glTexCoord2f(s0, t0); glVertex2f(1.0+1.0, 0.0+1.0); glTexCoord2f(s0, t1); glVertex2f(1.0+1.0, 1.0+1.0); glTexCoord2f(s1, t1); glVertex2f( 0.0+1.0, 1.0+1.0); glTexCoord2f(s1, t0); glVertex2f( 0.0+1.0, 0.0+1.0); glTexCoord2f(s0, t0); glVertex2f(-1.0, 0.0); glTexCoord2f(s0, t1); glVertex2f(-1.0, 1.0); glTexCoord2f(s1, t1); glVertex2f( 0.0, 1.0); glTexCoord2f(s1, t0); glVertex2f( 0.0, 0.0); glTexCoord2f(s0, t0); glVertex2f(1.0, 0.0); glTexCoord2f(s0, t1); glVertex2f(1.0, 1.0); glTexCoord2f(s1, t1); glVertex2f( 0.0, 1.0); glTexCoord2f(s1, t0); glVertex2f( 0.0, 0.0); glTexCoord2f(s0, t0); glVertex2f(-1.0, 0.0); glTexCoord2f(s0, t1); glVertex2f(-1.0, -1.0); glTexCoord2f(s1, t1); glVertex2f( 0.0, -1.0); glTexCoord2f(s1, t0); glVertex2f( 0.0, 0.0); glTexCoord2f(s0, t0); glVertex2f(1.0, 0.0); glTexCoord2f(s0, t1); glVertex2f(1.0, -1.0); glTexCoord2f(s1, t1); glVertex2f( 0.0, -1.0); glTexCoord2f(s1, t0); glVertex2f( 0.0, 0.0); glTexCoord2f(s0, t0); glVertex2f(-1.0-1.0, 0.0-1.0); glTexCoord2f(s0, t1); glVertex2f(-1.0-1.0, -1.0-1.0); glTexCoord2f(s1, t1); glVertex2f( 0.0-1.0, -1.0-1.0); glTexCoord2f(s1, t0); glVertex2f( 0.0-1.0, 0.0-1.0); glTexCoord2f(s0, t0); glVertex2f(1.0+1.0, 0.0-1.0); glTexCoord2f(s0, t1); glVertex2f(1.0+1.0, -1.0-1.0); glTexCoord2f(s1, t1); glVertex2f( 0.0+1.0, -1.0-1.0); glTexCoord2f(s1, t0); glVertex2f( 0.0+1.0, 0.0-1.0); glEnd(); } }