]> git.localhorst.tv Git - blank.git/blobdiff - src/world.hpp
stair shape
[blank.git] / src / world.hpp
index 9fb07798c3f976569d4052cb916dc359d702adca..6fabe9a0725e69b63a93797bb673788ca60abb6b 100644 (file)
@@ -1,8 +1,9 @@
 #ifndef BLANK_WORLD_HPP_
 #define BLANK_WORLD_HPP_
 
-#include "model.hpp"
 #include "geometry.hpp"
+#include "model.hpp"
+#include "shape.hpp"
 
 #include <list>
 #include <vector>
@@ -18,16 +19,20 @@ struct BlockType {
        int id;
 
        bool visible;
+
+       const Shape *shape;
        glm::vec3 color;
        glm::vec3 outline_color;
 
-       constexpr explicit BlockType(
+       explicit BlockType(
                bool v = false,
                const glm::vec3 &color = { 1, 1, 1 },
+               const Shape *shape = &DEFAULT_SHAPE,
                const glm::vec3 &outline_color = { -1, -1, -1 })
-       : id(-1), visible(v), color(color), outline_color(outline_color) { }
+       : id(-1), visible(v), shape(shape), color(color), outline_color(outline_color) { }
 
        static const BlockType DEFAULT;
+       static const CuboidShape DEFAULT_SHAPE;
 
 
        void FillVBO(
@@ -64,6 +69,8 @@ public:
 public:
        int Add(const BlockType &);
 
+       size_t Size() const { return types.size(); }
+
        BlockType *operator [](int id) { return &types[id]; }
        const BlockType *Get(int id) const { return &types[id]; }
 
@@ -178,6 +185,10 @@ private:
 
 private:
        BlockTypeRegistry blockType;
+       CuboidShape blockShape;
+       StairShape stairShape;
+       CuboidShape slabShape;
+
        std::list<Chunk> chunks;
 
 };