class_name NavigationManager extends NavigationRegion3D @export var navigation_sources_root: Node const LOG_TAG := "NavigationManager" func _ready() -> void: if navigation_sources_root: _connect_navigation_sources(navigation_sources_root) func _connect_navigation_sources(root: Node) -> void: var children := root.get_children() for child in children: if child.has_signal("recalculate_navigation_map"): var callable := Callable(self, "_on_recalculate_navigation_map") if child.is_connected("recalculate_navigation_map", callable): child.disconnect("recalculate_navigation_map", callable) child.connect("recalculate_navigation_map", callable) func _on_recalculate_navigation_map(requester: Node) -> void: print("[%s] %s requests new navigation mesh bake." % [LOG_TAG, requester.name]) bake_navigation_mesh()