diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-12-08 21:32:37 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-12-08 21:32:37 +0400 |
commit | 980e68175be6f02b4d3e0f3ba9a5902e0cf2719a (patch) | |
tree | 545ba1badd4703f8fe8e3d0ba9f12e06e56ac905 /source/blender/modifiers/intern/MOD_hook.c | |
parent | 5c377f5f872df94b77e2e40dbdeceb751e631924 (diff) | |
parent | 7797c1dc424b1f772f23a3b8730a8374012d8c8b (diff) |
svn merge ^/trunk/blender -r42495:42516
Diffstat (limited to 'source/blender/modifiers/intern/MOD_hook.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_hook.c | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/source/blender/modifiers/intern/MOD_hook.c b/source/blender/modifiers/intern/MOD_hook.c index 3aaf0fbe652..e04d5113364 100644 --- a/source/blender/modifiers/intern/MOD_hook.c +++ b/source/blender/modifiers/intern/MOD_hook.c @@ -143,14 +143,9 @@ static float hook_falloff(float *co_1, float *co_2, const float falloff_squared, return fac; } -static void deformVerts(ModifierData *md, Object *ob, - DerivedMesh *dm, - float (*vertexCos)[3], - int numVerts, - int UNUSED(useRenderParams), - int UNUSED(isFinalCalc)) +static void deformVerts_do(HookModifierData *hmd, Object *ob, DerivedMesh *dm, + float (*vertexCos)[3], int numVerts) { - HookModifierData *hmd = (HookModifierData*) md; bPoseChannel *pchan= get_pose_channel(hmd->object->pose, hmd->subtarget); float vec[3], mat[4][4], dmat[4][4]; int i, *index_pt; @@ -251,17 +246,29 @@ static void deformVerts(ModifierData *md, Object *ob, } } -static void deformVertsEM( - ModifierData *md, Object *ob, struct BMEditMesh *editData, - DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts) +static void deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData, + float (*vertexCos)[3], int numVerts, + int UNUSED(useRenderParams), int UNUSED(isFinalCalc)) { - DerivedMesh *dm = derivedData; + HookModifierData *hmd = (HookModifierData*) md; + DerivedMesh *dm = get_dm(ob, NULL, derivedData, NULL, 0); - if(!derivedData) dm = CDDM_from_BMEditMesh(editData, ob->data, 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); - deformVerts(md, ob, dm, vertexCos, numVerts, 0, 0); + deformVerts_do(hmd, ob, dm, vertexCos, numVerts); - if(!derivedData) dm->release(dm); + if(derivedData != dm) + dm->release(dm); } |