Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/modifiers/intern/MOD_warp.c')
-rw-r--r--source/blender/modifiers/intern/MOD_warp.c34
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,