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:
authorBastien Montagne <montagne29@wanadoo.fr>2011-12-15 12:57:48 +0400
committerBastien Montagne <montagne29@wanadoo.fr>2011-12-15 12:57:48 +0400
commit9996188791f1e18351ad2c115c4bb98aa34f54be (patch)
tree01c6353e9d99d2cbaca65e47a93e71442faf7466 /source/blender/modifiers/intern/MOD_hook.c
parentca9ae04220560191c11c3657466cfaa42f7effc6 (diff)
New fix for [#29543] Hook modifier: falloff + vgroup influence broken
Don't know why, but creating a dm when there was none broke multi hooks on curves (see #29567)... So as a valid dm is only mandatory for meshes when a vgroup is set, only create it in those cases!
Diffstat (limited to 'source/blender/modifiers/intern/MOD_hook.c')
-rw-r--r--source/blender/modifiers/intern/MOD_hook.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/source/blender/modifiers/intern/MOD_hook.c b/source/blender/modifiers/intern/MOD_hook.c
index b5cf289f4ce..9948a1a462d 100644
--- a/source/blender/modifiers/intern/MOD_hook.c
+++ b/source/blender/modifiers/intern/MOD_hook.c
@@ -249,15 +249,25 @@ static void deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData,
int UNUSED(useRenderParams), int UNUSED(isFinalCalc))
{
HookModifierData *hmd = (HookModifierData*) md;
-
- deformVerts_do(hmd, ob, derivedData, vertexCos, numVerts);
+ DerivedMesh *dm = derivedData;
+ /* We need a valid dm for meshes when a vgroup is set... */
+ if(!dm && ob->type == OB_MESH && hmd->name[0] != '\0')
+ dm = get_dm(ob, NULL, dm, NULL, 0);
+
+ deformVerts_do(hmd, ob, dm, vertexCos, numVerts);
+
+ if(derivedData != dm)
+ dm->release(dm);
}
static void deformVertsEM(ModifierData *md, Object *ob, struct EditMesh *editData,
DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
{
HookModifierData *hmd = (HookModifierData*) md;
- DerivedMesh *dm = get_dm(ob, editData, derivedData, NULL, 0);
+ DerivedMesh *dm = derivedData;
+ /* We need a valid dm for meshes when a vgroup is set... */
+ if(!dm && ob->type == OB_MESH && hmd->name[0] != '\0')
+ dm = get_dm(ob, editData, dm, NULL, 0);
deformVerts_do(hmd, ob, dm, vertexCos, numVerts);