Browse Source

Merge pull request #107691 from smix8/mi_active_mat

Fix `MeshInstance3D::get_active_material()` error on empty mesh or empty surfaces
Thaddeus Crews 2 months ago
parent
commit
3c9f6aa81f
1 changed files with 6 additions and 6 deletions
  1. 6 6
      scene/3d/mesh_instance_3d.cpp

+ 6 - 6
scene/3d/mesh_instance_3d.cpp

@@ -380,17 +380,17 @@ Ref<Material> MeshInstance3D::get_active_material(int p_surface) const {
 		return mat_override;
 		return mat_override;
 	}
 	}
 
 
+	Ref<Mesh> m = get_mesh();
+	if (m.is_null() || m->get_surface_count() == 0) {
+		return Ref<Material>();
+	}
+
 	Ref<Material> surface_material = get_surface_override_material(p_surface);
 	Ref<Material> surface_material = get_surface_override_material(p_surface);
 	if (surface_material.is_valid()) {
 	if (surface_material.is_valid()) {
 		return surface_material;
 		return surface_material;
 	}
 	}
 
 
-	Ref<Mesh> m = get_mesh();
-	if (m.is_valid()) {
-		return m->surface_get_material(p_surface);
-	}
-
-	return Ref<Material>();
+	return m->surface_get_material(p_surface);
 }
 }
 
 
 void MeshInstance3D::_mesh_changed() {
 void MeshInstance3D::_mesh_changed() {