summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsmix8 <52464204+smix8@users.noreply.github.com>2023-03-16 09:15:34 +0100
committerYuri Sizov <yuris@humnom.net>2023-03-16 16:45:16 +0100
commit8e8ecf52cf084c845c3e0288861f166726ae9653 (patch)
tree10e2a2a83f68216e6f455265184a118ad332bcd1
parentbea2da94da07b5cda93b59e2293ac0edde7e6aa5 (diff)
Fix NavigationAgent3D debug path duplicated points
Fixes duplicated points in NavigationAgent3D debug path. (cherry picked from commit 0b8798a9950ca7a86b1b2e20f69f22ba4396d55a)
-rw-r--r--scene/3d/navigation_agent_3d.cpp40
1 files changed, 21 insertions, 19 deletions
diff --git a/scene/3d/navigation_agent_3d.cpp b/scene/3d/navigation_agent_3d.cpp
index 396e4b72af..3730070b16 100644
--- a/scene/3d/navigation_agent_3d.cpp
+++ b/scene/3d/navigation_agent_3d.cpp
@@ -135,7 +135,7 @@ void NavigationAgent3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "debug_enabled"), "set_debug_enabled", "get_debug_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "debug_use_custom"), "set_debug_use_custom", "get_debug_use_custom");
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "debug_path_custom_color"), "set_debug_path_custom_color", "get_debug_path_custom_color");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "debug_path_custom_point_size", PROPERTY_HINT_RANGE, "1,50,1,suffix:px"), "set_debug_path_custom_point_size", "get_debug_path_custom_point_size");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "debug_path_custom_point_size", PROPERTY_HINT_RANGE, "0,50,0.01,or_greater,suffix:px"), "set_debug_path_custom_point_size", "get_debug_path_custom_point_size");
}
void NavigationAgent3D::_notification(int p_what) {
@@ -760,7 +760,7 @@ void NavigationAgent3D::set_debug_path_custom_point_size(float p_point_size) {
return;
}
- debug_path_custom_point_size = p_point_size;
+ debug_path_custom_point_size = MAX(0.0, p_point_size);
debug_path_dirty = true;
#endif // DEBUG_ENABLED
}
@@ -828,28 +828,30 @@ void NavigationAgent3D::_update_debug_path() {
debug_path_mesh->surface_set_material(0, debug_agent_path_line_material);
}
- Vector<Vector3> debug_path_points_vertex_array;
+ if (debug_path_custom_point_size > 0.0) {
+ Vector<Vector3> debug_path_points_vertex_array;
- for (int i = 0; i < navigation_path.size(); i++) {
- debug_path_points_vertex_array.push_back(navigation_path[i]);
- }
+ for (int i = 0; i < navigation_path.size(); i++) {
+ debug_path_points_vertex_array.push_back(navigation_path[i]);
+ }
- Array debug_path_points_mesh_array;
- debug_path_points_mesh_array.resize(Mesh::ARRAY_MAX);
- debug_path_points_mesh_array[Mesh::ARRAY_VERTEX] = debug_path_lines_vertex_array;
+ Array debug_path_points_mesh_array;
+ debug_path_points_mesh_array.resize(Mesh::ARRAY_MAX);
+ debug_path_points_mesh_array[Mesh::ARRAY_VERTEX] = debug_path_points_vertex_array;
- debug_path_mesh->add_surface_from_arrays(Mesh::PRIMITIVE_POINTS, debug_path_points_mesh_array);
+ debug_path_mesh->add_surface_from_arrays(Mesh::PRIMITIVE_POINTS, debug_path_points_mesh_array);
- Ref<StandardMaterial3D> debug_agent_path_point_material = NavigationServer3D::get_singleton()->get_debug_navigation_agent_path_point_material();
- if (debug_use_custom) {
- if (!debug_agent_path_point_custom_material.is_valid()) {
- debug_agent_path_point_custom_material = debug_agent_path_point_material->duplicate();
+ Ref<StandardMaterial3D> debug_agent_path_point_material = NavigationServer3D::get_singleton()->get_debug_navigation_agent_path_point_material();
+ if (debug_use_custom) {
+ if (!debug_agent_path_point_custom_material.is_valid()) {
+ debug_agent_path_point_custom_material = debug_agent_path_point_material->duplicate();
+ }
+ debug_agent_path_point_custom_material->set_albedo(debug_path_custom_color);
+ debug_agent_path_point_custom_material->set_point_size(debug_path_custom_point_size);
+ debug_path_mesh->surface_set_material(1, debug_agent_path_point_custom_material);
+ } else {
+ debug_path_mesh->surface_set_material(1, debug_agent_path_point_material);
}
- debug_agent_path_point_custom_material->set_albedo(debug_path_custom_color);
- debug_agent_path_point_custom_material->set_point_size(debug_path_custom_point_size);
- debug_path_mesh->surface_set_material(1, debug_agent_path_point_custom_material);
- } else {
- debug_path_mesh->surface_set_material(1, debug_agent_path_point_material);
}
RS::get_singleton()->instance_set_base(debug_path_instance, debug_path_mesh->get_rid());