Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Restore visual_scale support for nodeboxes (and allfaces) (#9906)
- Loading branch information
Showing
with
11 additions
and
2 deletions.
-
+1
−1
doc/lua_api.txt
-
+10
−1
src/client/content_mapblock.cpp
|
@@ -6941,7 +6941,7 @@ Used by `minetest.register_node`. |
|
|
|
|
|
visual_scale = 1.0, |
|
|
-- Supported for drawtypes "plantlike", "signlike", "torchlike", |
|
|
-- "firelike", "mesh". |
|
|
-- "firelike", "mesh", "nodebox", "allfaces". |
|
|
-- For plantlike and firelike, the image will start at the bottom of the |
|
|
-- node. For torchlike, the image will start at the surface to which the |
|
|
-- node "attaches". For the other drawtypes the image will be centered |
|
|
|
@@ -366,13 +366,22 @@ void MapblockMeshGenerator::generateCuboidTextureCoords(const aabb3f &box, f32 * |
|
|
void MapblockMeshGenerator::drawAutoLightedCuboid(aabb3f box, const f32 *txc, |
|
|
TileSpec *tiles, int tile_count) |
|
|
{ |
|
|
bool scale = std::fabs(f->visual_scale - 1.0f) > 1e-3f; |
|
|
f32 texture_coord_buf[24]; |
|
|
f32 dx1 = box.MinEdge.X; |
|
|
f32 dy1 = box.MinEdge.Y; |
|
|
f32 dz1 = box.MinEdge.Z; |
|
|
f32 dx2 = box.MaxEdge.X; |
|
|
f32 dy2 = box.MaxEdge.Y; |
|
|
f32 dz2 = box.MaxEdge.Z; |
|
|
if (scale) { |
|
|
if (!txc) { // generate texture coords before scaling |
|
|
generateCuboidTextureCoords(box, texture_coord_buf); |
|
|
txc = texture_coord_buf; |
|
|
} |
|
|
box.MinEdge *= f->visual_scale; |
|
|
box.MaxEdge *= f->visual_scale; |
|
|
} |
|
|
box.MinEdge += origin; |
|
|
box.MaxEdge += origin; |
|
|
if (!txc) { |
|
@@ -1323,7 +1332,7 @@ void MapblockMeshGenerator::drawNodeboxNode() |
|
|
|
|
|
std::vector<aabb3f> boxes; |
|
|
n.getNodeBoxes(nodedef, &boxes, neighbors_set); |
|
|
for (const auto &box : boxes) |
|
|
for (auto &box : boxes) |
|
|
drawAutoLightedCuboid(box, nullptr, tiles, 6); |
|
|
} |
|
|
|
|
|