X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fworld%2FBlockLookup.hpp;h=e861b249efd628b8c4dc83b74ef792e2fab97cd3;hb=38a4cffc0b6aa58e49d24c06aad7bee14cb6515d;hp=4c8b12ba41a6a50f14c4f5033b685ce42ddaeca3;hpb=b7d09e1e35ef90282c97509e0020b20db3c7ea9f;p=blank.git diff --git a/src/world/BlockLookup.hpp b/src/world/BlockLookup.hpp index 4c8b12b..e861b24 100644 --- a/src/world/BlockLookup.hpp +++ b/src/world/BlockLookup.hpp @@ -10,22 +10,25 @@ namespace blank { class BlockLookup { public: - // resolve chunk/position from oob coordinates + /// resolve chunk/position from oob coordinates BlockLookup(Chunk *c, const Chunk::Pos &p) noexcept; - // resolve chunk/position from ib coordinates and direction + /// resolve chunk/position from ib coordinates and direction BlockLookup(Chunk *c, const Chunk::Pos &p, Block::Face dir) noexcept; - // check if lookup was successful + /// check if lookup was successful operator bool() const { return chunk; } // only valid if lookup was successful Chunk &GetChunk() const noexcept { return *chunk; } const Chunk::Pos &GetBlockPos() const noexcept { return pos; } + Block::Pos GetBlockCoords() const noexcept { return Chunk::ToCoords(pos); } const Block &GetBlock() const noexcept { return GetChunk().BlockAt(GetBlockPos()); } const BlockType &GetType() const noexcept { return GetChunk().Type(GetBlock()); } int GetLight() const noexcept { return GetChunk().GetLight(GetBlockPos()); } + void SetBlock(const Block &b) noexcept { GetChunk().SetBlock(GetBlockPos(), b); } + // traverse in given direction BlockLookup Next(Block::Face f) const { return BlockLookup(chunk, pos, f); }