diff --git a/include/NazaraEditor/Core/Application/BaseApplication.hpp b/include/NazaraEditor/Core/Application/BaseApplication.hpp index 221e97d..30df376 100644 --- a/include/NazaraEditor/Core/Application/BaseApplication.hpp +++ b/include/NazaraEditor/Core/Application/BaseApplication.hpp @@ -33,7 +33,9 @@ namespace Nz // Editor events NazaraSignal(OnActionRegistered, const EditorAction::Properties&); EditorBaseApplication(); - virtual ~EditorBaseApplication() = default; + virtual ~EditorBaseApplication(); + + static EditorBaseApplication* Instance(); void SetResourceFolder(const std::filesystem::path& path) { m_resourceFolder = path; } std::filesystem::path GetResourceFolder() const { return m_resourceFolder; } @@ -60,6 +62,7 @@ namespace Nz } private: + static EditorBaseApplication* s_instance; std::unique_ptr m_windowSwapchain; std::vector> m_windows; diff --git a/src/NazaraEditor/Core/Application/BaseApplication.cpp b/src/NazaraEditor/Core/Application/BaseApplication.cpp index 1e759f3..17818e5 100644 --- a/src/NazaraEditor/Core/Application/BaseApplication.cpp +++ b/src/NazaraEditor/Core/Application/BaseApplication.cpp @@ -3,9 +3,14 @@ namespace Nz { + EditorBaseApplication* EditorBaseApplication::s_instance = nullptr; + EditorBaseApplication::EditorBaseApplication() : m_level(this) { + NazaraAssert(s_instance == nullptr, "EditorBaseApplication already exists"); + s_instance = this; + auto& windowing = AddComponent(); std::shared_ptr device = Nz::Graphics::Instance()->GetRenderDevice(); @@ -43,6 +48,16 @@ namespace Nz }); } + EditorBaseApplication::~EditorBaseApplication() + { + s_instance = nullptr; + } + + EditorBaseApplication* EditorBaseApplication::Instance() + { + return s_instance; + } + Nz::Level& EditorBaseApplication::GetLevel() { return m_level;