+
+class World {
+
+public:
+ World();
+
+ void Generate();
+
+ bool Intersection(
+ const Ray &,
+ const glm::mat4 &M,
+ Chunk **chunk = nullptr,
+ int *blkid = nullptr,
+ float *dist = nullptr,
+ glm::vec3 *normal = nullptr);
+
+ BlockTypeRegistry &BlockTypes() { return blockType; }
+ std::list<Chunk> &LoadedChunks() { return chunks; }
+
+ Chunk &Next(const Chunk &, const glm::vec3 &dir);
+
+private:
+ Chunk &Generate(const glm::vec3 &);
+
+private:
+ BlockTypeRegistry blockType;
+ std::list<Chunk> chunks;
+
+};
+