X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fworld%2Fblock.cpp;h=7050da4cc115532ad643b6d9d40a6a01edbdf5ef;hb=54f3f1260b95a924fcb40d9d6de3fa2e2c382f6f;hp=1a5d88d750eadcdc090584e48f3651a161022eda;hpb=3a487f44c26f9bb9d1a1c831406b6497b2b3b425;p=blank.git diff --git a/src/world/block.cpp b/src/world/block.cpp index 1a5d88d..7050da4 100644 --- a/src/world/block.cpp +++ b/src/world/block.cpp @@ -11,9 +11,6 @@ namespace blank { -const NullBounds BlockType::DEFAULT_SHAPE; - - std::ostream &operator <<(std::ostream &out, const Block &block) { return out << "Block(" << block.type << ", " << block.GetFace() << ", " << block.GetTurn() << ')'; } @@ -70,12 +67,14 @@ std::ostream &operator <<(std::ostream &out, const Block::Turn &turn) { BlockType::BlockType() noexcept -: shape(&DEFAULT_SHAPE) +: shape(nullptr) , textures() , hsl_mod(0.0f, 1.0f, 1.0f) , rgb_mod(1.0f, 1.0f, 1.0f) , outline_color(-1, -1, -1) , label("some block") +, place_sound(-1) +, remove_sound(-1) , id(0) , luminosity(0) , visible(true) @@ -95,21 +94,16 @@ BlockType::BlockType() noexcept , min_richness(-1.0f) , mid_richness(0.0f) , max_richness(1.0f) -, commonness(1.0f) -, fill({ false, false, false, false, false, false }) { +, commonness(1.0f) { } void BlockType::FillEntityMesh( EntityMesh::Buffer &buf, - const glm::mat4 &transform, - EntityMesh::Index idx_offset + const glm::mat4 &transform ) const noexcept { - if (textures.empty()) { - shape->Vertices(buf, transform, 0.0f, idx_offset); - } else { - shape->Vertices(buf, transform, textures[0], idx_offset); - } + if (!shape) return; + shape->Fill(buf, transform, textures); buf.hsl_mods.insert(buf.hsl_mods.end(), shape->VertexCount(), hsl_mod); buf.rgb_mods.insert(buf.rgb_mods.end(), shape->VertexCount(), rgb_mod); } @@ -119,18 +113,16 @@ void BlockType::FillBlockMesh( const glm::mat4 &transform, BlockMesh::Index idx_offset ) const noexcept { - if (textures.empty()) { - shape->Vertices(buf, transform, 0.0f, idx_offset); - } else { - shape->Vertices(buf, transform, textures[0], idx_offset); - } + if (!shape) return; + shape->Fill(buf, transform, textures, idx_offset); buf.hsl_mods.insert(buf.hsl_mods.end(), shape->VertexCount(), hsl_mod); buf.rgb_mods.insert(buf.rgb_mods.end(), shape->VertexCount(), rgb_mod); } -void BlockType::FillOutlineMesh(OutlineMesh::Buffer &buf) const noexcept { +void BlockType::OutlinePrimitiveMesh(PrimitiveMesh::Buffer &buf) const noexcept { + if (!shape) return; shape->Outline(buf); - buf.colors.insert(buf.colors.end(), shape->OutlineCount(), outline_color); + buf.colors.insert(buf.colors.end(), shape->OutlineCount(), glm::vec4(outline_color, 1.0f)); }