Chunk.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #include "Chunk.h"
  2. Chunk::Chunk(int chunkX, int chunkZ) : chunkX(chunkX), chunkZ(chunkZ)
  3. {
  4. for(int i = 0; i < WORLD_HIGH; i++)
  5. {
  6. dirty[i] = true;
  7. }
  8. for(int y = 0; y < MAX_Y; y++)
  9. {
  10. for(int x = 0; x < CHUNK_SIZE; x++)
  11. {
  12. for(int z = 0; z < CHUNK_SIZE; z++)
  13. {
  14. blocks[y][x][z] = 0;
  15. }
  16. }
  17. }
  18. }
  19. Chunk::Chunk(const Chunk& orig)
  20. {
  21. }
  22. Chunk::~Chunk()
  23. {
  24. }
  25. void Chunk::setBlock(int x, int y, int z, unsigned short block)
  26. {
  27. if(x >= 0 && x < CHUNK_SIZE && y >= 0 && y < MAX_Y && z >= 0 && z < CHUNK_SIZE)
  28. {
  29. blocks[y][x][z] = block;
  30. }
  31. }
  32. unsigned short Chunk::getBlock(int x, int y, int z)
  33. {
  34. if(x >= 0 && x < CHUNK_SIZE && y >= 0 && y < MAX_Y && z >= 0 && z < CHUNK_SIZE)
  35. {
  36. return blocks[y][x][z];
  37. }
  38. return 0;
  39. }
  40. void Chunk::init()
  41. {
  42. for(int i = 0; i < WORLD_HIGH; i++)
  43. {
  44. mesh[i].init();
  45. }
  46. }
  47. void Chunk::renderTick(float lag)
  48. {
  49. for(int i = 0; i < WORLD_HIGH; i++)
  50. {
  51. if(dirty[i])
  52. {
  53. mesh[i].build();
  54. /*
  55. // bottom
  56. tmesh.addPoint(0.0f, 0.0f, 0.0f, 0.125f, 0.0f);
  57. tmesh.addPoint(1.0f, 0.0f, 0.0f, 0.1875f, 0.0f);
  58. tmesh.addPoint(0.0f, 0.0f, 1.0f, 0.125f, 0.0625f);
  59. tmesh.addPoint(1.0f, 0.0f, 0.0f, 0.1875f, 0.0f);
  60. tmesh.addPoint(1.0f, 0.0f, 1.0f, 0.1875f, 0.0625f);
  61. tmesh.addPoint(0.0f, 0.0f, 1.0f, 0.125f, 0.0625f);
  62. // top
  63. tmesh.addPoint(0.0f, 1.0f, 0.0f, 0.25f, 0.0f);
  64. tmesh.addPoint(0.0f, 1.0f, 1.0f, 0.25f, 0.0625f);
  65. tmesh.addPoint(1.0f, 1.0f, 0.0f, 0.3125f, 0.0f);
  66. tmesh.addPoint(1.0f, 1.0f, 0.0f, 0.3125f, 0.0f);
  67. tmesh.addPoint(0.0f, 1.0f, 1.0f, 0.25f, 0.0625f);
  68. tmesh.addPoint(1.0f, 1.0f, 1.0f, 0.3125f, 0.0625f);
  69. // right
  70. tmesh.addPoint(1.0f, 0.0f, 0.0f, 0.1875f, 0.0625f);
  71. tmesh.addPoint(1.0f, 1.0f, 1.0f, 0.25f, 0.0f);
  72. tmesh.addPoint(1.0f, 0.0f, 1.0f, 0.25f, 0.0625f);
  73. tmesh.addPoint(1.0f, 0.0f, 0.0f, 0.1875f, 0.0625f);
  74. tmesh.addPoint(1.0f, 1.0f, 0.0f, 0.1875f, 0.0f);
  75. tmesh.addPoint(1.0f, 1.0f, 1.0f, 0.25f, 0.0f);
  76. // left
  77. tmesh.addPoint(0.0f, 0.0f, 0.0f, 0.1875f, 0.0625f);
  78. tmesh.addPoint(0.0f, 0.0f, 1.0f, 0.25f, 0.0625f);
  79. tmesh.addPoint(0.0f, 1.0f, 1.0f, 0.25f, 0.0f);
  80. tmesh.addPoint(0.0f, 0.0f, 0.0f, 0.1875f, 0.0625f);
  81. tmesh.addPoint(0.0f, 1.0f, 1.0f, 0.25f, 0.0f);
  82. tmesh.addPoint(0.0f, 1.0f, 0.0f, 0.1875f, 0.0f);
  83. // back
  84. tmesh.addPoint(0.0f, 0.0f, 1.0f, 0.1875f, 0.0625f);
  85. tmesh.addPoint(1.0f, 0.0f, 1.0f, 0.25f, 0.0625f);
  86. tmesh.addPoint(1.0f, 1.0f, 1.0f, 0.25f, 0.0f);
  87. tmesh.addPoint(0.0f, 0.0f, 1.0f, 0.1875f, 0.0625f);
  88. tmesh.addPoint(1.0f, 1.0f, 1.0f, 0.25f, 0.0f);
  89. tmesh.addPoint(0.0f, 1.0f, 1.0f, 0.1875f, 0.0f);
  90. // front
  91. tmesh.addPoint(0.0f, 0.0f, 0.0f, 0.1875f, 0.0625f);
  92. tmesh.addPoint(1.0f, 1.0f, 0.0f, 0.25f, 0.0f);
  93. tmesh.addPoint(1.0f, 0.0f, 0.0f, 0.25f, 0.0625f);
  94. tmesh.addPoint(0.0f, 0.0f, 0.0f, 0.1875f, 0.0625f);
  95. tmesh.addPoint(0.0f, 1.0f, 0.0f, 0.1875f, 0.0f);
  96. tmesh.addPoint(1.0f, 1.0f, 0.0f, 0.25f, 0.0f);
  97. */
  98. }
  99. mesh[i].draw();
  100. }
  101. }