summary refs log tree commit diff
path: root/src/World/ChunkRegistry.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/World/ChunkRegistry.hpp')
-rw-r--r--src/World/ChunkRegistry.hpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/World/ChunkRegistry.hpp b/src/World/ChunkRegistry.hpp
index 86e5d06..2c515c5 100644
--- a/src/World/ChunkRegistry.hpp
+++ b/src/World/ChunkRegistry.hpp
@@ -5,7 +5,6 @@
 #include "Chunk.hpp"
 #include "ChunkIndex.hpp"
 #include "Position.hpp"
-#include "../GFX/Binder.hpp"
 
 namespace MC::World {
 
@@ -14,7 +13,9 @@ public:
     enum class Status {
         Empty,
         WaitingForGeneration,
+        NeedsReification,
         WaitingForReification,
+        Damaged,
         Done
     };
 
@@ -24,11 +25,17 @@ public:
         Status status;
         std::optional<Chunk> chunk = {};
 
-        std::optional<GFX::Mesh> land_mesh_data = {};
-        std::optional<GFX::Mesh> water_mesh_data = {};
+        std::optional<GFX::Mesh> land_mesh = {};
+        std::optional<GFX::Mesh> water_mesh = {};
 
-        std::optional<GFX::BindableMesh> land_mesh = {};
-        std::optional<GFX::BindableMesh> water_mesh = {};
+        Status get_status() const {
+            if (status == Status::Done && chunk.value().is_damaged()) { return Status::Damaged; }
+            return status;
+        }
+
+        void damage() {
+            if (status == Status::Done) chunk.value().damage();
+        }
     };
 
     Data& get(ChunkIndex index);