diff --git a/MshViewer/Header/OpenGLController.h b/MshViewer/Header/OpenGLController.h index 2d7f1d5..be9d849 100644 --- a/MshViewer/Header/OpenGLController.h +++ b/MshViewer/Header/OpenGLController.h @@ -116,6 +116,7 @@ public: void addTransX(double value); void addTransY(double value); void addTransZ(double value); + void resetView(); // main routine GLFWwindow* getWindow() const; diff --git a/MshViewer/Source/OpenGlController.cpp b/MshViewer/Source/OpenGlController.cpp index 418a87d..b752a11 100644 --- a/MshViewer/Source/OpenGlController.cpp +++ b/MshViewer/Source/OpenGlController.cpp @@ -269,6 +269,16 @@ void OpenGLController::addTransZ(double value) dTranslationZ += value; } +void OpenGLController::resetView() +{ + dTranslationX = 0; + dTranslationY = 0; + dTranslationZ = 5; + fRotationX = 0; + fRotationY = 0; + fRotationZ = 0; +} + void OpenGLController::updateScene() { // get new matrices @@ -327,7 +337,7 @@ void OpenGLController::loadMsh(const char * path) catch (std::invalid_argument e) { MessageBox(NULL, e.what(), "MeshViewer 2.0 Error", MB_OK | MB_ICONERROR); - exit(1); + return; exit(1); } // collect vertex data of all models diff --git a/MshViewer/Source/callback.cpp b/MshViewer/Source/callback.cpp index efdcd0c..cd82c31 100644 --- a/MshViewer/Source/callback.cpp +++ b/MshViewer/Source/callback.cpp @@ -78,6 +78,8 @@ void mouseWheel(GLFWwindow *window, double xoffset, double yoffset) void keyPress(GLFWwindow *window, int key, int scancode, int action, int mods) { + OpenGLController* controller = reinterpret_cast(glfwGetWindowUserPointer(window)); + if (action == GLFW_PRESS || action == GLFW_REPEAT) { switch (key) @@ -93,6 +95,9 @@ void keyPress(GLFWwindow *window, int key, int scancode, int action, int mods) case GLFW_KEY_PLUS_GER: case GLFW_KEY_KP_ADD: mouse.speed += 0.1; break; + case GLFW_KEY_SPACE: + controller->resetView(); + break; default: break; } @@ -102,6 +107,10 @@ void keyPress(GLFWwindow *window, int key, int scancode, int action, int mods) void dragNdrop(GLFWwindow* window, int count, const char** paths) { OpenGLController* controller = reinterpret_cast(glfwGetWindowUserPointer(window)); - if(count > 0) - controller->loadMsh(paths[0]); + + if (count < 1) + return; + + controller->resetView(); + controller->loadMsh(paths[0]); }