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

@ -41,13 +41,14 @@
#include "editor/navigation_region_2d_editor_plugin.h"
#endif
NavigationServer2D *new_navigation_server_2d() {
static NavigationServer2D *_createGodotNavigation2DCallback() {
return memnew(GodotNavigationServer2D);
}
void initialize_navigation_2d_module(ModuleInitializationLevel p_level) {
if (p_level == MODULE_INITIALIZATION_LEVEL_SERVERS) {
NavigationServer2DManager::set_default_server(new_navigation_server_2d);
NavigationServer2DManager::get_singleton()->register_server("GodotNavigation2D", callable_mp_static(_createGodotNavigation2DCallback));
NavigationServer2DManager::get_singleton()->set_default_server("GodotNavigation2D");
}
#ifdef TOOLS_ENABLED

View File

@ -49,13 +49,14 @@
NavigationMeshGenerator *_nav_mesh_generator = nullptr;
#endif // DISABLE_DEPRECATED
NavigationServer3D *new_navigation_server_3d() {
static NavigationServer3D *_createGodotNavigation3DCallback() {
return memnew(GodotNavigationServer3D);
}
void initialize_navigation_3d_module(ModuleInitializationLevel p_level) {
if (p_level == MODULE_INITIALIZATION_LEVEL_SERVERS) {
NavigationServer3DManager::set_default_server(new_navigation_server_3d);
NavigationServer3DManager::get_singleton()->register_server("GodotNavigation3D", callable_mp_static(_createGodotNavigation3DCallback));
NavigationServer3DManager::get_singleton()->set_default_server("GodotNavigation3D");
#ifndef DISABLE_DEPRECATED
_nav_mesh_generator = memnew(NavigationMeshGenerator);