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.
This commit is contained in:
Hans Goudey 2021-05-19 13:02:53 -04:00
parent 330fecc9b7
commit 192a3f1a05
3 changed files with 11 additions and 16 deletions

View File

@ -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;

View File

@ -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()) {

View File

@ -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;
}
}