]> git.localhorst.tv Git - blank.git/blobdiff - src/world/ChunkRenderer.hpp
split chunk stuff
[blank.git] / src / world / ChunkRenderer.hpp
index fe4f6a66d0062a6a81fac5ed5fcee89a291d62f5..d45d0fd415f3f57f05ad209299fd0f0a7d256d4e 100644 (file)
 namespace blank {
 
 class AssetLoader;
+class BlockModel;
+class ChunkIndex;
 class TextureIndex;
 class Viewport;
-class World;
 
 class ChunkRenderer {
 
 public:
-       /// render_distance in chunks, excluding the base chunk which is always rendered
-       ChunkRenderer(World &, int render_distance);
+       explicit ChunkRenderer(ChunkIndex &);
+       ~ChunkRenderer();
 
        void LoadTextures(const AssetLoader &, const TextureIndex &);
        void FogDensity(float d) noexcept { fog_density = d; }
 
-       bool InRange(const Chunk::Pos &) const noexcept;
-       int IndexOf(const Chunk::Pos &) const noexcept;
+       int MissingChunks() const noexcept;
 
-       int TotalChunks() const noexcept { return total_length; }
-       int IndexedChunks() const noexcept { return total_indexed; }
-       int MissingChunks() const noexcept { return total_length - total_indexed; }
-
-       void Rebase(const Chunk::Pos &);
-       void Rescan();
-       void Scan();
        void Update(int dt);
 
        void Render(Viewport &);
 
 private:
-       int GetCol(int) const noexcept;
-
-       void Shift(Block::Face);
-
-private:
-       World &world;
-       ArrayTexture block_tex;
-
-       int render_dist;
-       int side_length;
-       int total_length;
-       int total_indexed;
-       glm::ivec3 stride;
+       ChunkIndex &index;
        std::vector<BlockModel> models;
-       std::vector<Chunk *> chunks;
 
-       Chunk::Pos base;
+       ArrayTexture block_tex;
 
        float fog_density;