diff options
Diffstat (limited to 'source/blender/modifiers/intern/MOD_mirror.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_mirror.c | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/source/blender/modifiers/intern/MOD_mirror.c b/source/blender/modifiers/intern/MOD_mirror.c index 5de4a76dcbe..3e10fa1d77d 100644 --- a/source/blender/modifiers/intern/MOD_mirror.c +++ b/source/blender/modifiers/intern/MOD_mirror.c @@ -42,10 +42,10 @@ #include "BKE_modifier.h" #include "BKE_deform.h" -#include "bmesh.h" - #include "MEM_guardedalloc.h" + #include "depsgraph_private.h" +#include "DEG_depsgraph_build.h" static void initData(ModifierData *md) { @@ -75,6 +75,7 @@ static void foreachObjectLink(ModifierData *md, Object *ob, } static void updateDepgraph(ModifierData *md, DagForest *forest, + struct Main *UNUSED(bmain), struct Scene *UNUSED(scene), Object *UNUSED(ob), DagNode *obNode) @@ -84,9 +85,21 @@ static void updateDepgraph(ModifierData *md, DagForest *forest, if (mmd->mirror_ob) { DagNode *latNode = dag_get_node(forest, mmd->mirror_ob); - dag_add_relation(forest, latNode, obNode, - DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Mirror Modifier"); + dag_add_relation(forest, latNode, obNode, DAG_RL_OB_DATA, "Mirror Modifier"); + } +} + +static void updateDepsgraph(ModifierData *md, + struct Main *UNUSED(bmain), + struct Scene *UNUSED(scene), + Object *ob, + struct DepsNodeHandle *node) +{ + MirrorModifierData *mmd = (MirrorModifierData *)md; + if (mmd->mirror_ob != NULL) { + DEG_add_object_relation(node, mmd->mirror_ob, DEG_OB_COMP_TRANSFORM, "Mirror Modifier"); } + DEG_add_object_relation(node, ob, DEG_OB_COMP_TRANSFORM, "Mirror Modifier"); } static DerivedMesh *doMirrorOnAxis(MirrorModifierData *mmd, @@ -95,7 +108,7 @@ static DerivedMesh *doMirrorOnAxis(MirrorModifierData *mmd, int axis) { const float tolerance_sq = mmd->tolerance * mmd->tolerance; - const int do_vtargetmap = !(mmd->flag & MOD_MIR_NO_MERGE); + const bool do_vtargetmap = (mmd->flag & MOD_MIR_NO_MERGE) == 0; int tot_vtargetmap = 0; /* total merge vertices */ DerivedMesh *result; @@ -362,6 +375,7 @@ ModifierTypeInfo modifierType_Mirror = { /* freeData */ NULL, /* isDisabled */ NULL, /* updateDepgraph */ updateDepgraph, + /* updateDepsgraph */ updateDepsgraph, /* dependsOnTime */ NULL, /* dependsOnNormals */ NULL, /* foreachObjectLink */ foreachObjectLink, |