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