diff options
Diffstat (limited to 'source/blender/gpencil_modifiers/intern/MOD_gpencil_util.c')
-rw-r--r-- | source/blender/gpencil_modifiers/intern/MOD_gpencil_util.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencil_util.c b/source/blender/gpencil_modifiers/intern/MOD_gpencil_util.c index 5b5290dc0ff..5209313f717 100644 --- a/source/blender/gpencil_modifiers/intern/MOD_gpencil_util.c +++ b/source/blender/gpencil_modifiers/intern/MOD_gpencil_util.c @@ -74,9 +74,10 @@ void gpencil_modifier_type_init(GpencilModifierTypeInfo *types[]) #undef INIT_GP_TYPE } -/* verify if valid layer and pass index */ +/* verify if valid layer, material and pass index */ bool is_stroke_affected_by_modifier(Object *ob, char *mlayername, + char *mmaterialname, int mpassindex, int gpl_passindex, int minpoints, @@ -84,9 +85,11 @@ bool is_stroke_affected_by_modifier(Object *ob, bGPDstroke *gps, bool inv1, bool inv2, - bool inv3) + bool inv3, + bool inv4) { - MaterialGPencilStyle *gp_style = BKE_material_gpencil_settings_get(ob, gps->mat_nr + 1); + Material *ma = give_current_material(ob, gps->mat_nr + 1); + MaterialGPencilStyle *gp_style = ma->gp_style; /* omit if filter by layer */ if (mlayername[0] != '\0') { @@ -101,6 +104,19 @@ bool is_stroke_affected_by_modifier(Object *ob, } } } + /* omit if filter by material */ + if (mmaterialname[0] != '\0') { + if (inv4 == false) { + if (!STREQ(mmaterialname, ma->id.name + 2)) { + return false; + } + } + else { + if (STREQ(mmaterialname, ma->id.name + 2)) { + return false; + } + } + } /* verify layer pass */ if (gpl_passindex > 0) { if (inv3 == false) { |