update method
Implementation
void update(double cameraX, double cameraZ) {
int playerChunkX = (cameraX / chunkSize).floor();
int playerChunkZ = (cameraZ / chunkSize).floor();
List<String> currentVisibleKeys = [];
// Görüş mesafesindeki Chunk'ları bul
for (int x = -viewDistance; x <= viewDistance; x++) {
for (int z = -viewDistance; z <= viewDistance; z++) {
int cx = playerChunkX + x;
int cz = playerChunkZ + z;
String key = "$cx,$cz";
currentVisibleKeys.add(key);
// Eğer Chunk henüz oluşturulmadıysa oluştur ve nesneleri diz
if (!_activeChunks.containsKey(key)) {
var newChunk = Chunk(cx, cz, chunkSize: chunkSize);
newChunk.load(boxPool);
_activeChunks[key] = newChunk;
}
}
}
// Görüş alanından çıkan eski Chunk'ları temizle
_activeChunks.removeWhere((key, chunk) {
if (!currentVisibleKeys.contains(key)) {
chunk.unload(boxPool); // İçindeki objeleri havuza geri ver
return true; // Hafızadan (Map'ten) sil
}
return false;
});
}