void clickFunc(int key, int state, int x, int y) { if ((key == GLUT_LEFT_BUTTON) && (state == GLUT_DOWN)) { // Click "New Desk(s)"-button if ((x >= newDeskButton.getXPos()) && (x <= newDeskButton.getXPos() + newDeskButton.getWidth()) && (W_HEIGHT - y >= newDeskButton.getYPos()-newDeskButton.getHeight()/2) && (W_HEIGHT - y <= newDeskButton.getYPos()+newDeskButton.getHeight()/2)) { buildMode = !buildMode; hlGrid.deactivateAllSquares(); if (destroyMode) destroyMode = false; else cRoom.toggleGrid(); } // Click "Remove Desk(s)"-button else if ((x >= removeDeskButton.getXPos()) && (x <= removeDeskButton.getXPos() + removeDeskButton.getWidth()) && (W_HEIGHT - y >= removeDeskButton.getYPos()-removeDeskButton.getHeight()/2) && (W_HEIGHT - y <= removeDeskButton.getYPos()+removeDeskButton.getHeight()/2)) { destroyMode = !destroyMode; hlGrid.deactivateAllSquares(); if (buildMode) buildMode = false; else cRoom.toggleGrid(); } // Click "Export to .TGA"-button else if ((x >= exportButton.getXPos()) && (x <= exportButton.getXPos() + exportButton.getWidth()) && (W_HEIGHT - y >= exportButton.getYPos()-exportButton.getHeight()/2) && (W_HEIGHT - y <= exportButton.getYPos()+exportButton.getHeight()/2)) { screenshot = true; } else { in.getCursor3(x, y, clickPos, cameraFrame, projectionStack); if (buildMode) { hlGrid.deactivateAllSquares(); } else if (!buildMode && !destroyMode) { trackCursor = true; lastPos[0] = clickPos[0]; lastPos[1] = clickPos[1]; } else if (destroyMode) { hlGrid.deactivateAllSquares(); } } } else if ((key == GLUT_LEFT_BUTTON) && (state == GLUT_UP)) { hlGrid.deactivateAllSquares(); // Do not act as ground if clicked on button if (!((x >= newDeskButton.getXPos()) && (x <= newDeskButton.getXPos() + newDeskButton.getWidth()) && (W_HEIGHT - y >= newDeskButton.getYPos()-newDeskButton.getHeight()/2) && (W_HEIGHT - y <= newDeskButton.getYPos()+newDeskButton.getHeight()/2)) && !((x >= removeDeskButton.getXPos()) && (x <= removeDeskButton.getXPos() + removeDeskButton.getWidth()) && (W_HEIGHT - y >= removeDeskButton.getYPos()-removeDeskButton.getHeight()/2) && (W_HEIGHT - y <= removeDeskButton.getYPos()+removeDeskButton.getHeight()/2)) && !screenshot && !((x >= exportButton.getXPos()) && (x <= exportButton.getXPos() + exportButton.getWidth()) && (W_HEIGHT - y >= exportButton.getYPos()-exportButton.getHeight()/2) && (W_HEIGHT - y <= exportButton.getYPos()+exportButton.getHeight()/2))) { if (buildMode && !destroyMode) { in.getCursor3(x, y, actualPos, cameraFrame, projectionStack); hlGrid.boxActivation(clickPos, actualPos); vector< vector< float > > pos; hlGrid.getSquarePositions(pos); stuDesks.createDesks(pos); hlGrid.deactivateAllSquares(); } else if (!buildMode && destroyMode) { in.getCursor3(x, y, actualPos, cameraFrame, projectionStack); hlGrid.boxActivation(clickPos, actualPos); vector< vector< float > > dPos; hlGrid.getSquarePositions(dPos); stuDesks.destroyDesks(dPos); hlGrid.deactivateAllSquares(); } else if (!buildMode && !destroyMode) trackCursor = false; } } if (!mouseActive) { if (key == 3) //Scroll up cameraFrame.TranslateWorld(0.0f, 0.0f, -0.5f); //Zoom in if (key == 4) //Scroll down cameraFrame.TranslateWorld(0.0f, 0.0f, 0.5f); //Zoom out } }