Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntonio Vazquez <blendergit@gmail.com>2020-05-11 17:18:08 +0300
committerAntonio Vazquez <blendergit@gmail.com>2020-05-11 17:28:15 +0300
commitd63956d0e51c1b5a65941b918d0e055b1c14fa4b (patch)
tree1824ff8bb76f0fe2b50a33927f01a4f4ae6178ad /source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c
parent870e081bcda7f8fd99f73366d22bdf372c09f054 (diff)
GPencil: Replace material name with material pointer for Modifiers filter
Before, the material name was used to filter the effect of the stroke, but after the last changes in the ID code, now it's not working. After talking with @severin, we agreed to replace the material name with a pointer. Also, this fix a design issue when the materials were linked. Related to T76594 Differential Revision: https://developer.blender.org/D7681 with some minor changes
Diffstat (limited to 'source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c')
-rw-r--r--source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c
index 5aa3f70d940..18de9c1cf83 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c
@@ -77,6 +77,8 @@ static void initData(GpencilModifierData *md)
gpmd->object = NULL;
gpmd->flag |= GP_ARRAY_USE_RELATIVE;
gpmd->seed = 1;
+ gpmd->layername[0] = '\0';
+ gpmd->material = NULL;
}
static void copyData(const GpencilModifierData *md, GpencilModifierData *target)
@@ -163,7 +165,7 @@ static void generate_geometry(GpencilModifierData *md,
LISTBASE_FOREACH (bGPDstroke *, gps, &gpf->strokes) {
if (is_stroke_affected_by_modifier(ob,
mmd->layername,
- mmd->materialname,
+ mmd->material,
mmd->pass_index,
mmd->layer_pass,
1,
@@ -320,6 +322,15 @@ static void foreachObjectLink(GpencilModifierData *md,
walk(userData, ob, &mmd->object, IDWALK_CB_NOP);
}
+static void foreachIDLink(GpencilModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
+{
+ ArrayGpencilModifierData *mmd = (ArrayGpencilModifierData *)md;
+
+ walk(userData, ob, (ID **)&mmd->material, IDWALK_CB_USER);
+
+ foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
+}
+
GpencilModifierTypeInfo modifierType_Gpencil_Array = {
/* name */ "Array",
/* structName */ "ArrayGpencilModifierData",
@@ -340,6 +351,6 @@ GpencilModifierTypeInfo modifierType_Gpencil_Array = {
/* updateDepsgraph */ updateDepsgraph,
/* dependsOnTime */ NULL,
/* foreachObjectLink */ foreachObjectLink,
- /* foreachIDLink */ NULL,
+ /* foreachIDLink */ foreachIDLink,
/* foreachTexLink */ NULL,
};