mirror of
https://github.com/luanti-org/luanti.git
synced 2025-10-05 19:31:04 +00:00
Add wallmounted support for plantlike and plantlike_rooted nodes (#11379)
This commit is contained in:
parent
68143ed8ec
commit
f4d8cc0f0b
9 changed files with 90 additions and 7 deletions
|
@ -958,10 +958,38 @@ void MapblockMeshGenerator::drawPlantlikeQuad(float rotation, float quad_offset,
|
|||
vertex.rotateXZBy(rotation + rotate_degree);
|
||||
vertex += offset;
|
||||
}
|
||||
|
||||
u8 wall = n.getWallMounted(nodedef);
|
||||
if (wall != DWM_YN) {
|
||||
for (v3f &vertex : vertices) {
|
||||
switch (wall) {
|
||||
case DWM_YP:
|
||||
vertex.rotateYZBy(180);
|
||||
vertex.rotateXZBy(180);
|
||||
break;
|
||||
case DWM_XP:
|
||||
vertex.rotateXYBy(90);
|
||||
break;
|
||||
case DWM_XN:
|
||||
vertex.rotateXYBy(-90);
|
||||
vertex.rotateYZBy(180);
|
||||
break;
|
||||
case DWM_ZP:
|
||||
vertex.rotateYZBy(-90);
|
||||
vertex.rotateXYBy(90);
|
||||
break;
|
||||
case DWM_ZN:
|
||||
vertex.rotateYZBy(90);
|
||||
vertex.rotateXYBy(90);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
drawQuad(vertices, v3s16(0, 0, 0), plant_height);
|
||||
}
|
||||
|
||||
void MapblockMeshGenerator::drawPlantlike()
|
||||
void MapblockMeshGenerator::drawPlantlike(bool is_rooted)
|
||||
{
|
||||
draw_style = PLANT_STYLE_CROSS;
|
||||
scale = BS / 2 * f->visual_scale;
|
||||
|
@ -998,6 +1026,22 @@ void MapblockMeshGenerator::drawPlantlike()
|
|||
break;
|
||||
}
|
||||
|
||||
if (is_rooted) {
|
||||
u8 wall = n.getWallMounted(nodedef);
|
||||
switch (wall) {
|
||||
case DWM_YP:
|
||||
offset.Y += BS*2;
|
||||
break;
|
||||
case DWM_XN:
|
||||
case DWM_XP:
|
||||
case DWM_ZN:
|
||||
case DWM_ZP:
|
||||
offset.X += -BS;
|
||||
offset.Y += BS;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (draw_style) {
|
||||
case PLANT_STYLE_CROSS:
|
||||
drawPlantlikeQuad(46);
|
||||
|
@ -1048,7 +1092,7 @@ void MapblockMeshGenerator::drawPlantlikeRootedNode()
|
|||
MapNode ntop = data->m_vmanip.getNodeNoEx(blockpos_nodes + p);
|
||||
light = LightPair(getInteriorLight(ntop, 1, nodedef));
|
||||
}
|
||||
drawPlantlike();
|
||||
drawPlantlike(true);
|
||||
p.Y--;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue