26 lines
1.0 KiB
GDScript
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)
|
|
|