diff options
Diffstat (limited to 'source/blender/modifiers/intern/MOD_warp.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_warp.c | 46 |
1 files changed, 17 insertions, 29 deletions
diff --git a/source/blender/modifiers/intern/MOD_warp.c b/source/blender/modifiers/intern/MOD_warp.c index 73f6ccc96ed..07babc5b12f 100644 --- a/source/blender/modifiers/intern/MOD_warp.c +++ b/source/blender/modifiers/intern/MOD_warp.c @@ -42,8 +42,6 @@ #include "BKE_texture.h" #include "BKE_colortools.h" -#include "depsgraph_private.h" - #include "RE_shader_ext.h" #include "MOD_util.h" @@ -135,24 +133,6 @@ static void foreachTexLink(ModifierData *md, Object *ob, TexWalkFunc walk, void walk(userData, ob, md, "texture"); } -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx) -{ - WarpModifierData *wmd = (WarpModifierData *) md; - - if (wmd->object_from && wmd->object_to) { - DagNode *fromNode = dag_get_node(ctx->forest, wmd->object_from); - DagNode *toNode = dag_get_node(ctx->forest, wmd->object_to); - - dag_add_relation(ctx->forest, fromNode, ctx->obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Warp Modifier1"); - dag_add_relation(ctx->forest, toNode, ctx->obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Warp Modifier2"); - } - - if ((wmd->texmapping == MOD_DISP_MAP_OBJECT) && wmd->map_object) { - DagNode *curNode = dag_get_node(ctx->forest, wmd->map_object); - dag_add_relation(ctx->forest, curNode, ctx->obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Warp Modifier3"); - } -} - static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx) { WarpModifierData *wmd = (WarpModifierData *) md; @@ -325,24 +305,24 @@ static int warp_needs_dm(WarpModifierData *wmd) return wmd->texture || wmd->defgrp_name[0]; } -static void deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData, - float (*vertexCos)[3], int numVerts, ModifierApplyFlag UNUSED(flag)) +static void deformVerts(ModifierData *md, const ModifierEvalContext *ctx, DerivedMesh *derivedData, + float (*vertexCos)[3], int numVerts) { DerivedMesh *dm = NULL; int use_dm = warp_needs_dm((WarpModifierData *)md); if (use_dm) { - dm = get_cddm(ob, NULL, derivedData, vertexCos, false); + dm = get_cddm(ctx->object, NULL, derivedData, vertexCos, false); } - warpModifier_do((WarpModifierData *)md, ob, dm, vertexCos, numVerts); + warpModifier_do((WarpModifierData *)md, ctx->object, dm, vertexCos, numVerts); if (use_dm) { if (dm != derivedData) dm->release(dm); } } -static void deformVertsEM(ModifierData *md, Object *ob, struct BMEditMesh *em, +static void deformVertsEM(ModifierData *md, const ModifierEvalContext *ctx, struct BMEditMesh *em, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts) { DerivedMesh *dm = derivedData; @@ -353,7 +333,7 @@ static void deformVertsEM(ModifierData *md, Object *ob, struct BMEditMesh *em, dm = CDDM_from_editbmesh(em, false, false); } - deformVerts(md, ob, dm, vertexCos, numVerts, 0); + deformVerts(md, ctx, dm, vertexCos, numVerts); if (use_dm) { if (!derivedData) dm->release(dm); @@ -370,17 +350,25 @@ ModifierTypeInfo modifierType_Warp = { eModifierTypeFlag_AcceptsLattice | eModifierTypeFlag_SupportsEditmode, /* copyData */ copyData, - /* deformVerts */ deformVerts, + + /* deformVerts_DM */ deformVerts, + /* deformMatrices_DM */ NULL, + /* deformVertsEM_DM */ deformVertsEM, + /* deformMatricesEM_DM*/NULL, + /* applyModifier_DM */ NULL, + /* applyModifierEM_DM */NULL, + + /* deformVerts */ NULL, /* deformMatrices */ NULL, - /* deformVertsEM */ deformVertsEM, + /* deformVertsEM */ NULL, /* deformMatricesEM */ NULL, /* applyModifier */ NULL, /* applyModifierEM */ NULL, + /* initData */ initData, /* requiredDataMask */ requiredDataMask, /* freeData */ freeData, /* isDisabled */ isDisabled, - /* updateDepgraph */ updateDepgraph, /* updateDepsgraph */ updateDepsgraph, /* dependsOnTime */ dependsOnTime, /* dependsOnNormals */ NULL, |