diff options
Diffstat (limited to 'source/blender/modifiers/intern/MOD_warp.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_warp.c | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/source/blender/modifiers/intern/MOD_warp.c b/source/blender/modifiers/intern/MOD_warp.c index bb0896994b1..53e41484606 100644 --- a/source/blender/modifiers/intern/MOD_warp.c +++ b/source/blender/modifiers/intern/MOD_warp.c @@ -28,6 +28,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -56,7 +57,7 @@ #include "DEG_depsgraph.h" #include "DEG_depsgraph_query.h" -#include "RE_shader_ext.h" +#include "RE_texture.h" #include "MOD_ui_common.h" #include "MOD_util.h" @@ -65,12 +66,11 @@ static void initData(ModifierData *md) { WarpModifierData *wmd = (WarpModifierData *)md; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(wmd, modifier)); + + MEMCPY_STRUCT_AFTER(wmd, DNA_struct_default_get(WarpModifierData), modifier); + wmd->curfalloff = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f); - wmd->texture = NULL; - wmd->strength = 1.0f; - wmd->falloff_radius = 1.0f; - wmd->falloff_type = eWarp_Falloff_Smooth; - wmd->flag = 0; } static void copyData(const ModifierData *md, ModifierData *target, const int flag) @@ -142,22 +142,14 @@ static bool isDisabled(const struct Scene *UNUSED(scene), return !(wmd->object_from && wmd->object_to); } -static void foreachObjectLink(ModifierData *md, Object *ob, ObjectWalkFunc walk, void *userData) -{ - WarpModifierData *wmd = (WarpModifierData *)md; - - walk(userData, ob, &wmd->object_from, IDWALK_CB_NOP); - walk(userData, ob, &wmd->object_to, IDWALK_CB_NOP); - walk(userData, ob, &wmd->map_object, IDWALK_CB_NOP); -} - static void foreachIDLink(ModifierData *md, Object *ob, IDWalkFunc walk, void *userData) { WarpModifierData *wmd = (WarpModifierData *)md; walk(userData, ob, (ID **)&wmd->texture, IDWALK_CB_USER); - - foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData); + walk(userData, ob, (ID **)&wmd->object_from, IDWALK_CB_NOP); + walk(userData, ob, (ID **)&wmd->object_to, IDWALK_CB_NOP); + walk(userData, ob, (ID **)&wmd->map_object, IDWALK_CB_NOP); } static void foreachTexLink(ModifierData *md, Object *ob, TexWalkFunc walk, void *userData) @@ -279,8 +271,9 @@ static void warpModifier_do(WarpModifierData *wmd, /* skip if no vert group found */ if (defgrp_index != -1) { dv = &dvert[i]; - weight = invert_vgroup ? 1.0f - BKE_defvert_find_weight(dv, defgrp_index) * strength : - BKE_defvert_find_weight(dv, defgrp_index) * strength; + weight = (invert_vgroup ? (1.0f - BKE_defvert_find_weight(dv, defgrp_index)) : + BKE_defvert_find_weight(dv, defgrp_index)) * + strength; if (weight <= 0.0f) { continue; } @@ -532,9 +525,11 @@ ModifierTypeInfo modifierType_Warp = { /* name */ "Warp", /* structName */ "WarpModifierData", /* structSize */ sizeof(WarpModifierData), + /* srna */ &RNA_WarpModifier, /* type */ eModifierTypeType_OnlyDeform, /* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsVertexCosOnly | eModifierTypeFlag_SupportsEditmode, + /* icon */ ICON_MOD_WARP, /* copyData */ copyData, /* deformVerts */ deformVerts, @@ -553,7 +548,6 @@ ModifierTypeInfo modifierType_Warp = { /* updateDepsgraph */ updateDepsgraph, /* dependsOnTime */ dependsOnTime, /* dependsOnNormals */ NULL, - /* foreachObjectLink */ foreachObjectLink, /* foreachIDLink */ foreachIDLink, /* foreachTexLink */ foreachTexLink, /* freeRuntimeData */ NULL, |