summary refs log tree commit diff
path: root/src/World
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2023-07-07 23:05:14 +0200
committerMel <einebeere@gmail.com>2023-07-07 23:14:59 +0200
commit129f2e421e16bd008cdca8713cc91f67d103d94e (patch)
treea4d3e1005c57591b44fd57be4c1b00441512e36d /src/World
parentf1fc192ddc4c739fa8b4b376c759b7d3218a34eb (diff)
downloadmeowcraft-129f2e421e16bd008cdca8713cc91f67d103d94e.tar.zst
meowcraft-129f2e421e16bd008cdca8713cc91f67d103d94e.zip
Fix minor quality issues
Diffstat (limited to 'src/World')
-rw-r--r--src/World/Chunk.cpp2
-rw-r--r--src/World/Chunk.hpp2
-rw-r--r--src/World/ChunkIndex.hpp4
-rw-r--r--src/World/Generation/ChunkMeshing.cpp10
-rw-r--r--src/World/Generation/ChunkMeshing.hpp2
-rw-r--r--src/World/Generation/Generator.cpp15
-rw-r--r--src/World/Generation/Generator.hpp5
-rw-r--r--src/World/World.cpp10
-rw-r--r--src/World/World.hpp4
9 files changed, 25 insertions, 29 deletions
diff --git a/src/World/Chunk.cpp b/src/World/Chunk.cpp
index b75516f..079575a 100644
--- a/src/World/Chunk.cpp
+++ b/src/World/Chunk.cpp
@@ -15,7 +15,7 @@ bool Chunk::is_empty(uint32_t x, uint32_t y, uint32_t z) const {
     return get(x, y, z).empty();
 }
 
