diff --git a/src/supertux/game_object_manager.cpp b/src/supertux/game_object_manager.cpp index ccb7d310067..61a7c289f4b 100644 --- a/src/supertux/game_object_manager.cpp +++ b/src/supertux/game_object_manager.cpp @@ -28,6 +28,7 @@ bool GameObjectManager::s_draw_solids_only = false; bool GameObjectManager::s_needs_flushing_gameobjects_added = false; bool GameObjectManager::s_needs_flushing_gameobjects_removed = false; bool GameObjectManager::s_needs_flushing_tilemaps = false; +bool GameObjectManager::s_is_loading = false; GameObjectManager::GameObjectManager(bool undo_tracking) : m_initialized(false), @@ -186,6 +187,9 @@ GameObjectManager::draw(DrawingContext& context) void GameObjectManager::flush_game_objects() { + if(s_is_loading) + return; + if(!s_needs_flushing_gameobjects_added && !s_needs_flushing_gameobjects_removed && !s_needs_flushing_tilemaps) diff --git a/src/supertux/game_object_manager.hpp b/src/supertux/game_object_manager.hpp index c3e3c872fb9..4f8cd308d97 100644 --- a/src/supertux/game_object_manager.hpp +++ b/src/supertux/game_object_manager.hpp @@ -40,6 +40,7 @@ class GameObjectManager static bool s_needs_flushing_gameobjects_added; static bool s_needs_flushing_gameobjects_removed; static bool s_needs_flushing_tilemaps; + static bool s_is_loading; private: struct NameResolveRequest diff --git a/src/supertux/sector_parser.cpp b/src/supertux/sector_parser.cpp index 17c1aba89f9..fa6a06bbbaf 100644 --- a/src/supertux/sector_parser.cpp +++ b/src/supertux/sector_parser.cpp @@ -101,6 +101,7 @@ SectorParser::parse_object(const std::string& name_, const ReaderMapping& reader void SectorParser::parse(const ReaderMapping& sector) { + GameObjectManager::s_is_loading = true; auto iter = sector.get_iter(); while (iter.next()) { if (iter.get_key() == "name") { @@ -148,13 +149,14 @@ SectorParser::parse(const ReaderMapping& sector) } } } - + GameObjectManager::s_is_loading = false; m_sector.finish_construction(m_editable); } void SectorParser::parse_old_format(const ReaderMapping& reader) { + GameObjectManager::s_is_loading = true; m_sector.set_name("main"); float gravity; @@ -300,6 +302,7 @@ SectorParser::parse_old_format(const ReaderMapping& reader) // add a camera auto camera_ = std::make_unique("Camera"); m_sector.add_object(std::move(camera_)); + GameObjectManager::s_is_loading = false; m_sector.flush_game_objects();