When precisely are Navigation regions ready to use?

Godot Version

4.5

Question

I’m looking for the earliest possible moment in execution that I can call NavigationServer3D.map_get_closest_point. In Godot 4.4, I thought that was NavigationServer3D.map_changed. However in Godot 4.5, subscribing to this signal doesn’t work. Neither does delaying a process frame. It seems like I need to wait two whole process frames before it starts working after upgrading. It’s certainly happening later in Godot 4.5 than it ever did in 4.4.

Preferably, I’d like a way to force the game to await the map being ready to use earlier. Regardless, I’d like to subscribe to the moment that I can use the map. Can anybody point me in the right direction?

I’ve been debugging further and I think it happens exactly at the point that NavigationServer3D.map_changed is called for the second iteration. That feels like a bug. I’m going to get an MRP and open a ticket.

Created issue here

1 Like