]> git.localhorst.tv Git - blank.git/commitdiff
add null shape for void blocks
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Sun, 8 Mar 2015 10:33:31 +0000 (11:33 +0100)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Sun, 8 Mar 2015 10:33:31 +0000 (11:33 +0100)
src/shape.cpp
src/shape.hpp
src/world.cpp
src/world.hpp

index 3df425785d5eb922948cdccd31b80ad638db6d23..e8bd2e6f42a01bb8f8c728614bbd0fa7d5e59e35 100644 (file)
@@ -3,6 +3,31 @@
 
 namespace blank {
 
+size_t NullShape::VertexCount() const {
+       return 0;
+}
+
+void NullShape::Vertices(std::vector<glm::vec3> &out, const glm::vec3 &pos) const {
+
+}
+
+void NullShape::Normals(std::vector<glm::vec3> &out) const {
+
+}
+
+size_t NullShape::OutlineCount() const {
+       return 0;
+}
+
+void NullShape::Outline(std::vector<glm::vec3> &out, const glm::vec3 &pos) const {
+
+}
+
+bool NullShape::Intersects(const Ray &, const glm::mat4 &, float &, glm::vec3 &) const {
+       return false;
+}
+
+
 CuboidShape::CuboidShape(const AABB &b)
 : Shape()
 , bb(b) {
index 434f427ec7b70473d86390288f1b2020e19a79e8..66827d08b27c1c1ed5064be731b1f7dca54adc90 100644 (file)
@@ -23,6 +23,22 @@ struct Shape {
 };
 
 
+class NullShape
+: public Shape {
+
+public:
+       size_t VertexCount() const override;
+       void Vertices(std::vector<glm::vec3> &, const glm::vec3 &) const override;
+       void Normals(std::vector<glm::vec3> &) const override;
+
+       size_t OutlineCount() const override;
+       void Outline(std::vector<glm::vec3> &, const glm::vec3 &) const override;
+
+       bool Intersects(const Ray &, const glm::mat4 &, float &, glm::vec3 &) const override;
+
+};
+
+
 class CuboidShape
 : public Shape {
 
index 6ce0700d2b99e694066ba3ab61e2ef08c5e745d6..aea6ec2ec8724b0de2dd5b56d8f58453c7769709 100644 (file)
@@ -7,7 +7,7 @@
 namespace blank {
 
 const BlockType BlockType::DEFAULT;
-const CuboidShape BlockType::DEFAULT_SHAPE({{ 0, 0, 0 }, { 1, 1, 1 }});
+const NullShape BlockType::DEFAULT_SHAPE;
 
 void BlockType::FillVBO(
        const glm::vec3 &pos,
@@ -138,7 +138,6 @@ void Chunk::Position(const glm::vec3 &pos) {
 
 
 int Chunk::VertexCount() const {
-       // TODO: query blocks as soon as type shapes are implemented
        int count = 0;
        for (const auto &block : blocks) {
                count += block.type->shape->VertexCount();
@@ -151,9 +150,7 @@ void Chunk::Update() {
        model.Reserve(VertexCount());
 
        for (size_t i = 0; i < Size(); ++i) {
-               if (blocks[i].type->visible) {
-                       blocks[i].type->FillModel(ToCoords(i), model);
-               }
+               blocks[i].type->FillModel(ToCoords(i), model);
        }
 
        model.Invalidate();
index 6fabe9a0725e69b63a93797bb673788ca60abb6b..738e6f0eac8401f1149081a93a8171fe73607046 100644 (file)
@@ -32,7 +32,7 @@ struct BlockType {
        : id(-1), visible(v), shape(shape), color(color), outline_color(outline_color) { }
 
        static const BlockType DEFAULT;
-       static const CuboidShape DEFAULT_SHAPE;
+       static const NullShape DEFAULT_SHAPE;
 
 
        void FillVBO(