Пример #1
0
void LocalChannel::close (const ResultCallback & resultCallback) {
	if (mOther){
		if (mOther->mChanged) xcall (mOther->mChanged);
		mOther->setOther (0);
	}
	setOther (0);
	notifyAsync (mChanged);
	notifyAsync (resultCallback, NoError);
}
Пример #2
0
void main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize(500, 500);
    glutCreateWindow("Newave");
    if (argc > 1 && argv[1] != 0)
        texFilename1 = argv[1];
    if (argc > 2 && argv[2] != 0)
        texFilename2 = argv[2];
    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LEQUAL);
    glClearColor(0.0, 0.0, 0.0, 0.0);
    glPolygonOffset(1.0, 1.0);
    glEnable(GL_CULL_FACE);
    glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
    glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST);
    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
    glEnable(GL_COLOR_MATERIAL);
    glColorMaterial(GL_FRONT, GL_DIFFUSE);
    glLightfv (GL_LIGHT0, GL_POSITION, lightPosition);
    glEnable(GL_LIGHT0);
    loadImageTexture();

    setSize(MEDIUM);
    setSpeed(NORMAL);
    setDisplay(TEXTURED);
    setOther(ENVMAP);
    reset(HILLFOUR);

    glutReshapeFunc(reshape);
    glutDisplayFunc(display);
    glutVisibilityFunc(visibility);

    glutKeyboardFunc(keyboard);
    glutMouseFunc(mouse);
    glutMotionFunc(motion);

    displayMenu = glutCreateMenu(setDisplay);
    glutAddMenuEntry("Wireframe", WIREFRAME);
    glutAddMenuEntry("Hidden Line", HIDDENLINE);
    glutAddMenuEntry("Flat Shaded", FLATSHADED);
    glutAddMenuEntry("Smooth Shaded", SMOOTHSHADED);
    glutAddMenuEntry("Textured", TEXTURED);

    otherMenu = glutCreateMenu(setOther);
    glutAddMenuEntry("Full Screen", FULLSCREEN);
    glutAddMenuEntry("Face Normals", FACENORMALS);
    glutAddMenuEntry("Antialias", ANTIALIAS);
    glutAddMenuEntry("Environment Map", ENVMAP);

    speedMenu = glutCreateMenu(setSpeed);
    glutAddMenuEntry("Weak", WEAK);
    glutAddMenuEntry("Normal", NORMAL);
    glutAddMenuEntry("Strong", STRONG);

    sizeMenu = glutCreateMenu(setSize);
    glutAddMenuEntry("Small", SMALL);
    glutAddMenuEntry("Medium", MEDIUM);
    glutAddMenuEntry("Large", LARGE);
    glutAddMenuEntry("Extra Large", XLARGE);

    resetMenu = glutCreateMenu(reset);
    glutAddMenuEntry("Current", CURRENT);
    glutAddMenuEntry("Spike", SPIKE);
    glutAddMenuEntry("Hole", HOLE);
    glutAddMenuEntry("Diagonal Wall", DIAGONALWALL);
    glutAddMenuEntry("Side Wall", SIDEWALL);
    glutAddMenuEntry("Middle Block", MIDDLEBLOCK);
    glutAddMenuEntry("Diagonal Block", DIAGONALBLOCK);
    glutAddMenuEntry("Corner Block", CORNERBLOCK);
    glutAddMenuEntry("Hill", HILL);
    glutAddMenuEntry("Hill Four", HILLFOUR);

    mainMenu = glutCreateMenu(setMain);
    glutAddMenuEntry("Go", 2);
    glutAddMenuEntry("Stop", 3);
    glutAddMenuEntry("Reverse", 4);
    glutAddSubMenu("Display", displayMenu);
    glutAddSubMenu("Reset", resetMenu);
    glutAddSubMenu("Size", sizeMenu);
    glutAddSubMenu("Speed", speedMenu);
    glutAddSubMenu("Other", otherMenu);
    glutAddMenuEntry("Exit", 5);
    glutAttachMenu(GLUT_RIGHT_BUTTON);

    glutMainLoop();
}
Пример #3
0
/////////////////////////////////////////////////////////
// renderShape
//
/////////////////////////////////////////////////////////
void newWave :: renderShape(GemState *state)
{
    int i, j;
    if(m_drawType==GL_DEFAULT_GEM)m_drawType=GL_TRIANGLE_STRIP;

    GLfloat sizeX = 2.*m_size / (gridX-1);
    GLfloat sizeY = 2.*m_size / (gridY-1);

    glNormal3f( 0.0f, 0.0f, 1.0f);

    if (GemShape::m_texType && GemShape::m_texNum>=3)
      {
        if ((xsize0!= GemShape::m_texCoords[0].s) ||
            (xsize != GemShape::m_texCoords[1].s-xsize0) ||
            (ysize0!= GemShape::m_texCoords[1].t) ||
            (ysize != GemShape::m_texCoords[2].t-ysize0))
          alreadyInit = 0;

        if (!alreadyInit)
          {
            xsize0 = GemShape::m_texCoords[0].s;
            xsize  = GemShape::m_texCoords[1].s-xsize0;
            ysize0 = GemShape::m_texCoords[1].t;
            ysize  = GemShape::m_texCoords[2].t-ysize0;

            setSize( gridX, gridY );
            setOther(m_textureMode);
            reset( resetMode );
            alreadyInit = 1;
          }

        for (int i=0; i<gridX -1; ++i)
        {
            glBegin(m_drawType);
            for (int j = 0; j < gridY ; ++j)
            {
                glNormal3fv( vertNorms[i][j] );
                glTexCoord2fv( texCoords[i][j] );
                glVertex3f( i*sizeX - 1, j*sizeY -1 , posit[i][j]*m_height);

                glNormal3fv( vertNorms[i+1][j] );
                glTexCoord2fv( texCoords[i+1][j] );
                glVertex3f(  (i+1)*sizeX - 1, j*sizeY -1 , posit[i+1][j]*m_height);
            }
            glEnd();
        }
    }else
    {
        if (!alreadyInit)
        {
            xsize = 1;
            ysize = 1;
	    ysize0= 0;
	    xsize0= 0;
            setSize( gridX, gridY);
            setOther(m_textureMode );
            reset( resetMode );
            alreadyInit = 1;
        }

        for ( i = 0; i<gridX -1; ++i)
        {
            glBegin(m_drawType);
            for ( j = 0; j < gridY  ; ++j)
            {
                glNormal3fv( vertNorms[i][j] );
                glTexCoord2fv( texCoords[i][j] );
                glVertex3f( i*sizeX -1, j*sizeY -1, posit[i][j]*m_height );

                glNormal3fv( vertNorms[i+1][j] );
                glTexCoord2fv( texCoords[i+1][j] );
                glVertex3f( (i+1)*sizeX -1, j*sizeY -1, posit[i+1][j]*m_height );
            }
            glEnd();
        }
    }
}