From ddac71fd62ab75e2513d2efcddfc0afb727304ad Mon Sep 17 00:00:00 2001 From: Gustavo Jaruga Cruz Date: Sat, 4 Jul 2026 16:21:14 -0300 Subject: [PATCH] Fix debug NavigationRegion3D colors not updating until project re-start (cherry picked from commit 984e7379e2f096db9a2e62d1f8a81f9bf2570769) --- .../navigation_region_3d_gizmo_plugin.cpp | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/modules/navigation_3d/editor/navigation_region_3d_gizmo_plugin.cpp b/modules/navigation_3d/editor/navigation_region_3d_gizmo_plugin.cpp index 52b92199f7..b16a4db47e 100644 --- a/modules/navigation_3d/editor/navigation_region_3d_gizmo_plugin.cpp +++ b/modules/navigation_3d/editor/navigation_region_3d_gizmo_plugin.cpp @@ -184,7 +184,23 @@ void NavigationRegion3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) { } debug_mesh->add_surface_from_arrays(Mesh::PRIMITIVE_TRIANGLES, face_mesh_array); - p_gizmo->add_mesh(debug_mesh, navigationregion->is_enabled() ? get_material("face_material", p_gizmo) : get_material("face_material_disabled", p_gizmo)); + + const String face_material_name = navigationregion->is_enabled() ? "face_material" : "face_material_disabled"; + Ref face_material = get_material(face_material_name, p_gizmo); + if (navigationregion->is_enabled()) { + Color mat_color = NavigationServer3D::get_singleton()->get_debug_navigation_geometry_face_color(); + if (!p_gizmo->is_selected()) { + mat_color.a *= 0.3; + } + face_material->set_albedo(mat_color); + } else { + Color mat_color = NavigationServer3D::get_singleton()->get_debug_navigation_geometry_face_disabled_color(); + if (!p_gizmo->is_selected()) { + mat_color.a *= 0.3; + } + face_material->set_albedo(mat_color); + } + p_gizmo->add_mesh(debug_mesh, face_material); // if enabled build geometry edge line surface bool enabled_edge_lines = NavigationServer3D::get_singleton()->get_debug_navigation_enable_edge_lines(); @@ -203,6 +219,21 @@ void NavigationRegion3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) { line_vertex_array.push_back(vertices[polygon[0]]); } - p_gizmo->add_lines(line_vertex_array, navigationregion->is_enabled() ? get_material("edge_material", p_gizmo) : get_material("edge_material_disabled", p_gizmo)); + const String line_material_name = navigationregion->is_enabled() ? "edge_material" : "edge_material_disabled"; + Ref line_material = get_material(line_material_name, p_gizmo); + if (navigationregion->is_enabled()) { + Color mat_color = NavigationServer3D::get_singleton()->get_debug_navigation_geometry_edge_color(); + if (!p_gizmo->is_selected()) { + mat_color.a *= 0.3; + } + line_material->set_albedo(mat_color); + } else { + Color mat_color = NavigationServer3D::get_singleton()->get_debug_navigation_geometry_edge_disabled_color(); + if (!p_gizmo->is_selected()) { + mat_color.a *= 0.3; + } + line_material->set_albedo(mat_color); + } + p_gizmo->add_lines(line_vertex_array, line_material); } }