]> git.localhorst.tv Git - blank.git/blobdiff - src/world.hpp
first attempt at world generation
[blank.git] / src / world.hpp
index 6fabe9a0725e69b63a93797bb673788ca60abb6b..ce44c7c1144352c4c31aedfb0505f86ea5317e05 100644 (file)
@@ -3,6 +3,7 @@
 
 #include "geometry.hpp"
 #include "model.hpp"
+#include "noise.hpp"
 #include "shape.hpp"
 
 #include <list>
@@ -32,7 +33,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(
@@ -113,16 +114,16 @@ public:
                        pos.z >= 0 && pos.z < Depth();
        }
        static constexpr int ToIndex(const glm::vec3 &pos) {
-               return pos.x + pos.y * Width() + pos.z * Width() * Height();
+               return int(pos.x) + int(pos.y) * Width() + int(pos.z) * Width() * Height();
        }
        static constexpr bool InBounds(int idx) {
                return idx >= 0 && idx < Size();
        }
        static glm::vec3 ToCoords(int idx) {
                return glm::vec3(
-                       idx % Width(),
-                       (idx / Width()) % Height(),
-                       idx / (Width() * Height())
+                       0.5f + idx % Width(),
+                       0.5f + (idx / Width()) % Height(),
+                       0.5f + idx / (Width() * Height())
                );
        }
 
@@ -189,6 +190,9 @@ private:
        StairShape stairShape;
        CuboidShape slabShape;
 
+       SimplexNoise blockNoise;
+       SimplexNoise colorNoise;
+
        std::list<Chunk> chunks;
 
 };