Ajout de RetrieveChunk

This commit is contained in:
MarcEricMartel 2021-12-01 22:06:47 -05:00
parent af0464b3a2
commit 4bb865cbba
4 changed files with 23 additions and 1 deletions

View File

@ -21,6 +21,7 @@
#define FRAMES_RENDER_CHUNKS 2
#define FRAMES_UPDATE_CHUNKS 2
#define FRAMES_DELETE_CHUNKS 2
#define VIEW_DISTANCE 512
#define MAX_SELECTION_DISTANCE 5

Binary file not shown.

View File

@ -79,3 +79,21 @@ void World::TransposeWorld(Player& player) {
player.Transpose(x, y);
}
void World::CleanUpWorld(int& frames) {
if (!m_tbDeleted.empty() && !frames) {
m_tbDeleted.pop_back();
frames = FRAMES_DELETE_CHUNKS;
}
}
Chunk* World::RetrieveChunk(int x, int y) {
for (int index = 0; index < m_tbDeleted.size(); ++index) {
int cx, cy;
m_tbDeleted.at(index)->GetPosition(cx, cy);
if (cx == x && cy == y)
return std::move(m_tbDeleted.at(index));
}
return nullptr;
}

View File

@ -27,11 +27,14 @@ class World {
BlockType BlockAt(const Vector3f& pos, BlockType defaultBlockType = BTYPE_AIR) const;
void TransposeWorld(Player& player);
void CleanUpWorld(int& frames);
Chunk* RetrieveChunk(int x, int y);
private:
Array2d<Chunk*> m_chunks = Array2d<Chunk*>(WORLD_SIZE_X, WORLD_SIZE_Y);
std::vector<Chunk*> m_tbDeleted;
int m_center[2] = {INT16_MAX / 2, INT16_MAX / 2};
int m_center[2] = {INT16_MAX / 2 - WORLD_SIZE_X / 2, INT16_MAX / 2 - WORLD_SIZE_Y / 2};
};
#endif // WORLD_H__