#include #include "src/Core/Maths.h" #include #include #include #include #include #include #include #include "src/Scene/Components/BoxCollider.h" #include "src/EditorInterface.h" #include "src/Core/Input.h" #include #include #include #include #include #include #include "src/UI/UserInterface.h" #include "src/NewEditor.h" #include void OpenProject() { // Parse the project and load it. std::string projectPath = Nuake::FileDialog::OpenFile("Project file|*.project;"); Nuake::FileSystem::SetRootDirectory(projectPath + "/../"); Ref project = Nuake::Project::New(); if (!project->Deserialize(Nuake::FileSystem::ReadFile(projectPath, true))) { Nuake::Logger::Log("Error loading project: " + projectPath, Nuake::CRITICAL); return; } project->FullPath = projectPath; Nuake::Engine::LoadProject(project); // Create new interface named test. //userInterface = UI::UserInterface::New("test"); // Set current interface running. //Engine::GetCurrentScene()->AddInterface(userInterface); } int main() { Nuake::Engine::Init(); Nuake::EditorInterface editor; editor.BuildFonts(); // Register Gizmo textures Ref lightTexture = Nuake::TextureManager::Get()->GetTexture("resources/Icons/Gizmo/Light.png"); Ref camTexture = Nuake::TextureManager::Get()->GetTexture("resources/Icons/Gizmo/Camera.png"); Ref GuizmoShader = Nuake::ShaderManager::GetShader("resources/Shaders/gizmo.shader"); Ref ditherShader = Nuake::ShaderManager::GetShader("resources/Shaders/dither.shader"); //Nuake::NewEditor newEditor = Nuake::NewEditor(); // Register shaders while (!Nuake::Engine::GetCurrentWindow()->ShouldClose()) { Nuake::RenderCommand::Clear(); Nuake::Engine::Tick(); Nuake::Engine::Draw(); //newEditor.Update(0.f); if (Nuake::Input::IsKeyPressed(GLFW_KEY_F8)) Nuake::Engine::ExitPlayMode(); Nuake::Vector2 WindowSize = Nuake::Engine::GetCurrentWindow()->GetSize(); glViewport(0, 0, WindowSize.x, WindowSize.y); Nuake::Renderer2D::BeginDraw(WindowSize); //newEditor.Draw(WindowSize); Ref sceneFramebuffer = Nuake::Engine::GetCurrentWindow()->GetFrameBuffer(); sceneFramebuffer->Bind(); Ref currentScene = Nuake::Engine::GetCurrentScene(); if (currentScene && !Nuake::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); Nuake::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); Nuake::Renderer::DrawQuad(transformComponent.GetTransform()); } glEnable(GL_CULL_FACE); GuizmoShader->Unbind(); ditherShader->Bind(); ditherShader->SetUniformMat4f("u_View", Nuake::Engine::GetCurrentScene()->m_EditorCamera->GetTransform()); ditherShader->SetUniformMat4f("u_Projection", Nuake::Engine::GetCurrentScene()->m_EditorCamera->GetPerspective()); ditherShader->SetUniform1f("u_Time", Nuake::Engine::GetTime()); ditherShader->SetUniform4f("u_Color", 252.0 / 255.0, 3.0 / 255.0, 65.0 / 255.0, 1.0); if (editor.m_IsEntitySelected && editor.m_SelectedEntity.HasComponent()) { for (auto& m : editor.m_SelectedEntity.GetComponent().Meshes) Nuake::Renderer::SubmitMesh(m, editor.m_SelectedEntity.GetComponent().GetTransform()); Nuake::Renderer::Flush(ditherShader, true); } glEnable(GL_DEPTH_TEST); } sceneFramebuffer->Unbind(); editor.Draw(); Nuake::Engine::EndDraw(); } Nuake::Engine::Close(); }