#include #include #include #include #include #include #include #include #include "../Scene/Components/BoxCollider.h" #include "src/EditorInterface.h" #include "../Core/Input.h" #include #include #include #include #include #include int main() { Engine::Init(); EditorInterface editor; editor.BuildFonts(); // Register Gizmo textures Ref lightTexture = TextureManager::Get()->GetTexture("resources/Icons/Gizmo/Light.png"); Ref camTexture = TextureManager::Get()->GetTexture("resources/Icons/Gizmo/Camera.png"); Ref GuizmoShader = ShaderManager::GetShader("resources/Shaders/gizmo.shader"); while (!Engine::GetCurrentWindow()->ShouldClose()) { Engine::Tick(); Engine::Draw(); if (Input::IsKeyPressed(GLFW_KEY_F8)) Engine::ExitPlayMode(); Ref sceneFramebuffer = Engine::GetCurrentWindow()->GetFrameBuffer(); sceneFramebuffer->Bind(); Ref currentScene = Engine::GetCurrentScene(); if (currentScene && !Engine::IsPlayMode) { GuizmoShader->Bind(); glDisable(GL_CULL_FACE); glDisable(GL_DEPTH_TEST); auto camView = currentScene->m_Registry.view(); for (auto e : camView) { auto [transformComponent, cam] = camView.get(e); GuizmoShader->SetUniformMat4f("model", transformComponent.GetTransform()); GuizmoShader->SetUniformMat4f("view", currentScene->m_EditorCamera->GetTransform()); GuizmoShader->SetUniformMat4f("projection", currentScene->m_EditorCamera->GetPerspective()); camTexture->Bind(2); GuizmoShader->SetUniform1i("gizmo_texture", 2); Renderer::DrawQuad(transformComponent.GetTransform()); } auto view = currentScene->m_Registry.view(); for (auto e : view) { auto [transformComponent, light] = view.get(e); GuizmoShader->SetUniformMat4f("model", transformComponent.GetTransform()); GuizmoShader->SetUniformMat4f("view", currentScene->m_EditorCamera->GetTransform()); GuizmoShader->SetUniformMat4f("projection", currentScene->m_EditorCamera->GetPerspective()); lightTexture->Bind(2); GuizmoShader->SetUniform1i("gizmo_texture", 2); Renderer::DrawQuad(transformComponent.GetTransform()); } glEnable(GL_CULL_FACE); glEnable(GL_DEPTH_TEST); GuizmoShader->Unbind(); } sceneFramebuffer->Unbind(); editor.Draw(); Engine::EndDraw(); } Engine::Close(); }