Commit: b8c63aead5782d26d86326c1efba00c9b762d009
Author: Martin Felke
Date:   Wed Jan 20 00:40:22 2016 +0100
Branches: fracture_modifier
https://developer.blender.org/rBb8c63aead5782d26d86326c1efba00c9b762d009

avoid resetting cache (and iterating possibly through the rigidbody group) when 
adding mesh constraints

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

M       source/blender/blenkernel/BKE_rigidbody.h
M       source/blender/blenkernel/intern/fracture.c
M       source/blender/blenkernel/intern/rigidbody.c
M       source/blender/modifiers/intern/MOD_fracture.c

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

diff --git a/source/blender/blenkernel/BKE_rigidbody.h 
b/source/blender/blenkernel/BKE_rigidbody.h
index f2e1806..fa705b2 100644
--- a/source/blender/blenkernel/BKE_rigidbody.h
+++ b/source/blender/blenkernel/BKE_rigidbody.h
@@ -65,7 +65,7 @@ struct RigidBodyWorld *BKE_rigidbody_create_world(struct 
Scene *scene);
 struct RigidBodyOb *BKE_rigidbody_create_object(struct Scene *scene, struct 
Object *ob, short type);
 struct RigidBodyCon *BKE_rigidbody_create_constraint(struct Scene *scene, 
struct Object *ob, short type);
 struct RigidBodyOb *BKE_rigidbody_create_shard(struct Scene *scene, struct 
Object *ob, struct Object *target, struct MeshIsland *mi);
-struct RigidBodyShardCon *BKE_rigidbody_create_shard_constraint(struct Scene 
*scene, short type);
+struct RigidBodyShardCon *BKE_rigidbody_create_shard_constraint(struct Scene 
*scene, short type, bool reset);
 
 /* copy */
 struct RigidBodyWorld *BKE_rigidbody_world_copy(struct RigidBodyWorld *rbw);
diff --git a/source/blender/blenkernel/intern/fracture.c 
b/source/blender/blenkernel/intern/fracture.c
index 61cda42..a088107 100644
--- a/source/blender/blenkernel/intern/fracture.c
+++ b/source/blender/blenkernel/intern/fracture.c
@@ -2546,7 +2546,7 @@ RigidBodyShardCon 
*BKE_fracture_mesh_islands_connect(FractureModifierData *fmd,
 {
        RigidBodyShardCon *rbsc;
 
-       rbsc = BKE_rigidbody_create_shard_constraint(fmd->modifier.scene, 
con_type);
+       rbsc = BKE_rigidbody_create_shard_constraint(fmd->modifier.scene, 
con_type, false);
        rbsc->mi1 = mi1;
        rbsc->mi2 = mi2;
 
diff --git a/source/blender/blenkernel/intern/rigidbody.c 
b/source/blender/blenkernel/intern/rigidbody.c
index 33a4132..424979d 100644
--- a/source/blender/blenkernel/intern/rigidbody.c
+++ b/source/blender/blenkernel/intern/rigidbody.c
@@ -2408,7 +2408,7 @@ RigidBodyCon *BKE_rigidbody_create_constraint(Scene 
*scene, Object *ob, short ty
 }
 
 /* Add rigid body constraint to the specified object */
-RigidBodyShardCon *BKE_rigidbody_create_shard_constraint(Scene *scene, short 
type)
+RigidBodyShardCon *BKE_rigidbody_create_shard_constraint(Scene *scene, short 
type, bool reset)
 {
        RigidBodyShardCon *rbc;
        RigidBodyWorld *rbw = scene->rigidbody_world;
@@ -2466,7 +2466,8 @@ RigidBodyShardCon 
*BKE_rigidbody_create_shard_constraint(Scene *scene, short typ
        rbc->breaking_dist = 0.0f;
 
        /* flag cache as outdated */
-       BKE_rigidbody_cache_reset(rbw);
+       if (reset)
+               BKE_rigidbody_cache_reset(rbw);
 
        /* return this object */
        return rbc;
diff --git a/source/blender/modifiers/intern/MOD_fracture.c 
b/source/blender/modifiers/intern/MOD_fracture.c
index 96bd98a..6486b3b 100644
--- a/source/blender/modifiers/intern/MOD_fracture.c
+++ b/source/blender/modifiers/intern/MOD_fracture.c
@@ -2075,7 +2075,7 @@ static void mesh_separate_loose(FractureModifierData 
*rmd, Object *ob, DerivedMe
 static void do_constraint(FractureModifierData* fmd, MeshIsland *mi1, 
MeshIsland *mi2, int con_type, float thresh)
 {
        RigidBodyShardCon *rbsc;
-       rbsc = BKE_rigidbody_create_shard_constraint(fmd->modifier.scene, 
con_type);
+       rbsc = BKE_rigidbody_create_shard_constraint(fmd->modifier.scene, 
con_type, true);
        rbsc->mi1 = mi1;
        rbsc->mi2 = mi2;
        if (thresh == 0 || fmd->use_breaking == false) {

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

Reply via email to