X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fblock.hpp;fp=src%2Fblock.hpp;h=56f9eace671193c3a9376a0912a9e7b822893b12;hb=e74f1ad236429f05db90c0ace825277e2a3fbc05;hp=0d7d75a5dc8e68460f2413354763e3fbef2e4abf;hpb=fc73b44e0f90affd42cac2f944f46633a6b8364e;p=blank.git diff --git a/src/block.hpp b/src/block.hpp index 0d7d75a..56f9eac 100644 --- a/src/block.hpp +++ b/src/block.hpp @@ -66,6 +66,23 @@ struct Block { } } + static Face NormalFace(const glm::vec3 &norm) { + const glm::vec3 anorm(abs(norm)); + if (anorm.x > anorm.y) { + if (anorm.x > anorm.z) { + return norm.x > 0.0f ? FACE_RIGHT : FACE_LEFT; + } else { + return norm.z > 0.0f ? FACE_FRONT : FACE_BACK; + } + } else { + if (anorm.y > anorm.z) { + return norm.y > 0.0f ? FACE_UP : FACE_DOWN; + } else { + return norm.z > 0.0f ? FACE_FRONT : FACE_BACK; + } + } + } + }; @@ -111,6 +128,11 @@ struct BlockType { const glm::mat4 &transform = glm::mat4(1.0f), Model::Index idx_offset = 0 ) const; + void FillBlockModel( + BlockModel::Buffer &m, + const glm::mat4 &transform = glm::mat4(1.0f), + BlockModel::Index idx_offset = 0 + ) const; void FillOutlineModel( OutlineModel &m, const glm::vec3 &pos_offset = { 0, 0, 0 },