void LocalChannel::close (const ResultCallback & resultCallback) { if (mOther){ if (mOther->mChanged) xcall (mOther->mChanged); mOther->setOther (0); } setOther (0); notifyAsync (mChanged); notifyAsync (resultCallback, NoError); }
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(); }
///////////////////////////////////////////////////////// // 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(); } } }