diff options
author | Matias Mendiola <matias.mendiola@gmail.com> | 2019-08-21 09:30:45 +0300 |
---|---|---|
committer | Antonio Vazquez <blendergit@gmail.com> | 2019-08-21 09:41:19 +0300 |
commit | 3d8f1586973b1fbadf3cf45c66873d1a012764ee (patch) | |
tree | e856b4a1708c441878039f385fad982b37b4e8f1 /source/blender/gpencil_modifiers/intern/MOD_gpencil_util.c | |
parent | 8ffbe398341ca81acbb1515864fa55027fa68766 (diff) |
GPencil: add new filter by material to modifiers
This commit adds a new filter by material using the name and not only the index.
Reviewers: antoniov, pepeland
Differential Revision: https://developer.blender.org/D5544
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) { |