Commit: 6c4c1fbb3c58db4c58acf3a4021c13ddf7949598 Author: Martin Felke Date: Thu Jan 1 12:54:51 2015 +0100 Branches: fracture_modifier https://developer.blender.org/rB6c4c1fbb3c58db4c58acf3a4021c13ddf7949598
fix for unnecessary activation of all parts again and again, this resulted in
never ending movement... now this applies to kinematic objects only, which lose
their kinematic state due to being triggered
===================================================================
M source/blender/blenkernel/intern/rigidbody.c
===================================================================
diff --git a/source/blender/blenkernel/intern/rigidbody.c
b/source/blender/blenkernel/intern/rigidbody.c
index 9dbcf18..73dc91c 100644
--- a/source/blender/blenkernel/intern/rigidbody.c
+++ b/source/blender/blenkernel/intern/rigidbody.c
@@ -72,10 +72,13 @@
static void activateRigidbody(RigidBodyOb* rbo)
{
- rbo->flag &= ~RBO_FLAG_KINEMATIC;
- RB_body_set_mass(rbo->physics_object, RBO_GET_MASS(rbo));
- RB_body_set_kinematic_state(rbo->physics_object, false);
- rbo->flag |= RBO_FLAG_NEEDS_VALIDATE;
+ if (rbo->flag & RBO_FLAG_KINEMATIC)
+ {
+ rbo->flag &= ~RBO_FLAG_KINEMATIC;
+ RB_body_set_mass(rbo->physics_object, RBO_GET_MASS(rbo));
+ RB_body_set_kinematic_state(rbo->physics_object, false);
+ rbo->flag |= RBO_FLAG_NEEDS_VALIDATE;
+ }
}
static void validateShard(RigidBodyWorld *rbw, MeshIsland *mi, Object *ob, int
rebuild);
@@ -2707,10 +2710,9 @@ static void rigidbody_update_simulation(Scene *scene,
RigidBodyWorld *rbw, bool
if (con->physics_constraint) {
RB_constraint_set_enabled(con->physics_constraint, false);
+
activateRigidbody(con->mi1->rigidbody);
+
activateRigidbody(con->mi2->rigidbody);
}
-
-
activateRigidbody(con->mi1->rigidbody);
-
activateRigidbody(con->mi2->rigidbody);
}
}
}
@@ -2731,10 +2733,9 @@ static void rigidbody_update_simulation(Scene *scene,
RigidBodyWorld *rbw, bool
if (con->physics_constraint) {
RB_constraint_set_enabled(con->physics_constraint, false);
+
activateRigidbody(con->mi1->rigidbody);
+
activateRigidbody(con->mi2->rigidbody);
}
-
-
activateRigidbody(con->mi1->rigidbody);
-
activateRigidbody(con->mi2->rigidbody);
}
}
}
@@ -2806,10 +2807,9 @@ static void rigidbody_update_simulation(Scene *scene,
RigidBodyWorld *rbw, bool
if
(rbsc->physics_constraint) {
RB_constraint_set_enabled(rbsc->physics_constraint, false);
+
activateRigidbody(rbsc->mi1->rigidbody);
+
activateRigidbody(rbsc->mi2->rigidbody);
}
-
-
activateRigidbody(rbsc->mi1->rigidbody);
-
activateRigidbody(rbsc->mi2->rigidbody);
}
}
}
@@ -2824,10 +2824,9 @@ static void rigidbody_update_simulation(Scene *scene,
RigidBodyWorld *rbw, bool
if
(rbsc->physics_constraint) {
RB_constraint_set_enabled(rbsc->physics_constraint, false);
+
activateRigidbody(rbsc->mi1->rigidbody);
+
activateRigidbody(rbsc->mi2->rigidbody);
}
-
-
activateRigidbody(rbsc->mi1->rigidbody);
-
activateRigidbody(rbsc->mi2->rigidbody);
}
}
@@ -2846,10 +2845,9 @@ static void rigidbody_update_simulation(Scene *scene,
RigidBodyWorld *rbw, bool
if
(rbsc->physics_constraint) {
RB_constraint_set_enabled(rbsc->physics_constraint, false);
+
activateRigidbody(rbsc->mi1->rigidbody);
+
activateRigidbody(rbsc->mi2->rigidbody);
}
-
-
activateRigidbody(rbsc->mi1->rigidbody);
-
activateRigidbody(rbsc->mi2->rigidbody);
}
}
}
@@ -2864,10 +2862,9 @@ static void rigidbody_update_simulation(Scene *scene,
RigidBodyWorld *rbw, bool
if
(rbsc->physics_constraint) {
RB_constraint_set_enabled(rbsc->physics_constraint, false);
+
activateRigidbody(rbsc->mi1->rigidbody);
+
activateRigidbody(rbsc->mi2->rigidbody);
}
-
-
activateRigidbody(rbsc->mi1->rigidbody);
-
activateRigidbody(rbsc->mi2->rigidbody);
}
}
}
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs
