From c4f544f8028d049d51df05336f644251979beab8 Mon Sep 17 00:00:00 2001
From: smix8 <52464204+smix8@users.noreply.github.com>
Date: Sat, 17 Jun 2023 11:29:17 +0200
Subject: [PATCH] Add ProjectSettings navigation map default up
Adds ProjectSettings navigation map default up.
---
doc/classes/ProjectSettings.xml | 3 +++
scene/resources/world_3d.cpp | 1 +
servers/navigation_server_3d.cpp | 1 +
3 files changed, 5 insertions(+)
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index ce36a0336d2..720a4f6a47a 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -1964,6 +1964,9 @@
Default link connection radius for 3D navigation maps. See [method NavigationServer3D.map_set_link_connection_radius].
+
+ Default up orientation for 3D navigation maps. See [method NavigationServer3D.map_set_up].
+
If enabled 3D navigation regions will use edge connections to connect with other navigation regions within proximity of the navigation map edge connection margin. This setting only affects World3D default navigation maps.
diff --git a/scene/resources/world_3d.cpp b/scene/resources/world_3d.cpp
index 297d219caf3..b8646c53871 100644
--- a/scene/resources/world_3d.cpp
+++ b/scene/resources/world_3d.cpp
@@ -68,6 +68,7 @@ RID World3D::get_navigation_map() const {
NavigationServer3D::get_singleton()->map_set_active(navigation_map, true);
NavigationServer3D::get_singleton()->map_set_cell_size(navigation_map, GLOBAL_GET("navigation/3d/default_cell_size"));
NavigationServer3D::get_singleton()->map_set_cell_height(navigation_map, GLOBAL_GET("navigation/3d/default_cell_height"));
+ NavigationServer3D::get_singleton()->map_set_up(navigation_map, GLOBAL_GET("navigation/3d/default_up"));
NavigationServer3D::get_singleton()->map_set_use_edge_connections(navigation_map, GLOBAL_GET("navigation/3d/use_edge_connections"));
NavigationServer3D::get_singleton()->map_set_edge_connection_margin(navigation_map, GLOBAL_GET("navigation/3d/default_edge_connection_margin"));
NavigationServer3D::get_singleton()->map_set_link_connection_radius(navigation_map, GLOBAL_GET("navigation/3d/default_link_connection_radius"));
diff --git a/servers/navigation_server_3d.cpp b/servers/navigation_server_3d.cpp
index 2536ce719d4..2d4bc018f02 100644
--- a/servers/navigation_server_3d.cpp
+++ b/servers/navigation_server_3d.cpp
@@ -186,6 +186,7 @@ NavigationServer3D::NavigationServer3D() {
GLOBAL_DEF_BASIC("navigation/3d/default_cell_size", 0.25);
GLOBAL_DEF_BASIC("navigation/3d/default_cell_height", 0.25);
+ GLOBAL_DEF("navigation/3d/default_up", Vector3(0, 1, 0));
GLOBAL_DEF("navigation/3d/use_edge_connections", true);
GLOBAL_DEF_BASIC("navigation/3d/default_edge_connection_margin", 0.25);
GLOBAL_DEF_BASIC("navigation/3d/default_link_connection_radius", 1.0);