Commit: 1eba69494557103479da4824e3d3c3604e028011
Author: Martin Felke
Date:   Fri Nov 30 01:48:05 2018 +0100
Branches: temp-fracture-modifier-2.8
https://developer.blender.org/rB1eba69494557103479da4824e3d3c3604e028011

attempt for fixing fake cloth + dynamic fracture

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

M       source/blender/blenkernel/intern/fracture.c
M       source/blender/blenkernel/intern/fracture_prefractured.c
M       source/blender/blenkernel/intern/fracture_rigidbody.c
M       source/blender/blenkernel/intern/fracture_util.c

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

diff --git a/source/blender/blenkernel/intern/fracture.c 
b/source/blender/blenkernel/intern/fracture.c
index 356fb7ae775..218e410e457 100644
--- a/source/blender/blenkernel/intern/fracture.c
+++ b/source/blender/blenkernel/intern/fracture.c
@@ -1226,7 +1226,7 @@ static void do_marking(FractureModifierData *fmd, Mesh 
*result)
 void BKE_fracture_copy_customdata(CustomData* src, CustomData* 
dst,CustomDataMask mask, int src_ofs, int dst_ofs,
                               int copyelem, int totelem)
 {
-       //CustomData_copy_data(src, dst, src_ofs, dst_ofs, copyelem);
+
        CustomDataLayer *layer;
        int i;
        for (i = 0; i < src->totlayer; i++)
@@ -1288,7 +1288,7 @@ void BKE_fracture_clear_cache(FractureModifierData* fmd, 
Scene *scene)
                        mi->rots = MEM_callocN(sizeof (float) * 4 *frame, 
"mi->rots");
                        mi->vels = MEM_callocN(sizeof (float) * 3 *frame, 
"mi->vels");
                        mi->aves = MEM_callocN(sizeof (float) * 3 *frame, 
"mi->aves");
-                       mi->fractured = false;
+                       //mi->fractured = false;
 
                        if (!mi->rigidbody->shared->physics_object)
                        {
@@ -2677,7 +2677,7 @@ void BKE_fracture_do(FractureModifierData *fmd, Shard 
*mi, Object *obj, Depsgrap
                                        result->id = mi->id + j;
                                        result->rigidbody->flag |= 
RBO_FLAG_NEEDS_VALIDATE;
                                        result->rigidbody->flag |= 
RBO_FLAG_NEEDS_RESHAPE;
-                                       
BKE_rigidbody_validate_sim_shard(scene->rigidbody_world, result, obj, fmd, 
true, true, size);
+                                       
//BKE_rigidbody_validate_sim_shard(scene->rigidbody_world, result, obj, fmd, 
true, true, size);
 
                                        j++;
                                }
diff --git a/source/blender/blenkernel/intern/fracture_prefractured.c 
b/source/blender/blenkernel/intern/fracture_prefractured.c
index 2a3e2660976..9d111972a2d 100644
--- a/source/blender/blenkernel/intern/fracture_prefractured.c
+++ b/source/blender/blenkernel/intern/fracture_prefractured.c
@@ -246,6 +246,7 @@ Mesh* BKE_fracture_apply(FractureModifierData *fmd, Object 
*ob, Mesh *me_orig, D
                        fmd->flag |= MOD_FRACTURE_USE_DYNAMIC;
                }
 
+
                fmd->shared->flag |= MOD_FRACTURE_REFRESH_CONSTRAINTS;
                fmd->shared->flag |= MOD_FRACTURE_REFRESH_AUTOHIDE;
        }
@@ -255,7 +256,7 @@ Mesh* BKE_fracture_apply(FractureModifierData *fmd, Object 
*ob, Mesh *me_orig, D
                BKE_fracture_dynamic_do(fmd, ob, scene, depsgraph, bmain);
 
                fmd->shared->flag &= ~ MOD_FRACTURE_REFRESH_DYNAMIC;
-               fmd->shared->flag |= MOD_FRACTURE_REFRESH_AUTOHIDE;
+               //fmd->shared->flag |= MOD_FRACTURE_REFRESH_AUTOHIDE;
        }
 
        if ((fmd->flag & MOD_FRACTURE_USE_ANIMATED_MESH) && fmd->anim_mesh_ob)
