#include "Core/EditorConsoleSink.h" namespace XCEngine { namespace Debug { EditorConsoleSink* EditorConsoleSink::s_instance = nullptr; EditorConsoleSink* EditorConsoleSink::GetInstance() { static EditorConsoleSink fallbackInstance; return s_instance ? s_instance : &fallbackInstance; } EditorConsoleSink::EditorConsoleSink() { s_instance = this; } EditorConsoleSink::~EditorConsoleSink() { if (s_instance == this) { s_instance = nullptr; } } void EditorConsoleSink::Log(const LogEntry& entry) { std::lock_guard lock(m_mutex); if (m_logs.size() >= MAX_LOGS) { m_logs.erase(m_logs.begin()); } m_logs.push_back(entry); if (m_callback) { m_callback(); } } void EditorConsoleSink::Flush() { } std::vector EditorConsoleSink::GetLogs() const { std::lock_guard lock(m_mutex); return m_logs; } void EditorConsoleSink::Clear() { std::lock_guard lock(m_mutex); m_logs.clear(); } void EditorConsoleSink::SetCallback(std::function callback) { m_callback = std::move(callback); } } // namespace Debug } // namespace XCEngine