Fix #110666: Copy built-in attributes for masked curves type conversion #114765
|
@ -446,6 +446,10 @@ static bke::CurvesGeometry convert_curves_to_bezier(
|
|||
}
|
||||
};
|
||||
|
||||
for (bke::AttributeTransferData &attribute : generic_attributes) {
|
||||
attribute.dst.finish();
|
||||
}
|
||||
|
||||
bke::curves::foreach_curve_by_type(src_curves.curve_types(),
|
||||
src_curves.curve_type_counts(),
|
||||
selection,
|
||||
|
@ -454,17 +458,25 @@ static bke::CurvesGeometry convert_curves_to_bezier(
|
|||
bezier_to_bezier,
|
||||
nurbs_to_bezier);
|
||||
|
||||
for (bke::AttributeTransferData &attribute : generic_attributes) {
|
||||
bke::curves::copy_point_data(src_points_by_curve,
|
||||
dst_points_by_curve,
|
||||
unselected_ranges,
|
||||
attribute.src,
|
||||
attribute.dst.span);
|
||||
}
|
||||
src_attributes.for_all(
|
||||
[&](const bke::AttributeIDRef &id, const bke::AttributeMetaData meta_data) {
|
||||
if (id.is_anonymous() && !propagation_info.propagate(id.anonymous_id())) {
|
||||
return true;
|
||||
}
|
||||
if (meta_data.domain != ATTR_DOMAIN_POINT) {
|
||||
return true;
|
||||
}
|
||||
|
||||
for (bke::AttributeTransferData &attribute : generic_attributes) {
|
||||
attribute.dst.finish();
|
||||
}
|
||||
const GVArraySpan src = *src_attributes.lookup(id, meta_data.domain);
|
||||
bke::GSpanAttributeWriter dst = dst_attributes.lookup_or_add_for_write_only_span(
|
||||
id, meta_data.domain, meta_data.data_type);
|
||||
|
||||
bke::curves::copy_point_data(
|
||||
src_points_by_curve, dst_points_by_curve, unselected_ranges, src, dst.span);
|
||||
dst.finish();
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
return dst_curves;
|
||||
}
|
||||
|
@ -623,6 +635,10 @@ static bke::CurvesGeometry convert_curves_to_nurbs(
|
|||
}
|
||||
};
|
||||
|
||||
for (bke::AttributeTransferData &attribute : generic_attributes) {
|
||||
attribute.dst.finish();
|
||||
}
|
||||
|
||||
bke::curves::foreach_curve_by_type(src_curves.curve_types(),
|
||||
src_curves.curve_type_counts(),
|
||||
selection,
|
||||
|
@ -631,17 +647,25 @@ static bke::CurvesGeometry convert_curves_to_nurbs(
|
|||
bezier_to_nurbs,
|
||||
nurbs_to_nurbs);
|
||||
|
||||
for (bke::AttributeTransferData &attribute : generic_attributes) {
|
||||
bke::curves::copy_point_data(src_points_by_curve,
|
||||
dst_points_by_curve,
|
||||
unselected_ranges,
|
||||
attribute.src,
|
||||
attribute.dst.span);
|
||||
}
|
||||
src_attributes.for_all(
|
||||
[&](const bke::AttributeIDRef &id, const bke::AttributeMetaData meta_data) {
|
||||
if (id.is_anonymous() && !propagation_info.propagate(id.anonymous_id())) {
|
||||
return true;
|
||||
}
|
||||
if (meta_data.domain != ATTR_DOMAIN_POINT) {
|
||||
return true;
|
||||
}
|
||||
|
||||
for (bke::AttributeTransferData &attribute : generic_attributes) {
|
||||
attribute.dst.finish();
|
||||
}
|
||||
const GVArraySpan src = *src_attributes.lookup(id, meta_data.domain);
|
||||
bke::GSpanAttributeWriter dst = dst_attributes.lookup_or_add_for_write_only_span(
|
||||
id, meta_data.domain, meta_data.data_type);
|
||||
|
||||
bke::curves::copy_point_data(
|
||||
src_points_by_curve, dst_points_by_curve, unselected_ranges, src, dst.span);
|
||||
dst.finish();
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
return dst_curves;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue