Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Goudey <h.goudey@me.com>2021-05-19 20:02:53 +0300
committerHans Goudey <h.goudey@me.com>2021-05-19 20:02:53 +0300
commit192a3f1a05d00f1f10f32861c098b66f78cff3e4 (patch)
tree479224c98f48754e47dd2940cbb460af5a5eed4d /source/blender
parent330fecc9b7f69c11258ea926ce760e51b4f3dd78 (diff)
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.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/BKE_spline.hh10
-rw-r--r--source/blender/blenkernel/intern/curve_eval.cc11
-rw-r--r--source/blender/blenkernel/intern/geometry_component_curve.cc6
3 files changed, 11 insertions, 16 deletions
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<SplinePtr> splines_;
public:
+ CurveEval() = default;
+ CurveEval(const CurveEval &other)
+ {
+ for (const SplinePtr &spline : other.splines()) {
+ this->add_spline(spline->copy());
+ }
+ }
+
blender::Span<SplinePtr> splines() const;
blender::MutableSpan<SplinePtr> 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;
}
}