From 192a3f1a05d00f1f10f32861c098b66f78cff3e4 Mon Sep 17 00:00:00 2001 From: Hans Goudey Date: Wed, 19 May 2021 13:02:53 -0400 Subject: Cleanup: Use copy constructor for CurveEval There is no need for a special "copy" method with a copy constructor, which will be necessary to explicitly copy attributes anyway. --- source/blender/blenkernel/BKE_spline.hh | 10 ++++++++-- source/blender/blenkernel/intern/curve_eval.cc | 11 ----------- source/blender/blenkernel/intern/geometry_component_curve.cc | 6 +++--- 3 files changed, 11 insertions(+), 16 deletions(-) (limited to 'source/blender') diff --git a/source/blender/blenkernel/BKE_spline.hh b/source/blender/blenkernel/BKE_spline.hh index 35f21ccb897..c3386d12b02 100644 --- a/source/blender/blenkernel/BKE_spline.hh +++ b/source/blender/blenkernel/BKE_spline.hh @@ -482,14 +482,20 @@ class CurveEval { blender::Vector splines_; public: + CurveEval() = default; + CurveEval(const CurveEval &other) + { + for (const SplinePtr &spline : other.splines()) { + this->add_spline(spline->copy()); + } + } + blender::Span splines() const; blender::MutableSpan splines(); void add_spline(SplinePtr spline); void remove_splines(blender::IndexMask mask); - CurveEval *copy(); - void translate(const blender::float3 &translation); void transform(const blender::float4x4 &matrix); void bounds_min_max(blender::float3 &min, blender::float3 &max, const bool use_evaluated) const; diff --git a/source/blender/blenkernel/intern/curve_eval.cc b/source/blender/blenkernel/intern/curve_eval.cc index 19bbd8178b7..1679f21516a 100644 --- a/source/blender/blenkernel/intern/curve_eval.cc +++ b/source/blender/blenkernel/intern/curve_eval.cc @@ -50,17 +50,6 @@ void CurveEval::remove_splines(blender::IndexMask mask) } } -CurveEval *CurveEval::copy() -{ - CurveEval *new_curve = new CurveEval(); - - for (SplinePtr &spline : this->splines()) { - new_curve->add_spline(spline->copy()); - } - - return new_curve; -} - void CurveEval::translate(const float3 &translation) { for (SplinePtr &spline : this->splines()) { diff --git a/source/blender/blenkernel/intern/geometry_component_curve.cc b/source/blender/blenkernel/intern/geometry_component_curve.cc index 44c5cce92dd..d6c7cae2727 100644 --- a/source/blender/blenkernel/intern/geometry_component_curve.cc +++ b/source/blender/blenkernel/intern/geometry_component_curve.cc @@ -39,7 +39,7 @@ GeometryComponent *CurveComponent::copy() const { CurveComponent *new_component = new CurveComponent(); if (curve_ != nullptr) { - new_component->curve_ = curve_->copy(); + new_component->curve_ = new CurveEval(*curve_); new_component->ownership_ = GeometryOwnershipType::Owned; } return new_component; @@ -87,7 +87,7 @@ CurveEval *CurveComponent::get_for_write() { BLI_assert(this->is_mutable()); if (ownership_ == GeometryOwnershipType::ReadOnly) { - curve_ = curve_->copy(); + curve_ = new CurveEval(*curve_); ownership_ = GeometryOwnershipType::Owned; } return curve_; @@ -107,7 +107,7 @@ void CurveComponent::ensure_owns_direct_data() { BLI_assert(this->is_mutable()); if (ownership_ != GeometryOwnershipType::Owned) { - curve_ = curve_->copy(); + curve_ = new CurveEval(*curve_); ownership_ = GeometryOwnershipType::Owned; } } -- cgit v1.2.3