diff options
Diffstat (limited to 'source/blender/modifiers/intern/MOD_shrinkwrap.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_shrinkwrap.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/source/blender/modifiers/intern/MOD_shrinkwrap.c b/source/blender/modifiers/intern/MOD_shrinkwrap.c index 4af838df02a..7b33df5bf86 100644 --- a/source/blender/modifiers/intern/MOD_shrinkwrap.c +++ b/source/blender/modifiers/intern/MOD_shrinkwrap.c @@ -54,22 +54,20 @@ static void initData(ModifierData *md) smd->auxTarget = NULL; } -static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md) +static void requiredDataMask(Object *UNUSED(ob), ModifierData *md, CustomData_MeshMasks *r_cddata_masks) { ShrinkwrapModifierData *smd = (ShrinkwrapModifierData *)md; - CustomDataMask dataMask = 0; /* ask for vertexgroups if we need them */ - if (smd->vgroup_name[0]) - dataMask |= CD_MASK_MDEFORMVERT; + if (smd->vgroup_name[0] != '\0') { + r_cddata_masks->vmask |= CD_MASK_MDEFORMVERT; + } if ((smd->shrinkType == MOD_SHRINKWRAP_PROJECT) && (smd->projAxis == MOD_SHRINKWRAP_PROJECT_OVER_NORMAL)) { - dataMask |= CD_MASK_MVERT; + r_cddata_masks->vmask |= CD_MASK_MVERT; /* XXX Really? These should always be present, always... */ } - - return dataMask; } static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, bool UNUSED(useRenderParams)) @@ -136,16 +134,17 @@ static void deformVertsEM( static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx) { ShrinkwrapModifierData *smd = (ShrinkwrapModifierData *)md; - CustomDataMask mask = 0; + CustomData_MeshMasks mask = {0}; if (BKE_shrinkwrap_needs_normals(smd->shrinkType, smd->shrinkMode)) { - mask |= CD_MASK_NORMAL | CD_MASK_CUSTOMLOOPNORMAL; + mask.vmask |= CD_MASK_NORMAL; + mask.lmask |= CD_MASK_NORMAL | CD_MASK_CUSTOMLOOPNORMAL; } if (smd->target != NULL) { DEG_add_object_relation(ctx->node, smd->target, DEG_OB_COMP_TRANSFORM, "Shrinkwrap Modifier"); DEG_add_object_relation(ctx->node, smd->target, DEG_OB_COMP_GEOMETRY, "Shrinkwrap Modifier"); - DEG_add_customdata_mask(ctx->node, smd->target, mask); + DEG_add_customdata_mask(ctx->node, smd->target, &mask); if (smd->shrinkType == MOD_SHRINKWRAP_TARGET_PROJECT) { DEG_add_special_eval_flag(ctx->node, &smd->target->id, DAG_EVAL_NEED_SHRINKWRAP_BOUNDARY); } @@ -153,7 +152,7 @@ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphConte if (smd->auxTarget != NULL) { DEG_add_object_relation(ctx->node, smd->auxTarget, DEG_OB_COMP_TRANSFORM, "Shrinkwrap Modifier"); DEG_add_object_relation(ctx->node, smd->auxTarget, DEG_OB_COMP_GEOMETRY, "Shrinkwrap Modifier"); - DEG_add_customdata_mask(ctx->node, smd->auxTarget, mask); + DEG_add_customdata_mask(ctx->node, smd->auxTarget, &mask); if (smd->shrinkType == MOD_SHRINKWRAP_TARGET_PROJECT) { DEG_add_special_eval_flag(ctx->node, &smd->auxTarget->id, DAG_EVAL_NEED_SHRINKWRAP_BOUNDARY); } |