1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Connected Nodeboxes: Add disconnected boxes

The `disconnected_*` boxes are the opposites of the `connect_*` ones,
i.e. when a node has no suitable neighbours on the respective side, the
according disconnected box is drawn.

* disconnected_top
* disconnected_bottom
* disconnected_front
* disconnected_left
* disconnected_back
* disconnected_right
* disconnected (when there is *no* neighbour)
* disconnected_sides (when there are *no* neighbours to the sides)
This commit is contained in:
Thomas--S 2017-04-22 21:17:46 +02:00 committed by paramat
parent 345e1041a2
commit f3b9d87076
6 changed files with 133 additions and 14 deletions

View file

@ -422,16 +422,40 @@ void transformNodeBox(const MapNode &n, const NodeBox &nodebox,
boxes_size += nodebox.fixed.size();
if (neighbors & 1)
boxes_size += nodebox.connect_top.size();
else
boxes_size += nodebox.disconnected_top.size();
if (neighbors & 2)
boxes_size += nodebox.connect_bottom.size();
else
boxes_size += nodebox.disconnected_bottom.size();
if (neighbors & 4)
boxes_size += nodebox.connect_front.size();
else
boxes_size += nodebox.disconnected_front.size();
if (neighbors & 8)
boxes_size += nodebox.connect_left.size();
else
boxes_size += nodebox.disconnected_left.size();
if (neighbors & 16)
boxes_size += nodebox.connect_back.size();
else
boxes_size += nodebox.disconnected_back.size();
if (neighbors & 32)
boxes_size += nodebox.connect_right.size();
else
boxes_size += nodebox.disconnected_right.size();
if (neighbors == 0)
boxes_size += nodebox.disconnected.size();
if (neighbors < 4)
boxes_size += nodebox.disconnected_sides.size();
boxes.reserve(boxes_size);
#define BOXESPUSHBACK(c) \
@ -442,18 +466,50 @@ void transformNodeBox(const MapNode &n, const NodeBox &nodebox,
BOXESPUSHBACK(nodebox.fixed);
if (neighbors & 1)
if (neighbors & 1) {
BOXESPUSHBACK(nodebox.connect_top);
if (neighbors & 2)
} else {
BOXESPUSHBACK(nodebox.disconnected_top);
}
if (neighbors & 2) {
BOXESPUSHBACK(nodebox.connect_bottom);
if (neighbors & 4)
} else {
BOXESPUSHBACK(nodebox.disconnected_bottom);
}
if (neighbors & 4) {
BOXESPUSHBACK(nodebox.connect_front);
if (neighbors & 8)
} else {
BOXESPUSHBACK(nodebox.disconnected_front);
}
if (neighbors & 8) {
BOXESPUSHBACK(nodebox.connect_left);
if (neighbors & 16)
} else {
BOXESPUSHBACK(nodebox.disconnected_left);
}
if (neighbors & 16) {
BOXESPUSHBACK(nodebox.connect_back);
if (neighbors & 32)
} else {
BOXESPUSHBACK(nodebox.disconnected_back);
}
if (neighbors & 32) {
BOXESPUSHBACK(nodebox.connect_right);
} else {
BOXESPUSHBACK(nodebox.disconnected_right);
}
if (neighbors == 0) {
BOXESPUSHBACK(nodebox.disconnected);
}
if (neighbors < 4) {
BOXESPUSHBACK(nodebox.disconnected_sides);
}
}
else // NODEBOX_REGULAR
{