X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=scene.c;h=a1b52b356853fc9d60dcd74023e866e6e999029c;hb=734ee7661b2d1c9a5d3b0b857f93a790e1054deb;hp=251c556eed6255b068a2caea349bd780a66f6ac0;hpb=3315f206fb8eb69a23612cd9be5fc558316fa52b;p=atyndall%2Fcits2231.git diff --git a/scene.c b/scene.c index 251c556..a1b52b3 100644 --- a/scene.c +++ b/scene.c @@ -221,20 +221,66 @@ void processLightEvents(int id) { } void makeMenu() { - int main, object, material, texture, gtexture, light; - - object = glutCreateMenu(processObjectEvents); - for ( int i = 0; objectMenuEntries[i]; i++ ) { - glutAddMenuEntry( objectMenuEntries[i], i ); + //int main, object, objectsize, material, texture, gtexture, light; + glutCreateMenu(processMainEvents); + int objectSize = sizeof(objectMenuEntries) / sizeof(objectMenuEntries[0]); + int numMenus = objectSize/10 + 1; + int objectSubmenu[numMenus]; + + // Create the n-(n+10) menus + for ( int i = 0; i < numMenus; i++ ) { + + objectSubmenu[i] = glutCreateMenu(processObjectEvents); + + for ( int j = 0; j < (i + 1) * 10; j++ ) { + + if ( objectMenuEntries[j] ) { + glutAddMenuEntry( objectMenuEntries[j], j + 1 ); + } else { + break; + } - glutCreateMenu(mymenu); + } + + } + + // Create the overmenu + int objectMenu = glutCreateMenu(processObjectEvents); + for ( int i = 0; objectSubmenu[i]; i++ ) { + char name[10]; + sprintf(name,"%d",(i + 1) * 10); + glutAddSubMenu( name, objectSubmenu[i] ); + } + + glutAddSubMenu("Objects", objectMenu); glutAddMenuEntry("Exit", 99); + + + + glutAttachMenu(GLUT_RIGHT_BUTTON); + } + +/*void createGLUTMenus() { + + int menu,submenu; + + submenu = glutCreateMenu(processMenuEvents); + glutAddMenuEntry("Red",RED); + glutAddMenuEntry("Blue",BLUE); + glutAddMenuEntry("Green",GREEN); + + menu = glutCreateMenu(processMenuEvents); + glutAddMenuEntry("White",WHITE); + glutAddSubMenu("RGB Menu",submenu); + glutAttachMenu(GLUT_RIGHT_BUTTON); +*/ + void display() { // You probably want to change both of the following. glClear(GL_COLOR_BUFFER_BIT);