[Bf-blender-cvs] [8ffe20ffc9b] soc-2021-porting-modifiers-to-nodes-merge-by-distance: Changes based on review by Hans Goudey (HooglyBoogly)

Fabian Schempp noreply at git.blender.org
Thu Sep 30 18:04:00 CEST 2021


Commit: 8ffe20ffc9bb539fe279b5268d3e5aaa57ba9ff2
Author: Fabian Schempp
Date:   Thu Sep 30 18:03:54 2021 +0200
Branches: soc-2021-porting-modifiers-to-nodes-merge-by-distance
https://developer.blender.org/rB8ffe20ffc9bb539fe279b5268d3e5aaa57ba9ff2

Changes based on review by Hans Goudey (HooglyBoogly)

===================================================================

M	source/blender/geometry/intern/pointcloud_merge_by_distance.cc
M	source/blender/makesrna/intern/rna_nodetree.c
M	source/blender/nodes/geometry/nodes/node_geo_merge_by_distance.cc

===================================================================

diff --git a/source/blender/geometry/intern/pointcloud_merge_by_distance.cc b/source/blender/geometry/intern/pointcloud_merge_by_distance.cc
index 19657046e7b..377d43c3898 100644
--- a/source/blender/geometry/intern/pointcloud_merge_by_distance.cc
+++ b/source/blender/geometry/intern/pointcloud_merge_by_distance.cc
@@ -104,22 +104,15 @@ PointCloud *pointcloud_merge_by_distance(PointCloudComponent &pointcloud_compone
       copy_mask_vector.append(i);
     }
   }
-  IndexMask copyMask(copy_mask_vector);
-
-  // PointCloudComponent *src_pointcloud_component = (PointCloudComponent *)
-  // pointcloud_component.copy(); const PointCloud &src_pointcloud =
-  // *src_pointcloud_component->get_for_read();
-
-  // PointCloud *result = BKE_pointcloud_new_nomain(copyMask.size());
-  // pointcloud_component.replace(result);
+  IndexMask copy_mask(copy_mask_vector);
 
   PointCloud *pointcloud = BKE_pointcloud_new_nomain(src_pointcloud.totpoint);
   PointCloudComponent dst_component;
   dst_component.replace(pointcloud, GeometryOwnershipType::Editable);
 
-  for (const int i : copyMask.index_range()) {
-    copy_v3_v3(pointcloud->co[i], src_pointcloud.co[copyMask[i]]);
-    pointcloud->radius[i] = src_pointcloud.radius[copyMask[i]];
+  for (const int i : copy_mask.index_range()) {
+    copy_v3_v3(pointcloud->co[i], src_pointcloud.co[copy_mask[i]]);
+    pointcloud->radius[i] = src_pointcloud.radius[copy_mask[i]];
   }
 
   pointcloud_component.attribute_foreach(
@@ -135,9 +128,9 @@ PointCloud *pointcloud_merge_by_distance(PointCloudComponent &pointcloud_compone
 
           fn::GMutableSpan dst_span = target_attribute.as_span();
           fn::GSpan src_span = read_attribute->get_internal_span();
-          for (const int i : copyMask.index_range()) {
+          for (const int i : copy_mask.index_range()) {
             const fn::CPPType *type = bke::custom_data_type_to_cpp_type(meta_data.data_type);
-            type->copy_assign(src_span[copyMask[i]], dst_span[i]);
+            type->copy_assign(src_span[copy_mask[i]], dst_span[i]);
           }
 
           target_attribute.save();
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index 730ef457922..1f0c54c42c7 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -10636,6 +10636,7 @@ static void def_geo_string_to_curves(StructRNA *srna)
   RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 }
 
+/* Weld mode is only used when welding mesh data. */
 const EnumPropertyItem rna_enum_geometry_nodes_weld_mode_items[] = {
     {0, "ALL", 0, "All", "Full merge by distance"},
     {1, "CONNECTED", 0, "Connected", "Only merge along the edges"},
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 b1304d77907..d1f125d78aa 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
@@ -94,7 +94,8 @@ static void process_pointcloud(GeoNodeExecParams &params,
   selection_evaluator.evaluate();
   const VArray_Span<bool> selection = selection_evaluator.get_evaluated<bool>(0);
 
-  geometry::pointcloud_merge_by_distance(pointcloud_component, distance, selection);
+  pointcloud_component.replace(
+      geometry::pointcloud_merge_by_distance(pointcloud_component, distance, selection));
 }
 
 static void geo_node_merge_by_distance_exec(GeoNodeExecParams params)



More information about the Bf-blender-cvs mailing list