X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fworld%2FChunkLoader.hpp;h=b2730a67e15fdcaa2cf1b1e7039cf56d1c507427;hb=551573ecb04969696f916aeb5485658e298a7f6b;hp=6a8c2c19ac30d2143d42f85f01512d68c63af531;hpb=39df551265bff648c1ac166043bb4b046122cc8d;p=blank.git diff --git a/src/world/ChunkLoader.hpp b/src/world/ChunkLoader.hpp index 6a8c2c1..b2730a6 100644 --- a/src/world/ChunkLoader.hpp +++ b/src/world/ChunkLoader.hpp @@ -11,6 +11,7 @@ namespace blank { class BlockTypeRegistry; class Generator; +class WorldSave; class ChunkLoader { @@ -21,10 +22,15 @@ public: int gen_limit = 16; }; - ChunkLoader(const Config &, const BlockTypeRegistry &, const Generator &) noexcept; + ChunkLoader( + const Config &, + const BlockTypeRegistry &, + const Generator &, + const WorldSave & + ) noexcept; - void Generate(const Chunk::Pos &from, const Chunk::Pos &to); - void GenerateSurrounding(const Chunk::Pos &); + void Queue(const Chunk::Pos &from, const Chunk::Pos &to); + void QueueSurrounding(const Chunk::Pos &); std::list &Loaded() noexcept { return loaded; } @@ -39,12 +45,12 @@ public: void Rebase(const Chunk::Pos &); void Update(int dt); - std::size_t ToLoad() const noexcept { return to_generate.size(); } + std::size_t ToLoad() const noexcept { return to_load.size(); } void LoadOne(); void LoadN(std::size_t n); private: - Chunk &Generate(const Chunk::Pos &pos); + Chunk &Load(const Chunk::Pos &pos); // link given chunk to all loaded neighbors void Insert(Chunk &) noexcept; // remove a loaded chunk @@ -59,9 +65,10 @@ private: const BlockTypeRegistry ® const Generator &gen; + const WorldSave &save; std::list loaded; - std::list to_generate; + std::list to_load; std::list to_free; IntervalTimer gen_timer;