diff options
Diffstat (limited to 'release/scripts/startup/bl_operators/vertexpaint_dirt.py')
-rw-r--r-- | release/scripts/startup/bl_operators/vertexpaint_dirt.py | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/release/scripts/startup/bl_operators/vertexpaint_dirt.py b/release/scripts/startup/bl_operators/vertexpaint_dirt.py index a3c0b73fc0e..616e37d37e7 100644 --- a/release/scripts/startup/bl_operators/vertexpaint_dirt.py +++ b/release/scripts/startup/bl_operators/vertexpaint_dirt.py @@ -2,14 +2,10 @@ # Copyright Campbell Barton. -def get_vcolor_layer_data(me): - for lay in me.vertex_colors: - if lay.active: - return lay.data - - lay = me.vertex_colors.new() - lay.active = True - return lay.data +def ensure_active_color_attribute(me): + if me.attributes.active_color: + return me.attributes.active_color + return me.color_attributes.new("Color", 'BYTE_COLOR', 'CORNER') def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, dirt_only, normalize): @@ -99,17 +95,21 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, else: tone_range = 1.0 / tone_range - active_col_layer = get_vcolor_layer_data(me) - if not active_col_layer: + active_color_attribute = ensure_active_color_attribute(me) + if not active_color_attribute: return {'CANCELLED'} + point_domain = active_color_attribute.domain == 'POINT' + + attribute_data = active_color_attribute.data + use_paint_mask = me.use_paint_mask for i, p in enumerate(me.polygons): if not use_paint_mask or p.select: for loop_index in p.loop_indices: loop = me.loops[loop_index] v = loop.vertex_index - col = active_col_layer[loop_index].color + col = attribute_data[v if point_domain else loop_index].color tone = vert_tone[v] tone = (tone - min_tone) * tone_range |