From bb26c3d82f896e8ab022e123a2345844cd2ed5a2 Mon Sep 17 00:00:00 2001 From: Casey Bianco-Davis Date: Mon, 4 Mar 2024 10:55:42 +0100 Subject: [PATCH] GPv3: Draw tool: Only create caps attributes if needed This is to stop unneeded attributes from been created. Pull Request: https://projects.blender.org/blender/blender/pulls/118985 --- .../sculpt_paint/grease_pencil_paint.cc | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/source/blender/editors/sculpt_paint/grease_pencil_paint.cc b/source/blender/editors/sculpt_paint/grease_pencil_paint.cc index fb4dc73c0d6..c42e9792f93 100644 --- a/source/blender/editors/sculpt_paint/grease_pencil_paint.cc +++ b/source/blender/editors/sculpt_paint/grease_pencil_paint.cc @@ -238,21 +238,28 @@ struct PaintOperationExecutor { "hardness", bke::AttrDomain::Curve, bke::AttributeInitVArray(VArray::ForSingle(1.0f, curves.curves_num()))); - bke::SpanAttributeWriter start_caps = attributes.lookup_or_add_for_write_span( - "start_cap", bke::AttrDomain::Curve); - bke::SpanAttributeWriter end_caps = attributes.lookup_or_add_for_write_span( - "end_cap", bke::AttrDomain::Curve); cyclic.span.last() = false; materials.span.last() = material_index; hardnesses.span.last() = hardness_; - start_caps.span.last() = settings_->caps_type; - end_caps.span.last() = settings_->caps_type; + + /* Only set the attribute if the type is not the default or if it already exists. */ + if (settings_->caps_type != GP_STROKE_CAP_TYPE_ROUND || attributes.contains("start_cap")) { + bke::SpanAttributeWriter start_caps = + attributes.lookup_or_add_for_write_span("start_cap", bke::AttrDomain::Curve); + start_caps.span.last() = settings_->caps_type; + start_caps.finish(); + } + + if (settings_->caps_type != GP_STROKE_CAP_TYPE_ROUND || attributes.contains("end_cap")) { + bke::SpanAttributeWriter end_caps = attributes.lookup_or_add_for_write_span( + "end_cap", bke::AttrDomain::Curve); + end_caps.span.last() = settings_->caps_type; + end_caps.finish(); + } cyclic.finish(); materials.finish(); hardnesses.finish(); - start_caps.finish(); - end_caps.finish(); curves.curve_types_for_write().last() = CURVE_TYPE_POLY; curves.update_curve_types();