[Bf-blender-cvs] [b8c63ae] fracture_modifier: avoid resetting cache (and iterating possibly through the rigidbody group) when adding mesh constraints

Martin Felke noreply at git.blender.org
Wed Jan 20 00:40:35 CET 2016


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) {




More information about the Bf-blender-cvs mailing list