From 44915696d21a9858c0df5283a8a404ae6c2577cd Mon Sep 17 00:00:00 2001 From: smix8 <52464204+smix8@users.noreply.github.com> Date: Wed, 18 May 2022 11:24:20 +0200 Subject: [PATCH] Add wrong surface warnings to NavigationMesh.create_from_mesh() Adds warnings when at least one of the input mesh surfaces is of wrong primitive type or has an empty vertex / index array as those broken input meshes would fail as both navmesh as well as later when creating debug meshes. (cherry picked from commit 4185fce0eff4c0fc40f077120d0ed26220e6c995) --- scene/resources/navigation_mesh.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scene/resources/navigation_mesh.cpp b/scene/resources/navigation_mesh.cpp index e4ee26ee8c9..72d4ede5db7 100644 --- a/scene/resources/navigation_mesh.cpp +++ b/scene/resources/navigation_mesh.cpp @@ -36,12 +36,14 @@ void NavigationMesh::create_from_mesh(const Ref &p_mesh) { for (int i = 0; i < p_mesh->get_surface_count(); i++) { if (p_mesh->surface_get_primitive_type(i) != Mesh::PRIMITIVE_TRIANGLES) { + WARN_PRINT("A mesh surface was skipped when creating a NavigationMesh due to wrong primitive type in the source mesh. Mesh surface must be made out of triangles."); continue; } Array arr = p_mesh->surface_get_arrays(i); PoolVector varr = arr[Mesh::ARRAY_VERTEX]; PoolVector iarr = arr[Mesh::ARRAY_INDEX]; if (varr.size() == 0 || iarr.size() == 0) { + WARN_PRINT("A mesh surface was skipped when creating a NavigationMesh due to an empty vertex or index array."); continue; }