X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fchunk.hpp;h=61303aad02280f102c7d3d14a3175e2b8c73a67d;hb=374843f5b3ae60c0d02704a8da5100ac8abe7f1a;hp=d996deefc23088876598b6fb486c5a43e91591e5;hpb=e70967c971f77a4ac0f5c074e6eb94bdd0e2b7ab;p=blank.git diff --git a/src/chunk.hpp b/src/chunk.hpp index d996dee..61303aa 100644 --- a/src/chunk.hpp +++ b/src/chunk.hpp @@ -5,6 +5,7 @@ #include "geometry.hpp" #include "model.hpp" +#include #include #include @@ -87,6 +88,41 @@ private: }; + +class Generator; + +class ChunkLoader { + +public: + ChunkLoader(const BlockTypeRegistry &, const Generator &); + + void Generate(const Chunk::Pos &from, const Chunk::Pos &to); + + std::list &Loaded() { return loaded; } + + Chunk *Loaded(const Chunk::Pos &); + Chunk *Queued(const Chunk::Pos &); + Chunk *Known(const Chunk::Pos &); + Chunk &ForceLoad(const Chunk::Pos &); + + void Rebase(const Chunk::Pos &); + void Update(); + +private: + Chunk::Pos base; + + const BlockTypeRegistry ® + const Generator &gen; + + std::list loaded; + std::list to_generate; + std::list to_free; + + int load_dist; + int unload_dist; + +}; + } #endif