[Bf-blender-cvs] [f68da08a054] fracture_modifier: fix for initial kinematic state after triggering and jumping back to startframe

Martin Felke noreply at git.blender.org
Sun Aug 13 01:01:07 CEST 2017


Commit: f68da08a054bb5b115337f6b88fc9938bfb869d4
Author: Martin Felke
Date:   Sun Aug 13 01:00:45 2017 +0200
Branches: fracture_modifier
https://developer.blender.org/rBf68da08a054bb5b115337f6b88fc9938bfb869d4

fix for initial kinematic state after triggering and jumping back to startframe

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

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

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

diff --git a/source/blender/blenkernel/intern/rigidbody.c b/source/blender/blenkernel/intern/rigidbody.c
index 72d544fafbd..b139b84d5be 100644
--- a/source/blender/blenkernel/intern/rigidbody.c
+++ b/source/blender/blenkernel/intern/rigidbody.c
@@ -5204,11 +5204,14 @@ static bool restoreKinematic(RigidBodyWorld *rbw)
 
 	/*restore kinematic state of shards if object is kinematic*/
 	for (go = rbw->group->gobject.first; go; go = go->next)	{
-		if ((go->ob) && ((go->ob->rigidbody_object) && (((go->ob->rigidbody_object->flag & RBO_FLAG_KINEMATIC) ||
-			(go->ob->rigidbody_object->flag & RBO_FLAG_USE_KINEMATIC_DEACTIVATION)))))
-		{
+		bool kinematic = false, triggered = false;
+
+		if ((go->ob) && (go->ob->rigidbody_object)) {
+			kinematic = go->ob->rigidbody_object->flag & RBO_FLAG_KINEMATIC;
+			triggered = go->ob->rigidbody_object->flag & RBO_FLAG_USE_KINEMATIC_DEACTIVATION;
+
 			FractureModifierData *fmd = (FractureModifierData*)modifiers_findByType(go->ob, eModifierType_Fracture);
-			if (fmd)
+			if (fmd && kinematic && triggered)
 			{
 				MeshIsland* mi;
 				for (mi = fmd->meshIslands.first; mi; mi = mi->next)
@@ -5222,7 +5225,7 @@ static bool restoreKinematic(RigidBodyWorld *rbw)
 					}
 				}
 			}
-			else if (!fmd)
+			else if (!fmd && triggered)
 			{	/* restore regular triggered objects back to kinematic at all, they very likely were kinematic before...
 				 * user has to disable triggered if behavior is not desired */
 				go->ob->rigidbody_object->flag &= ~RBO_FLAG_KINEMATIC_REBUILD;




More information about the Bf-blender-cvs mailing list