smh
This commit is contained in:
@@ -17,15 +17,15 @@ Chunk::Chunk(int x, int z) {
|
||||
for (int z = 0; z < CHUNK_DEPTH; z++) {
|
||||
|
||||
// Grass on the top layer
|
||||
if (y == CHUNK_HEIGHT - 1) {
|
||||
// if (y == CHUNK_HEIGHT - 1) {
|
||||
|
||||
Voxels.push_back((uint8_t)EBlockType::Grass);
|
||||
|
||||
} else {
|
||||
// } else {
|
||||
|
||||
Voxels.push_back((uint8_t)EBlockType::Dirt);
|
||||
// Voxels.push_back((uint8_t)EBlockType::Dirt);
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "voxel.hpp"
|
||||
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
|
||||
#include "shader.hpp"
|
||||
#include "camera.hpp"
|
||||
@@ -87,10 +88,14 @@ void Voxel::AddFace(EFaceType::Face face) {
|
||||
|
||||
std::cout << "Voxel ID " << (int)Block << std::endl;
|
||||
|
||||
CBlockEntry block = BlockDictionary.BlockEntries[Block];
|
||||
std::cout << "Block ID " << (int)block.ID << std::endl;
|
||||
std::shared_ptr<CBlockEntry> block = BlockDictionary.BlockEntries[Block];
|
||||
|
||||
std::cout << "Block Entries Size " << BlockDictionary.BlockEntries.size() << std::endl;
|
||||
|
||||
std::cout << "Block ID " << (int)block->ID << std::endl;
|
||||
std::cout << "Block Texture Count " << (int)block->FaceTextures.size() << std::endl;
|
||||
|
||||
uint16_t tex = block.FaceTextures[face];
|
||||
uint16_t tex = block->FaceTextures[(uint16_t)face];
|
||||
std::cout << "Texture ID " << (int)tex << std::endl;
|
||||
|
||||
std::vector<glm::vec3> uvws;
|
||||
@@ -103,7 +108,6 @@ void Voxel::AddFace(EFaceType::Face face) {
|
||||
|
||||
m_uvs.insert(m_uvs.end(), uvws.begin(), uvws.end());
|
||||
|
||||
|
||||
}
|
||||
|
||||
void Voxel::GetMesh(std::vector<glm::vec3>& verts, std::vector<glm::vec3>& uvs) {
|
||||
|
||||
@@ -6,27 +6,28 @@
|
||||
|
||||
void CBlockDictionary::Build() {
|
||||
|
||||
registerTexture("dirt.png");
|
||||
registerTexture("grass_side.png");
|
||||
registerTexture("grass_top.png");
|
||||
RegisterTexture("dirt.png");
|
||||
RegisterTexture("grass_side.png");
|
||||
RegisterTexture("grass_top.png");
|
||||
|
||||
// Texture winding order - top, bottom, left, right, front, back
|
||||
registerBlock(EBlockType::Air, { EFaceTexture::Air, EFaceTexture::Air, EFaceTexture::Air, EFaceTexture::Air, EFaceTexture::Air, EFaceTexture::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::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 });
|
||||
|
||||
std::cout << "Block Entries Size " << BlockEntries.size() << std::endl;
|
||||
|
||||
}
|
||||
|
||||
void CBlockDictionary::registerTexture(std::string texture) {
|
||||
void CBlockDictionary::RegisterTexture(std::string texture) {
|
||||
|
||||
Textures.push_back(texture);
|
||||
|
||||
}
|
||||
|
||||
void CBlockDictionary::registerBlock(EBlockType::Block block, std::vector<uint16_t> faceTextures) {
|
||||
void CBlockDictionary::RegisterBlock(uint8_t block, std::vector<uint16_t> faceTextures) {
|
||||
|
||||
CBlockEntry entry = { block, faceTextures };
|
||||
|
||||
BlockEntries[(uint8_t)block] = entry;
|
||||
std::cout << "Block Entries Size " << BlockEntries.size() << std::endl;
|
||||
BlockEntries[block] = std::make_shared<CBlockEntry>((uint8_t)block, faceTextures);
|
||||
|
||||
}
|
||||
|
||||
@@ -8,9 +8,9 @@ namespace EBlockType {
|
||||
|
||||
enum Block : uint8_t {
|
||||
|
||||
Air = 0,
|
||||
Dirt,
|
||||
Grass
|
||||
Air = 0,
|
||||
Dirt = 1,
|
||||
Grass = 2
|
||||
|
||||
};
|
||||
|
||||
@@ -20,19 +20,22 @@ namespace EFaceTexture {
|
||||
|
||||
enum Texture : uint16_t {
|
||||
|
||||
Air = 0,
|
||||
Dirt,
|
||||
GrassSide,
|
||||
Grass
|
||||
Dirt = 0,
|
||||
GrassSide = 1,
|
||||
Grass = 2
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
// Texture winding order - top, bottom, left, right, front, back
|
||||
class CBlockEntry {
|
||||
public:
|
||||
|
||||
CBlockEntry(uint8_t id, std::vector<uint16_t> faceTextures)
|
||||
: ID(id), FaceTextures(faceTextures) { }
|
||||
|
||||
uint8_t ID;
|
||||
// Texture winding order - top, bottom, left, right, front, back
|
||||
std::vector<uint16_t> FaceTextures;
|
||||
|
||||
};
|
||||
@@ -52,14 +55,12 @@ public:
|
||||
// Only supports up to 255 blocs, 0 being air
|
||||
// word stores vectors of chunks which are 16x16x256
|
||||
// vectors of uint8_t which reference the block dictionary
|
||||
std::map<uint8_t, CBlockEntry> BlockEntries;
|
||||
|
||||
private:
|
||||
std::map<uint8_t, std::shared_ptr<CBlockEntry>> BlockEntries;
|
||||
|
||||
// Expects textures to be inserted in order, 0-...
|
||||
void registerTexture(std::string texture);
|
||||
void RegisterTexture(std::string texture);
|
||||
|
||||
void registerBlock(EBlockType::Block block, std::vector<uint16_t> faceTextures);
|
||||
void RegisterBlock(uint8_t block, std::vector<uint16_t> faceTextures);
|
||||
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user