浏览代码

Merge pull request #17902 from Noshyaar/outline

Mesh: fix crash when creating mesh outline from QuadMesh
Rémi Verschelde 7 年之前
父节点
当前提交
a10be201de
共有 2 个文件被更改,包括 6 次插入0 次删除
  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];