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:
authorCampbell Barton <ideasman42@gmail.com>2011-12-08 21:32:37 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-12-08 21:32:37 +0400
commit980e68175be6f02b4d3e0f3ba9a5902e0cf2719a (patch)
tree545ba1badd4703f8fe8e3d0ba9f12e06e56ac905 /source/blender/modifiers/intern/MOD_hook.c
parent5c377f5f872df94b77e2e40dbdeceb751e631924 (diff)
parent7797c1dc424b1f772f23a3b8730a8374012d8c8b (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.c35
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);
}