Fix: Curve Resample Node: Copy attributes to 1 point results

The curve resample node neglected to copy attributes to single point
result splines. That could have caused errors if some of the splines
in the result had only one point but others had more.
This commit is contained in:
Hans Goudey
2021-07-06 20:42:21 -05:00
parent 4e80573a76
commit 0521272ab3

View File

@@ -87,6 +87,23 @@ static SplinePtr resample_spline(const Spline &input_spline, const int count)
input_spline.tilts().first(),
input_spline.radii().first());
output_spline->attributes.reallocate(1);
input_spline.attributes.foreach_attribute(
[&](StringRefNull name, const AttributeMetaData &meta_data) {
std::optional<GSpan> src = input_spline.attributes.get_for_read(name);
BLI_assert(src);
if (!output_spline->attributes.create(name, meta_data.data_type)) {
BLI_assert_unreachable();
return false;
}
std::optional<GMutableSpan> dst = output_spline->attributes.get_for_write(name);
if (!dst) {
BLI_assert_unreachable();
return false;
}
src->type().copy_assign(src->data(), dst->data());
return true;
},
ATTR_DOMAIN_POINT);
return output_spline;
}