void keyboard_handler(unsigned char key, int x, int y) { glm::vec3 translation = glm::vec3(0, 0, 0); glm::vec3 rotation = glm::vec3(0, 0, 0); // check which translation or rotation was requested switch (key) { case 'q': translation = glm::vec3( 1, 0, 0); break; case 'w': translation = glm::vec3(-1, 0, 0); break; case 'e': translation = glm::vec3( 0, 1, 0); break; case 'r': translation = glm::vec3( 0,-1, 0); break; case 't': translation = glm::vec3( 0, 0, 1); break; case 'y': translation = glm::vec3( 0, 0,-1); break; case 'a': rotation = glm::vec3( 1, 0, 0); break; case 's': rotation = glm::vec3(-1, 0, 0); break; case 'd': rotation = glm::vec3( 0, 1, 0); break; case 'f': rotation = glm::vec3( 0,-1, 0); break; case 'g': rotation = glm::vec3( 0, 0, 1); break; case 'h': rotation = glm::vec3( 0, 0,-1); break; case ' ': viewMatrix = get_default_viewMatrix(); break; case 27: exit(0); } // perform the translation or rotation if (translation.x != 0 || translation.y != 0 || translation.z != 0) { viewMatrix = glm::translate(viewMatrix, translation); } else if (rotation.x != 0 || rotation.y != 0 || rotation.z != 0) { viewMatrix = glm::rotate(viewMatrix, 1.0f, rotation); } normalMatrix = get_default_normalMatrix(); // re-draw the scene display_handler(); }
void update_display(void) { void (*display_handler)(char*,char*) = state_handlers[state].display; char line_1[17]; char line_2[17]; clear_line(line_1); clear_line(line_2); if (display_handler == NULL) return; display_handler(line_1, line_2); display_line(LCD_LINE_1, line_1); display_line(LCD_LINE_2, line_2); }