Commit: eb45c12ef09af4898106967b7fe396ae17057354
Author: Martin Felke
Date:   Thu Oct 13 20:10:52 2016 +0200
Branches: fracture_modifier
https://developer.blender.org/rBeb45c12ef09af4898106967b7fe396ae17057354

dynamic fracture, fix for passive shards... dynamic cache was not used at all 
for it

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

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

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

diff --git a/source/blender/blenkernel/intern/pointcache.c 
b/source/blender/blenkernel/intern/pointcache.c
index 7453f39..ede2ed2 100644
--- a/source/blender/blenkernel/intern/pointcache.c
+++ b/source/blender/blenkernel/intern/pointcache.c
@@ -1320,9 +1320,9 @@ static int  ptcache_rigidbody_write(int index, void 
*rb_v, void **data, int cfra
        ob = rbw->objects[rbw->cache_offset_map[index]];
        fmd = (FractureModifierData*)modifiers_findByType(ob, 
eModifierType_Fracture);
 
-       if (rbo && rbo->type == RBO_TYPE_ACTIVE && rbo->physics_object)
+       if (rbo && rbo->physics_object)
        {
-               if (!fmd || fmd->fracture_mode != MOD_FRACTURE_DYNAMIC)
+               if ((!fmd || fmd->fracture_mode != MOD_FRACTURE_DYNAMIC) && 
rbo->type == RBO_TYPE_ACTIVE)
                {
 
 #ifdef WITH_BULLET
@@ -1389,7 +1389,7 @@ static void ptcache_rigidbody_read(int index, void *rb_v, 
void **data, float cfr
 
        ob = rbw->objects[rbw->cache_offset_map[index]];
        fmd = (FractureModifierData*)modifiers_findByType(ob, 
eModifierType_Fracture);
-       if (!fmd || fmd->fracture_mode != MOD_FRACTURE_DYNAMIC)
+       if (!fmd || (fmd && fmd->fracture_mode != MOD_FRACTURE_DYNAMIC))
        {
                if (rbo && rbo->type == RBO_TYPE_ACTIVE) {
                        if (old_data) {
@@ -1404,7 +1404,7 @@ static void ptcache_rigidbody_read(int index, void *rb_v, 
void **data, float cfr
        }
        else if (fmd && fmd->fracture_mode == MOD_FRACTURE_DYNAMIC)
        {
-               if (rbo && rbo->type == RBO_TYPE_ACTIVE)
+               if (rbo /*&& rbo->type == RBO_TYPE_ACTIVE*/)
                {
                        //damn, slow listbase based lookup
                        //TODO, need to speed this up.... array, hash ?
@@ -1455,7 +1455,7 @@ static void ptcache_rigidbody_interpolate(int index, void 
*rb_v, void **data, fl
        ob = rbw->objects[rbw->cache_offset_map[index]];
        fmd = (FractureModifierData*)modifiers_findByType(ob, 
eModifierType_Fracture);
 
-       if (rbo->type == RBO_TYPE_ACTIVE) {
+       if (rbo->type == RBO_TYPE_ACTIVE || (fmd && fmd->fracture_mode == 
MOD_FRACTURE_DYNAMIC)) {
 
                copy_v3_v3(keys[1].co, rbo->pos);
                copy_qt_qt(keys[1].rot, rbo->orn);
diff --git a/source/blender/blenkernel/intern/rigidbody.c 
b/source/blender/blenkernel/intern/rigidbody.c
index 7bb4258..60ee9c0 100644
--- a/source/blender/blenkernel/intern/rigidbody.c
+++ b/source/blender/blenkernel/intern/rigidbody.c
@@ -4127,7 +4127,9 @@ static bool do_sync_modifier(ModifierData *md, Object 
*ob, RigidBodyWorld *rbw,
                                        BKE_rigidbody_update_cell(mi, ob, 
rbo->pos, rbo->orn, fmd, (int)ctime);
                                }
 #endif
-                               BKE_rigidbody_update_cell(mi, ob, rbo->pos, 
rbo->orn, fmd, (int)ctime);
+                               if (rbo->type == RBO_TYPE_ACTIVE || rbo->flag & 
RBO_FLAG_KINEMATIC) {
+                                       BKE_rigidbody_update_cell(mi, ob, 
rbo->pos, rbo->orn, fmd, (int)ctime);
+                               }
                        }
 
                        copy_m4_m4(fmd->passive_parent_mat, ob->obmat);

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to