#include "Chunk.h" Chunk::Chunk(int chunkX, int chunkZ) : chunkX(chunkX), chunkZ(chunkZ) { for(int i = 0; i < WORLD_HIGH; i++) { dirty[i] = true; } for(int y = 0; y < MAX_Y; y++) { for(int x = 0; x < CHUNK_SIZE; x++) { for(int z = 0; z < CHUNK_SIZE; z++) { blocks[y][x][z] = 0; } } } } Chunk::Chunk(const Chunk& orig) { } Chunk::~Chunk() { } void Chunk::setBlock(int x, int y, int z, unsigned short block) { if(x >= 0 && x < CHUNK_SIZE && y >= 0 && y < MAX_Y && z >= 0 && z < CHUNK_SIZE) { blocks[y][x][z] = block; } } unsigned short Chunk::getBlock(int x, int y, int z) { if(x >= 0 && x < CHUNK_SIZE && y >= 0 && y < MAX_Y && z >= 0 && z < CHUNK_SIZE) { return blocks[y][x][z]; } return 0; } void Chunk::init() { for(int i = 0; i < WORLD_HIGH; i++) { mesh[i].init(); } } void Chunk::renderTick(float lag) { for(int i = 0; i < WORLD_HIGH; i++) { if(dirty[i]) { mesh[i].build(); /* // bottom tmesh.addPoint(0.0f, 0.0f, 0.0f, 0.125f, 0.0f); tmesh.addPoint(1.0f, 0.0f, 0.0f, 0.1875f, 0.0f); tmesh.addPoint(0.0f, 0.0f, 1.0f, 0.125f, 0.0625f); tmesh.addPoint(1.0f, 0.0f, 0.0f, 0.1875f, 0.0f); tmesh.addPoint(1.0f, 0.0f, 1.0f, 0.1875f, 0.0625f); tmesh.addPoint(0.0f, 0.0f, 1.0f, 0.125f, 0.0625f); // top tmesh.addPoint(0.0f, 1.0f, 0.0f, 0.25f, 0.0f); tmesh.addPoint(0.0f, 1.0f, 1.0f, 0.25f, 0.0625f); tmesh.addPoint(1.0f, 1.0f, 0.0f, 0.3125f, 0.0f); tmesh.addPoint(1.0f, 1.0f, 0.0f, 0.3125f, 0.0f); tmesh.addPoint(0.0f, 1.0f, 1.0f, 0.25f, 0.0625f); tmesh.addPoint(1.0f, 1.0f, 1.0f, 0.3125f, 0.0625f); // right tmesh.addPoint(1.0f, 0.0f, 0.0f, 0.1875f, 0.0625f); tmesh.addPoint(1.0f, 1.0f, 1.0f, 0.25f, 0.0f); tmesh.addPoint(1.0f, 0.0f, 1.0f, 0.25f, 0.0625f); tmesh.addPoint(1.0f, 0.0f, 0.0f, 0.1875f, 0.0625f); tmesh.addPoint(1.0f, 1.0f, 0.0f, 0.1875f, 0.0f); tmesh.addPoint(1.0f, 1.0f, 1.0f, 0.25f, 0.0f); // left tmesh.addPoint(0.0f, 0.0f, 0.0f, 0.1875f, 0.0625f); tmesh.addPoint(0.0f, 0.0f, 1.0f, 0.25f, 0.0625f); tmesh.addPoint(0.0f, 1.0f, 1.0f, 0.25f, 0.0f); tmesh.addPoint(0.0f, 0.0f, 0.0f, 0.1875f, 0.0625f); tmesh.addPoint(0.0f, 1.0f, 1.0f, 0.25f, 0.0f); tmesh.addPoint(0.0f, 1.0f, 0.0f, 0.1875f, 0.0f); // back tmesh.addPoint(0.0f, 0.0f, 1.0f, 0.1875f, 0.0625f); tmesh.addPoint(1.0f, 0.0f, 1.0f, 0.25f, 0.0625f); tmesh.addPoint(1.0f, 1.0f, 1.0f, 0.25f, 0.0f); tmesh.addPoint(0.0f, 0.0f, 1.0f, 0.1875f, 0.0625f); tmesh.addPoint(1.0f, 1.0f, 1.0f, 0.25f, 0.0f); tmesh.addPoint(0.0f, 1.0f, 1.0f, 0.1875f, 0.0f); // front tmesh.addPoint(0.0f, 0.0f, 0.0f, 0.1875f, 0.0625f); tmesh.addPoint(1.0f, 1.0f, 0.0f, 0.25f, 0.0f); tmesh.addPoint(1.0f, 0.0f, 0.0f, 0.25f, 0.0625f); tmesh.addPoint(0.0f, 0.0f, 0.0f, 0.1875f, 0.0625f); tmesh.addPoint(0.0f, 1.0f, 0.0f, 0.1875f, 0.0f); tmesh.addPoint(1.0f, 1.0f, 0.0f, 0.25f, 0.0f); */ } mesh[i].draw(); } }