SchildDerStaerke/scripts/navigation_manager.gd

26 lines
836 B
GDScript

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()