Finally got this working! This is what I had to go through:
Split the hexagons into islands
Find the islands’ edges (including holes)
Find which of the edges is the outer one (easy, the longest one)Â
Group outer edges with their holes (had to use Shamos-Hoey algorithm for line intersection to see if holes were really inside of the outer edge)
Order the edges correctly (outer edge is counter-clockwise and holes are clockwise)
And finally I used PolyPartition to triangulate every island and turned the result into a mesh.
6 steps are not that bad, but I had so trouble with every single one of them @_@. Even PolyPartition, which completely saved me from having to do the actual triangulation, has an awful documentation. I’m considering sending a pull request to update the docs but I gotta get over my anxiety first :p
All in all I’m happy with this, maps can go up to the maximum radius of 127 but (and I fell like this is a recurring theme for me) it can get really slow. I’m not going to optimize it though, Mesh generation rarely happens and I get to scroll through Tumblr while it is being done :p