Browse Source

Improve navigation map synchronisation error msgs

Improves navigation map synchronisation error msgs related to mismatch of cell sizes.
smix8 2 năm trước cách đây
mục cha
commit
7f2417135f
2 tập tin đã thay đổi với 5 bổ sung1 xóa
  1. 1 1
      modules/navigation/nav_map.cpp
  2. 4 0
      modules/navigation/nav_region.cpp

+ 1 - 1
modules/navigation/nav_map.cpp

@@ -742,7 +742,7 @@ void NavMap::sync() {
 					connections[ek].push_back(new_connection);
 				} else {
 					// The edge is already connected with another edge, skip.
-					ERR_PRINT_ONCE("Attempted to merge a navigation mesh triangle edge with another already-merged edge. This happens when the current `cell_size` is different from the one used to generate the navigation mesh. This will cause navigation problems.");
+					ERR_PRINT_ONCE("Navigation map synchronization error. Attempted to merge a navigation mesh polygon edge with another already-merged edge. This is usually caused by crossing edges, overlapping polygons, or a mismatch of the NavigationMesh / NavigationPolygon baked 'cell_size' and navigation map 'cell_size'.");
 				}
 			}
 		}

+ 4 - 0
modules/navigation/nav_region.cpp

@@ -105,6 +105,10 @@ void NavRegion::update_polygons() {
 		return;
 	}
 
+	if (!Math::is_equal_approx(double(map->get_cell_size()), double(mesh->get_cell_size()))) {
+		ERR_PRINT_ONCE("Navigation map synchronization error. Attempted to update a navigation region with a navigation mesh that uses a different `cell_size` than the `cell_size` set on the navigation map.");
+	}
+
 	Vector<Vector3> vertices = mesh->get_vertices();
 	int len = vertices.size();
 	if (len == 0) {