update method

void update(
  1. double cameraX,
  2. double cameraZ
)

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;
  });
}