summaryrefslogtreecommitdiffstats
path: root/src/RendererWorld.cpp
diff options
context:
space:
mode:
authorLaG1924 <12997935+LaG1924@users.noreply.github.com>2018-03-17 16:53:05 +0100
committerLaG1924 <12997935+LaG1924@users.noreply.github.com>2018-03-17 16:53:05 +0100
commitc9200dfbece69507e7a9a22af5a73d3f010bc14f (patch)
tree2db8f6cafb3a877aa502037ca48e39b2c0ce3428 /src/RendererWorld.cpp
parentNew lock-free RendererSectionData parsing (diff)
downloadAltCraft-c9200dfbece69507e7a9a22af5a73d3f010bc14f.tar
AltCraft-c9200dfbece69507e7a9a22af5a73d3f010bc14f.tar.gz
AltCraft-c9200dfbece69507e7a9a22af5a73d3f010bc14f.tar.bz2
AltCraft-c9200dfbece69507e7a9a22af5a73d3f010bc14f.tar.lz
AltCraft-c9200dfbece69507e7a9a22af5a73d3f010bc14f.tar.xz
AltCraft-c9200dfbece69507e7a9a22af5a73d3f010bc14f.tar.zst
AltCraft-c9200dfbece69507e7a9a22af5a73d3f010bc14f.zip
Diffstat (limited to 'src/RendererWorld.cpp')
-rw-r--r--src/RendererWorld.cpp20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/RendererWorld.cpp b/src/RendererWorld.cpp
index 6349573..628680c 100644
--- a/src/RendererWorld.cpp
+++ b/src/RendererWorld.cpp
@@ -170,17 +170,15 @@ RendererWorld::RendererWorld(GameState* ptr) {
auto it = sections.find(parsing[id].renderer.sectionPos);
- if (it != sections.end() && parsing[id].renderer.hash == it->second.GetHash() && !parsing[id].renderer.forced) {
- LOG(WARNING) << "Generated not necessary RendererSectionData: " << parsing[id].renderer.sectionPos;
- return;
- }
-
- if (it != sections.end())
- sections.erase(it);
-
- const RendererSectionData &data = parsing[id].renderer;
-
- sections.emplace(std::make_pair(parsing[id].renderer.sectionPos, RendererSection(data)));
+ if (it != sections.end()) {
+ if (parsing[id].renderer.hash == it->second.GetHash() && !parsing[id].renderer.forced) {
+ LOG(WARNING) << "Generated not necessary RendererSectionData: " << parsing[id].renderer.sectionPos;
+ parsing[id] = RendererWorld::SectionParsing();
+ return;
+ }
+ it->second.UpdateData(parsing[id].renderer);
+ } else
+ sections.emplace(std::make_pair(parsing[id].renderer.sectionPos, RendererSection(parsing[id].renderer)));
parsing[id] = RendererWorld::SectionParsing();
});