ClientChunkProvider.cpp 987 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include "ClientChunkProvider.h"
  2. ClientChunkProvider::ClientChunkProvider()
  3. {
  4. chunks = new Chunk*[chunkX * chunkZ];
  5. for(int x = 0; x < chunkX; x++)
  6. {
  7. for(int z = 0; z < chunkZ; z++)
  8. {
  9. chunks[x + z * chunkX] = new Chunk(x, z);
  10. }
  11. }
  12. }
  13. ClientChunkProvider::~ClientChunkProvider()
  14. {
  15. for(int i = 0; i < chunkX * chunkZ; i++)
  16. {
  17. delete chunks[i];
  18. }
  19. delete[] chunks;
  20. }
  21. Chunk* ClientChunkProvider::getChunk(int x, int z)
  22. {
  23. if(isChunkLoaded(x, z))
  24. {
  25. return chunks[x + z * chunkX];
  26. }
  27. return nullptr;
  28. }
  29. bool ClientChunkProvider::isChunkLoaded(int x, int z) const
  30. {
  31. return x >= 0 && x < chunkX && z >= 0 && z < chunkZ;
  32. }
  33. void ClientChunkProvider::forEachLoadedChunk(void* data, void (*fun) (Chunk&, void*)) const
  34. {
  35. for(int x = 0; x < chunkX; x++)
  36. {
  37. for(int z = 0; z < chunkZ; z++)
  38. {
  39. fun(*chunks[x + z * chunkX], data);
  40. }
  41. }
  42. }