From 66e73a2d682f02224a2c84319f6db03964ecbac2 Mon Sep 17 00:00:00 2001 From: Mattes D Date: Tue, 24 Sep 2019 14:20:50 +0200 Subject: NBTChunkSerializer: Cleaned up interface. Removed dependency on cChunkDataCallback. Moved all the serializing code into a worker class. Changed the serialization into a single-call action. --- src/ChunkMap.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/ChunkMap.cpp') diff --git a/src/ChunkMap.cpp b/src/ChunkMap.cpp index b5a6252ff..bc88f4e7b 100644 --- a/src/ChunkMap.cpp +++ b/src/ChunkMap.cpp @@ -444,12 +444,18 @@ void cChunkMap::ChunkLighted( -bool cChunkMap::GetChunkData(int a_ChunkX, int a_ChunkZ, cChunkDataCallback & a_Callback) +bool cChunkMap::GetChunkData(cChunkCoords a_Coords, cChunkDataCallback & a_Callback) { + if (!a_Callback.Coords(a_Coords.m_ChunkX, a_Coords.m_ChunkZ)) + { + // The callback doesn't want the data + return false; + } cCSLock Lock(m_CSChunks); - cChunkPtr Chunk = GetChunkNoGen(a_ChunkX, a_ChunkZ); + cChunkPtr Chunk = GetChunkNoGen(a_Coords); if ((Chunk == nullptr) || !Chunk->IsValid()) { + // The chunk is not present return false; } Chunk->GetAllData(a_Callback); -- cgit v1.2.3