diff --git a/Nuake/src/Scene/Components/QuakeMap.h b/Nuake/src/Scene/Components/QuakeMap.h index f99c4d3b..fd3bb888 100644 --- a/Nuake/src/Scene/Components/QuakeMap.h +++ b/Nuake/src/Scene/Components/QuakeMap.h @@ -35,6 +35,8 @@ namespace Nuake { bool AutoRebuild = false; float ScaleFactor = 1.f; + bool rebuildNextTick = false; + std::vector> m_Meshes; std::vector m_Brushes; std::vector m_SerializedBrushIDs; @@ -98,5 +100,6 @@ namespace Nuake { inline void QuakeMapComponent::ActionRebuild() { + rebuildNextTick = true; } } diff --git a/Nuake/src/Scene/Scene.cpp b/Nuake/src/Scene/Scene.cpp index f7b73998..cfa9c338 100644 --- a/Nuake/src/Scene/Scene.cpp +++ b/Nuake/src/Scene/Scene.cpp @@ -273,17 +273,29 @@ namespace Nuake for (const auto& e : view) { auto& map = view.get(e); + + bool buildMap = false; + if (map.rebuildNextTick && map.Path.Exist()) + { + buildMap = true; + map.rebuildNextTick = false; + } + if (map.AutoRebuild && map.Path.Exist()) { if (auto file = FileSystem::GetFile(map.Path.GetRelativePath()); file->Exist() && file->GetHasBeenModified()) { file->SetHasBeenModified(false); - - Entity entity = Entity(e, this); - QuakeMapBuilder builder; - builder.BuildQuakeMap(entity, map.HasCollisions); + buildMap = true; } } + + if (buildMap) + { + Entity entity = Entity(e, this); + QuakeMapBuilder builder; + builder.BuildQuakeMap(entity, map.HasCollisions); + } } }