Lethn
Here's a method that returns map space rect given a global rect as an input:
extends TileMap
func global_rect_to_map(rect: Rect2) -> Rect2i:
var rect_map: Rect2i
rect_map.position = local_to_map(to_local(rect.position))
rect_map.size = local_to_map(to_local(rect.position + rect.size)) - rect_map.position + Vector2i(1, 1)
return rect_map
And here's how you can get the global rect of a rectangle collider parented to area2d:
var area_rect_global: Rect2
area_rect_global.position = $area.to_global($area/shape.position - $area/shape.shape.size * .5)
area_rect_global.size = $area.to_global($area/shape.position + $area/shape.shape.size * .5) - area_rect_global.position
Example usage (setting all tilemap cells that touch the area rect):
for j in area_rect_global.size.y:
for i in area_rect_global.size.x:
var v = area_rect_global.position + Vector2i(i,j)
$tilemap.set_cell(0, v, 0, Vector2i(0,0))