/// attributes of a type of block
struct BlockType {
+ int id;
+
bool visible;
+ glm::vec3 color;
- constexpr explicit BlockType(bool v = false)
- : visible(v) { }
+ constexpr explicit BlockType(
+ bool v = false,
+ const glm::vec3 &color = { 1, 1, 1 })
+ : id(-1), visible(v), color(color) { }
static const BlockType DEFAULT;
};
+class BlockTypeRegistry {
+
+public:
+ BlockTypeRegistry();
+
+public:
+ int Add(const BlockType &);
+
+ BlockType *operator [](int id) { return &types[id]; }
+ const BlockType *Get(int id) const { return &types[id]; }
+
+private:
+ std::vector<BlockType> types;
+
+};
+
+
/// single 1x1x1 cube
struct Block {