MT-CTF / capturetheflag

Capture the Flag game using the Minetest Voxel Engine
https://ctf.rubenwardy.com
81 stars 88 forks source link

Fix water flow in barrier removal #1199

Closed Emojigit closed 1 year ago

Emojigit commented 1 year ago

This PR fixes water flows by replacing barriers with water source if there are two water sources as their neighbor.

This PR is ready for review. Some maps not extending their border into the ocean (e.g. Desert Spikes) can now be fixed.

The logic

The code only works on barriers that should be replaced by air (i.e. replacement_id == ID_AIR). On each such node, four neighbor nodes of the same Y-coordinate (i.e. z +/- 1, x +/- 1) are listed and checked. If two of them are water sources, the current barrier will be replaced by water source instead of air.

Due to the above code, the d[vi] == ID_AIR check is no longer necessary and is removed in this PR.

Gallery

Before (f44e0ed):

screenshot_20230810_085204

After:

screenshot_20230810_084439