diff options
author | Jacques Lucke <jacques@blender.org> | 2020-03-05 13:41:38 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2020-03-05 13:41:38 +0300 |
commit | 8471b2f22e9273e62797777c2a509aba5a8f86aa (patch) | |
tree | 645c7aa48a6e4a35613383daf7adc718dba81783 /source/blender/modifiers | |
parent | 743443ac14757b382ae55fb0d73dfd7b6f171597 (diff) | |
parent | c328049535a4bc9453f5e93365a00759347e3a05 (diff) |
Merge branch 'master' into functions
Diffstat (limited to 'source/blender/modifiers')
-rw-r--r-- | source/blender/modifiers/intern/MOD_boolean.c | 2 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_wave.c | 4 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_weld.c | 14 |
3 files changed, 17 insertions, 3 deletions
diff --git a/source/blender/modifiers/intern/MOD_boolean.c b/source/blender/modifiers/intern/MOD_boolean.c index 20a4d8eef65..668fcef5dd2 100644 --- a/source/blender/modifiers/intern/MOD_boolean.c +++ b/source/blender/modifiers/intern/MOD_boolean.c @@ -260,7 +260,7 @@ static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mes /* Using original (not evaluated) object here since we are writing to it. */ /* XXX Pretty sure comment above is fully wrong now with CoW & co ? */ - BKE_material_remap_object_calc(ctx->object, other, material_remap); + BKE_object_material_remap_calc(ctx->object, other, material_remap); BMFace *efa; i = 0; diff --git a/source/blender/modifiers/intern/MOD_wave.c b/source/blender/modifiers/intern/MOD_wave.c index ff5748b968c..ee4897bdefb 100644 --- a/source/blender/modifiers/intern/MOD_wave.c +++ b/source/blender/modifiers/intern/MOD_wave.c @@ -154,6 +154,7 @@ static void waveModifier_do(WaveModifierData *md, const int wmd_axis = wmd->flag & (MOD_WAVE_X | MOD_WAVE_Y); const float falloff = wmd->falloff; float falloff_fac = 1.0f; /* when falloff == 0.0f this stays at 1.0f */ + const bool invert_group = (wmd->flag & MOD_WAVE_INVERT_VGROUP) != 0; if ((wmd->flag & MOD_WAVE_NORM) && (mesh != NULL)) { mvert = mesh->mvert; @@ -213,7 +214,8 @@ static void waveModifier_do(WaveModifierData *md, /* get weights */ if (dvert) { - def_weight = defvert_find_weight(&dvert[i], defgrp_index); + def_weight = invert_group ? 1.0f - defvert_find_weight(&dvert[i], defgrp_index) : + defvert_find_weight(&dvert[i], defgrp_index); /* if this vert isn't in the vgroup, don't deform it */ if (def_weight == 0.0f) { diff --git a/source/blender/modifiers/intern/MOD_weld.c b/source/blender/modifiers/intern/MOD_weld.c index 1f641e56c76..803c8e1853f 100644 --- a/source/blender/modifiers/intern/MOD_weld.c +++ b/source/blender/modifiers/intern/MOD_weld.c @@ -1890,6 +1890,18 @@ static void initData(ModifierData *md) wmd->defgrp_name[0] = '\0'; } +static void requiredDataMask(Object *UNUSED(ob), + ModifierData *md, + CustomData_MeshMasks *r_cddata_masks) +{ + WeldModifierData *wmd = (WeldModifierData *)md; + + /* Ask for vertexgroups if we need them. */ + if (wmd->defgrp_name[0] != '\0') { + r_cddata_masks->vmask |= CD_MASK_MDEFORMVERT; + } +} + ModifierTypeInfo modifierType_Weld = { /* name */ "Weld", /* structName */ "WeldModifierData", @@ -1908,7 +1920,7 @@ ModifierTypeInfo modifierType_Weld = { /* applyModifier */ applyModifier, /* initData */ initData, - /* requiredDataMask */ NULL, + /* requiredDataMask */ requiredDataMask, /* freeData */ NULL, /* isDisabled */ NULL, /* updateDepsgraph */ NULL, |