From 41cea908f9346fb00e378f576aaa0e3c1d59e91d Mon Sep 17 00:00:00 2001 From: tkp Date: Sun, 4 Aug 2024 13:42:32 -0400 Subject: [PATCH] moved imgui to different folder and other things i forgot --- bin/imgui.ini | 10 +++++----- {include/implosion/imgui => imgui}/imconfig.h | 0 {include/implosion/imgui => imgui}/imgui.cpp | 0 {include/implosion/imgui => imgui}/imgui.h | 0 {include/implosion/imgui => imgui}/imgui_demo.cpp | 0 {include/implosion/imgui => imgui}/imgui_draw.cpp | 0 .../implosion/imgui => imgui}/imgui_impl_glfw.cpp | 0 .../implosion/imgui => imgui}/imgui_impl_glfw.h | 0 .../imgui => imgui}/imgui_impl_opengl3.cpp | 0 .../imgui => imgui}/imgui_impl_opengl3.h | 0 .../imgui => imgui}/imgui_impl_opengl3_loader.h | 0 .../implosion/imgui => imgui}/imgui_internal.h | 0 .../implosion/imgui => imgui}/imgui_stdlib.cpp | 0 {include/implosion/imgui => imgui}/imgui_stdlib.h | 0 .../implosion/imgui => imgui}/imgui_tables.cpp | 0 .../implosion/imgui => imgui}/imgui_widgets.cpp | 0 .../implosion/imgui => imgui}/imstb_rectpack.h | 0 .../implosion/imgui => imgui}/imstb_textedit.h | 0 .../implosion/imgui => imgui}/imstb_truetype.h | 0 include/ignition/camera.hpp | 1 + include/ignition/module.hpp | 2 +- include/ignition/object.hpp | 2 +- include/ignition/scene.hpp | 2 ++ include/ignition/serialization/preferences.cpp | 12 +++++++++--- include/ignition/utils/files.hpp | 5 ++++- premake5.lua | 4 +++- src/ignition/camera.cpp | 1 + .../components/rendering/meshrenderer.cpp | 14 +++++++++----- src/ignition/object.cpp | 2 +- src/ignition/scene.cpp | 7 +++++++ src/ignition/utils/files.cpp | 15 ++++++++++++++- src/implosion/gui/gui_addobject.cpp | 11 ++++++++--- src/implosion/gui/gui_debug.cpp | 7 +++++++ src/implosion/main.cpp | 3 ++- 34 files changed, 75 insertions(+), 23 deletions(-) rename {include/implosion/imgui => imgui}/imconfig.h (100%) rename {include/implosion/imgui => imgui}/imgui.cpp (100%) rename {include/implosion/imgui => imgui}/imgui.h (100%) rename {include/implosion/imgui => imgui}/imgui_demo.cpp (100%) rename {include/implosion/imgui => imgui}/imgui_draw.cpp (100%) rename {include/implosion/imgui => imgui}/imgui_impl_glfw.cpp (100%) rename {include/implosion/imgui => imgui}/imgui_impl_glfw.h (100%) rename {include/implosion/imgui => imgui}/imgui_impl_opengl3.cpp (100%) rename {include/implosion/imgui => imgui}/imgui_impl_opengl3.h (100%) rename {include/implosion/imgui => imgui}/imgui_impl_opengl3_loader.h (100%) rename {include/implosion/imgui => imgui}/imgui_internal.h (100%) rename {include/implosion/imgui => imgui}/imgui_stdlib.cpp (100%) rename {include/implosion/imgui => imgui}/imgui_stdlib.h (100%) rename {include/implosion/imgui => imgui}/imgui_tables.cpp (100%) rename {include/implosion/imgui => imgui}/imgui_widgets.cpp (100%) rename {include/implosion/imgui => imgui}/imstb_rectpack.h (100%) rename {include/implosion/imgui => imgui}/imstb_textedit.h (100%) rename {include/implosion/imgui => imgui}/imstb_truetype.h (100%) diff --git a/bin/imgui.ini b/bin/imgui.ini index 92fafce..90011ee 100644 --- a/bin/imgui.ini +++ b/bin/imgui.ini @@ -5,7 +5,7 @@ Collapsed=0 [Window][Debug Menu] Pos=211,19 -Size=206,1061 +Size=272,1061 Collapsed=0 DockId=0x00000006,0 @@ -52,10 +52,10 @@ DockId=0x00000005,0 [Docking][Data] DockSpace ID=0x8B93E3BD Window=0xA787BDB4 Pos=0,19 Size=1920,1061 Split=X - DockNode ID=0x00000003 Parent=0x8B93E3BD SizeRef=417,1061 Split=X Selected=0x82A4B83C + DockNode ID=0x00000003 Parent=0x8B93E3BD SizeRef=483,1061 Split=X Selected=0x82A4B83C DockNode ID=0x00000005 Parent=0x00000003 SizeRef=209,1061 Selected=0x82A4B83C - DockNode ID=0x00000006 Parent=0x00000003 SizeRef=206,1061 Selected=0xA0FC9443 - DockNode ID=0x00000004 Parent=0x8B93E3BD SizeRef=1501,1061 Split=X - DockNode ID=0x00000001 Parent=0x00000004 SizeRef=1129,1061 CentralNode=1 Selected=0xE87781F4 + DockNode ID=0x00000006 Parent=0x00000003 SizeRef=272,1061 Selected=0xA0FC9443 + DockNode ID=0x00000004 Parent=0x8B93E3BD SizeRef=1435,1061 Split=X + DockNode ID=0x00000001 Parent=0x00000004 SizeRef=1063,1061 CentralNode=1 Selected=0xE87781F4 DockNode ID=0x00000002 Parent=0x00000004 SizeRef=370,1061 Selected=0xE7039252 diff --git a/include/implosion/imgui/imconfig.h b/imgui/imconfig.h similarity index 100% rename from include/implosion/imgui/imconfig.h rename to imgui/imconfig.h diff --git a/include/implosion/imgui/imgui.cpp b/imgui/imgui.cpp similarity index 100% rename from include/implosion/imgui/imgui.cpp rename to imgui/imgui.cpp diff --git a/include/implosion/imgui/imgui.h b/imgui/imgui.h similarity index 100% rename from include/implosion/imgui/imgui.h rename to imgui/imgui.h diff --git a/include/implosion/imgui/imgui_demo.cpp b/imgui/imgui_demo.cpp similarity index 100% rename from include/implosion/imgui/imgui_demo.cpp rename to imgui/imgui_demo.cpp diff --git a/include/implosion/imgui/imgui_draw.cpp b/imgui/imgui_draw.cpp similarity index 100% rename from include/implosion/imgui/imgui_draw.cpp rename to imgui/imgui_draw.cpp diff --git a/include/implosion/imgui/imgui_impl_glfw.cpp b/imgui/imgui_impl_glfw.cpp similarity index 100% rename from include/implosion/imgui/imgui_impl_glfw.cpp rename to imgui/imgui_impl_glfw.cpp diff --git a/include/implosion/imgui/imgui_impl_glfw.h b/imgui/imgui_impl_glfw.h similarity index 100% rename from include/implosion/imgui/imgui_impl_glfw.h rename to imgui/imgui_impl_glfw.h diff --git a/include/implosion/imgui/imgui_impl_opengl3.cpp b/imgui/imgui_impl_opengl3.cpp similarity index 100% rename from include/implosion/imgui/imgui_impl_opengl3.cpp rename to imgui/imgui_impl_opengl3.cpp diff --git a/include/implosion/imgui/imgui_impl_opengl3.h b/imgui/imgui_impl_opengl3.h similarity index 100% rename from include/implosion/imgui/imgui_impl_opengl3.h rename to imgui/imgui_impl_opengl3.h diff --git a/include/implosion/imgui/imgui_impl_opengl3_loader.h b/imgui/imgui_impl_opengl3_loader.h similarity index 100% rename from include/implosion/imgui/imgui_impl_opengl3_loader.h rename to imgui/imgui_impl_opengl3_loader.h diff --git a/include/implosion/imgui/imgui_internal.h b/imgui/imgui_internal.h similarity index 100% rename from include/implosion/imgui/imgui_internal.h rename to imgui/imgui_internal.h diff --git a/include/implosion/imgui/imgui_stdlib.cpp b/imgui/imgui_stdlib.cpp similarity index 100% rename from include/implosion/imgui/imgui_stdlib.cpp rename to imgui/imgui_stdlib.cpp diff --git a/include/implosion/imgui/imgui_stdlib.h b/imgui/imgui_stdlib.h similarity index 100% rename from include/implosion/imgui/imgui_stdlib.h rename to imgui/imgui_stdlib.h diff --git a/include/implosion/imgui/imgui_tables.cpp b/imgui/imgui_tables.cpp similarity index 100% rename from include/implosion/imgui/imgui_tables.cpp rename to imgui/imgui_tables.cpp diff --git a/include/implosion/imgui/imgui_widgets.cpp b/imgui/imgui_widgets.cpp similarity index 100% rename from include/implosion/imgui/imgui_widgets.cpp rename to imgui/imgui_widgets.cpp diff --git a/include/implosion/imgui/imstb_rectpack.h b/imgui/imstb_rectpack.h similarity index 100% rename from include/implosion/imgui/imstb_rectpack.h rename to imgui/imstb_rectpack.h diff --git a/include/implosion/imgui/imstb_textedit.h b/imgui/imstb_textedit.h similarity index 100% rename from include/implosion/imgui/imstb_textedit.h rename to imgui/imstb_textedit.h diff --git a/include/implosion/imgui/imstb_truetype.h b/imgui/imstb_truetype.h similarity index 100% rename from include/implosion/imgui/imstb_truetype.h rename to imgui/imstb_truetype.h diff --git a/include/ignition/camera.hpp b/include/ignition/camera.hpp index ee1aabf..835e1be 100644 --- a/include/ignition/camera.hpp +++ b/include/ignition/camera.hpp @@ -22,6 +22,7 @@ namespace Ignition { Camera() = default; Camera(Window* window) { this->window = window; } + Matrix4 viewProj; private: Window* window; }; diff --git a/include/ignition/module.hpp b/include/ignition/module.hpp index 1f54673..aadba78 100644 --- a/include/ignition/module.hpp +++ b/include/ignition/module.hpp @@ -16,6 +16,6 @@ namespace Ignition { virtual std::string type() const = 0; bool enabled; - std::shared_ptr transform; + Transform* transform; }; } diff --git a/include/ignition/object.hpp b/include/ignition/object.hpp index 99a9bb2..eb9ca21 100644 --- a/include/ignition/object.hpp +++ b/include/ignition/object.hpp @@ -9,7 +9,7 @@ #define UPDATE_OBJECT() this->transform.UpdateVectors(); \ for (std::shared_ptr m : modules) { \ - m->transform = std::make_shared(this->transform); \ + m->transform = &this->transform;\ m->Update(); \ } diff --git a/include/ignition/scene.hpp b/include/ignition/scene.hpp index 4fdad9d..59f02b2 100644 --- a/include/ignition/scene.hpp +++ b/include/ignition/scene.hpp @@ -16,6 +16,8 @@ namespace Ignition { void WriteSceneToDisk(); void ReadSceneFromDisk(); + std::string name; + private: std::vector objects; }; diff --git a/include/ignition/serialization/preferences.cpp b/include/ignition/serialization/preferences.cpp index a9228e9..f7bc0df 100644 --- a/include/ignition/serialization/preferences.cpp +++ b/include/ignition/serialization/preferences.cpp @@ -2,6 +2,7 @@ #include "input/camera_movement.hpp" #include +#include bool preferencesChanged; Implosion::GUI* gui; @@ -10,7 +11,11 @@ void PreferencesChanged() { preferencesChanged = true; } void WritePreferences() { - FS::BeginBinaryWrite(FS::GetHome() + "/Ignition/preferences"); + if (!std::filesystem::exists(FS::GetHome() + "/Implosion")) + { + std::filesystem::create_directory(FS::GetHome() + "/Implosion"); + } + FS::BeginBinaryWrite(FS::GetHome() + "/Implosion/preferences"); FS::Write8(gui->vsync); FS::Write8(gui->anti); @@ -43,7 +48,9 @@ void WritePreferences() void ReadPreferences(Implosion::GUI* guis) { - FS::BeginBinaryRead(FS::GetHome() + "/Ignition/preferences"); + gui = guis; + if (!FS::BeginBinaryRead(FS::GetHome() + "/Implosion/preferences")) + return; if (!FS::CanRead()) return; @@ -71,5 +78,4 @@ void ReadPreferences(Implosion::GUI* guis) guis->camera->fov = FS::ReadFloat(); FS::EndBinaryRead(); - gui = guis; } diff --git a/include/ignition/utils/files.hpp b/include/ignition/utils/files.hpp index 181f374..e570536 100644 --- a/include/ignition/utils/files.hpp +++ b/include/ignition/utils/files.hpp @@ -8,13 +8,16 @@ namespace FS { std::string GetHome(); + void SetProjectHome(std::string); + std::string GetProjectHome(); + std::string ReadTextFile(std::string path); std::string ReadFileFromHome(std::string path); void WriteFile(std::string path, std::string data); void WriteFileFromHome(std::string path, std::string data); - void BeginBinaryRead(std::string path); + bool BeginBinaryRead(std::string path); void BeginBinaryWrite(std::string path); uint8_t Read8(); diff --git a/premake5.lua b/premake5.lua index a5ccf6c..cc4e158 100644 --- a/premake5.lua +++ b/premake5.lua @@ -7,13 +7,15 @@ project "implosion" language "C++" cppdialect "gnu++17" targetdir "bin" - includedirs { "include/ignition", "include/ignition/components", "include/implosion", "include/implosion/imgui" } + removefiles "hub/*" + includedirs { "include/ignition", "include/ignition/components", "include/implosion", "imgui" } files { "**.h", "**.cpp", "**.hpp" } links { "glfw", "GL", "GLEW", "m" } filter "configurations:Debug" defines { "DEBUG" } + optimize "On" symbols "On" filter "configurations:Release" diff --git a/src/ignition/camera.cpp b/src/ignition/camera.cpp index 5276bda..7cf6c9c 100644 --- a/src/ignition/camera.cpp +++ b/src/ignition/camera.cpp @@ -35,5 +35,6 @@ namespace Ignition { glfwSwapBuffers((GLFWwindow*)*this->window); Rendering::currentProgram = 9999; Rendering::currentVao = 9999; + viewProj = Matrix4(0); } } diff --git a/src/ignition/components/rendering/meshrenderer.cpp b/src/ignition/components/rendering/meshrenderer.cpp index bef27bb..5b0fe99 100644 --- a/src/ignition/components/rendering/meshrenderer.cpp +++ b/src/ignition/components/rendering/meshrenderer.cpp @@ -68,9 +68,12 @@ namespace Ignition::Rendering { if (this->shader.program != currentProgram) { glUseProgram(this->shader.program); currentProgram = this->shader.program; - + + if (camera->viewProj == Matrix4(0)) { + camera->viewProj = camera->view_projection(); + } - this->shader.SetMatrix4(camera->view_projection(), "projection"); + this->shader.SetMatrix4(camera->viewProj, "projection"); } if (this->vao != currentVao) { glBindVertexArray(this->vao); @@ -78,11 +81,12 @@ namespace Ignition::Rendering { } - Matrix4 model = Matrix4(1.f); - model = glm::translate(model, this->transform->position); + Matrix4 model; + + model = glm::translate(Matrix4(1.f), this->transform->position); model *= glm::mat4_cast(glm::quat(glm::radians(this->transform->rotation))); model = glm::scale(model, this->transform->scale); - + this->shader.SetMatrix4(model, "model"); glActiveTexture(GL_TEXTURE0 ); glBindTexture(GL_TEXTURE_2D, this->shader.albedo); diff --git a/src/ignition/object.cpp b/src/ignition/object.cpp index f3780a9..dff51c9 100644 --- a/src/ignition/object.cpp +++ b/src/ignition/object.cpp @@ -11,7 +11,7 @@ namespace Ignition { void Object::AddModule(std::shared_ptr mod) { this->modules.push_back(mod); - mod->transform = std::make_shared(this->transform); + //mod->transform = std::make_shared(this->transform); mod->Start(); } diff --git a/src/ignition/scene.cpp b/src/ignition/scene.cpp index 0f0e88c..50d791b 100644 --- a/src/ignition/scene.cpp +++ b/src/ignition/scene.cpp @@ -1,6 +1,8 @@ #include "scene.hpp" +#include "utils/files.hpp" namespace Ignition { + void Scene::Update() { for (int i = 0; i < objects.size(); ++i) @@ -36,5 +38,10 @@ namespace Ignition { return objects.size()-1; } + void Scene::WriteSceneToDisk() + { + FS::BeginBinaryWrite(FS::GetProjectHome() + ""); + } + Scene scene; } diff --git a/src/ignition/utils/files.cpp b/src/ignition/utils/files.cpp index 6278b7d..62738ae 100644 --- a/src/ignition/utils/files.cpp +++ b/src/ignition/utils/files.cpp @@ -20,6 +20,14 @@ #endif namespace FS { + + std::string projectName; + void SetProjectHome(std::string s) + { + projectName = s; + } + std::string GetProjectHome() { return projectName; } + std::string ReadTextFile(std::string path) { std::ifstream f(path); @@ -56,14 +64,19 @@ namespace FS { std::string path; } write; - void BeginBinaryRead(std::string path) + bool BeginBinaryRead(std::string path) { read.file = std::ifstream(path); + + if (!read.file.is_open()) + return false; + std::stringstream s; s << read.file.rdbuf(); read.data = s.str(); read.size = read.data.size(); read.i = -1; + return true; } void BeginBinaryWrite(std::string path) { diff --git a/src/implosion/gui/gui_addobject.cpp b/src/implosion/gui/gui_addobject.cpp index bd7cd01..f0038e9 100644 --- a/src/implosion/gui/gui_addobject.cpp +++ b/src/implosion/gui/gui_addobject.cpp @@ -61,11 +61,16 @@ namespace Implosion { glUseProgram(m.shader.program); std::shared_ptr ptr = std::make_shared(m); Ignition::Object* o = &Ignition::scene.GetObjects()->at(Ignition::scene.CreateObject()); - int x = -10 + rand() % 20; - int y = -10 + rand() % 20; - int z = -10 + rand() % 20; + int x = -50 + rand() % 100; + int y = -50 + rand() % 100; + int z = -50 + rand() % 100; + + int rx = -180 + rand() % 360; + int ry = -180 + rand() % 360; + int rz = -180 + rand() % 360; o->AddModule(ptr); o->transform.position = Ignition::Vector3(x,y,z); + o->transform.rotation = Ignition::Vector3(rx,ry,rz); } } diff --git a/src/implosion/gui/gui_debug.cpp b/src/implosion/gui/gui_debug.cpp index 1dd3f4a..56b1ef1 100644 --- a/src/implosion/gui/gui_debug.cpp +++ b/src/implosion/gui/gui_debug.cpp @@ -2,6 +2,8 @@ #include #include +#include "scene.hpp" + #ifdef __unix__ # ifdef __linux__ const char* os = "Linux"; @@ -40,6 +42,11 @@ ImGuiWindowFlags flags = ImGuiWindowFlags_NoBackground; ImGui::Text("Delta Time %f", dt); ImGui::Text("FPS %f", fps); + ImGui::Separator(); + + ImGui::Text("Objects %lu", Ignition::scene.GetObjects()->size()); + ImGui::Text("Objects with tag \"Bananna\" %lu", Ignition::scene.GetObjectsWithTag("Banana").size()); + if (ImGui::CollapsingHeader("Hardware")) { ImGui::SeparatorText("GPU Info"); diff --git a/src/implosion/main.cpp b/src/implosion/main.cpp index 8e147ac..58383d5 100644 --- a/src/implosion/main.cpp +++ b/src/implosion/main.cpp @@ -36,6 +36,7 @@ int main() Ignition::scene.Update(); gui.NewFrame(); + if (Ignition::scene.GetObjects()->size() > 0) { gui.Inspector(&Ignition::scene.GetObjects()->at(0)); @@ -52,7 +53,7 @@ int main() gui.EndFrame(); camera.EndRender(); } - + WritePreferences(); gui.Shutdown(); window.Shutdown(); }