]> git.localhorst.tv Git - blank.git/blobdiff - src/world.hpp
add building notes
[blank.git] / src / world.hpp
index 60ec6f4dbeca36c1b7364f4834ad3cec54a3e3b7..4823c47b0c8c0ec804f62f10c5d83f4e5c2dbd04 100644 (file)
@@ -3,8 +3,8 @@
 
 #include "block.hpp"
 #include "chunk.hpp"
-#include "controller.hpp"
-#include "noise.hpp"
+#include "entity.hpp"
+#include "generator.hpp"
 #include "shader.hpp"
 #include "shape.hpp"
 
@@ -19,7 +19,7 @@ class World {
 public:
        World();
 
-       void Generate(const glm::tvec3<int> &from, const glm::tvec3<int> &to);
+       void Generate(const Chunk::Pos &from, const Chunk::Pos &to);
 
        bool Intersection(
                const Ray &,
@@ -32,30 +32,32 @@ public:
        BlockTypeRegistry &BlockTypes() { return blockType; }
        std::list<Chunk> &LoadedChunks() { return loaded; }
 
-       FPSController &Controller() { return player; }
+       Entity &Player() { return player; }
 
-       Chunk &Next(const Chunk &, const glm::vec3 &dir);
+       Chunk *ChunkLoaded(const Chunk::Pos &);
+       Chunk *ChunkQueued(const Chunk::Pos &);
+       Chunk *ChunkAvailable(const Chunk::Pos &);
+       Chunk &Next(const Chunk &, const glm::tvec3<int> &dir);
 
        void Update(int dt);
+       void CheckChunkGeneration();
 
        void Render(DirectionalLighting &);
 
-private:
-       void Generate(Chunk &);
-
 private:
        BlockTypeRegistry blockType;
        CuboidShape blockShape;
        StairShape stairShape;
        CuboidShape slabShape;
 
-       SimplexNoise blockNoise;
-       SimplexNoise colorNoise;
+       Generator generate;
 
-       FPSController player;
+       Entity player;
+       Chunk::Pos player_chunk;
 
        std::list<Chunk> loaded;
        std::list<Chunk> to_generate;
+       std::list<Chunk> to_free;
 
 };