diff --git a/editor/editor.cpp b/editor/editor.cpp index 68d580d5..ee6c0823 100644 --- a/editor/editor.cpp +++ b/editor/editor.cpp @@ -760,7 +760,7 @@ Editor::SetupPathfinderNodes() } void -Editor::CreateLevel(const std::string& name, const glm::ivec2& size) +Editor::FreeLevelData() { if (m_levelLoaded) { @@ -773,6 +773,12 @@ Editor::CreateLevel(const std::string& name, const glm::ivec2& size) renderer::VulkanRenderer::FreeData(renderer::ApplicationType::EDITOR, false); } +} + +void +Editor::CreateLevel(const std::string& name, const glm::ivec2& size) +{ + FreeLevelData(); m_currentLevel = std::make_shared< Level >(); m_currentLevel->Create(this, name, size); @@ -792,14 +798,7 @@ Editor::CreateLevel(const std::string& name, const glm::ivec2& size) void Editor::LoadLevel(const std::string& levelPath) { - if (m_levelLoaded) - { - UnselectEditorObject(); - UnselectGameObject(); - m_currentLevel.reset(); - m_editorObjects.clear(); - pathfinderNodes_.clear(); - } + FreeLevelData(); renderer::VulkanRenderer::SetAppMarker(renderer::ApplicationType::EDITOR); diff --git a/editor/editor.hpp b/editor/editor.hpp index 3e512899..ec74a992 100644 --- a/editor/editor.hpp +++ b/editor/editor.hpp @@ -192,6 +192,9 @@ class Editor : public Application void SetupPathfinderNodes(); + void + FreeLevelData(); + std::unique_ptr< Game > m_game = {}; std::string m_levelFileName = {};