Commit: 4b560f14d7b3418a54aa964e5d3cd3338cebb2c7
Author: Martin Felke
Date:   Tue Jun 13 22:37:36 2017 +0200
Branches: fracture_modifier
https://developer.blender.org/rB4b560f14d7b3418a54aa964e5d3cd3338cebb2c7

further fixes for external mode

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

M       source/blender/blenkernel/intern/fracture.c
M       source/blender/blenkernel/intern/rigidbody.c
M       source/blender/modifiers/intern/MOD_fracture.c

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

diff --git a/source/blender/blenkernel/intern/fracture.c 
b/source/blender/blenkernel/intern/fracture.c
index 876405c2889..9120554ec5b 100644
--- a/source/blender/blenkernel/intern/fracture.c
+++ b/source/blender/blenkernel/intern/fracture.c
@@ -3357,22 +3357,28 @@ RigidBodyShardCon 
*BKE_fracture_mesh_islands_connect(FractureModifierData *fmd,
 
        /* store constraints per meshisland too, to allow breaking percentage */
        if (mi1->participating_constraints == NULL) {
-               mi1->participating_constraints = 
MEM_callocN(sizeof(RigidBodyShardCon *), "part_constraints_mi1");
-               mi1->participating_constraint_count = 0;
+               mi1->participating_constraints = 
MEM_mallocN(sizeof(RigidBodyShardCon *), "part_constraints_mi1");
+               mi1->participating_constraints[0] = rbsc;
+               mi1->participating_constraint_count = 1;
+       }
+       else
+       {
+               mi1->participating_constraints = 
MEM_reallocN(mi1->participating_constraints, sizeof(RigidBodyShardCon *) * 
(mi1->participating_constraint_count + 1));
+               
mi1->participating_constraints[mi1->participating_constraint_count] = rbsc;
+               mi1->participating_constraint_count++;
        }
-
-       mi1->participating_constraints = 
MEM_reallocN(mi1->participating_constraints, sizeof(RigidBodyShardCon *) * 
(mi1->participating_constraint_count + 1));
-       mi1->participating_constraints[mi1->participating_constraint_count] = 
rbsc;
-       mi1->participating_constraint_count++;
 
        if (mi2->participating_constraints == NULL) {
-               mi2->participating_constraints = 
MEM_callocN(sizeof(RigidBodyShardCon *), "part_constraints_mi2");
-               mi2->participating_constraint_count = 0;
+               mi2->participating_constraints = 
MEM_mallocN(sizeof(RigidBodyShardCon *), "part_constraints_mi2");
+               mi2->participating_constraints[0] = rbsc;
+               mi2->participating_constraint_count = 1;
+       }
+       else
+       {
+               mi2->participating_constraints = 
MEM_reallocN(mi2->participating_constraints, sizeof(RigidBodyShardCon *) * 
(mi2->participating_constraint_count + 1));
+               
mi2->participating_constraints[mi2->participating_constraint_count] = rbsc;
+               mi2->participating_constraint_count++;
        }
-
-       mi2->participating_constraints = 
MEM_reallocN(mi2->participating_constraints, sizeof(RigidBodyShardCon *) * 
(mi2->participating_constraint_count + 1));
-       mi2->participating_constraints[mi2->participating_constraint_count] = 
rbsc;
-       mi2->participating_constraint_count++;
 
        return rbsc;
 }
diff --git a/source/blender/blenkernel/intern/rigidbody.c 
b/source/blender/blenkernel/intern/rigidbody.c
index 67fe6021a69..a0949e3c1d7 100644
--- a/source/blender/blenkernel/intern/rigidbody.c
+++ b/source/blender/blenkernel/intern/rigidbody.c
@@ -2986,7 +2986,7 @@ RigidBodyShardCon 
*BKE_rigidbody_create_shard_constraint(Scene *scene, short typ
        rbc->flag &= ~RBC_FLAG_DISABLE_COLLISIONS;
        rbc->flag |= RBC_FLAG_USE_BREAKING;
 
-       rbc->breaking_threshold = 1.0f; /* no good default here, just use 10 
for now */
+       rbc->breaking_threshold = 10.0f; /* no good default here, just use 10 
for now */
        rbc->num_solver_iterations = 10; /* 10 is Bullet default */
 
        rbc->limit_lin_x_lower = -1.0f;
diff --git a/source/blender/modifiers/intern/MOD_fracture.c 
b/source/blender/modifiers/intern/MOD_fracture.c
index 61b5bf1847b..bd44b3fa737 100644
--- a/source/blender/modifiers/intern/MOD_fracture.c
+++ b/source/blender/modifiers/intern/MOD_fracture.c
@@ -5062,16 +5062,33 @@ static DerivedMesh *applyModifier(ModifierData *md, 
Object *ob,
                if (!fmd->visible_mesh_cached)
                {
                        BKE_fracture_update_visual_mesh(fmd, ob, true);
+                       fmd->refresh_autohide = true;
+
+                       if (fmd->face_pairs != NULL) {
+                               BLI_ghash_free(fmd->face_pairs, NULL, NULL);
+                               fmd->face_pairs = NULL;
+                       }
                }
 
                if (fmd->visible_mesh_cached) {
 
                        if (fmd->refresh_autohide) {
-                               do_refresh_autohide(fmd, ob);
 
                                if (fmd->autohide_dist > 0) {
-                                       do_refresh_automerge(fmd);
+
+                                       if (!fmd->face_pairs)
+                                       {
+                                               fmd->face_pairs = 
BLI_ghash_int_new("face_pairs");
+                                       }
+
+                                       make_face_pairs(fmd, 
fmd->visible_mesh_cached, ob);
+
+
+                                       free_shared_verts(&fmd->shared_verts);
+                                       make_shared_vert_groups(fmd, 
fmd->visible_mesh_cached, &fmd->shared_verts);
                                }
+
+                               fmd->refresh_autohide = false;
                        }
 
                        do_reset_automerge(fmd);

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

Reply via email to