//============================================================================ // menu.cpp // Example of menu setup //============================================================================ #include // EXTERNAL STUFF #include "GLint.h" #include "keyinput.hpp" #include "pathplay.hpp" #include "snapshot.hpp" int EnvMapOn=0; int MainMenuID; int UserMenuID; void MenuHandler(int value) { switch(value) { case 0: case 1: case 2: case 3: // TRACKBALL, DRIVE, TRANSLATE, LOOK keyMode=value; break; case 4: StartRecording(); break; case 5: StartPlayback(GfxDrawScene); break; case 6: StopRecording(); break; case 7: SnapShot(); break; case 8: if (EnvMapOn) { EnvMapOn=0; glDisable(GL_TEXTURE_2D); } else { EnvMapOn=1; glEnable(GL_TEXTURE_2D); }; break; }; } void NullMenuFunc(int menuItem) { return; } void GfxAddtoUserMenu() { glutSetMenu(UserMenuID); } void GfxSetUserMenuHandler(void (*UserMenuHandler)(int)) { glutDestroyMenu(UserMenuID); UserMenuID = glutCreateMenu(UserMenuHandler); glutSetMenu(MainMenuID); /* We know that the Sub menu is always the last item */ glutChangeToSubMenu(glutGet(GLUT_MENU_NUM_ITEMS), "User Menu", UserMenuID); glutSetMenu(UserMenuID); } void InitMenu() { UserMenuID = glutCreateMenu(NullMenuFunc); MainMenuID = glutCreateMenu(MenuHandler); glutAddMenuEntry("TrackBall (z)",0); glutAddMenuEntry("Drive (x)",1); glutAddMenuEntry("Translate (c)",2); glutAddMenuEntry("Look (v)",3); glutAddMenuEntry("Record",4); glutAddMenuEntry("Play",5); glutAddMenuEntry("Stop",6); glutAddMenuEntry("SnapShot",7); glutAddMenuEntry("Env Map",8); glutAddSubMenu("User Menu", UserMenuID); glutAttachMenu(GLUT_RIGHT_BUTTON); }