TowerGame/grid_map_test.gd

26 lines
1.0 KiB
GDScript

extends GridMap
var postprocess_done: bool = false
var postprocess_delay: float = 1.0
func _process(delta: float) -> void:
if postprocess_delay > 0:
postprocess_delay -= delta
if postprocess_delay <= 0 and !postprocess_done:
#bake_navigation = true
if !NavigationServer3D.get_maps().is_empty():
postprocess_done = true
var regions_deleted: int = 0
var map_rid: RID = NavigationServer3D.get_maps()[0]
for cell in get_used_cells():
var nav_region_rid: RID = NavigationServer3D.map_get_closest_point_owner(map_rid, to_global(map_to_local(cell)))
var upstairs_neighbour: Vector3 = cell + Vector3i(0,1,0)
if get_cell_item(upstairs_neighbour) != INVALID_CELL_ITEM:
DebugDraw3D.draw_box(to_global(map_to_local(cell)), Quaternion(), Vector3(2,1,2), Color.RED, true, 50)
NavigationServer3D.region_set_enabled(nav_region_rid, false)
regions_deleted += 1
NavigationServer3D.map_force_update(map_rid)
print("Navmesh postprocess done; %d regions deleted." % regions_deleted)