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);
 }
 
 

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to