diff options
Diffstat (limited to 'src/World/Generation')
| -rw-r--r-- | src/World/Generation/ChunkMeshing.cpp | 12 | ||||
| -rw-r--r-- | src/World/Generation/ChunkMeshing.hpp | 8 |
2 files changed, 10 insertions, 10 deletions
diff --git a/src/World/Generation/ChunkMeshing.cpp b/src/World/Generation/ChunkMeshing.cpp index 3855de4..feecc64 100644 --- a/src/World/Generation/ChunkMeshing.cpp +++ b/src/World/Generation/ChunkMeshing.cpp @@ -11,15 +11,15 @@ ChunkMesh mesh_chunk(Chunk& chunk, const SurroundingContext& context) { }; } -SurroundingContext::Block& SurroundingContext::at(Position::BlockOffset p) { +SurroundingContext::Block& SurroundingContext::at(Position::BlockLocalOffset p) { return m_blocks[pos(p)]; } -const SurroundingContext::Block& SurroundingContext::at(Position::BlockOffset p) const { +const SurroundingContext::Block& SurroundingContext::at(Position::BlockLocalOffset p) const { return m_blocks[pos(p)]; } -USize SurroundingContext::pos(Position::BlockOffset p) { +USize SurroundingContext::pos(Position::BlockLocalOffset p) { // First we calculate the index as if there were no gaps. USize pos = 0; pos += p.x() + 1; @@ -39,7 +39,7 @@ SurroundingContext create_meshing_context(const Chunk& chunk, ChunkNeighbors& ne for (I16 x = -1; x <= (I16)Chunk::Width; x++) { for (I16 z = -1; z <= (I16)Chunk::Width; z++) { for (I16 y = 0; y < (I16)Chunk::Height; y++) { - Position::BlockOffset pos{x, y, z}; + Position::BlockLocalOffset pos{x, y, z}; if (pos.fits_within_chunk()) continue; auto [does_exist, block] = get_block_wrapping(chunk, neighbors, {pos.x(), pos.y(), pos.z()}); context.at(pos) = {does_exist, block}; @@ -205,7 +205,7 @@ Face<AO> DefaultMeshDecisions::face_ao_values(Chunk& chunk, const SurroundingCon auto b = offsets[++offset_index]; // corner auto c = offsets[++offset_index % 8]; - auto p = [=](auto o) -> Position::BlockOffset { return {(I16)((I16)x + o.x()), (I16)((I16)y + o.y()), (I16)((I16)z + o.z())}; }; + auto p = [=](auto o) -> Position::BlockLocalOffset { return {(I16)x + o.x(), (I16)y + o.y(), (I16)z + o.z()}; }; auto block_a = get_block_from_chunk_or_context(chunk, context, p(a)); auto block_b = get_block_from_chunk_or_context(chunk, context, p(b)); auto block_c = get_block_from_chunk_or_context(chunk, context, p(c)); @@ -236,7 +236,7 @@ Vector<3, I32> DefaultMeshDecisions::get_face_normal(BlockSide side) { } SurroundingContext::Block DefaultMeshDecisions::get_block_from_chunk_or_context( - const Chunk& chunk, const SurroundingContext& context, Position::BlockOffset pos + const Chunk& chunk, const SurroundingContext& context, Position::BlockLocalOffset pos ) { if (pos.fits_within_chunk()) return {true, chunk.at(pos)}; return context.at(pos); diff --git a/src/World/Generation/ChunkMeshing.hpp b/src/World/Generation/ChunkMeshing.hpp index 5401580..c745a3b 100644 --- a/src/World/Generation/ChunkMeshing.hpp +++ b/src/World/Generation/ChunkMeshing.hpp @@ -19,10 +19,10 @@ class SurroundingContext { public: struct Block { Bool does_exist; Chunk::BlockData block; }; - Block& at(Position::BlockOffset p); - const Block& at(Position::BlockOffset p) const; + Block& at(Position::BlockLocalOffset p); + const Block& at(Position::BlockLocalOffset p) const; private: - static USize pos(Position::BlockOffset p); + static USize pos(Position::BlockLocalOffset p); static constexpr USize surrounding_block_count = Chunk::Width * 4 + 4; Block m_blocks[surrounding_block_count * Chunk::Height] = {}; @@ -83,7 +83,7 @@ public: static Face<AO> face_ao_values(Chunk& chunk, const SurroundingContext& context, U32 x, U32 y, U32 z, BlockSide side); static Vector<3, I32> get_face_normal(BlockSide side); - static SurroundingContext::Block get_block_from_chunk_or_context(const Chunk& chunk, const SurroundingContext& context, Position::BlockOffset pos); + static SurroundingContext::Block get_block_from_chunk_or_context(const Chunk& chunk, const SurroundingContext& context, Position::BlockLocalOffset pos); static SurroundingContext::Block get_opposing_neighbor(const Chunk& chunk, const SurroundingContext& context, U32 x, U32 y, U32 z, BlockSide side); static Bool is_face_visible(Chunk& chunk, const SurroundingContext& context, U32 x, U32 y, U32 z, BlockSide side); |
