Changeset View
Changeset View
Standalone View
Standalone View
source/blender/gpencil_modifiers/intern/MOD_gpencilmultiply.c
| Show First 20 Lines • Show All 65 Lines • ▼ Show 20 Lines | |||||
| { | { | ||||
| MultiplyGpencilModifierData *mmd = (MultiplyGpencilModifierData *)md; | MultiplyGpencilModifierData *mmd = (MultiplyGpencilModifierData *)md; | ||||
| mmd->duplications = 3; | mmd->duplications = 3; | ||||
| mmd->distance = 0.1f; | mmd->distance = 0.1f; | ||||
| mmd->split_angle = DEG2RADF(1.0f); | mmd->split_angle = DEG2RADF(1.0f); | ||||
| mmd->fading_center = 0.5f; | mmd->fading_center = 0.5f; | ||||
| mmd->fading_thickness = 0.5f; | mmd->fading_thickness = 0.5f; | ||||
| mmd->fading_opacity = 0.5f; | mmd->fading_opacity = 0.5f; | ||||
| mmd->layername[0] = '\0'; | |||||
mont29: same remark as above | |||||
| mmd->material = NULL; | |||||
| } | } | ||||
| static void copyData(const GpencilModifierData *md, GpencilModifierData *target) | static void copyData(const GpencilModifierData *md, GpencilModifierData *target) | ||||
| { | { | ||||
| BKE_gpencil_modifier_copydata_generic(md, target); | BKE_gpencil_modifier_copydata_generic(md, target); | ||||
| } | } | ||||
| static void minter_v3_v3v3v3_ref( | static void minter_v3_v3v3v3_ref( | ||||
| ▲ Show 20 Lines • Show All 124 Lines • ▼ Show 20 Lines | static void bakeModifier(Main *UNUSED(bmain), | ||||
| LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd->layers) { | LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd->layers) { | ||||
| LISTBASE_FOREACH (bGPDframe *, gpf, &gpl->frames) { | LISTBASE_FOREACH (bGPDframe *, gpf, &gpl->frames) { | ||||
| ListBase duplicates = {0}; | ListBase duplicates = {0}; | ||||
| MultiplyGpencilModifierData *mmd = (MultiplyGpencilModifierData *)md; | MultiplyGpencilModifierData *mmd = (MultiplyGpencilModifierData *)md; | ||||
| bGPDstroke *gps; | bGPDstroke *gps; | ||||
| for (gps = gpf->strokes.first; gps; gps = gps->next) { | for (gps = gpf->strokes.first; gps; gps = gps->next) { | ||||
| if (!is_stroke_affected_by_modifier(ob, | if (!is_stroke_affected_by_modifier(ob, | ||||
| mmd->layername, | mmd->layername, | ||||
| mmd->materialname, | mmd->material, | ||||
| mmd->pass_index, | mmd->pass_index, | ||||
| mmd->layer_pass, | mmd->layer_pass, | ||||
| 1, | 1, | ||||
| gpl, | gpl, | ||||
| gps, | gps, | ||||
| mmd->flag & GP_MIRROR_INVERT_LAYER, | mmd->flag & GP_MIRROR_INVERT_LAYER, | ||||
| mmd->flag & GP_MIRROR_INVERT_PASS, | mmd->flag & GP_MIRROR_INVERT_PASS, | ||||
| mmd->flag & GP_MIRROR_INVERT_LAYERPASS, | mmd->flag & GP_MIRROR_INVERT_LAYERPASS, | ||||
| Show All 24 Lines | |||||
| static void generate_geometry(GpencilModifierData *md, Object *ob, bGPDlayer *gpl, bGPDframe *gpf) | static void generate_geometry(GpencilModifierData *md, Object *ob, bGPDlayer *gpl, bGPDframe *gpf) | ||||
| { | { | ||||
| MultiplyGpencilModifierData *mmd = (MultiplyGpencilModifierData *)md; | MultiplyGpencilModifierData *mmd = (MultiplyGpencilModifierData *)md; | ||||
| bGPDstroke *gps; | bGPDstroke *gps; | ||||
| ListBase duplicates = {0}; | ListBase duplicates = {0}; | ||||
| for (gps = gpf->strokes.first; gps; gps = gps->next) { | for (gps = gpf->strokes.first; gps; gps = gps->next) { | ||||
| if (!is_stroke_affected_by_modifier(ob, | if (!is_stroke_affected_by_modifier(ob, | ||||
| mmd->layername, | mmd->layername, | ||||
| mmd->materialname, | mmd->material, | ||||
| mmd->pass_index, | mmd->pass_index, | ||||
| mmd->layer_pass, | mmd->layer_pass, | ||||
| 1, | 1, | ||||
| gpl, | gpl, | ||||
| gps, | gps, | ||||
| mmd->flag & GP_MIRROR_INVERT_LAYER, | mmd->flag & GP_MIRROR_INVERT_LAYER, | ||||
| mmd->flag & GP_MIRROR_INVERT_PASS, | mmd->flag & GP_MIRROR_INVERT_PASS, | ||||
| mmd->flag & GP_MIRROR_INVERT_LAYERPASS, | mmd->flag & GP_MIRROR_INVERT_LAYERPASS, | ||||
| Show All 28 Lines | LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd->layers) { | ||||
| bGPDframe *gpf = BKE_gpencil_frame_retime_get(depsgraph, scene, ob, gpl); | bGPDframe *gpf = BKE_gpencil_frame_retime_get(depsgraph, scene, ob, gpl); | ||||
| if (gpf == NULL) { | if (gpf == NULL) { | ||||
| continue; | continue; | ||||
| } | } | ||||
| generate_geometry(md, ob, gpl, gpf); | generate_geometry(md, ob, gpl, gpf); | ||||
| } | } | ||||
| } | } | ||||
| static void foreachIDLink(GpencilModifierData *md, Object *ob, IDWalkFunc walk, void *userData) | |||||
| { | |||||
| MultiplyGpencilModifierData *mmd = (MultiplyGpencilModifierData *)md; | |||||
| walk(userData, ob, (ID **)&mmd->material, IDWALK_CB_NOP); | |||||
| } | |||||
| GpencilModifierTypeInfo modifierType_Gpencil_Multiply = { | GpencilModifierTypeInfo modifierType_Gpencil_Multiply = { | ||||
| /* name */ "Multiple Strokes", | /* name */ "Multiple Strokes", | ||||
| /* structName */ "MultiplyGpencilModifierData", | /* structName */ "MultiplyGpencilModifierData", | ||||
| /* structSize */ sizeof(MultiplyGpencilModifierData), | /* structSize */ sizeof(MultiplyGpencilModifierData), | ||||
| /* type */ eGpencilModifierTypeType_Gpencil, | /* type */ eGpencilModifierTypeType_Gpencil, | ||||
| /* flags */ 0, | /* flags */ 0, | ||||
| /* copyData */ copyData, | /* copyData */ copyData, | ||||
| /* deformStroke */ NULL, | /* deformStroke */ NULL, | ||||
| /* generateStrokes */ generateStrokes, | /* generateStrokes */ generateStrokes, | ||||
| /* bakeModifier */ bakeModifier, | /* bakeModifier */ bakeModifier, | ||||
| /* remapTime */ NULL, | /* remapTime */ NULL, | ||||
| /* initData */ initData, | /* initData */ initData, | ||||
| /* freeData */ NULL, | /* freeData */ NULL, | ||||
| /* isDisabled */ NULL, | /* isDisabled */ NULL, | ||||
| /* updateDepsgraph */ NULL, | /* updateDepsgraph */ NULL, | ||||
| /* dependsOnTime */ NULL, | /* dependsOnTime */ NULL, | ||||
| /* foreachObjectLink */ NULL, | /* foreachObjectLink */ NULL, | ||||
| /* foreachIDLink */ NULL, | /* foreachIDLink */ foreachIDLink, | ||||
| /* foreachTexLink */ NULL, | /* foreachTexLink */ NULL, | ||||
| }; | }; | ||||
same remark as above