mirror of
https://github.com/minetest/minetest.git
synced 2024-11-27 18:13:46 +01:00
Improve group-based connection between raillike nodes
This commit is contained in:
parent
40c2c18a3f
commit
b65c7ab4a4
@ -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
|
dropped as an item. If the node is wallmounted the wallmounted direction is
|
||||||
checked.
|
checked.
|
||||||
* `soil`: saplings will grow on nodes in this group
|
* `soil`: saplings will grow on nodes in this group
|
||||||
* `connect_to_raillike`: makes nodes of raillike drawtype connect to
|
* `connect_to_raillike`: makes nodes of raillike drawtype with same group value
|
||||||
other group members with same drawtype
|
connect to each other
|
||||||
|
|
||||||
### Known damage and digging time defining groups
|
### Known damage and digging time defining groups
|
||||||
* `crumbly`: dirt, sand
|
* `crumbly`: dirt, sand
|
||||||
|
@ -1421,77 +1421,65 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
|
|||||||
|
|
||||||
content_t thiscontent = n.getContent();
|
content_t thiscontent = n.getContent();
|
||||||
std::string groupname = "connect_to_raillike"; // name of the group that enables connecting to raillike nodes of different kind
|
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
|
if ((nodedef->get(n_minus_x).drawtype == NDT_RAILLIKE
|
||||||
&& ((ItemGroupList) nodedef->get(n_minus_x).groups)[groupname] != 0
|
&& ((ItemGroupList) nodedef->get(n_minus_x).groups)[groupname] != self_group)
|
||||||
&& self_connect_to_raillike)
|
|
||||||
|| n_minus_x.getContent() == thiscontent)
|
|| n_minus_x.getContent() == thiscontent)
|
||||||
is_rail_x[0] = true;
|
is_rail_x[0] = true;
|
||||||
|
|
||||||
if ((nodedef->get(n_minus_x_minus_y).drawtype == NDT_RAILLIKE
|
if ((nodedef->get(n_minus_x_minus_y).drawtype == NDT_RAILLIKE
|
||||||
&& ((ItemGroupList) nodedef->get(n_minus_x_minus_y).groups)[groupname] != 0
|
&& ((ItemGroupList) nodedef->get(n_minus_x_minus_y).groups)[groupname] != self_group)
|
||||||
&& self_connect_to_raillike)
|
|
||||||
|| n_minus_x_minus_y.getContent() == thiscontent)
|
|| n_minus_x_minus_y.getContent() == thiscontent)
|
||||||
is_rail_x_minus_y[0] = true;
|
is_rail_x_minus_y[0] = true;
|
||||||
|
|
||||||
if ((nodedef->get(n_minus_x_plus_y).drawtype == NDT_RAILLIKE
|
if ((nodedef->get(n_minus_x_plus_y).drawtype == NDT_RAILLIKE
|
||||||
&& ((ItemGroupList) nodedef->get(n_minus_x_plus_y).groups)[groupname] != 0
|
&& ((ItemGroupList) nodedef->get(n_minus_x_plus_y).groups)[groupname] != self_group)
|
||||||
&& self_connect_to_raillike)
|
|
||||||
|| n_minus_x_plus_y.getContent() == thiscontent)
|
|| n_minus_x_plus_y.getContent() == thiscontent)
|
||||||
is_rail_x_plus_y[0] = true;
|
is_rail_x_plus_y[0] = true;
|
||||||
|
|
||||||
if ((nodedef->get(n_plus_x).drawtype == NDT_RAILLIKE
|
if ((nodedef->get(n_plus_x).drawtype == NDT_RAILLIKE
|
||||||
&& ((ItemGroupList) nodedef->get(n_plus_x).groups)[groupname] != 0
|
&& ((ItemGroupList) nodedef->get(n_plus_x).groups)[groupname] != self_group)
|
||||||
&& self_connect_to_raillike)
|
|
||||||
|| n_plus_x.getContent() == thiscontent)
|
|| n_plus_x.getContent() == thiscontent)
|
||||||
is_rail_x[1] = true;
|
is_rail_x[1] = true;
|
||||||
|
|
||||||
if ((nodedef->get(n_plus_x_minus_y).drawtype == NDT_RAILLIKE
|
if ((nodedef->get(n_plus_x_minus_y).drawtype == NDT_RAILLIKE
|
||||||
&& ((ItemGroupList) nodedef->get(n_plus_x_minus_y).groups)[groupname] != 0
|
&& ((ItemGroupList) nodedef->get(n_plus_x_minus_y).groups)[groupname] != self_group)
|
||||||
&& self_connect_to_raillike)
|
|
||||||
|| n_plus_x_minus_y.getContent() == thiscontent)
|
|| n_plus_x_minus_y.getContent() == thiscontent)
|
||||||
is_rail_x_minus_y[1] = true;
|
is_rail_x_minus_y[1] = true;
|
||||||
|
|
||||||
if ((nodedef->get(n_plus_x_plus_y).drawtype == NDT_RAILLIKE
|
if ((nodedef->get(n_plus_x_plus_y).drawtype == NDT_RAILLIKE
|
||||||
&& ((ItemGroupList) nodedef->get(n_plus_x_plus_y).groups)[groupname] != 0
|
&& ((ItemGroupList) nodedef->get(n_plus_x_plus_y).groups)[groupname] != self_group)
|
||||||
&& self_connect_to_raillike)
|
|
||||||
|| n_plus_x_plus_y.getContent() == thiscontent)
|
|| n_plus_x_plus_y.getContent() == thiscontent)
|
||||||
is_rail_x_plus_y[1] = true;
|
is_rail_x_plus_y[1] = true;
|
||||||
|
|
||||||
if ((nodedef->get(n_minus_z).drawtype == NDT_RAILLIKE
|
if ((nodedef->get(n_minus_z).drawtype == NDT_RAILLIKE
|
||||||
&& ((ItemGroupList) nodedef->get(n_minus_z).groups)[groupname] != 0
|
&& ((ItemGroupList) nodedef->get(n_minus_z).groups)[groupname] != self_group)
|
||||||
&& self_connect_to_raillike)
|
|
||||||
|| n_minus_z.getContent() == thiscontent)
|
|| n_minus_z.getContent() == thiscontent)
|
||||||
is_rail_z[0] = true;
|
is_rail_z[0] = true;
|
||||||
|
|
||||||
if ((nodedef->get(n_minus_z_minus_y).drawtype == NDT_RAILLIKE
|
if ((nodedef->get(n_minus_z_minus_y).drawtype == NDT_RAILLIKE
|
||||||
&& ((ItemGroupList) nodedef->get(n_minus_z_minus_y).groups)[groupname] != 0
|
&& ((ItemGroupList) nodedef->get(n_minus_z_minus_y).groups)[groupname] != self_group)
|
||||||
&& self_connect_to_raillike)
|
|
||||||
|| n_minus_z_minus_y.getContent() == thiscontent)
|
|| n_minus_z_minus_y.getContent() == thiscontent)
|
||||||
is_rail_z_minus_y[0] = true;
|
is_rail_z_minus_y[0] = true;
|
||||||
|
|
||||||
if ((nodedef->get(n_minus_z_plus_y).drawtype == NDT_RAILLIKE
|
if ((nodedef->get(n_minus_z_plus_y).drawtype == NDT_RAILLIKE
|
||||||
&& ((ItemGroupList) nodedef->get(n_minus_z_plus_y).groups)[groupname] != 0
|
&& ((ItemGroupList) nodedef->get(n_minus_z_plus_y).groups)[groupname] != self_group)
|
||||||
&& self_connect_to_raillike)
|
|
||||||
|| n_minus_z_plus_y.getContent() == thiscontent)
|
|| n_minus_z_plus_y.getContent() == thiscontent)
|
||||||
is_rail_z_plus_y[0] = true;
|
is_rail_z_plus_y[0] = true;
|
||||||
|
|
||||||
if ((nodedef->get(n_plus_z).drawtype == NDT_RAILLIKE
|
if ((nodedef->get(n_plus_z).drawtype == NDT_RAILLIKE
|
||||||
&& ((ItemGroupList) nodedef->get(n_plus_z).groups)[groupname] != 0
|
&& ((ItemGroupList) nodedef->get(n_plus_z).groups)[groupname] != self_group)
|
||||||
&& self_connect_to_raillike)
|
|
||||||
|| n_plus_z.getContent() == thiscontent)
|
|| n_plus_z.getContent() == thiscontent)
|
||||||
is_rail_z[1] = true;
|
is_rail_z[1] = true;
|
||||||
|
|
||||||
if ((nodedef->get(n_plus_z_minus_y).drawtype == NDT_RAILLIKE
|
if ((nodedef->get(n_plus_z_minus_y).drawtype == NDT_RAILLIKE
|
||||||
&& ((ItemGroupList) nodedef->get(n_plus_z_minus_y).groups)[groupname] != 0
|
&& ((ItemGroupList) nodedef->get(n_plus_z_minus_y).groups)[groupname] != self_group)
|
||||||
&& self_connect_to_raillike)
|
|
||||||
|| n_plus_z_minus_y.getContent() == thiscontent)
|
|| n_plus_z_minus_y.getContent() == thiscontent)
|
||||||
is_rail_z_minus_y[1] = true;
|
is_rail_z_minus_y[1] = true;
|
||||||
|
|
||||||
if ((nodedef->get(n_plus_z_plus_y).drawtype == NDT_RAILLIKE
|
if ((nodedef->get(n_plus_z_plus_y).drawtype == NDT_RAILLIKE
|
||||||
&& ((ItemGroupList) nodedef->get(n_plus_z_plus_y).groups)[groupname] != 0
|
&& ((ItemGroupList) nodedef->get(n_plus_z_plus_y).groups)[groupname] != self_group)
|
||||||
&& self_connect_to_raillike)
|
|
||||||
|| n_plus_z_plus_y.getContent() == thiscontent)
|
|| n_plus_z_plus_y.getContent() == thiscontent)
|
||||||
is_rail_z_plus_y[1] = true;
|
is_rail_z_plus_y[1] = true;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user