re-adding editorbaseapplication singleton

This commit is contained in:
SweetId 2023-10-16 21:03:46 -04:00
parent 2cef656ead
commit 8dd179e784
2 changed files with 19 additions and 1 deletions

View File

@ -33,7 +33,9 @@ namespace Nz
// Editor events // Editor events
NazaraSignal(OnActionRegistered, const EditorAction::Properties&); NazaraSignal(OnActionRegistered, const EditorAction::Properties&);
EditorBaseApplication(); EditorBaseApplication();
virtual ~EditorBaseApplication() = default; virtual ~EditorBaseApplication();
static EditorBaseApplication* Instance();
void SetResourceFolder(const std::filesystem::path& path) { m_resourceFolder = path; } void SetResourceFolder(const std::filesystem::path& path) { m_resourceFolder = path; }
std::filesystem::path GetResourceFolder() const { return m_resourceFolder; } std::filesystem::path GetResourceFolder() const { return m_resourceFolder; }
@ -60,6 +62,7 @@ namespace Nz
} }
private: private:
static EditorBaseApplication* s_instance;
std::unique_ptr<Nz::WindowSwapchain> m_windowSwapchain; std::unique_ptr<Nz::WindowSwapchain> m_windowSwapchain;
std::vector<std::unique_ptr<Nz::EditorWindow>> m_windows; std::vector<std::unique_ptr<Nz::EditorWindow>> m_windows;

View File

@ -3,9 +3,14 @@
namespace Nz namespace Nz
{ {
EditorBaseApplication* EditorBaseApplication::s_instance = nullptr;
EditorBaseApplication::EditorBaseApplication() EditorBaseApplication::EditorBaseApplication()
: m_level(this) : m_level(this)
{ {
NazaraAssert(s_instance == nullptr, "EditorBaseApplication already exists");
s_instance = this;
auto& windowing = AddComponent<Nz::AppWindowingComponent>(); auto& windowing = AddComponent<Nz::AppWindowingComponent>();
std::shared_ptr<Nz::RenderDevice> device = Nz::Graphics::Instance()->GetRenderDevice(); std::shared_ptr<Nz::RenderDevice> 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() Nz::Level& EditorBaseApplication::GetLevel()
{ {
return m_level; return m_level;