Commit: 229d0ace026ffb3591fdad4c5a6e0530c1243025 Author: Wannes Malfait Date: Mon Feb 7 16:08:36 2022 -0600 Branches: blender-v3.1-release https://developer.blender.org/rB229d0ace026ffb3591fdad4c5a6e0530c1243025
Fix T95532: Merge node deletes everything for empty selections The problem was that nullptr was returned which is a valid value for Mesh * and hence the returned optional was treated as having some value. There was no check for point clouds so that was fixed as well. Differential Revision: https://developer.blender.org/D14026 =================================================================== M source/blender/nodes/geometry/nodes/node_geo_merge_by_distance.cc =================================================================== diff --git a/source/blender/nodes/geometry/nodes/node_geo_merge_by_distance.cc b/source/blender/nodes/geometry/nodes/node_geo_merge_by_distance.cc index 3c790079b5b..89227c773cc 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_merge_by_distance.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_merge_by_distance.cc @@ -60,7 +60,7 @@ static std::optional<Mesh *> mesh_merge_by_distance(const MeshComponent &mesh_co const IndexMask selection = evaluator.get_evaluated_as_mask(0); if (selection.is_empty()) { - return nullptr; + return std::nullopt; } const Mesh &mesh = *mesh_component.get_for_read(); @@ -78,7 +78,9 @@ static void node_geo_exec(GeoNodeExecParams params) if (geometry_set.has_pointcloud()) { PointCloud *result = pointcloud_merge_by_distance( *geometry_set.get_component_for_read<PointCloudComponent>(), merge_distance, selection); - geometry_set.replace_pointcloud(result); + if (result) { + geometry_set.replace_pointcloud(result); + } } if (geometry_set.has_mesh()) { std::optional<Mesh *> result = mesh_merge_by_distance( _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs