Explorar el Código

Merge pull request #17902 from Noshyaar/outline

Mesh: fix crash when creating mesh outline from QuadMesh
Rémi Verschelde hace 7 años
padre
commit
a10be201de
Se han modificado 2 ficheros con 6 adiciones y 0 borrados
  1. 4 0
      editor/plugins/mesh_instance_editor_plugin.cpp
  2. 2 0
      scene/resources/mesh.cpp

+ 4 - 0
editor/plugins/mesh_instance_editor_plugin.cpp

@@ -344,6 +344,10 @@ void MeshInstanceEditor::_create_outline_mesh() {
 		err_dialog->set_text(TTR("Mesh has not surface to create outlines from!"));
 		err_dialog->popup_centered_minsize();
 		return;
+	} else if (mesh->get_surface_count() == 1 && mesh->surface_get_primitive_type(0) != Mesh::PRIMITIVE_TRIANGLES) {
+		err_dialog->set_text(TTR("Mesh primitive type is not PRIMITIVE_TRIANGLES!"));
+		err_dialog->popup_centered_minsize();
+		return;
 	}
 
 	Ref<Mesh> mesho = mesh->create_outline(outline_size->get_value());

+ 2 - 0
scene/resources/mesh.cpp

@@ -315,6 +315,8 @@ Ref<Mesh> Mesh::create_outline(float p_margin) const {
 		}
 	}
 
+	ERR_FAIL_COND_V(arrays.size() != ARRAY_MAX, Ref<ArrayMesh>());
+
 	{
 		PoolVector<int>::Write ir;
 		PoolVector<int> indices = arrays[ARRAY_INDEX];