[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42515] trunk/blender/source/blender/ modifiers/intern/MOD_hook.c: Fix [#29543] Hook modifier: falloff + vgroup influence broken
Bastien Montagne
montagne29 at wanadoo.fr
Thu Dec 8 16:50:36 CET 2011
Revision: 42515
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42515
Author: mont29
Date: 2011-12-08 15:50:28 +0000 (Thu, 08 Dec 2011)
Log Message:
-----------
Fix [#29543] Hook modifier: falloff + vgroup influence broken
A valid derivedmesh is needed for modifier_get_vgroup to work, and it wasn?\226?\128?\153t take care of when not in edit mode... Checked quickly the other deform modifiers, they all seem to handle this correctly.
Modified Paths:
--------------
trunk/blender/source/blender/modifiers/intern/MOD_hook.c
Modified: trunk/blender/source/blender/modifiers/intern/MOD_hook.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_hook.c 2011-12-08 14:26:46 UTC (rev 42514)
+++ trunk/blender/source/blender/modifiers/intern/MOD_hook.c 2011-12-08 15:50:28 UTC (rev 42515)
@@ -143,14 +143,9 @@
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 deformVertsEM(
- ModifierData *md, Object *ob, struct EditMesh *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_editmesh(editData, ob->data);
+ deformVerts_do(hmd, ob, dm, vertexCos, numVerts);
- deformVerts(md, ob, dm, vertexCos, numVerts, 0, 0);
+ if(derivedData != dm)
+ dm->release(dm);
+}
- if(!derivedData) 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);
+
+ deformVerts_do(hmd, ob, dm, vertexCos, numVerts);
+
+ if(derivedData != dm)
+ dm->release(dm);
}
More information about the Bf-blender-cvs
mailing list