-Vector<3> Chunk::position() {
+Vector<3> Chunk::position() const {
     return m_position;
 }
 
diff --git a/src/World/Chunk.hpp b/src/World/Chunk.hpp
index 8780700..b3eb06f 100644
--- a/src/World/Chunk.hpp
+++ b/src/World/Chunk.hpp
@@ -39,7 +39,7 @@ public:
     void set_details(const Details& details) { m_details = details; }
     Details& details(){ return m_details; }
 
-    Vector<3> position();
+    Vector<3> position() const;
 
     static bool is_valid_position(uint32_t x, uint32_t y, uint32_t z);
 private:
diff --git a/src/World/ChunkIndex.hpp b/src/World/ChunkIndex.hpp
index 4701581..ef61f24 100644
--- a/src/World/ChunkIndex.hpp
+++ b/src/World/ChunkIndex.hpp
@@ -1,8 +1,6 @@
 #pragma once
 
 #include <cstdint>
-#include <cstdlib>
-#include <functional>
 
 namespace MC::World {
 
@@ -27,6 +25,6 @@ template<> struct std::equal_to<MC::World::ChunkIndex> {
 
 template<> struct std::hash<MC::World::ChunkIndex> {
     size_t operator()(const MC::World::ChunkIndex& i) const noexcept {
-        return ((int64_t)i.x << 32) | i.y;
+        return (int64_t)i.x << 32 | i.y;
     }
 };
\ No newline at end of file
diff --git a/src/World/Generation/ChunkMeshing.cpp b/src/World/Generation/ChunkMeshing.cpp
index 54abc85..0494da4 100644
--- a/src/World/Generation/ChunkMeshing.cpp
+++ b/src/World/Generation/ChunkMeshing.cpp
@@ -83,7 +83,7 @@ std::array<Vector<3>, 4> face_normals(BlockSide side) {
     return {normal, normal, normal, normal};
 }
 
-bool is_face_visible(Chunk& chunk, ChunkMeshing::ChunkNeighbors neighbors, uint32_t x, uint32_t y, uint32_t z, BlockSide side) {
+bool is_face_visible(Chunk& chunk, const ChunkMeshing::ChunkNeighbors& neighbors, uint32_t x, uint32_t y, uint32_t z, BlockSide side) {
     Vector<3, int32_t> offset{};
     switch (side) {
         case BlockSide::Front:
@@ -128,15 +128,15 @@ bool is_face_visible(Chunk& chunk, ChunkMeshing::ChunkNeighbors neighbors, uint3
         chunk_to_ask = &chunk;
     }
 
-    auto neighbor = chunk_to_ask->get(neighbor_pos.x(), neighbor_pos.y(), neighbor_pos.z());
-    if (neighbor.type == BlockType::Air) {
+    auto [neighbor] = chunk_to_ask->get(neighbor_pos.x(), neighbor_pos.y(), neighbor_pos.z());
+    if (neighbor == BlockType::Air) {
         return true;
     }
 
     return false;
 }
 
-GFX::Mesh ChunkMeshing::create_mesh_for_chunk(Chunk& chunk, ChunkMeshing::ChunkNeighbors neighbors) {
+GFX::Mesh ChunkMeshing::create_mesh_for_chunk(Chunk& chunk, const ChunkNeighbors& neighbors) {
     std::vector<Vector<3>> positions{};
     std::vector<Vector<3>> normals{};
     std::vector<Vector<2>> tex_coords{};
@@ -174,7 +174,7 @@ GFX::Mesh ChunkMeshing::create_mesh_for_chunk(Chunk& chunk, ChunkMeshing::ChunkN
         }
     }
 
-    return {
+    return GFX::Mesh{
         {positions, normals, tex_coords},
         indices,
     };
diff --git a/src/World/Generation/ChunkMeshing.hpp b/src/World/Generation/ChunkMeshing.hpp
index a4fed25..6ec77af 100644
--- a/src/World/Generation/ChunkMeshing.hpp
+++ b/src/World/Generation/ChunkMeshing.hpp
@@ -6,6 +6,6 @@
 namespace MC::World::Generation::ChunkMeshing {
 
 struct ChunkNeighbors { Chunk &north, &east, &south, &west; };
-GFX::Mesh create_mesh_for_chunk(Chunk& chunk, ChunkNeighbors neighbors);
+GFX::Mesh create_mesh_for_chunk(Chunk& chunk, const ChunkNeighbors& neighbors);
 
 }
diff --git a/src/World/Generation/Generator.cpp b/src/World/Generation/Generator.cpp
index af3c54d..19a3dc8 100644
--- a/src/World/Generation/Generator.cpp
+++ b/src/World/Generation/Generator.cpp
@@ -9,11 +9,11 @@ Chunk Generator::generate(int64_t chunk_x, int64_t chunk_y) {
 
     auto landmass_map = generate_landmass_map(chunk_x, chunk_y);
     auto hill_map = generate_hill_map(chunk_x, chunk_y);
-    auto height_map = generate_height_map(landmass_map, hill_map, chunk_x, chunk_y);
+    auto height_map = generate_height_map(landmass_map, hill_map);
 
     auto temperature_map = generate_temperature_map(chunk_x, chunk_y);
     auto humidity_map = generate_humidity_map(chunk_x, chunk_y);
-    auto biome_map = generate_biome_map(landmass_map, hill_map, temperature_map, humidity_map, chunk_x, chunk_y);
+    auto biome_map = generate_biome_map(landmass_map, hill_map, temperature_map, humidity_map);
     auto terrain_map = generate_terrain(height_map, chunk_x, chunk_y);
 
     decorate_soil(chunk, biome_map, terrain_map);
@@ -38,7 +38,7 @@ Generator::Map2D<float> Generator::name(int64_t chunk_x, int64_t chunk_y) {
 SIMPLE_MAP_GENERATOR(generate_landmass_map, get_landmass)
 SIMPLE_MAP_GENERATOR(generate_hill_map, get_hill)
 
-Generator::Map2D<float> Generator::generate_height_map(Map2D<float>& landmass_map, Map2D<float>& hill_map, int64_t chunk_x, int64_t chunk_y) {
+Generator::Map2D<float> Generator::generate_height_map(Map2D<float>& landmass_map, Map2D<float>& hill_map) {
     Map2D<float> height_map{};
 
     for (uint x = 0; x < Chunk::Width; x++) {
@@ -63,8 +63,7 @@ SIMPLE_MAP_GENERATOR(generate_humidity_map, get_humidity)
 
 Generator::Map2D<BiomeType> Generator::generate_biome_map(
     Map2D<float>& landmass_map, Map2D<float>& hill_map,
-    Map2D<float>& temperature_map, Map2D<float>& humidity_map,
-    int64_t chunk_x, int64_t chunk_y
+    Map2D<float>& temperature_map, Map2D<float>& humidity_map
 ) {
     Map2D<BiomeType> biome_map{};
 
@@ -187,9 +186,9 @@ void Generator::decorate_soil(Chunk& chunk, Map2D<BiomeType>& biome_map, Map3D<b
     }
 }
 
-#define CURVE_START(y) constexpr auto lerp = Math::linear_interpolation; float _py = y; float _px = 0.0f;
-#define CURVE_POINT(x, y) if (v < x) return lerp({_py, y}, _px, x, v); _py = y; _px = x
-#define CURVE_END(y) return lerp({_py, y}, _px, 1.0f, v);
+#define CURVE_START(y) constexpr auto lerp = Math::linear_interpolation; float _py = (y); float _px = 0.0f;
+#define CURVE_POINT(x, y) if (v < (x)) return lerp({_py, (y)}, _px, (x), v); _py = y; _px = (x)
+#define CURVE_END(y) return lerp({_py, (y)}, _px, 1.0f, v);
 
 float Generator::get_landmass(Vector<2> pos) const {
     auto v = m_landmass_noise.at(pos);
diff --git a/src/World/Generation/Generator.hpp b/src/World/Generation/Generator.hpp
index 464e36f..c18de45 100644
--- a/src/World/Generation/Generator.hpp
+++ b/src/World/Generation/Generator.hpp
@@ -20,15 +20,14 @@ private:
 
     Map2D<float> generate_landmass_map(int64_t chunk_x, int64_t chunk_y);
     Map2D<float> generate_hill_map(int64_t chunk_x, int64_t chunk_y);
-    Map2D<float> generate_height_map(Map2D<float>& landmass_map, Map2D<float>& hill_map, int64_t chunk_x, int64_t chunk_y);
+    Map2D<float> generate_height_map(Map2D<float>& landmass_map, Map2D<float>& hill_map);
 
     Map2D<float> generate_temperature_map(int64_t chunk_x, int64_t chunk_y);
     Map2D<float> generate_humidity_map(int64_t chunk_x, int64_t chunk_y);
 
     Map2D<BiomeType> generate_biome_map(
         Map2D<float>& landmass_map, Map2D<float>& hill_map,
-        Map2D<float>& temperature_map, Map2D<float>& humidity_map,
-        int64_t chunk_x, int64_t chunk_y
+        Map2D<float>& temperature_map, Map2D<float>& humidity_map
     );
 
     Map3D<bool> generate_terrain(Map2D<float>& height_map, int64_t chunk_x, int64_t chunk_y);
diff --git a/src/World/World.cpp b/src/World/World.cpp
index 6e8489a..7570d8c 100644
--- a/src/World/World.cpp
+++ b/src/World/World.cpp
@@ -45,7 +45,7 @@ Chunk* World::get_chunk_for_position(Vector<3> position) {
     return nullptr;
 }
 
-void World::process_chunk_visibility_updates(std::unordered_set<ChunkIndex>& new_chunks, Vector<3> player) {
+void World::process_chunk_visibility_updates(const std::unordered_set<ChunkIndex>& new_chunks, const Vector<3> player) {
     for (auto new_index: new_chunks) {
         auto& data = get(new_index);
         if (data.status == ChunkStatus::Empty) {
@@ -55,7 +55,7 @@ void World::process_chunk_visibility_updates(std::unordered_set<ChunkIndex>& new
     }
 }
 
-std::unordered_set<ChunkIndex> World::get_visible_chunk_indices(Vector<3> position) const {
+std::unordered_set<ChunkIndex> World::get_visible_chunk_indices(const Vector<3> position) const {
     int32_t center_x = std::round(position.x() / Chunk::Width);
     int32_t center_y = std::round(position.z() / Chunk::Width);
 
@@ -119,8 +119,8 @@ void World::try_to_create_mesh_for_chunk(ChunkData& data) {
     auto south = get({index.x, index.y + 1});
     auto west = get({index.x - 1, index.y});
 
-    auto no_terrain = [](ChunkData& data){
-        return !data.chunk.has_value();
+    auto no_terrain = [](const ChunkData& d){
+        return !d.chunk.has_value();
     };
 
     if (no_terrain(north) || no_terrain(east) || no_terrain(south) || no_terrain(west)) {
@@ -140,7 +140,7 @@ void World::log_chunk_time(uint64_t chunk_time_ms) {
     m_statistics.average_chunk_time_ms += ((float)chunk_time_ms - m_statistics.average_chunk_time_ms) / m_statistics.chunk_time_sample_count;
 }
 
-float World::get_average_chunk_time() {
+float World::get_average_chunk_time() const {
     return m_statistics.average_chunk_time_ms;
 }
 
diff --git a/src/World/World.hpp b/src/World/World.hpp
index ae8b37f..bc008b3 100644
--- a/src/World/World.hpp
+++ b/src/World/World.hpp
@@ -32,11 +32,11 @@ public:
     std::vector<ChunkData*> get_visible_chunks(Vector<3> position);
     Chunk* get_chunk_for_position(Vector<3> position);
 
-    float get_average_chunk_time();
+    float get_average_chunk_time() const;
 private:
     std::unordered_set<ChunkIndex> get_visible_chunk_indices(Vector<3> position) const;
     std::unordered_set<ChunkIndex> load_finished_chunks_from_queue();
-    void process_chunk_visibility_updates(std::unordered_set<ChunkIndex>& new_chunks, Vector<3> player);
+    void process_chunk_visibility_updates(const std::unordered_set<ChunkIndex>& new_chunks, Vector<3> player);
     void request_generation(ChunkIndex index, float priority);
     void try_to_create_mesh_for_chunk(ChunkData& data);