Esempio n. 1
3
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();
}
Esempio n. 3
0
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);
}
Esempio n. 4
0
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);
  }

}
Esempio n. 5
0
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();
  }

}
Esempio n. 6
0
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 );

        }

}
Esempio n. 7
0
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());

}
Esempio n. 8
0
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) ) );
}
Esempio n. 9
0
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;
}
Esempio n. 10
0
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 );
}
Esempio n. 11
0
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();
                            }


                        }


                    }

                }

			}
		}
	}

}
Esempio n. 12
0
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

}
Esempio n. 13
0
void
moNetOSCIn::UpdateParameters() {

    m_ReceiveEvents = m_Config.Int( moR(NETOSCIN_RECEIVEEVENTS) );

}
Esempio n. 14
0
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();

}
Esempio n. 15
0
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();
                }
            }


        }
    }



}
Esempio n. 16
0
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;
}
Esempio n. 17
0
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;
}
Esempio n. 18
0
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();
	}

}