X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fworld%2FChunkRenderer.hpp;h=d45d0fd415f3f57f05ad209299fd0f0a7d256d4e;hb=38a4cffc0b6aa58e49d24c06aad7bee14cb6515d;hp=3240c3de8349f14257b30fa8d08855faf200693a;hpb=ad7cf72ed47c39640d5588ba53386e090289b4d1;p=blank.git diff --git a/src/world/ChunkRenderer.hpp b/src/world/ChunkRenderer.hpp index 3240c3d..d45d0fd 100644 --- a/src/world/ChunkRenderer.hpp +++ b/src/world/ChunkRenderer.hpp @@ -11,52 +11,32 @@ namespace blank { -class Assets; +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 Assets &, const TextureIndex &); + 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 models; - std::vector chunks; - Chunk::Pos base; + ArrayTexture block_tex; float fog_density;