[Bf-blender-cvs] [32949594465] fracture_modifier: attempt to have "plastic" constraint deform by re-constraining via angle, distance

Martin Felke noreply at git.blender.org
Sun Jun 18 11:08:46 CEST 2017


Commit: 32949594465c8421118196d1694ee82525922b40
Author: Martin Felke
Date:   Sun Jun 18 11:08:21 2017 +0200
Branches: fracture_modifier
https://developer.blender.org/rB32949594465c8421118196d1694ee82525922b40

attempt to have "plastic" constraint deform by re-constraining via angle, distance

deformation mode happens when breakable is set to false, but angle or distance is set

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

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

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

diff --git a/source/blender/blenkernel/intern/rigidbody.c b/source/blender/blenkernel/intern/rigidbody.c
index 53f27f095cb..6d7fffffe55 100644
--- a/source/blender/blenkernel/intern/rigidbody.c
+++ b/source/blender/blenkernel/intern/rigidbody.c
@@ -3750,12 +3750,19 @@ static void handle_breaking_angle(FractureModifierData *fmd, Object *ob, RigidBo
 		{
 			if (fmd->use_breaking)
 			{
+				//break constraint
 				if (rbsc->physics_constraint) {
 					RB_constraint_set_enabled(rbsc->physics_constraint, false);
 					activateRigidbody(rbsc->mi1->rigidbody, rbw, rbsc->mi1, ob);
 					activateRigidbody(rbsc->mi2->rigidbody, rbw, rbsc->mi2, ob);
 				}
 			}
+			else {
+				//attempt to make plastic deform by reconstraining the shards
+				if (rbsc->physics_constraint) {
+					BKE_rigidbody_validate_sim_shard_constraint(rbw, fmd, ob, rbsc, true);
+				}
+			}
 		}
 	}
 
@@ -3770,6 +3777,12 @@ static void handle_breaking_angle(FractureModifierData *fmd, Object *ob, RigidBo
 				activateRigidbody(rbsc->mi2->rigidbody, rbw, rbsc->mi2, ob);
 			}
 		}
+		else {
+			//attempt to make plastic deform by reconstraining the shards
+			if (rbsc->physics_constraint) {
+				BKE_rigidbody_validate_sim_shard_constraint(rbw, fmd, ob, rbsc, true);
+			}
+		}
 	}
 }
 
@@ -3791,6 +3804,12 @@ static void handle_breaking_distance(FractureModifierData *fmd, Object *ob, Rigi
 					activateRigidbody(rbsc->mi2->rigidbody, rbw, rbsc->mi2, ob);
 				}
 			}
+			else {
+				//attempt to make plastic deform by reconstraining the shards
+				if (rbsc->physics_constraint) {
+					BKE_rigidbody_validate_sim_shard_constraint(rbw, fmd, ob, rbsc, true);
+				}
+			}
 		}
 	}
 
@@ -3805,6 +3824,12 @@ static void handle_breaking_distance(FractureModifierData *fmd, Object *ob, Rigi
 				activateRigidbody(rbsc->mi2->rigidbody, rbw, rbsc->mi2, ob);
 			}
 		}
+		else {
+			//attempt to make plastic deform by reconstraining the shards
+			if (rbsc->physics_constraint) {
+				BKE_rigidbody_validate_sim_shard_constraint(rbw, fmd, ob, rbsc, true);
+			}
+		}
 	}
 }




More information about the Bf-blender-cvs mailing list