summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBlockMen <nmuelll@web.de>2015-02-22 15:12:05 +0100
committerBlockMen <nmuelll@web.de>2015-03-05 23:24:32 +0100
commitb65c7ab4a43b082fd798eded3ca3c67fb66fad3f (patch)
tree35fe7c41309142deb6ec9eb88fdb5cc2add56e56
parent40c2c18a3fd68b30c29effa79a9f0acd45ff3401 (diff)
downloadminetest-b65c7ab4a43b082fd798eded3ca3c67fb66fad3f.tar.gz
minetest-b65c7ab4a43b082fd798eded3ca3c67fb66fad3f.tar.bz2
minetest-b65c7ab4a43b082fd798eded3ca3c67fb66fad3f.zip
Improve group-based connection between raillike nodes
-rw-r--r--doc/lua_api.txt4
-rw-r--r--src/content_mapblock.cpp38
2 files changed, 15 insertions, 27 deletions
diff --git a/doc/lua_api.txt b/doc/lua_api.txt
index d73fb7721..e2589d226 100644
--- a/doc/lua_api.txt
+++ b/doc/lua_api.txt
@@ -1053,8 +1053,8 @@ Another example: Make red wool from white wool and red dye:
dropped as an item. If the node is wallmounted the wallmounted direction is
checked.
* `soil`: saplings will grow on nodes in this group
-* `connect_to_raillike`: makes nodes of raillike drawtype connect to
- other group members with same drawtype
+* `connect_to_raillike`: makes nodes of raillike drawtype with same group value
+ connect to each other
### Known damage and digging time defining groups
* `crumbly`: dirt, sand
diff --git a/src/content_mapblock.cpp b/src/content_mapblock.cpp
index 5bb787d01..3428f85f9 100644
--- a/src/content_mapblock.cpp
+++ b/src/content_mapblock.cpp
@@ -1421,77 +1421,65 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
content_t thiscontent = n.getContent();
std::string groupname = "connect_to_raillike"; // name of the group that enables connecting to raillike nodes of different kind
- bool self_connect_to_raillike = ((ItemGroupList) nodedef->get(n).groups)[groupname] != 0;
+ int self_group = ((ItemGroupList) nodedef->get(n).groups)[groupname];
if ((nodedef->get(n_minus_x).drawtype == NDT_RAILLIKE
- && ((ItemGroupList) nodedef->get(n_minus_x).groups)[groupname] != 0
- && self_connect_to_raillike)
+ && ((ItemGroupList) nodedef->get(n_minus_x).groups)[groupname] != self_group)
|| n_minus_x.getContent() == thiscontent)
is_rail_x[0] = true;
if ((nodedef->get(n_minus_x_minus_y).drawtype == NDT_RAILLIKE
- && ((ItemGroupList) nodedef->get(n_minus_x_minus_y).groups)[groupname] != 0
- && self_connect_to_raillike)
+ && ((ItemGroupList) nodedef->get(n_minus_x_minus_y).groups)[groupname] != self_group)
|| n_minus_x_minus_y.getContent() == thiscontent)
is_rail_x_minus_y[0] = true;
if ((nodedef->get(n_minus_x_plus_y).drawtype == NDT_RAILLIKE
- && ((ItemGroupList) nodedef->get(n_minus_x_plus_y).groups)[groupname] != 0
- && self_connect_to_raillike)
+ && ((ItemGroupList) nodedef->get(n_minus_x_plus_y).groups)[groupname] != self_group)
|| n_minus_x_plus_y.getContent() == thiscontent)
is_rail_x_plus_y[0] = true;
if ((nodedef->get(n_plus_x).drawtype == NDT_RAILLIKE
- && ((ItemGroupList) nodedef->get(n_plus_x).groups)[groupname] != 0
- && self_connect_to_raillike)
+ && ((ItemGroupList) nodedef->get(n_plus_x).groups)[groupname] != self_group)
|| n_plus_x.getContent() == thiscontent)
is_rail_x[1] = true;
if ((nodedef->get(n_plus_x_minus_y).drawtype == NDT_RAILLIKE
- && ((ItemGroupList) nodedef->get(n_plus_x_minus_y).groups)[groupname] != 0
- && self_connect_to_raillike)
+ && ((ItemGroupList) nodedef->get(n_plus_x_minus_y).groups)[groupname] != self_group)
|| n_plus_x_minus_y.getContent() == thiscontent)
is_rail_x_minus_y[1] = true;
if ((nodedef->get(n_plus_x_plus_y).drawtype == NDT_RAILLIKE
- && ((ItemGroupList) nodedef->get(n_plus_x_plus_y).groups)[groupname] != 0
- && self_connect_to_raillike)
+ && ((ItemGroupList) nodedef->get(n_plus_x_plus_y).groups)[groupname] != self_group)
|| n_plus_x_plus_y.getContent() == thiscontent)
is_rail_x_plus_y[1] = true;
if ((nodedef->get(n_minus_z).drawtype == NDT_RAILLIKE
- && ((ItemGroupList) nodedef->get(n_minus_z).groups)[groupname] != 0
- && self_connect_to_raillike)
+ && ((ItemGroupList) nodedef->get(n_minus_z).groups)[groupname] != self_group)
|| n_minus_z.getContent() == thiscontent)
is_rail_z[0] = true;
if ((nodedef->get(n_minus_z_minus_y).drawtype == NDT_RAILLIKE
- && ((ItemGroupList) nodedef->get(n_minus_z_minus_y).groups)[groupname] != 0
- && self_connect_to_raillike)
+ && ((ItemGroupList) nodedef->get(n_minus_z_minus_y).groups)[groupname] != self_group)
|| n_minus_z_minus_y.getContent() == thiscontent)
is_rail_z_minus_y[0] = true;
if ((nodedef->get(n_minus_z_plus_y).drawtype == NDT_RAILLIKE
- && ((ItemGroupList) nodedef->get(n_minus_z_plus_y).groups)[groupname] != 0
- && self_connect_to_raillike)
+ && ((ItemGroupList) nodedef->get(n_minus_z_plus_y).groups)[groupname] != self_group)
|| n_minus_z_plus_y.getContent() == thiscontent)
is_rail_z_plus_y[0] = true;
if ((nodedef->get(n_plus_z).drawtype == NDT_RAILLIKE
- && ((ItemGroupList) nodedef->get(n_plus_z).groups)[groupname] != 0
- && self_connect_to_raillike)
+ && ((ItemGroupList) nodedef->get(n_plus_z).groups)[groupname] != self_group)
|| n_plus_z.getContent() == thiscontent)
is_rail_z[1] = true;
if ((nodedef->get(n_plus_z_minus_y).drawtype == NDT_RAILLIKE
- && ((ItemGroupList) nodedef->get(n_plus_z_minus_y).groups)[groupname] != 0
- && self_connect_to_raillike)
+ && ((ItemGroupList) nodedef->get(n_plus_z_minus_y).groups)[groupname] != self_group)
|| n_plus_z_minus_y.getContent() == thiscontent)
is_rail_z_minus_y[1] = true;
if ((nodedef->get(n_plus_z_plus_y).drawtype == NDT_RAILLIKE
- && ((ItemGroupList) nodedef->get(n_plus_z_plus_y).groups)[groupname] != 0
- && self_connect_to_raillike)
+ && ((ItemGroupList) nodedef->get(n_plus_z_plus_y).groups)[groupname] != self_group)
|| n_plus_z_plus_y.getContent() == thiscontent)
is_rail_z_plus_y[1] = true;