+ \r
+ if (options.freecam)\r
+ view = freeCam.getViewMatrix();\r
+ else\r
+ view = arcCam.getViewMatrix();\r
+ \r
+ glUniformMatrix4fv(\r
+ glGetUniformLocation(shaderProgram, "model"),\r
+ 1, GL_FALSE, glm::value_ptr(model));\r
+ glUniformMatrix4fv(\r
+ glGetUniformLocation(shaderProgram, "view"),\r
+ 1, GL_FALSE, glm::value_ptr(view));\r
+ glUniformMatrix4fv(\r
+ glGetUniformLocation(shaderProgram, "projection"),\r
+ 1, GL_FALSE, glm::value_ptr(proj));\r
+\r
+ glUniform3f(\r
+ glGetUniformLocation(shaderProgram, "objectColor"),\r
+ 1.0f, 0.5f, 0.31f);\r
+ glUniform3f(\r
+ glGetUniformLocation(shaderProgram, "lightColor"),\r
+ 1.0f, 1.0f, 1.0f);\r
+ glUniform3fv(\r
+ glGetUniformLocation(shaderProgram, "lightPos"),\r
+ 1, glm::value_ptr(lightPos));\r
+\r
+ m.draw();\r
+ \r
+ glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);\r
+\r
+ ImGui::SFML::Update(window, deltaClock.restart());\r
+\r
+ ImGui::Begin("Options");\r
+ ImGui::Checkbox("Wireframe", &options.wireframe);\r
+ ImGui::Checkbox("Free Cam (F)", &options.freecam);\r
+ if (options.freecam) {\r
+ ImGui::LabelText("Position", "%f %f %f", freeCam.pos.x, freeCam.pos.y, freeCam.pos.z);\r
+ ImGui::LabelText("Rotation", "%f %f", freeCam.rot.x, freeCam.rot.y);\r
+ if (ImGui::Button("Reset")) {\r
+ freeCam.pos = glm::vec3(0, 0, -1);\r
+ freeCam.rot = glm::vec2(0);\r
+ }\r
+ } else {\r
+ ImGui::LabelText("Rotation", "%f %f", arcCam.rot.x, arcCam.rot.y);\r
+ ImGui::InputFloat("Radius", &arcCam.radius);\r
+ if (ImGui::Button("Reset")) {\r
+ arcCam.rot = glm::vec2(0);\r
+ arcCam.radius = 1;\r
+ }\r
+ }\r
+ ImGui::End();\r