Fog and more blocks

This commit is contained in:
Ben
2019-10-18 22:34:22 +01:00
parent ababa43c72
commit 13b3e7f3b1
9 changed files with 69 additions and 22 deletions

View File

@@ -92,9 +92,8 @@ void Game::Setup(int w, int h) {
Texture texture;
m_world->TextureID = texture.LoadTextures(BlockDictionary->Textures);
for (int x = 0; x < 2; x++)
for (int y = 0; y < 3; y++) {
for (int y = 0; y < 2; y++) {
m_world->Chunks.push_back(std::make_shared<Chunk>(x, y));
@@ -150,7 +149,7 @@ void Game::Run() {
SDL_Event e;
const float clear[] = { 0.1f, 0.45f, 0.9f, 1.0f };
const float clear[] = { 186.0f / 255.0f, 214.0f / 255.0f, 254.0f / 255.0f };
m_renderer = std::make_unique<Renderer>();

View File

@@ -13,25 +13,38 @@ Chunk::Chunk(int x, int z) {
m_model = glm::translate(glm::mat4(1.0f), { x * CHUNK_WIDTH, 0, z * CHUNK_DEPTH });
std::default_random_engine generator;
// [x + WIDTH * (y + HEIGHT * z)]
for (int x = 0; x < CHUNK_WIDTH; x++)
for (int y = 0; y < CHUNK_HEIGHT; y++)
for (int z = 0; z < CHUNK_DEPTH; z++) {
if (y > 15) {
if (y > 32) {
Voxels.push_back((uint8_t)EBlockType::Air);
continue;
}
std::uniform_real_distribution<float> distribution(0, 1);
float r = distribution(generator);
if (r > 0.5f)
if (y == 0) {
Voxels.push_back((uint8_t)EBlockType::Bedrock);
}
else if (y < 28) {
Voxels.push_back((uint8_t)EBlockType::Stone);
}
else if (y < 32) {
Voxels.push_back((uint8_t)EBlockType::Dirt);
}
else {
Voxels.push_back((uint8_t)EBlockType::Grass);
else
Voxels.push_back((uint8_t)EBlockType::Air);
}
}

View File

@@ -21,14 +21,20 @@ std::shared_ptr<CBlockDictionary> CBlockDictionary::GetInstance() {
void CBlockDictionary::Build() {
RegisterTexture("stone.png");
RegisterTexture("dirt.png");
RegisterTexture("grass_side.png");
RegisterTexture("grass_top.png");
RegisterTexture("cobblestone.png");
RegisterTexture("bedrock.png");
// Texture winding order - top, bottom, left, right, front, back
RegisterBlock(EBlockType::Air, { });
RegisterBlock(EBlockType::Dirt, { EFaceTexture::Dirt, EFaceTexture::Dirt, EFaceTexture::Dirt, EFaceTexture::Dirt, EFaceTexture::Dirt, EFaceTexture::Dirt });
RegisterBlock(EBlockType::Grass, { EFaceTexture::Grass, EFaceTexture::Dirt, EFaceTexture::GrassSide, EFaceTexture::GrassSide, EFaceTexture::GrassSide, EFaceTexture::GrassSide });
RegisterBlock(EBlockType::Air, { });
RegisterBlock(EBlockType::Stone, { EFaceTexture::Stone, EFaceTexture::Stone, EFaceTexture::Stone, EFaceTexture::Stone, EFaceTexture::Stone, EFaceTexture::Stone });
RegisterBlock(EBlockType::Dirt, { EFaceTexture::Dirt, EFaceTexture::Dirt, EFaceTexture::Dirt, EFaceTexture::Dirt, EFaceTexture::Dirt, EFaceTexture::Dirt });
RegisterBlock(EBlockType::Grass, { EFaceTexture::Grass, EFaceTexture::Dirt, EFaceTexture::GrassSide, EFaceTexture::GrassSide, EFaceTexture::GrassSide, EFaceTexture::GrassSide });
RegisterBlock(EBlockType::Cobblestone, { EFaceTexture::Cobblestone, EFaceTexture::Cobblestone, EFaceTexture::Cobblestone, EFaceTexture::Cobblestone, EFaceTexture::Cobblestone, EFaceTexture::Cobblestone });
RegisterBlock(EBlockType::Bedrock, { EFaceTexture::Bedrock, EFaceTexture::Bedrock, EFaceTexture::Bedrock, EFaceTexture::Bedrock, EFaceTexture::Bedrock, EFaceTexture::Bedrock });
}

View File

@@ -8,9 +8,12 @@ namespace EBlockType {
enum Block : uint8_t {
Air = 0,
Dirt = 1,
Grass = 2
Air = 0,
Stone,
Grass,
Dirt,
Cobblestone,
Bedrock
};
@@ -20,9 +23,12 @@ namespace EFaceTexture {
enum Texture : uint16_t {
Dirt = 0,
GrassSide = 1,
Grass = 2
Stone,
Dirt,
GrassSide,
Grass,
Cobblestone,
Bedrock
};