[Bf-blender-cvs] [d84f5595552] blender-v2.79-release: Fix T52374: Changes of rigid body related settings during simulation will break the simulation
Sergej Reich
noreply at git.blender.org
Fri Sep 8 12:08:10 CEST 2017
Commit: d84f55955526748a1147d4513252544f9527a3ad
Author: Sergej Reich
Date: Tue Sep 5 07:12:30 2017 +0200
Branches: blender-v2.79-release
https://developer.blender.org/rBd84f55955526748a1147d4513252544f9527a3ad
Fix T52374: Changes of rigid body related settings during simulation will break the simulation
Revert 9cd6b03, 3edc8c1, b87d10d and do a better fix for T50230.
===================================================================
M source/blender/blenkernel/intern/rigidbody.c
===================================================================
diff --git a/source/blender/blenkernel/intern/rigidbody.c b/source/blender/blenkernel/intern/rigidbody.c
index e8c0cf53d0b..c251e5b5d78 100644
--- a/source/blender/blenkernel/intern/rigidbody.c
+++ b/source/blender/blenkernel/intern/rigidbody.c
@@ -1600,8 +1600,12 @@ void BKE_rigidbody_do_simulation(Scene *scene, float ctime)
BKE_ptcache_id_time(&pid, scene, ctime, &startframe, &endframe, NULL);
cache = rbw->pointcache;
+ if (ctime <= startframe) {
+ rbw->ltime = startframe;
+ return;
+ }
/* make sure we don't go out of cache frame range */
- if (ctime > endframe) {
+ else if (ctime > endframe) {
ctime = endframe;
}
@@ -1615,12 +1619,9 @@ 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)) {
+ if (BKE_ptcache_read(&pid, ctime, can_simulate) == PTCACHE_READ_EXACT) {
BKE_ptcache_validate(cache, (int)ctime);
+ rbw->ltime = ctime;
return;
}
More information about the Bf-blender-cvs
mailing list