-const BlockType BlockType::DEFAULT;
-const CuboidShape BlockType::DEFAULT_SHAPE({{ 0, 0, 0 }, { 1, 1, 1 }});
-
-void BlockType::FillVBO(
- const glm::vec3 &pos,
- std::vector<glm::vec3> &vertices,
- std::vector<glm::vec3> &colors,
- std::vector<glm::vec3> &normals
-) const {
- shape->Vertices(vertices, pos);
- colors.insert(colors.end(), shape->VertexCount(), color);
- shape->Normals(normals);
-}
-
-void BlockType::FillOutlineVBO(
- std::vector<glm::vec3> &vertices,
- std::vector<glm::vec3> &colors
-) const {
- shape->Outline(vertices);
- colors.insert(colors.end(), shape->OutlineCount(), outline_color);
-}
-
-
-BlockTypeRegistry::BlockTypeRegistry() {
- Add(BlockType::DEFAULT);
-}
-
-int BlockTypeRegistry::Add(const BlockType &t) {
- int id = types.size();
- types.push_back(t);
- types.back().id = id;
- return id;
-}
-
-
-Chunk::Chunk()
-: blocks(Size())
-, model()
-, transform(1.0f)
-, dirty(false) {
+World::World()
+: blockType()
+, blockShape({{ -0.5f, -0.5f, -0.5f }, { 0.5f, 0.5f, 0.5f }})
+, stairShape({{ -0.5f, -0.5f, -0.5f }, { 0.5f, 0.5f, 0.5f }}, { 0.0f, 0.0f })
+, slabShape({{ -0.5f, -0.5f, -0.5f }, { 0.5f, 0.0f, 0.5f }})
+, blockNoise(0)
+, colorNoise(1)
+, player()
+, player_chunk(0, 0, 0)
+, loaded()
+, to_generate() {
+ blockType.Add(BlockType{ true, { 1.0f, 1.0f, 1.0f }, &blockShape }); // white block
+ blockType.Add(BlockType{ true, { 1.0f, 1.0f, 1.0f }, &stairShape }); // white stair
+ blockType.Add(BlockType{ true, { 1.0f, 1.0f, 1.0f }, &slabShape }); // white slab
+ blockType.Add(BlockType{ true, { 1.0f, 0.0f, 0.0f }, &blockShape }); // red block
+ blockType.Add(BlockType{ true, { 1.0f, 0.0f, 0.0f }, &stairShape }); // red stair
+ blockType.Add(BlockType{ true, { 1.0f, 0.0f, 0.0f }, &slabShape }); // red slab
+ blockType.Add(BlockType{ true, { 0.0f, 1.0f, 0.0f }, &blockShape }); // green block
+ blockType.Add(BlockType{ true, { 0.0f, 1.0f, 0.0f }, &stairShape }); // green stair
+ blockType.Add(BlockType{ true, { 0.0f, 1.0f, 0.0f }, &slabShape }); // green slab
+ blockType.Add(BlockType{ true, { 0.0f, 0.0f, 1.0f }, &blockShape }); // blue block
+ blockType.Add(BlockType{ true, { 0.0f, 0.0f, 1.0f }, &stairShape }); // blue stair
+ blockType.Add(BlockType{ true, { 0.0f, 0.0f, 1.0f }, &slabShape }); // blue slab