Changeset View
Changeset View
Standalone View
Standalone View
source/blender/modifiers/intern/MOD_shrinkwrap.c
| Show First 20 Lines • Show All 48 Lines • ▼ Show 20 Lines | static void initData(ModifierData *md) | ||||
| smd->shrinkType = MOD_SHRINKWRAP_NEAREST_SURFACE; | smd->shrinkType = MOD_SHRINKWRAP_NEAREST_SURFACE; | ||||
| smd->shrinkOpts = MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR; | smd->shrinkOpts = MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR; | ||||
| smd->keepDist = 0.0f; | smd->keepDist = 0.0f; | ||||
| smd->target = NULL; | smd->target = NULL; | ||||
| smd->auxTarget = NULL; | smd->auxTarget = NULL; | ||||
| } | } | ||||
| static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md) | static void requiredDataMask(Object *UNUSED(ob), ModifierData *md, CustomData_Masks *r_cddata_masks) | ||||
| { | { | ||||
| ShrinkwrapModifierData *smd = (ShrinkwrapModifierData *)md; | ShrinkwrapModifierData *smd = (ShrinkwrapModifierData *)md; | ||||
| CustomDataMask dataMask = 0; | |||||
| /* ask for vertexgroups if we need them */ | /* ask for vertexgroups if we need them */ | ||||
| if (smd->vgroup_name[0]) | if (smd->vgroup_name[0] != '\0') { | ||||
| dataMask |= CD_MASK_MDEFORMVERT; | r_cddata_masks->vmask |= CD_MASK_MDEFORMVERT; | ||||
| } | |||||
| if ((smd->shrinkType == MOD_SHRINKWRAP_PROJECT) && | if ((smd->shrinkType == MOD_SHRINKWRAP_PROJECT) && | ||||
| (smd->projAxis == MOD_SHRINKWRAP_PROJECT_OVER_NORMAL)) | (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)) | static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, bool UNUSED(useRenderParams)) | ||||
| { | { | ||||
| ShrinkwrapModifierData *smd = (ShrinkwrapModifierData *) md; | ShrinkwrapModifierData *smd = (ShrinkwrapModifierData *) md; | ||||
| return !smd->target; | return !smd->target; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 50 Lines • ▼ Show 20 Lines | static void deformVertsEM( | ||||
| if (!ELEM(mesh_src, NULL, mesh)) { | if (!ELEM(mesh_src, NULL, mesh)) { | ||||
| BKE_id_free(NULL, mesh_src); | BKE_id_free(NULL, mesh_src); | ||||
| } | } | ||||
| } | } | ||||
| static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx) | static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx) | ||||
| { | { | ||||
| ShrinkwrapModifierData *smd = (ShrinkwrapModifierData *)md; | ShrinkwrapModifierData *smd = (ShrinkwrapModifierData *)md; | ||||
| CustomDataMask mask = 0; | CustomData_Masks mask = {0}; | ||||
| if (BKE_shrinkwrap_needs_normals(smd->shrinkType, smd->shrinkMode)) { | 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) { | 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_TRANSFORM, "Shrinkwrap Modifier"); | ||||
| DEG_add_object_relation(ctx->node, smd->target, DEG_OB_COMP_GEOMETRY, "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) { | if (smd->shrinkType == MOD_SHRINKWRAP_TARGET_PROJECT) { | ||||
| DEG_add_special_eval_flag(ctx->node, &smd->target->id, DAG_EVAL_NEED_SHRINKWRAP_BOUNDARY); | DEG_add_special_eval_flag(ctx->node, &smd->target->id, DAG_EVAL_NEED_SHRINKWRAP_BOUNDARY); | ||||
| ▲ Show 20 Lines • Show All 59 Lines • Show Last 20 Lines | |||||