From 0b7090ca37c271ae8b82e3839c72bb5d8cdec6d5 Mon Sep 17 00:00:00 2001 From: Iliya Katueshenock Date: Tue, 10 Sep 2024 21:48:59 +0200 Subject: [PATCH] BKE: Utilities to create curves and point clouds without attributes Same as #118297. Pull Request: https://projects.blender.org/blender/blender/pulls/120368 --- source/blender/blenkernel/BKE_curves.hh | 2 ++ source/blender/blenkernel/BKE_pointcloud.hh | 2 ++ source/blender/blenkernel/intern/curves_geometry.cc | 8 ++++++++ source/blender/blenkernel/intern/pointcloud.cc | 12 ++++++++++++ 4 files changed, 24 insertions(+) diff --git a/source/blender/blenkernel/BKE_curves.hh b/source/blender/blenkernel/BKE_curves.hh index 35115e4fc65..32475706068 100644 --- a/source/blender/blenkernel/BKE_curves.hh +++ b/source/blender/blenkernel/BKE_curves.hh @@ -859,6 +859,8 @@ CurvesGeometry curves_copy_curve_selection(const CurvesGeometry &curves, const IndexMask &curves_to_copy, const AttributeFilter &attribute_filter); +CurvesGeometry curves_new_no_attributes(int point_num, int curve_num); + std::array calculate_type_counts(const VArray &types); /* -------------------------------------------------------------------- */ diff --git a/source/blender/blenkernel/BKE_pointcloud.hh b/source/blender/blenkernel/BKE_pointcloud.hh index 78a695db656..2ceb32eb6ee 100644 --- a/source/blender/blenkernel/BKE_pointcloud.hh +++ b/source/blender/blenkernel/BKE_pointcloud.hh @@ -46,6 +46,8 @@ struct PointCloudRuntime { MEM_CXX_CLASS_ALLOC_FUNCS("PointCloudRuntime"); }; +PointCloud *pointcloud_new_no_attributes(int totpoint); + } // namespace blender::bke void *BKE_pointcloud_add(Main *bmain, const char *name); diff --git a/source/blender/blenkernel/intern/curves_geometry.cc b/source/blender/blenkernel/intern/curves_geometry.cc index eb01593c0f8..4e03b63b0eb 100644 --- a/source/blender/blenkernel/intern/curves_geometry.cc +++ b/source/blender/blenkernel/intern/curves_geometry.cc @@ -1430,6 +1430,14 @@ void CurvesGeometry::remove_attributes_based_on_types() } } +CurvesGeometry curves_new_no_attributes(int point_num, int curve_num) +{ + CurvesGeometry curves(0, curve_num); + curves.point_num = point_num; + CustomData_free_layer_named(&curves.point_data, "position", 0); + return curves; +} + /** \} */ /* -------------------------------------------------------------------- */ diff --git a/source/blender/blenkernel/intern/pointcloud.cc b/source/blender/blenkernel/intern/pointcloud.cc index 416ded2fe59..c18608380f6 100644 --- a/source/blender/blenkernel/intern/pointcloud.cc +++ b/source/blender/blenkernel/intern/pointcloud.cc @@ -403,3 +403,15 @@ void BKE_pointcloud_batch_cache_free(PointCloud *pointcloud) BKE_pointcloud_batch_cache_free_cb(pointcloud); } } + +namespace blender::bke { + +PointCloud *pointcloud_new_no_attributes(int totpoint) +{ + PointCloud *pointcloud = BKE_pointcloud_new_nomain(0); + pointcloud->totpoint = totpoint; + CustomData_free_layer_named(&pointcloud->pdata, "position", 0); + return pointcloud; +} + +} // namespace blender::bke