-
-
Save TeddyDD/a5b9315250b6c9eba314347eb806dfc2 to your computer and use it in GitHub Desktop.
Tiled post import script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
tool | |
extends Reference | |
const MARGIN = 10 | |
func post_import(scene): | |
# scene = scene.duplicate() | |
# create nav poly | |
var nav = NavigationPolygonInstance.new() | |
var nav_poly = NavigationPolygon.new() | |
# get all tile layers in scene | |
var tilemaps = get_tilemaps(scene) | |
for y in range(tilemaps[0].get_used_rect().size.y): | |
for x in range(tilemaps[0].get_used_rect().size.x): | |
var outlines = [] | |
for tmap in tilemaps: | |
var set = tmap.get_tileset() | |
var id = tmap.get_cell(x,y) | |
var n = set.tile_get_navigation_polygon(id) | |
if n != null: | |
for o_idx in range(n.get_outline_count()): | |
var res = n.get_outline(o_idx) | |
if not outlines.has(res): | |
for el_idx in range(res.size()): | |
res[el_idx] = (res[el_idx] + (Vector2(x,y)\ | |
* tmap.get_cell_size()) + set.tile_get_navigation_polygon_offset(id)).snapped(Vector2(1,1)) | |
outlines.append(res) | |
for i in range(outlines.size()): | |
nav_poly.add_outline_at_index(outlines[i], i) | |
printerr(outlines[i]) | |
nav_poly.make_polygons_from_outlines() | |
# insert navigation into scene | |
nav.set_navigation_polygon(nav_poly) | |
nav.set_name("nav") | |
scene.add_child(nav) | |
nav.set_owner(scene) | |
return scene | |
func get_tilemaps(scene): | |
var tilemaps = [] | |
for node in scene.get_children(): | |
if node extends TileMap: | |
tilemaps.append(node) | |
return tilemaps | |
func get_poly_from_rect(rect): | |
return Vector2Array(\ | |
[Vector2(-MARGIN, -MARGIN), | |
Vector2(rect.end.x + MARGIN, -MARGIN), | |
Vector2(rect.end.x + MARGIN, rect.end.y + MARGIN), | |
Vector2(-MARGIN, rect.end.y + MARGIN)]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment