diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-12-16 03:59:02 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-12-16 03:59:02 +0400 |
commit | 862dc635ed98c6d1ffc7c755058c682021da4c6b (patch) | |
tree | 11de5533aaae2da3eab2ab63c5d5977aea73dbc4 /source/blender/modifiers/intern/MOD_hook.c | |
parent | d0b70cffaf99321c57045d8dc8ec197b1542395c (diff) | |
parent | 0dbd9ea73f7f86e02d9aae6c65c3ce5e3c4ecd4b (diff) |
svn merge ^/trunk/blender -r42617:42655
Diffstat (limited to 'source/blender/modifiers/intern/MOD_hook.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_hook.c | 16 |
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 a6eb9ab1e48..d7546b11303 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 BMEditMesh *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); |