diff --git a/imgui.ini b/imgui.ini index 6bc33ed..adc3d1f 100644 --- a/imgui.ini +++ b/imgui.ini @@ -15,7 +15,7 @@ Collapsed=0 [Window][Inspector] Pos=1553,19 -Size=367,860 +Size=367,659 Collapsed=0 DockId=0x00000018,0 @@ -27,7 +27,7 @@ DockId=0x00000003,0 [Window][Viewport] Pos=344,19 -Size=1207,860 +Size=1207,659 Collapsed=0 DockId=0x00000017,0 @@ -42,8 +42,8 @@ Collapsed=0 DockId=0x0000000F,0 [Window][Console] -Pos=344,881 -Size=1500,125 +Pos=344,680 +Size=1500,326 Collapsed=0 DockId=0x00000013,0 @@ -113,8 +113,8 @@ Collapsed=0 DockId=0x0000000E,0 [Window][Audio Output] -Pos=1846,881 -Size=74,296 +Pos=1846,680 +Size=74,497 Collapsed=0 DockId=0x00000012,0 @@ -131,13 +131,13 @@ DockSpace ID=0x11111111 Window=0x1BBC0F80 Pos=0,19 Size=1920,1158 Sp DockNode ID=0x00000003 Parent=0x00000001 SizeRef=342,575 HiddenTabBar=1 Selected=0x12EF0F59 DockNode ID=0x00000004 Parent=0x00000001 SizeRef=342,581 HiddenTabBar=1 Selected=0x36AF052B DockNode ID=0x00000002 Parent=0x00000005 SizeRef=1484,701 Split=Y Selected=0xC450F867 - DockNode ID=0x00000007 Parent=0x00000002 SizeRef=606,860 Split=X Selected=0xC450F867 + DockNode ID=0x00000007 Parent=0x00000002 SizeRef=606,659 Split=X Selected=0xC450F867 DockNode ID=0x00000017 Parent=0x00000007 SizeRef=1207,860 CentralNode=1 HiddenTabBar=1 Selected=0xC450F867 DockNode ID=0x00000018 Parent=0x00000007 SizeRef=367,860 HiddenTabBar=1 Selected=0x36DC96AB - DockNode ID=0x00000008 Parent=0x00000002 SizeRef=606,296 Split=X Selected=0xEA83D666 + DockNode ID=0x00000008 Parent=0x00000002 SizeRef=606,497 Split=X Selected=0xEA83D666 DockNode ID=0x00000015 Parent=0x00000008 SizeRef=1291,172 Split=X Selected=0xEA83D666 DockNode ID=0x00000011 Parent=0x00000015 SizeRef=1500,168 Split=Y Selected=0x9B5D3198 - DockNode ID=0x00000013 Parent=0x00000011 SizeRef=1449,125 HiddenTabBar=1 Selected=0xEA83D666 + DockNode ID=0x00000013 Parent=0x00000011 SizeRef=1449,326 HiddenTabBar=1 Selected=0xEA83D666 DockNode ID=0x00000014 Parent=0x00000011 SizeRef=1449,169 HiddenTabBar=1 Selected=0x9B5D3198 DockNode ID=0x00000012 Parent=0x00000015 SizeRef=74,168 HiddenTabBar=1 Selected=0x56009A08 DockNode ID=0x00000016 Parent=0x00000008 SizeRef=283,172 Split=X Selected=0x56009A08 diff --git a/remake/build.log b/remake/build.log index 59bbdb2..86f61fb 100644 --- a/remake/build.log +++ b/remake/build.log @@ -1,4 +1,3 @@ -[COMPILE] g++ -std=c++20 -Wall -g -Isrc/include -Isrc/include/lua -Isrc/vendor -Isrc/vendor/imgui -Isrc/vendor/box2d -Isrc/vendor/xxhash -Isrc/vendor/miniaudio -IC:/msys64/mingw64/include -Isrc\vendor\imgui -IC:\msys64\mingw64\lib\libyaml-cpp.a -MMD -MP -c src\src\Components\AudioPlayerComponent.cpp -o src\build\Components\AudioPlayerComponent.o -[COMPILE] g++ -std=c++20 -Wall -g -Isrc/include -Isrc/include/lua -Isrc/vendor -Isrc/vendor/imgui -Isrc/vendor/box2d -Isrc/vendor/xxhash -Isrc/vendor/miniaudio -IC:/msys64/mingw64/include -Isrc\vendor\imgui -IC:\msys64\mingw64\lib\libyaml-cpp.a -MMD -MP -c src\src\Renderer.cpp -o src\build\Renderer.o +[COMPILE] g++ -std=c++20 -Wall -g -Isrc/include -Isrc/include/lua -Isrc/vendor -Isrc/vendor/imgui -Isrc/vendor/box2d -Isrc/vendor/xxhash -Isrc/vendor/miniaudio -IC:/msys64/mingw64/include -IC:\msys64\mingw64\lib\libyaml-cpp.a -Isrc\vendor\imgui -MMD -MP -c src\src\Engine.cpp -o src\build\Engine.o [LINK] g++ src\build\Engine.o src\build\main.o src\build\Renderer.o src\build\Components\AnimationComponent.o src\build\Components\AudioPlayerComponent.o src\build\Components\CameraComponent.o src\build\Components\LightComponent.o src\build\Components\ParticleComponent.o src\build\Components\PhysicsComponent.o src\build\Components\ScriptComponent.o src\build\Components\SpriteComponent.o src\build\Components\TextComonent.o src\build\Components\TilemapComponent.o src\build\core\audio\AudioEngine.o src\build\core\utils\AssetManager.o src\build\core\utils\EngineConfig.o src\build\core\utils\ExceptionHandler.o src\build\core\utils\FileDialog.o src\build\core\utils\input.o src\build\core\utils\LoadingWindow.o src\build\core\utils\Logging.o src\build\core\utils\Profiler.o src\build\core\utils\Texture.o src\build\core\utils\utils.o src\build\editor\windows\AssetBrowser.o src\build\editor\windows\AudioInfo.o src\build\editor\windows\Inspector.o src\build\Entitys\Object.o src\build\utils\GameObjectsList.o src\build\utils\Shader.o src\build\utils\UID.o src\build\lapi.o src\build\lauxlib.o src\build\lbaselib.o src\build\lcode.o src\build\lcorolib.o src\build\lctype.o src\build\ldblib.o src\build\ldebug.o src\build\ldo.o src\build\ldump.o src\build\lfunc.o src\build\lgc.o src\build\linit.o src\build\liolib.o src\build\llex.o src\build\lmathlib.o src\build\lmem.o src\build\loadlib.o src\build\lobject.o src\build\lopcodes.o src\build\loslib.o src\build\lparser.o src\build\lstate.o src\build\lstring.o src\build\lstrlib.o src\build\ltable.o src\build\ltablib.o src\build\ltm.o src\build\lua.o src\build\luac.o src\build\lundump.o src\build\lutf8lib.o src\build\lvm.o src\build\lzio.o src\build\imgui.o src\build\imgui_demo.o src\build\imgui_draw.o src\build\imgui_impl_glfw.o src\build\imgui_impl_opengl3.o src\build\imgui_tables.o src\build\imgui_widgets.o src\build\aabb.o src\build\arena_allocator.o src\build\array.o src\build\bitset.o src\build\body.o src\build\broad_phase.o src\build\constraint_graph.o src\build\contact.o src\build\contact_solver.o src\build\core.o src\build\distance.o src\build\distance_joint.o src\build\dynamic_tree.o src\build\geometry.o src\build\hull.o src\build\id_pool.o src\build\island.o src\build\joint.o src\build\manifold.o src\build\math_functions.o src\build\motor_joint.o src\build\mouse_joint.o src\build\mover.o src\build\prismatic_joint.o src\build\revolute_joint.o src\build\sensor.o src\build\shape.o src\build\solver.o src\build\solver_set.o src\build\table.o src\build\timer.o src\build\types.o src\build\weld_joint.o src\build\wheel_joint.o src\build\world.o src\build\xxhash.o src\build\miniaudio.o -o src\build\app.exe -LC:\msys64\mingw64\lib -lglfw3 -lglew32 -lopengl32 -lgdi32 -lyaml-cpp -lcomdlg32 -lssl -lcrypto -ldbghelp [RUN] Executed app.exe successfully. diff --git a/src/src/Components/AudioPlayerComponent.cpp b/src/src/Components/AudioPlayerComponent.cpp index 82889ed..afb574e 100644 --- a/src/src/Components/AudioPlayerComponent.cpp +++ b/src/src/Components/AudioPlayerComponent.cpp @@ -14,7 +14,7 @@ void AudioPlayerComponent::SetAudio(uint64_t uaid) { void AudioPlayerComponent::Play() { if (m_UAID == 0) return; AudioEngine::Play(m_UAID, loop); - AudioEngine::SetVolume(m_UAID, volume); // you’ll need to add this helper + AudioEngine::SetVolume(m_UAID, volume); } void AudioPlayerComponent::Pause() { diff --git a/src/src/Engine.cpp b/src/src/Engine.cpp index 3fb2008..700ac1f 100644 --- a/src/src/Engine.cpp +++ b/src/src/Engine.cpp @@ -295,11 +295,11 @@ void ShowProfilerTimeline() ImDrawList *draw = ImGui::GetWindowDrawList(); ImU32 gridCol = ImGui::GetColorU32(ImGuiCol_Border); - // Cache grid lines so we only recompute when dims change struct Line { ImVec2 a, b; }; + static float lastW = -1.0f; static int lastR = -1; static std::vector gridLines; @@ -455,6 +455,7 @@ void Engine::Init() glewInit(); g_engineConfig.LoadFromFile(); + Logger::LogOk("Config Core"); IMGUI_CHECKVERSION(); ImGui::CreateContext(); @@ -522,7 +523,7 @@ void Engine::Init() AudioEngine::Init(); - AssetManager::LoadAssetAsync("C:\\Users\\spenc\\Music\\creative-technology-showreel-241274.mp3", AssetType::Audio); + // AssetManager::LoadAssetAsync("C:\\Users\\spenc\\Music\\creative-technology-showreel-241274.mp3", AssetType::Audio); Logger::LogVerbose("Resverving Objects"); @@ -535,7 +536,7 @@ void Engine::Init() m_particleUpdates.reserve(24); // ~1K particle systems active is fair in effects-heavy scenes m_animationsUpdates.reserve(512); // ~500 animated objects (characters, FX, etc.) - Logger::LogInfo("Initialized Engine"); + Logger::LogOk("Engine Core"); } core::types::Vec2 ScreenToWorld(const core::types::Vec2 &screenPos, const core::types::Vec2 &viewportSize, const core::types::Vec2 &cameraPos, float zoom) @@ -545,8 +546,6 @@ core::types::Vec2 ScreenToWorld(const core::types::Vec2 &screenPos, const core:: return world; } - - void Engine::collectObjects(bool playing, const glm::vec2 &camPos, float camZoom) { @@ -612,6 +611,8 @@ void Engine::collectObjects(bool playing, const glm::vec2 &camPos, float camZoom void Engine::Run() { + Logger::LogOk("Engine Start"); + while (!glfwWindowShouldClose(window)) { if (g_engineConfig.settings.profile_editor) @@ -727,7 +728,6 @@ void Engine::Run() ImGui::Checkbox("Performance Info", &g_engineConfig.settings.show_performance_window); ImGui::Checkbox("Audio Viewer", &g_engineConfig.settings.show_audio_window); - ImGui::EndMenu(); } @@ -755,7 +755,6 @@ void Engine::Run() ShowAssetBrowser(); DrawAudioPlayingList(); - { PROFILE_ENGINE_SCOPE("Engine::DrawSceneTree"); @@ -1370,6 +1369,8 @@ void Engine::SaveScene(const std::string &path) std::ofstream file(path); file << out.c_str(); + + Logger::LogOk("Scene Saved"); } void Engine::LoadScene(const std::string &path) @@ -1470,7 +1471,7 @@ void Engine::LoadScene(const std::string &path) currentDetail = "Finalizing load..."; loadingUI.Update(currentStep, currentDetail, 1.0f); - Logger::LogInfo("[LoadScene] Loaded scene: %s", root["scene_name"].as().c_str()); + Logger::LogOk("Scene Loaded: %s", root["scene_name"].as().c_str()); loadingUI.Destroy(); } diff --git a/src/src/Renderer.cpp b/src/src/Renderer.cpp index 184a229..dd336c2 100644 --- a/src/src/Renderer.cpp +++ b/src/src/Renderer.cpp @@ -190,7 +190,6 @@ void Renderer::InitQuadBatch() void Renderer::Init() { - glGenFramebuffers(1, &fbo); glBindFramebuffer(GL_FRAMEBUFFER, fbo); @@ -217,17 +216,24 @@ void Renderer::Init() // Load lit shader // Core renderers - spriteShader.LoadFromFile("src/assets/shaders/sprite.vert", "src/assets/shaders/sprite.frag"); - unlitShader.LoadFromFile("src/assets/shaders/unlit.vert", "src/assets/shaders/unlit.frag"); - tilemapShader.LoadFromFile("src/assets/shaders/tilemap.vert", "src/assets/shaders/tilemap.frag"); + { + spriteShader.LoadFromFile("src/assets/shaders/sprite.vert", "src/assets/shaders/sprite.frag"); + unlitShader.LoadFromFile("src/assets/shaders/unlit.vert", "src/assets/shaders/unlit.frag"); + tilemapShader.LoadFromFile("src/assets/shaders/tilemap.vert", "src/assets/shaders/tilemap.frag"); - // Bloom pipeline - extractShader.LoadFromFile("src/assets/shaders/fullscreen.vert", "src/assets/shaders/extract.frag"); - blurShader.LoadFromFile("src/assets/shaders/fullscreen.vert", "src/assets/shaders/blur.frag"); - compositeShader.LoadFromFile("src/assets/shaders/fullscreen.vert", "src/assets/shaders/composite.frag"); + // Bloom pipeline + extractShader.LoadFromFile("src/assets/shaders/fullscreen.vert", "src/assets/shaders/extract.frag"); + blurShader.LoadFromFile("src/assets/shaders/fullscreen.vert", "src/assets/shaders/blur.frag"); + compositeShader.LoadFromFile("src/assets/shaders/fullscreen.vert", "src/assets/shaders/composite.frag"); + + s_UnlitQuadShader.LoadFromFile("src/assets/shaders/unlit_quad.vert", "src/assets/shaders/unlit_quad.frag"); + + + + Logger::LogOk("Shader Core"); + } InitQuadBatch(); - s_UnlitQuadShader.LoadFromFile("src/assets/shaders/unlit_quad.vert", "src/assets/shaders/unlit_quad.frag"); SetColorCorrection(std::make_unique()); @@ -287,6 +293,7 @@ void Renderer::Init() glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); s_DrawCalls = 0; + Logger::LogOk("Renderer Core"); } void Renderer::UpdateClusterLights() diff --git a/src/src/core/audio/AudioEngine.cpp b/src/src/core/audio/AudioEngine.cpp index c554cde..768d5ab 100644 --- a/src/src/core/audio/AudioEngine.cpp +++ b/src/src/core/audio/AudioEngine.cpp @@ -21,7 +21,8 @@ bool AudioEngine::Init() { return false; } - Logger::LogVerbose("AudioEngine initialized with master-output callback"); + Logger::LogOk("AudioEngine Core"); + return true; } diff --git a/src/src/core/utils/AssetManager.cpp b/src/src/core/utils/AssetManager.cpp index 1d508a5..d1ed656 100644 --- a/src/src/core/utils/AssetManager.cpp +++ b/src/src/core/utils/AssetManager.cpp @@ -171,6 +171,8 @@ const char *MiniaudioResultToString(ma_result result) void AssetManager::Init() { + Logger::LogOk("AssetManager Core"); + } uint64_t AssetManager::GenerateUAID() diff --git a/src/src/core/utils/Logging.cpp b/src/src/core/utils/Logging.cpp index 37dbd94..14e1c82 100644 --- a/src/src/core/utils/Logging.cpp +++ b/src/src/core/utils/Logging.cpp @@ -43,6 +43,7 @@ private: std::vector Logger::s_Messages; bool Logger::s_AutoScroll = true; +bool Logger::s_ShowOk = true; bool Logger::s_ShowInfo = true; bool Logger::s_ShowWarning = true; bool Logger::s_ShowError = true; @@ -53,6 +54,8 @@ const char *Logger::ToString(Level level) { switch (level) { + case Ok: + return "Ok"; case Info: return "Info"; case Warning: @@ -72,6 +75,8 @@ const char *Logger::GetAnsiColor(Level level) { switch (level) { + case Ok: + return "\033[1;32m"; // Bold green case Info: return "\033[0;37m"; // Gray case Warning: @@ -82,7 +87,6 @@ const char *Logger::GetAnsiColor(Level level) return "\033[1;36m"; // Cyan case Verbose: return "\033[0;90m"; // Dim gray - default: return "\033[0m"; // Reset } @@ -115,6 +119,14 @@ void Logger::LogVA(Level level, const char *fmt, va_list args) out << formatted << "\n"; } +void Logger::LogOk(const char *fmt, ...) +{ + va_list args; + va_start(args, fmt); + LogVA(Ok, fmt, args); + va_end(args); +} + void Logger::LogInfo(const char *fmt, ...) { va_list args; @@ -155,8 +167,7 @@ void Logger::LogVerbose(const char *fmt, ...) va_end(args); } - -void Logger::LogDepricated(const char* fmt, ...) +void Logger::LogDepricated(const char *fmt, ...) { va_list args; va_start(args, fmt); @@ -170,8 +181,7 @@ void Logger::LogDepricated(const char* fmt, ...) va_end(args); } - -void Logger::LogDepricatedWithCaller(const char* msg, const std::source_location location) +void Logger::LogDepricatedWithCaller(const char *msg, const std::source_location location) { std::string formatted = std::string("[DEPRECATED] ") + msg + " (called from " + location.file_name() + @@ -180,20 +190,16 @@ void Logger::LogDepricatedWithCaller(const char* msg, const std::source_location Log(Warning, "%s", formatted.c_str()); } - - - - -void Logger::LogDepricatedWithStackTrace(const char* msg) +void Logger::LogDepricatedWithStackTrace(const char *msg) { static std::once_flag symInitFlag; - std::call_once(symInitFlag, []() { + std::call_once(symInitFlag, []() + { SymSetOptions(SYMOPT_DEFERRED_LOADS | SYMOPT_LOAD_LINES | SYMOPT_UNDNAME); - SymInitialize(GetCurrentProcess(), nullptr, TRUE); - }); + SymInitialize(GetCurrentProcess(), nullptr, TRUE); }); HANDLE process = GetCurrentProcess(); - void* stack[32]; + void *stack[32]; USHORT frames = CaptureStackBackTrace(0, 32, stack, nullptr); std::string formatted = std::string("[DEPRECATED] ") + msg + "\n Call stack:"; @@ -238,15 +244,11 @@ void Logger::LogDepricatedWithStackTrace(const char* msg) Log(Warning, "%s", formatted.c_str()); } - - - void Logger::Clear() { s_Messages.clear(); } - void Logger::Draw(const char *title) { ImGui::Begin(title); @@ -257,6 +259,9 @@ void Logger::Draw(const char *title) ImGui::Checkbox("Auto-scroll", &s_AutoScroll); ImGui::Separator(); + // New Ok checkbox + ImGui::Checkbox("Ok", &s_ShowOk); + ImGui::SameLine(); ImGui::Checkbox("Info", &s_ShowInfo); ImGui::SameLine(); ImGui::Checkbox("Warning", &s_ShowWarning); @@ -270,17 +275,18 @@ void Logger::Draw(const char *title) ImGui::BeginChild("LogMessages"); + // Filter std::vector filtered; - filtered.reserve(s_Messages.size()); - for (const auto &msg : s_Messages) + for (auto &m : s_Messages) { - if ((msg.level == Info && !s_ShowInfo) || - (msg.level == Warning && !s_ShowWarning) || - (msg.level == Error && !s_ShowError) || - (msg.level == Debug && !s_ShowDebug) || - (msg.level == Verbose && !s_ShowVerbose)) + if ((m.level == Ok && !s_ShowOk) || + (m.level == Info && !s_ShowInfo) || + (m.level == Warning && !s_ShowWarning) || + (m.level == Error && !s_ShowError) || + (m.level == Debug && !s_ShowDebug) || + (m.level == Verbose && !s_ShowVerbose)) continue; - filtered.push_back(&msg); + filtered.push_back(&m); } ImGuiListClipper clipper; @@ -289,32 +295,34 @@ void Logger::Draw(const char *title) { for (int idx = clipper.DisplayStart; idx < clipper.DisplayEnd; idx++) { - const LogMessage *msg = filtered[idx]; - - ImVec4 color; + auto msg = filtered[idx]; + ImVec4 col; switch (msg->level) { + case Ok: + col = ImVec4(0.6f, 1.0f, 0.6f, 1.0f); + break; case Info: - color = ImVec4(0.8f, 0.8f, 0.8f, 1.0f); + col = ImVec4(0.8f, 0.8f, 0.8f, 1.0f); break; case Warning: - color = ImVec4(1.0f, 0.85f, 0.3f, 1.0f); + col = ImVec4(1.0f, 0.85f, 0.3f, 1.0f); break; case Error: - color = ImVec4(1.0f, 0.3f, 0.3f, 1.0f); + col = ImVec4(1.0f, 0.3f, 0.3f, 1.0f); break; case Debug: - color = ImVec4(0.3f, 0.9f, 1.0f, 1.0f); + col = ImVec4(0.3f, 0.9f, 1.0f, 1.0f); break; case Verbose: - color = ImVec4(0.5f, 0.5f, 0.5f, 1.0f); + col = ImVec4(0.5f, 0.5f, 0.5f, 1.0f); break; default: - color = ImVec4(1, 1, 1, 1); + col = ImVec4(1, 1, 1, 1); break; } - ImGui::PushStyleColor(ImGuiCol_Text, color); + ImGui::PushStyleColor(ImGuiCol_Text, col); ImGui::Text("[%s] %s", ToString(msg->level), msg->text.c_str()); ImGui::PopStyleColor(); } @@ -326,4 +334,4 @@ void Logger::Draw(const char *title) ImGui::EndChild(); ImGui::End(); -} +} \ No newline at end of file diff --git a/src/src/core/utils/Logging.h b/src/src/core/utils/Logging.h index 5cbdd8b..8aa14af 100644 --- a/src/src/core/utils/Logging.h +++ b/src/src/core/utils/Logging.h @@ -16,6 +16,7 @@ class Logger public: enum Level { + Ok, Info, Warning, Error, @@ -25,6 +26,7 @@ public: static void Log(Level level, const char *fmt, ...); static void LogVA(Level level, const char *fmt, va_list args); + static void LogOk(const char *fmt, ...); static void LogInfo(const char *fmt, ...); static void LogWarning(const char *fmt, ...); static void LogError(const char *fmt, ...); @@ -50,6 +52,7 @@ private: static std::vector s_Messages; static bool s_AutoScroll; + static bool s_ShowOk; static bool s_ShowInfo; static bool s_ShowWarning; static bool s_ShowError; diff --git a/src/src/utils/Shader.cpp b/src/src/utils/Shader.cpp index b0d7b7f..cb7c171 100644 --- a/src/src/utils/Shader.cpp +++ b/src/src/utils/Shader.cpp @@ -50,6 +50,7 @@ GLuint Shader::Compile(GLenum type, const std::string& source) { type == GL_VERTEX_SHADER ? "Vertex" : "Fragment"); } + return shader; }