From 0d32d28b8276cf5479f326e1783516582f59628f Mon Sep 17 00:00:00 2001 From: Antoine Pilote Date: Sat, 22 Jul 2023 03:22:08 -0400 Subject: [PATCH] Added runtime --- Editor/Runtime.cpp | 75 +++++++++++++++++++++ Nuake/Engine.cpp | 6 +- Nuake/src/Rendering/Shaders/ShaderManager.h | 4 +- premake5.lua | 71 +++++++++++++++++++ 4 files changed, 151 insertions(+), 5 deletions(-) create mode 100644 Editor/Runtime.cpp diff --git a/Editor/Runtime.cpp b/Editor/Runtime.cpp new file mode 100644 index 00000000..1c9c408e --- /dev/null +++ b/Editor/Runtime.cpp @@ -0,0 +1,75 @@ +#include +#include +#include + +#include "src/Rendering/Shaders/ShaderManager.h" +#include "src/Rendering/Renderer.h" +#include +#include +#include + +void main(int argc, char* argv[]) +{ + for (uint32_t i = 0; i < argc; i++) + { + char* arg = argv[i]; + std::string projectPath; + if (argc == 1) + { + return; + } + + projectPath = std::string(argv[1]); + + using namespace Nuake; + + Nuake::Engine::Init(); + Engine::GetCurrentWindow()->SetSize({ 1920, 1080 }); + + Ref window = Nuake::Engine::GetCurrentWindow(); + window->SetTitle("Nuake Runtime"); + + FileSystem::SetRootDirectory(FileSystem::GetParentPath(projectPath)); + + auto project = Project::New(); + auto projectFileData = FileSystem::ReadFile(projectPath, true); + try + { + project->Deserialize(projectFileData); + project->FullPath = projectPath; + + Engine::LoadProject(project); + } + catch (std::exception exception) + { + Logger::Log("Error loading project: " + projectPath, "editor", CRITICAL); + Logger::Log(exception.what()); + } + + glClearColor(0.2f, 0.3f, 0.3f, 1.0f); + Engine::EnterPlayMode(); + glViewport(0, 0, 100, 100); + while (!window->ShouldClose()) + { + Nuake::Engine::Tick(); + Nuake::Engine::Draw(); + + Timestep ts = Nuake::Engine::GetTimestep(); + + //ImGui::Render(); + //ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); + + Nuake::Vector2 WindowSize = window->GetSize(); + glViewport(0, 0, WindowSize.x, WindowSize.y); + glClear(GL_COLOR_BUFFER_BIT); + auto shader = ShaderManager::GetShader("resources/Shaders/copy.shader"); + shader->SetUniformTex("u_Source", Engine::GetCurrentScene()->mSceneRenderer->GetTexture().get()); + Renderer::DrawQuad(Matrix4()); + + glfwSwapBuffers(window->GetHandle()); + glfwPollEvents(); + } + } + + Nuake::Engine::Close(); +} \ No newline at end of file diff --git a/Nuake/Engine.cpp b/Nuake/Engine.cpp index cea54337..cc2b288e 100644 --- a/Nuake/Engine.cpp +++ b/Nuake/Engine.cpp @@ -112,9 +112,9 @@ namespace Nuake Nuake::RenderCommand::Clear(); // Start imgui frame - ImGui_ImplOpenGL3_NewFrame(); - ImGui_ImplGlfw_NewFrame(); - ImGui::NewFrame(); + //ImGui_ImplOpenGL3_NewFrame(); + //ImGui_ImplGlfw_NewFrame(); + //ImGui::NewFrame(); // Draw scene Window::Get()->Draw(); diff --git a/Nuake/src/Rendering/Shaders/ShaderManager.h b/Nuake/src/Rendering/Shaders/ShaderManager.h index 6f987dc9..4b373e5a 100644 --- a/Nuake/src/Rendering/Shaders/ShaderManager.h +++ b/Nuake/src/Rendering/Shaders/ShaderManager.h @@ -7,8 +7,8 @@ namespace Nuake { - - class ShaderManager { + class ShaderManager + { private: static std::map> m_Shaders; diff --git a/premake5.lua b/premake5.lua index 98745469..9d9d752e 100644 --- a/premake5.lua +++ b/premake5.lua @@ -81,6 +81,77 @@ project "Nuake" runtime "Release" optimize "on" +project "NuakeRuntime" + location "Editor" + kind "ConsoleApp" + language "C++" + + targetdir ("bin/" .. outputdir .. "/%{prj.name}") + objdir ("bin-int/" .. outputdir .. "/%{prj.name}") + debugdir ("Editor") + + files + { + "Editor/Runtime.cpp" + } + + includedirs + { + "%{prj.name}/../Nuake", + "%{prj.name}/../Nuake/src/Vendors", + "%{prj.name}/../Nuake/Dependencies/GLEW/include", + "%{prj.name}/../Nuake/Dependencies/GLFW/include", + "%{prj.name}/../Nuake/Dependencies/assimp/include", + "%{prj.name}/../Nuake/Dependencies/build", + "%{prj.name}/../Nuake/src/Vendors/msdfgen", + "%{prj.name}/../Nuake/Dependencies/JoltPhysics", + "%{prj.name}/../Nuake/Dependencies/build", + "%{prj.name}/../Nuake/Dependencies/soloud/include" + } + + libdirs + { + "%{prj.name}/../Nuake/dependencies/GLEW/lib/Release/x64", + "%{prj.name}/../Nuake/dependencies/assimp/lib/", + "%{prj.name}/../Nuake/dependencies/freetype-windows-binaries/release static/win64", + "%{prj.name}/../bin/%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}/Nuake/", + "%{prj.name}/../Nuake/dependencies/freetype/include", + "%{prj.name}/../Nuake/src/Vendors/msdfgen/freetype/win64", + "%{prj.name}/../Nuake/src/Vendors/msdfgen", + "%{prj.name}/../Nuake/src/Vendors/wren/src/include", + "%{prj.name}/../Nuake/dependencies/JoltPhysics/bin/%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}/JoltPhysics/", + "%{prj.name}/../Nuake/dependencies/soloud/bin/%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}" + } + + links + { + "Nuake", + "GLFW", + "assimp", + "glew32s.lib", + "opengl32.lib", + "Freetype", + "JoltPhysics", + "soloud" + } + + filter "system:windows" + cppdialect "C++17" + staticruntime "On" + + filter "configurations:Debug" + runtime "Debug" + symbols "on" + + filter "configurations:Release" + runtime "Release" + optimize "on" + + -- copy a file from the objects directory to the target directory + postbuildcommands { + --"{COPY} "Nuake/dependencies/GLFW/lib-vc2019/glfw3.dll" " .. "./bin/" .. outputdir .. "/%{prj.name}/glfw3.dll" + } + project "Editor" location "Editor" kind "ConsoleApp"