Made multiple managers for individual pieces
Added UIManager that renders the UI inside the window
This commit is contained in:
		| @ -1,146 +1,62 @@ | ||||
| #include "BarinkEngine.h" | ||||
| using namespace BarinkEngine; | ||||
|  | ||||
| Camera* cam; | ||||
| Renderable* Cube; | ||||
| Shader* shader; | ||||
|  | ||||
|  | ||||
| void Start(int argc, char* argv[]) { | ||||
|  | ||||
|     std::cout << "Hello start!" << std::endl; | ||||
|     std::cout << "h" << std::endl; | ||||
|    | ||||
|  | ||||
|     char cwd[256]; | ||||
|     memset(cwd, '\0', 256); | ||||
|    // getcwd(cwd, 256); | ||||
|     //spdlog::info("Working directory: {}", cwd); | ||||
|     | ||||
|     WARN("Hello warning"); | ||||
|      | ||||
|     // BarinkWindow GameWindow(800, 600); | ||||
|  | ||||
| } | ||||
|  | ||||
| void UpdateApplication() | ||||
| { | ||||
| } | ||||
|  | ||||
| /* | ||||
|  | ||||
| int main(int argc, char* argv[]) { | ||||
|  | ||||
|     char cwd[256]; | ||||
|     memset(cwd, '\0', 256); | ||||
|     getcwd(cwd, 256); | ||||
|     spdlog::info("Working directory: {}", cwd); | ||||
|      | ||||
|     | ||||
|     IMGUI_CHECKVERSION(); | ||||
|     ImGui::CreateContext(); | ||||
|     ImGuiIO& io = ImGui::GetIO(); | ||||
|     (void)io; | ||||
|  | ||||
|     ImGui::StyleColorsDark(); | ||||
|     ImGui_ImplGlfw_InitForOpenGL(GameWindow.windowptr(), true); | ||||
|     ImGui_ImplOpenGL3_Init("#version 440"); | ||||
|      | ||||
|     Camera cam(glm::vec3(0.0f, 1.5f, -10.0f), glm::vec3(0.0f, 0.0f, 0.0f), 90.0f); | ||||
|     Renderable Cube = Renderable::Load(); | ||||
|     cam = new Camera (glm::vec3(0.0f, 1.5f, -10.0f), glm::vec3(0.0f, 0.0f, 0.0f), 90.0f); | ||||
|     Cube = &Renderable::Load(); | ||||
|  | ||||
|  | ||||
|     spdlog::info("==== Load Shader(s) ===="); | ||||
|     std::string vertexShaderSource = "build/SandboxApplication/Debug/test.vs"; | ||||
|     std::string fragmentShaderSource = "build/SandboxApplication/Debug/test.fs"; | ||||
|     Shader shader (vertexShaderSource, fragmentShaderSource); | ||||
|     shader = new Shader(vertexShaderSource, fragmentShaderSource); | ||||
|  | ||||
|     lua_State* L = luaL_newstate(); | ||||
|     luaL_openlibs(L); | ||||
|     luaL_dostring(L, "print('BarinkEngine')"); | ||||
|     spdlog::info("==== Run script ===="); | ||||
|     luaL_dofile(L,"build/SandboxApplication/Debug/script.lua"); | ||||
|      | ||||
|  | ||||
|      | ||||
|     char* lua_code = new char[255]; | ||||
|     memset(lua_code, '\0', 255); | ||||
|  | ||||
|     bool runCode = false; | ||||
|  | ||||
|  | ||||
|     while (!GameWindow.WindowShouldClose()) { | ||||
|         if (runCode == true) { | ||||
|             luaL_dostring(L,lua_code); | ||||
|             runCode = false; | ||||
|         } | ||||
|  | ||||
|         glm::mat4 tran = glm::translate(glm::mat4(), Cube.transform.Position); | ||||
|         glm::mat4 scale = glm::scale(glm::mat4(), Cube.transform.Scale); | ||||
|         glm::mat4 rot = | ||||
|             glm::rotate(glm::mat4(), glm::radians(Cube.transform.Rotation.x), glm::vec3(1.0f, 0.0f, 0.0f)) * | ||||
|             glm::rotate(glm::mat4(), glm::radians(Cube.transform.Rotation.y), glm::vec3(0.0f, 1.0f, 0.0f)) * | ||||
|             glm::rotate(glm::mat4(), glm::radians(Cube.transform.Rotation.z), glm::vec3(0.0f, 0.0f, 1.0f)); | ||||
|  | ||||
|  | ||||
|         glm::mat4 model = tran * rot * scale; | ||||
|  | ||||
|         glm::mat4 projection = glm::perspective(glm::radians(cam.Zoom), (800.0f / 600.0f), 0.001f, 100.0f); | ||||
|  | ||||
|  | ||||
|         GameWindow.Poll(); | ||||
|  | ||||
|         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); | ||||
|  | ||||
|         shader.Use(); | ||||
|         shader.setUniformMat4("P", projection); | ||||
|         shader.setUniformMat4("M", model); | ||||
|         shader.setUniformMat4("V", cam.GetViewMatrix()); | ||||
|          | ||||
|         Cube.Draw(); | ||||
|  | ||||
|         ImGui_ImplOpenGL3_NewFrame(); | ||||
|         ImGui_ImplGlfw_NewFrame(); | ||||
|         ImGui::NewFrame(); | ||||
|  | ||||
|         ImGui::Begin("Transform"); | ||||
|         ImGui::Text("Cube"); | ||||
|         ImGui::InputFloat3("Position:", (float*)&Cube.transform.Position); | ||||
|         ImGui::InputFloat3("Rotation:", (float*)&Cube.transform.Rotation); | ||||
|         ImGui::InputFloat3("Scale:", (float*)&Cube.transform.Scale); | ||||
|  | ||||
|         ImGui::End(); | ||||
|  | ||||
|         ImGui::Begin("Camera"); | ||||
|  | ||||
|         ImGui::SliderFloat("Zoom:", &cam.Zoom, 10, 190); | ||||
|         | ||||
|         ImGui::End(); | ||||
|  | ||||
|  | ||||
|         ImGui::Begin("Scripting!!"); | ||||
|  | ||||
|         ImGui::InputTextMultiline("Lua Script", lua_code, 255); | ||||
|         runCode = ImGui::Button("Run"); | ||||
|  | ||||
|  | ||||
|         ImGui::End(); | ||||
|  | ||||
|  | ||||
|         ImGui::ShowDemoWindow(); | ||||
|  | ||||
|  | ||||
|         ImGui::Render(); | ||||
|         ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); | ||||
|  | ||||
|  | ||||
|         GameWindow.SwapBuffers(); | ||||
|     } | ||||
|  | ||||
|     // Cleanup | ||||
|     ImGui_ImplOpenGL3_Shutdown(); | ||||
|     ImGui_ImplGlfw_Shutdown(); | ||||
|     ImGui::DestroyContext(); | ||||
|  | ||||
|     Cube.VAO.Delete(); | ||||
|     Cube.elementBuffer.Delete(); | ||||
|      | ||||
|  | ||||
| } | ||||
|  | ||||
| */ | ||||
|  | ||||
| void Update() | ||||
| { | ||||
|     glm::mat4 tran = glm::translate(glm::mat4(), Cube->transform.Position); | ||||
|     glm::mat4 scale = glm::scale(glm::mat4(), Cube->transform.Scale); | ||||
|     glm::mat4 rot = | ||||
|         glm::rotate(glm::mat4(), glm::radians(Cube->transform.Rotation.x), glm::vec3(1.0f, 0.0f, 0.0f)) * | ||||
|         glm::rotate(glm::mat4(), glm::radians(Cube->transform.Rotation.y), glm::vec3(0.0f, 1.0f, 0.0f)) * | ||||
|         glm::rotate(glm::mat4(), glm::radians(Cube->transform.Rotation.z), glm::vec3(0.0f, 0.0f, 1.0f)); | ||||
|  | ||||
|  | ||||
|     glm::mat4 model = tran * rot * scale; | ||||
|  | ||||
|     glm::mat4 projection = glm::perspective(glm::radians(cam->Zoom), (800.0f / 600.0f), 0.001f, 100.0f); | ||||
|  | ||||
|  | ||||
|  | ||||
|     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); | ||||
|  | ||||
|     shader->Use(); | ||||
|     shader->setUniformMat4("P", projection); | ||||
|     shader->setUniformMat4("M", model); | ||||
|     shader->setUniformMat4("V", cam->GetViewMatrix()); | ||||
|  | ||||
|     Cube->Draw(); | ||||
|  | ||||
| } | ||||
|  | ||||
|  | ||||
| void Stop() { | ||||
|     // Cleanup | ||||
|     Cube->VAO.Delete(); | ||||
|     Cube->elementBuffer.Delete(); | ||||
|  | ||||
|     delete Cube; | ||||
|     delete cam; | ||||
|     delete shader; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user