1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00

Make NavigationServer backend engine selectable

Adds engine backend selection for NavigationServers, aka allows to swap navigation module for other backend implementations.
This commit is contained in:
smix8
2025-04-30 00:27:39 +02:00
parent 07f4c06601
commit 419fc6e22d
13 changed files with 439 additions and 54 deletions

View File

@@ -746,6 +746,13 @@ Error Main::test_setup() {
physics_server_2d_manager = memnew(PhysicsServer2DManager);
#endif // PHYSICS_2D_DISABLED
#ifndef NAVIGATION_2D_DISABLED
NavigationServer2DManager::initialize_server_manager();
#endif // NAVIGATION_2D_DISABLED
#ifndef NAVIGATION_3D_DISABLED
NavigationServer3DManager::initialize_server_manager();
#endif // NAVIGATION_3D_DISABLED
// From `Main::setup2()`.
register_early_core_singletons();
initialize_modules(MODULE_INITIALIZATION_LEVEL_CORE);
@@ -863,9 +870,11 @@ void Main::test_cleanup() {
#ifndef NAVIGATION_2D_DISABLED
NavigationServer2DManager::finalize_server();
NavigationServer2DManager::finalize_server_manager();
#endif // NAVIGATION_2D_DISABLED
#ifndef NAVIGATION_3D_DISABLED
NavigationServer3DManager::finalize_server();
NavigationServer3DManager::finalize_server_manager();
#endif // NAVIGATION_3D_DISABLED
GDExtensionManager::get_singleton()->deinitialize_extensions(GDExtension::INITIALIZATION_LEVEL_SERVERS);
@@ -3018,6 +3027,13 @@ Error Main::setup2(bool p_show_boot_logo) {
physics_server_2d_manager = memnew(PhysicsServer2DManager);
#endif // PHYSICS_2D_DISABLED
#ifndef NAVIGATION_2D_DISABLED
NavigationServer2DManager::initialize_server_manager();
#endif // NAVIGATION_2D_DISABLED
#ifndef NAVIGATION_3D_DISABLED
NavigationServer3DManager::initialize_server_manager();
#endif // NAVIGATION_3D_DISABLED
register_server_types();
{
OS::get_singleton()->benchmark_begin_measure("Servers", "Modules and Extensions");
@@ -4979,9 +4995,11 @@ void Main::cleanup(bool p_force) {
// Before deinitializing server extensions, finalize servers which may be loaded as extensions.
#ifndef NAVIGATION_2D_DISABLED
NavigationServer2DManager::finalize_server();
NavigationServer2DManager::finalize_server_manager();
#endif // NAVIGATION_2D_DISABLED
#ifndef NAVIGATION_3D_DISABLED
NavigationServer3DManager::finalize_server();
NavigationServer3DManager::finalize_server_manager();
#endif // NAVIGATION_3D_DISABLED
finalize_physics();