[Bf-blender-cvs] [6c4c1fb] fracture_modifier: 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
Martin Felke
noreply at git.blender.org
Thu Jan 1 12:55:52 CET 2015
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);
}
}
}
More information about the Bf-blender-cvs
mailing list