26 lines
836 B
GDScript
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()
|