#pragma once #include #include #include #include #include namespace XCEngine { namespace Debug { class EditorConsoleSink : public ILogSink { public: static EditorConsoleSink* GetInstance(); EditorConsoleSink(); ~EditorConsoleSink() override; void Log(const LogEntry& entry) override; void Flush() override; std::vector GetLogs() const; void Clear(); void SetCallback(std::function callback); private: mutable std::mutex m_mutex; std::vector m_logs; std::function m_callback; static EditorConsoleSink* s_instance; static constexpr size_t MAX_LOGS = 1000; }; } // namespace Debug } // namespace XCEngine