Fix MultiMeshInstance crash in navmesh baking when MultiMesh Resource is empty

Fix MultiMeshInstance crash in navmesh baking when MultiMesh Resource is empty

(cherry picked from commit caceceab0819dca9da4ca3c268bc07ded933e332)
This commit is contained in:
smix8 2022-05-27 19:35:00 +02:00 committed by Relintai
parent 690b82ff41
commit 62e781b914

View File

@ -170,14 +170,16 @@ void NavigationMeshGenerator::_parse_geometry(const Transform &p_navmesh_xform,
if (Object::cast_to<MultiMeshInstance>(p_node) && p_generate_from != NavigationMesh::PARSED_GEOMETRY_STATIC_COLLIDERS) { if (Object::cast_to<MultiMeshInstance>(p_node) && p_generate_from != NavigationMesh::PARSED_GEOMETRY_STATIC_COLLIDERS) {
MultiMeshInstance *multimesh_instance = Object::cast_to<MultiMeshInstance>(p_node); MultiMeshInstance *multimesh_instance = Object::cast_to<MultiMeshInstance>(p_node);
Ref<MultiMesh> multimesh = multimesh_instance->get_multimesh(); Ref<MultiMesh> multimesh = multimesh_instance->get_multimesh();
Ref<Mesh> mesh = multimesh->get_mesh(); if (multimesh.is_valid()) {
if (mesh.is_valid()) { Ref<Mesh> mesh = multimesh->get_mesh();
int n = multimesh->get_visible_instance_count(); if (mesh.is_valid()) {
if (n == -1) { int n = multimesh->get_visible_instance_count();
n = multimesh->get_instance_count(); if (n == -1) {
} n = multimesh->get_instance_count();
for (int i = 0; i < n; i++) { }
_add_mesh(mesh, p_navmesh_xform * multimesh_instance->get_global_transform() * multimesh->get_instance_transform(i), p_vertices, p_indices); for (int i = 0; i < n; i++) {
_add_mesh(mesh, p_navmesh_xform * multimesh_instance->get_global_transform() * multimesh->get_instance_transform(i), p_vertices, p_indices);
}
} }
} }
} }