summary refs log tree commit diff
path: root/src/World/World.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/World/World.cpp')
-rw-r--r--src/World/World.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/World/World.cpp b/src/World/World.cpp
index 9d88af3..03ce60e 100644
--- a/src/World/World.cpp
+++ b/src/World/World.cpp
@@ -19,7 +19,7 @@ std::vector<World::ChunkData> World::get_visible_chunks(Vector<3> position) {
         m_visible_chunks = visible_chunks;
     }
 
-    std::vector<World::ChunkData> chunks{};
+    std::vector<ChunkData> chunks{};
     chunks.reserve(visible_chunks.size());
     for (auto index : visible_chunks) {
         auto& data = get(index);
@@ -31,6 +31,16 @@ std::vector<World::ChunkData> World::get_visible_chunks(Vector<3> position) {
     return chunks;
 }
 
+Chunk* World::get_chunk_for_positon(Vector<3> position) {
+    int32_t x = std::round(position.x() / Chunk::Width);
+    int32_t y = std::round(position.z() / Chunk::Width);
+    auto& data = get({x, y});
+    if (data.chunk.has_value()) {
+        return &data.chunk.value();
+    }
+    return nullptr;
+}
+
 void World::process_chunk_visibility_updates(std::unordered_set<ChunkIndex>& new_chunks, Vector<3> player) {
     for (auto new_index: new_chunks) {
         auto& data = get(new_index);