[Bf-blender-cvs] [0adaddd] fracture_modifier: fix for passive parenting hack, it was not taken into account after transforming the object interactively

Martin Felke noreply at git.blender.org
Mon Jan 25 17:58:33 CET 2016


Commit: 0adaddd4c402ab3b5dc8bc7289ca3b7c53c1446b
Author: Martin Felke
Date:   Mon Jan 25 17:58:27 2016 +0100
Branches: fracture_modifier
https://developer.blender.org/rB0adaddd4c402ab3b5dc8bc7289ca3b7c53c1446b

fix for passive parenting hack, it was not taken into account after transforming the object interactively

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

M	source/blender/blenkernel/intern/rigidbody.c
M	source/blender/editors/transform/transform_conversions.c

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

diff --git a/source/blender/blenkernel/intern/rigidbody.c b/source/blender/blenkernel/intern/rigidbody.c
index 4d9e2f3..19232d3 100644
--- a/source/blender/blenkernel/intern/rigidbody.c
+++ b/source/blender/blenkernel/intern/rigidbody.c
@@ -3375,7 +3375,7 @@ static bool do_update_modifier(Scene* scene, Object* ob, RigidBodyWorld *rbw, bo
 		int count = 0, brokencount = 0, plastic = 0;
 		float frame = 0;
 
-		if (rebuild)
+		if (rebuild || is_zero_m4(fmd->passive_parent_mat))
 		{
 			copy_m4_m4(fmd->passive_parent_mat, ob->obmat);
 		}
@@ -3797,8 +3797,10 @@ static bool do_sync_modifier(ModifierData *md, Object *ob, RigidBodyWorld *rbw,
 
 			if (!is_zero_m4(fmd->origmat) && rbw && !(rbw->flag & RBW_FLAG_OBJECT_CHANGED))
 			{
-				//if (fmd->fracture_mode == MOD_FRACTURE_PREFRACTURED)
-				copy_m4_m4(ob->obmat, fmd->origmat);
+				if (fmd->fracture_mode != MOD_FRACTURE_EXTERNAL)
+				{
+					copy_m4_m4(ob->obmat, fmd->origmat);
+				}
 			}
 
 			return modFound;
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index 28b8dc4..a27ca80 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -6358,7 +6358,14 @@ void special_aftertrans_update(bContext *C, TransInfo *t)
 				if (md != NULL) {
 					//reset original matrix of modifier
 					fmd = (FractureModifierData*)md;
-					copy_m4_m4(fmd->origmat, td->ext->obmat);
+					if (fmd->fracture_mode != MOD_FRACTURE_EXTERNAL)
+					{
+						copy_m4_m4(fmd->origmat, td->ext->obmat);
+					}
+					else
+					{
+						zero_m4(fmd->origmat);
+					}
 				}
 			}
 		}




More information about the Bf-blender-cvs mailing list