Commit: 84696d3c752ecb543d1ea668feaed827e8020f29
Author: Martin Felke
Date:   Wed Jan 27 21:58:08 2016 +0100
Branches: fracture_modifier
https://developer.blender.org/rB84696d3c752ecb543d1ea668feaed827e8020f29

fix: forgot to accumulate differences of multiple hook modifier changes

===================================================================

M       source/blender/blenkernel/intern/rigidbody.c

===================================================================

diff --git a/source/blender/blenkernel/intern/rigidbody.c 
b/source/blender/blenkernel/intern/rigidbody.c
index 7896b72..eb82929 100644
--- a/source/blender/blenkernel/intern/rigidbody.c
+++ b/source/blender/blenkernel/intern/rigidbody.c
@@ -3767,6 +3767,8 @@ static void rigidbody_passive_hook(FractureModifierData 
*fmd, MeshIsland *mi, Ob
                if (dm)
                {
                        int totvert = dm->getNumVerts(dm);
+                       float acc[3];
+                       dm->getVertCo(dm, mi->vertex_indices[0], acc);
 
                        for (md = ob->modifiers.first; md; md = md->next)
                        {
@@ -3781,7 +3783,7 @@ static void rigidbody_passive_hook(FractureModifierData 
*fmd, MeshIsland *mi, Ob
                                //only eval following hookmodifiers, based on 
our derivedmesh
                                if (md->type == eModifierType_Hook && found)
                                {
-                                       float (*vertexCos)[3];
+                                       float (*vertexCos)[3], old[3], diff[3];
                                        const ModifierTypeInfo *mti = 
modifierType_getInfo(md->type);
                                        HookModifierData *hmd = 
(HookModifierData*)md;
 
@@ -3791,13 +3793,17 @@ static void rigidbody_passive_hook(FractureModifierData 
*fmd, MeshIsland *mi, Ob
 
                                        vertexCos = MEM_callocN(sizeof(float) * 
3 * totvert, "Vertex Cos");
                                        dm->getVertCos(dm, vertexCos);
+                                       copy_v3_v3(old, 
vertexCos[mi->vertex_indices[0]]);
 
                                        mti->deformVerts(md, ob, dm, vertexCos, 
totvert, 0);
-                                       rigidbody_passive_fake_hook(mi, 
vertexCos[mi->vertex_indices[0]]);
 
+                                       sub_v3_v3v3(diff, 
vertexCos[mi->vertex_indices[0]], old);
+                                       add_v3_v3(acc, diff);
                                        MEM_freeN(vertexCos);
                                }
                        }
+
+                       rigidbody_passive_fake_hook(mi, acc);
                }
        }
 }

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

Reply via email to