iterator erase fix and improved readability
This commit is contained in:
parent
ccacb3088f
commit
261b2540e0
@ -39,13 +39,15 @@ void Planet::Update(glm::vec3 cameraPos)
|
|||||||
{
|
{
|
||||||
numChunks++;
|
numChunks++;
|
||||||
|
|
||||||
if (!(*it->second).ready)
|
Chunk& chunk = *it->second;
|
||||||
|
|
||||||
|
if (!chunk.ready)
|
||||||
chunksLoading++;
|
chunksLoading++;
|
||||||
|
|
||||||
int chunkX = (*it->second).chunkPos.x;
|
int chunkX = chunk.chunkPos.x;
|
||||||
int chunkY = (*it->second).chunkPos.y;
|
int chunkY = chunk.chunkPos.y;
|
||||||
int chunkZ = (*it->second).chunkPos.z;
|
int chunkZ = chunk.chunkPos.z;
|
||||||
if ((*it->second).ready && (abs(chunkX - camChunkX) > renderDistance ||
|
if ( chunk.ready && (abs(chunkX - camChunkX) > renderDistance ||
|
||||||
abs(chunkY - camChunkY) > renderDistance ||
|
abs(chunkY - camChunkY) > renderDistance ||
|
||||||
abs(chunkZ - camChunkZ) > renderDistance))
|
abs(chunkZ - camChunkZ) > renderDistance))
|
||||||
{
|
{
|
||||||
@ -60,13 +62,13 @@ void Planet::Update(glm::vec3 cameraPos)
|
|||||||
chunkDataDeleteQueue.push({ chunkX, chunkY, chunkZ - 1 });
|
chunkDataDeleteQueue.push({ chunkX, chunkY, chunkZ - 1 });
|
||||||
|
|
||||||
// Delete chunk
|
// Delete chunk
|
||||||
delete it->second;
|
delete it->second; // &chunk
|
||||||
it = chunks.erase(it);
|
it = chunks.erase(it);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
numChunksRendered++;
|
numChunksRendered++;
|
||||||
(*it->second).Render(solidShader, billboardShader);
|
chunk.Render(solidShader, billboardShader);
|
||||||
++it;
|
++it;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -75,11 +77,13 @@ void Planet::Update(glm::vec3 cameraPos)
|
|||||||
waterShader->use();
|
waterShader->use();
|
||||||
for (auto it = chunks.begin(); it != chunks.end(); )
|
for (auto it = chunks.begin(); it != chunks.end(); )
|
||||||
{
|
{
|
||||||
int chunkX = (*it->second).chunkPos.x;
|
Chunk& chunk = *it->second;
|
||||||
int chunkY = (*it->second).chunkPos.y;
|
|
||||||
int chunkZ = (*it->second).chunkPos.z;
|
|
||||||
|
|
||||||
(*it->second).RenderWater(waterShader);
|
int chunkX = chunk.chunkPos.x;
|
||||||
|
int chunkY = chunk.chunkPos.y;
|
||||||
|
int chunkZ = chunk.chunkPos.z;
|
||||||
|
|
||||||
|
chunk.RenderWater(waterShader);
|
||||||
++it;
|
++it;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,11 +106,14 @@ void Planet::ChunkThreadUpdate()
|
|||||||
chunks.find({ pos.x, pos.y, pos.z + 1 }) == chunks.end() &&
|
chunks.find({ pos.x, pos.y, pos.z + 1 }) == chunks.end() &&
|
||||||
chunks.find({ pos.x, pos.y, pos.z - 1 }) == chunks.end())
|
chunks.find({ pos.x, pos.y, pos.z - 1 }) == chunks.end())
|
||||||
{
|
{
|
||||||
delete chunkData.at(pos);
|
delete it->second;
|
||||||
chunkData.erase(pos);
|
it = chunkData.erase( it );
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
++it;
|
++it;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Check if camera moved to new chunk
|
// Check if camera moved to new chunk
|
||||||
if (camChunkX != lastCamX || camChunkY != lastCamY || camChunkZ != lastCamZ)
|
if (camChunkX != lastCamX || camChunkY != lastCamY || camChunkZ != lastCamZ)
|
||||||
|
Loading…
Reference in New Issue
Block a user