[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