[Bf-blender-cvs] [b87d10d4fe4] master: Better fix for rigid body not resimulating

Luca Rood noreply at git.blender.org
Tue Jul 4 10:59:48 CEST 2017


Commit: b87d10d4fe4df2d87d3acdd366f4bd5e2d1350fb
Author: Luca Rood
Date:   Tue Jul 4 10:57:57 2017 +0200
Branches: master
https://developer.blender.org/rBb87d10d4fe4df2d87d3acdd366f4bd5e2d1350fb

Better fix for rigid body not resimulating

Last fix only accounted for direct changes to the RB settings, but
failed for, say, object transformations. This fix accounts for any
change that might invalidate the RB cache.

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

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

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

diff --git a/source/blender/blenkernel/intern/rigidbody.c b/source/blender/blenkernel/intern/rigidbody.c
index 03977b2c9ae..c18366d1b8a 100644
--- a/source/blender/blenkernel/intern/rigidbody.c
+++ b/source/blender/blenkernel/intern/rigidbody.c
@@ -1517,7 +1517,6 @@ void BKE_rigidbody_cache_reset(RigidBodyWorld *rbw)
 {
 	if (rbw) {
 		rbw->pointcache->flag |= PTCACHE_OUTDATED;
-		rbw->ltime = rbw->pointcache->startframe;
 	}
 }
 
@@ -1580,6 +1579,10 @@ void BKE_rigidbody_do_simulation(Scene *scene, float ctime)
 	// RB_TODO deal with interpolated, old and baked results
 	bool can_simulate = (ctime == rbw->ltime + 1) && !(cache->flag & PTCACHE_BAKED);
 
+	if (cache->flag & PTCACHE_OUTDATED || cache->last_exact == 0) {
+		rbw->ltime = cache->startframe;
+	}
+
 	if (BKE_ptcache_read(&pid, ctime, can_simulate)) {
 		BKE_ptcache_validate(cache, (int)ctime);
 		return;




More information about the Bf-blender-cvs mailing list