aboutsummaryrefslogtreecommitdiff
path: root/src/client/world.hh
diff options
context:
space:
mode:
authorNicolas James <Eele1Ephe7uZahRie@tutanota.com>2025-02-12 21:57:46 +1100
committerNicolas James <Eele1Ephe7uZahRie@tutanota.com>2025-02-12 21:57:46 +1100
commite4483eca01b48b943cd0461e24a74ae1a3139ed4 (patch)
treeed58c3c246e3af1af337697695d780aa31f6ad9a /src/client/world.hh
parent1cc08c51eb4b0f95c30c0a98ad1fc5ad3459b2df (diff)
Update to most recent version (old initial commit)
Diffstat (limited to 'src/client/world.hh')
-rw-r--r--src/client/world.hh90
1 files changed, 0 insertions, 90 deletions
diff --git a/src/client/world.hh b/src/client/world.hh
deleted file mode 100644
index 067f74c..0000000
--- a/src/client/world.hh
+++ /dev/null
@@ -1,90 +0,0 @@
-#ifndef CLIENT_WORLD_HH_
-#define CLIENT_WORLD_HH_
-
-#include <algorithm>
-#include <optional>
-#include <ranges>
-#include <unordered_map>
-#include <vector>
-
-#include "client/render/render.hh"
-#include "client/render/texture.hh"
-#include "shared/player.hh"
-#include "shared/world.hh"
-
-namespace client {
-namespace world {
-
-// client::world::chunk is a renderable shared::world::chunk.
-class chunk : public shared::world::chunk {
-public:
- using map = std::unordered_map<shared::math::coords,
- std::optional<client::world::chunk>,
- decltype(&shared::world::chunk::hash),
- decltype(&shared::world::chunk::equal)>;
- // Which part to draw when we call draw.
- enum class pass { solid, water };
-
-public:
- bool should_regenerate_vbo;
-
-private:
- struct gl_objects {
- unsigned long solid_elements;
- GLuint solid_vbo;
- GLuint solid_vao;
- unsigned long water_elements;
- GLuint water_vbo;
- GLuint water_vao;
-
- gl_objects(const unsigned long se, const GLuint svbo, const GLuint svao,
- const unsigned long we, const GLuint wvbo, const GLuint wvao)
- : solid_elements(se), solid_vbo(svbo), solid_vao(svao),
- water_elements(we), water_vbo(wvbo), water_vao(wvao) {}
- gl_objects(const gl_objects&) = delete;
- gl_objects(gl_objects&&) = delete;
- ~gl_objects() {
- glDeleteBuffers(1, &solid_vbo);
- glDeleteVertexArrays(1, &solid_vao);
- glDeleteBuffers(1, &water_vbo);
- glDeleteVertexArrays(1, &water_vao);
- }
- };
- std::optional<gl_objects> glo;
-
-private:
- const chunk* get_neighbour(const chunk::map& chunks,
- shared::math::coords offset) const noexcept;
- struct glface {
- glm::vec3 vertice;
- glm::vec3 texture;
- };
- struct glface_args {
- glm::vec3 translate;
- float rotate_degrees;
- glm::vec3 rotate_axis;
- glm::vec3 texture_offset;
- };
- static std::array<glface, 6> make_glfaces(const glface_args& args) noexcept;
-
- void render(const float x_offset, const float z_offset,
- const pass& pass) noexcept;
- bool maybe_regenerate_glo(const chunk::map& chunks) noexcept;
-
-public:
- template <typename... Args>
- chunk(Args&&... args) noexcept
- : shared::world::chunk(std::forward<Args>(args)...) {}
-
- void draw(const map& chunks, const shared::player& lp,
- const pass& pass) noexcept;
-
- bool can_draw() const noexcept {
- return this->glo.has_value();
- }
-};
-
-} // namespace world
-} // namespace client
-
-#endif