diff --git a/source/blender/blenkernel/intern/fracture_rigidbody.c 
b/source/blender/blenkernel/intern/fracture_rigidbody.c
index 33375c364fa..b12c2d452fa 100644
--- a/source/blender/blenkernel/intern/fracture_rigidbody.c
+++ b/source/blender/blenkernel/intern/fracture_rigidbody.c
@@ -2134,8 +2134,9 @@ bool BKE_rigidbody_modifier_update(Scene* scene, Object* 
ob, RigidBodyWorld *rbw
                                }
 
                                BKE_rigidbody_shard_validate(rbw, is_empty ? 
NULL : mi, ob, fmd, do_rebuild,
-                                                                               
         fmd->flag & MOD_FRACTURE_USE_DYNAMIC, bbsize, frame);
+                                                                               
         ((fmd->flag & MOD_FRACTURE_USE_DYNAMIC) && mi->fractured), bbsize, 
frame);
 
+                               mi->fractured = false;
                                mi->constraint_index = mi->id;
 
                        }
@@ -2214,12 +2215,12 @@ bool BKE_rigidbody_modifier_update(Scene* scene, 
Object* ob, RigidBodyWorld *rbw
                        else if (rbsc->flag & RBC_FLAG_NEEDS_VALIDATE && 
!(fmd->flag & MOD_FRACTURE_USE_DYNAMIC)) {
                                
BKE_rigidbody_validate_sim_shard_constraint(rbw, fmd, ob, rbsc, false);
                        }
-                       else if (fmd->flag & MOD_FRACTURE_USE_DYNAMIC) {
+                       else if ((fmd->flag & MOD_FRACTURE_USE_DYNAMIC)) {
                                if (rbsc->mi1 && rbsc->mi2) {
                                        if 
(!BKE_fracture_meshisland_check_frame(fmd, rbsc->mi1, frame) &&
                                            
!BKE_fracture_meshisland_check_frame(fmd, rbsc->mi2, frame))
                                        {
-                                               rbsc->flag |= 
RBC_FLAG_NEEDS_VALIDATE;
+                                               //rbsc->flag |= 
RBC_FLAG_NEEDS_VALIDATE;
                                                
BKE_rigidbody_validate_sim_shard_constraint(rbw, fmd, ob, rbsc, false);
                                        }
                                }
diff --git a/source/blender/blenkernel/intern/fracture_util.c 
b/source/blender/blenkernel/intern/fracture_util.c
index c1e152bb38e..d8b130634d4 100644
--- a/source/blender/blenkernel/intern/fracture_util.c
+++ b/source/blender/blenkernel/intern/fracture_util.c
@@ -400,16 +400,25 @@ Mesh* BKE_fracture_mesh_boolean(Mesh* geometry, Mesh* 
shard, Object* obj, Boolea
 {
        Mesh* result = NULL;
 
+#if 0
+       int totvert = MIN2(shard->totvert, geometry->totvert);
+       int totedge = MIN2(shard->totedge, geometry->totedge);
+       int totloop = MIN2(shard->totloop, geometry->totloop);
+       int totpoly = MIN2(shard->totpoly, geometry->totpoly);
+#endif
+
        if (ctx->use_fractal == false)
        {
                uv_unwrap_raw_geometry(shard, ctx->uv_layer, true);
                do_set_inner_material(shard, ctx->inner_material_index, obj);
        }
 
-       BKE_fracture_copy_customdata(&geometry->vdata, &shard->vdata, 
CD_MASK_ISLAND, 0, 0, shard->totvert, shard->totvert);
-       BKE_fracture_copy_customdata(&geometry->edata, &shard->edata, 
CD_MASK_ISLAND, 0, 0, shard->totedge, shard->totedge);
-       BKE_fracture_copy_customdata(&geometry->ldata, &shard->ldata, 
CD_MASK_ISLAND, 0, 0, shard->totloop, shard->totloop);
-       BKE_fracture_copy_customdata(&geometry->pdata, &shard->pdata, 
CD_MASK_ISLAND, 0, 0, shard->totpoly, shard->totpoly);
+#if 0
+       BKE_fracture_copy_customdata(&geometry->vdata, &shard->vdata, 
CD_MASK_ISLAND, 0, 0, totvert, totvert);
+       BKE_fracture_copy_customdata(&geometry->edata, &shard->edata, 
CD_MASK_ISLAND, 0, 0, totedge, totedge);
+       BKE_fracture_copy_customdata(&geometry->ldata, &shard->ldata, 
CD_MASK_ISLAND, 0, 0, totloop, totloop);
+       BKE_fracture_copy_customdata(&geometry->pdata, &shard->pdata, 
CD_MASK_ISLAND, 0, 0, totpoly, totpoly);
+#endif
 
        result = BKE_boolean_operation(geometry, obj, shard, obj, 
ctx->operation, ctx->thresh, NULL);
        /*0 == intersection, 2 == difference*/

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to