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
1 changed files with 17 additions and 0 deletions

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