Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Felke <martin.felke@googlemail.com>2019-01-11 16:21:49 +0300
committerMartin Felke <martin.felke@googlemail.com>2019-01-11 16:21:49 +0300
commit74d4e4c4435492008d39cfe5055d75411530e4b2 (patch)
treef40cb7037972fd07c019d5b1ea435d09586c475c
parent8df4ac8a848c5189b31003dfe3e02242ae57afb4 (diff)
pull animated bind update calls out of loop
the function does a loop on its own (over meshislands in fm)
-rw-r--r--source/blender/blenkernel/intern/rigidbody.c29
1 files changed, 14 insertions, 15 deletions
diff --git a/source/blender/blenkernel/intern/rigidbody.c b/source/blender/blenkernel/intern/rigidbody.c
index ab47a101d84..0c7e93ffbc0 100644
--- a/source/blender/blenkernel/intern/rigidbody.c
+++ b/source/blender/blenkernel/intern/rigidbody.c
@@ -2314,14 +2314,9 @@ void BKE_rigidbody_aftertrans_update(Object *ob, float loc[3], float rot[3], flo
{
rbo = mi->rigidbody;
do_reset_rigidbody(rbo, ob, mi, loc, rot, quat, rotAxis, rotAngle);
+
if (rbo->flag & RBO_FLAG_KINEMATIC)
{
-
- if (rmd->use_animated_mesh && rmd->anim_mesh_ob)
- {
- BKE_read_animated_loc_rot(rmd, ob, false);
- }
-
rigidbody_passive_fake_parenting(rmd, ob, rbo, imat);
}
else
@@ -2330,6 +2325,11 @@ void BKE_rigidbody_aftertrans_update(Object *ob, float loc[3], float rot[3], flo
}
}
+ if (rmd->use_animated_mesh && rmd->anim_mesh_ob)
+ {
+ BKE_read_animated_loc_rot(rmd, ob, false);
+ }
+
//then update origmat
copy_m4_m4(rmd->origmat, ob->obmat);
}
@@ -5251,7 +5251,6 @@ static bool do_update_modifier(Scene* scene, Object* ob, RigidBodyWorld *rbw, bo
BKE_object_where_is_calc(scene, ob);
fmd->constraint_island_count = 1;
-#if 0
if ((ob->rigidbody_object && (ob->rigidbody_object->flag & RBO_FLAG_KINEMATIC) //&&
/*fmd->fracture_mode == MOD_FRACTURE_PREFRACTURED*/)) {
@@ -5260,7 +5259,6 @@ static bool do_update_modifier(Scene* scene, Object* ob, RigidBodyWorld *rbw, bo
BKE_read_animated_loc_rot(fmd, ob, false);
}
}
-#endif
for (mi = fmd->meshIslands.first; mi; mi = mi->next) {
if (mi->rigidbody == NULL) {
@@ -5534,6 +5532,14 @@ static bool do_sync_modifier(ModifierData *md, Object *ob, RigidBodyWorld *rbw,
invert_m4_m4(imat, fmd->passive_parent_mat);
invert_m4_m4(ob->imat, ob->obmat);
+ if ((ob->rigidbody_object && (ob->rigidbody_object->flag & RBO_FLAG_KINEMATIC)))
+ {
+ if (fmd->use_animated_mesh && fmd->anim_mesh_ob)
+ {
+ BKE_read_animated_loc_rot(fmd, ob, false);
+ }
+ }
+
for (mi = fmd->meshIslands.first; mi; mi = mi->next) {
rbo = mi->rigidbody;
@@ -5551,13 +5557,6 @@ static bool do_sync_modifier(ModifierData *md, Object *ob, RigidBodyWorld *rbw,
}
}
#endif
- if ((ob->rigidbody_object && (ob->rigidbody_object->flag & RBO_FLAG_KINEMATIC)))
- {
- if (fmd->use_animated_mesh && fmd->anim_mesh_ob)
- {
- BKE_read_animated_loc_rot(fmd, ob, false);
- }
- }
rigidbody_passive_fake_parenting(fmd, ob, rbo, imat);
}