]> git.localhorst.tv Git - blank.git/blobdiff - src/world.hpp
decrease block id size
[blank.git] / src / world.hpp
index 60ec6f4dbeca36c1b7364f4834ad3cec54a3e3b7..461da5623f5874c7fae25e9923359eaa29e4ead5 100644 (file)
@@ -3,7 +3,7 @@
 
 #include "block.hpp"
 #include "chunk.hpp"
-#include "controller.hpp"
+#include "entity.hpp"
 #include "noise.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,11 +32,15 @@ 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 &);
 
@@ -52,10 +56,12 @@ private:
        SimplexNoise blockNoise;
        SimplexNoise colorNoise;
 
-       FPSController player;
+       Entity player;
+       Chunk::Pos player_chunk;
 
        std::list<Chunk> loaded;
        std::list<Chunk> to_generate;
+       std::list<Chunk> to_free;
 
 };