diff options
Diffstat (limited to 'main/main.cpp')
-rw-r--r-- | main/main.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/main/main.cpp b/main/main.cpp index cd9bd6d1d3..2b2ed3d6ec 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -70,6 +70,7 @@ #include "servers/movie_writer/movie_writer.h" #include "servers/movie_writer/movie_writer_mjpeg.h" #include "servers/navigation_server_2d.h" +#include "servers/navigation_server_2d_dummy.h" #include "servers/navigation_server_3d.h" #include "servers/navigation_server_3d_dummy.h" #include "servers/physics_server_2d.h" @@ -339,8 +340,14 @@ void initialize_navigation_server() { navigation_server_3d->init(); // Init 2D Navigation Server - navigation_server_2d = memnew(NavigationServer2D); + navigation_server_2d = NavigationServer2DManager::new_default_server(); + if (!navigation_server_2d) { + WARN_PRINT_ONCE("No NavigationServer2D implementation has been registered! Falling back to a dummy implementation: navigation features will be unavailable."); + navigation_server_2d = memnew(NavigationServer2DDummy); + } + ERR_FAIL_NULL_MSG(navigation_server_2d, "Failed to initialize NavigationServer2D."); + navigation_server_2d->init(); } void finalize_navigation_server() { @@ -350,6 +357,7 @@ void finalize_navigation_server() { navigation_server_3d = nullptr; ERR_FAIL_NULL(navigation_server_2d); + navigation_server_2d->finish(); memdelete(navigation_server_2d); navigation_server_2d = nullptr; } @@ -3490,6 +3498,9 @@ bool Main::iteration() { // process all our active interfaces XRServer::get_singleton()->_process(); + NavigationServer2D::get_singleton()->sync(); + NavigationServer3D::get_singleton()->sync(); + for (int iters = 0; iters < advance.physics_steps; ++iters) { if (Input::get_singleton()->is_using_input_buffering() && agile_input_event_flushing) { Input::get_singleton()->flush_buffered_events(); |