From cc9c7c9157286e3dd9f36dd0a76db10b75f4a901 Mon Sep 17 00:00:00 2001 From: SweetId <2630750+SweetId@users.noreply.github.com> Date: Mon, 16 Oct 2023 19:28:37 -0400 Subject: [PATCH] Add EditorLogger to handle logging coming from engine --- include/NazaraEditor/Core.hpp | 1 + .../Core/Application/EditorLogger.hpp | 24 ++++++++++++++++++ .../Core/Application/EditorLogger.cpp | 25 +++++++++++++++++++ src/NazaraEditor/Editor/main.cpp | 1 + 4 files changed, 51 insertions(+) create mode 100644 include/NazaraEditor/Core/Application/EditorLogger.hpp create mode 100644 src/NazaraEditor/Core/Application/EditorLogger.cpp diff --git a/include/NazaraEditor/Core.hpp b/include/NazaraEditor/Core.hpp index 86914d6..20fd0db 100644 --- a/include/NazaraEditor/Core.hpp +++ b/include/NazaraEditor/Core.hpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include diff --git a/include/NazaraEditor/Core/Application/EditorLogger.hpp b/include/NazaraEditor/Core/Application/EditorLogger.hpp new file mode 100644 index 0000000..b341575 --- /dev/null +++ b/include/NazaraEditor/Core/Application/EditorLogger.hpp @@ -0,0 +1,24 @@ +#pragma once + +#include +#include + +namespace Nz +{ + class NAZARAEDITOR_CORE_API EditorLogger + { + public: + EditorLogger(); + virtual ~EditorLogger(); + + static EditorLogger* Instance(); + + void Clear() { m_text.clear(); } + + const std::vector& GetLog() const { return m_text; } + + private: + static EditorLogger* s_instance; + std::vector m_text; + }; +} \ No newline at end of file diff --git a/src/NazaraEditor/Core/Application/EditorLogger.cpp b/src/NazaraEditor/Core/Application/EditorLogger.cpp new file mode 100644 index 0000000..59cf782 --- /dev/null +++ b/src/NazaraEditor/Core/Application/EditorLogger.cpp @@ -0,0 +1,25 @@ +#include + +namespace Nz +{ + EditorLogger* EditorLogger::s_instance = nullptr; + + EditorLogger::EditorLogger() + { + NazaraAssert(s_instance == nullptr, "EditorLogger already exists"); + s_instance = this; + + Nz::Log::OnLogWrite.Connect([this](auto&& str) { m_text.emplace_back(str); }); + Nz::Log::OnLogWriteError.Connect([this](ErrorType, auto&& str, int, const char*, const char*) { m_text.emplace_back(str); }); + } + + EditorLogger::~EditorLogger() + { + s_instance = nullptr; + } + + EditorLogger* EditorLogger::Instance() + { + return s_instance; + } +} \ No newline at end of file diff --git a/src/NazaraEditor/Editor/main.cpp b/src/NazaraEditor/Editor/main.cpp index b549d31..4a61473 100644 --- a/src/NazaraEditor/Editor/main.cpp +++ b/src/NazaraEditor/Editor/main.cpp @@ -25,6 +25,7 @@ int WinMain(int argc, char* argv[]) NazaraUnused(argc); NazaraUnused(argv); + Nz::EditorLogger logger; NzEditor::Application app; ImGui::EnsureContextOnThisThread();