Commit: a6b53d6892de071e4f2df95d17addb31db149f09
Author: Martin Felke
Date:   Fri Feb 20 12:57:07 2015 +0100
Branches: fracture_modifier
https://developer.blender.org/rBa6b53d6892de071e4f2df95d17addb31db149f09

fix: some performance optimization when rebuilding constraints on triggered 
objects (was calling unnecessary restoreKinematic() function in this case)

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

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

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

diff --git a/source/blender/blenkernel/intern/rigidbody.c 
b/source/blender/blenkernel/intern/rigidbody.c
index 06717b6..4fe3dfd 100644
--- a/source/blender/blenkernel/intern/rigidbody.c
+++ b/source/blender/blenkernel/intern/rigidbody.c
@@ -3292,7 +3292,7 @@ void BKE_rigidbody_cache_reset(RigidBodyWorld *rbw)
 {
        if (rbw) {
                rbw->pointcache->flag |= PTCACHE_OUTDATED;
-               restoreKinematic(rbw);
+               //restoreKinematic(rbw);
        }
 }
 
diff --git a/source/blender/modifiers/intern/MOD_fracture.c 
b/source/blender/modifiers/intern/MOD_fracture.c
index 67fce9c..815ba10 100644
--- a/source/blender/modifiers/intern/MOD_fracture.c
+++ b/source/blender/modifiers/intern/MOD_fracture.c
@@ -1243,6 +1243,18 @@ static int BM_calc_center_centroid(BMesh *bm, float 
cent[3], int tagged)
        return (bm->totface != 0);
 }
 
+static int DM_mesh_minmax(DerivedMesh *dm, float r_min[3], float r_max[3])
+{
+       MVert *v;
+       int i = 0;
+       for (i = 0; i < dm->numVertData; i++) {
+               v = CDDM_get_vert(dm, i);
+               minmax_v3v3_v3(r_min, r_max, v->co);
+       }
+
+       return (dm->numVertData != 0);
+}
+
 
 static int BM_mesh_minmax(BMesh *bm, float r_min[3], float r_max[3], int 
tagged)
 {
@@ -1939,11 +1951,11 @@ static void create_constraints(FractureModifierData 
*rmd)
        MeshIsland **mesh_islands = MEM_mallocN(sizeof(MeshIsland *), 
"mesh_islands");
        int count, i = 0;
 
-       if (rmd->visible_mesh && rmd->contact_dist == 0.0f) {
+       if (rmd->visible_mesh_cached && rmd->contact_dist == 0.0f) {
                /* extend contact dist to bbox max dimension here, in case we 
enter 0 */
                float min[3], max[3], dim[3];
                BoundBox *bb = BKE_boundbox_alloc_unit();
-               BM_mesh_minmax(rmd->visible_mesh, min, max, 0);
+               DM_mesh_minmax(rmd->visible_mesh_cached, min, max);
                BKE_boundbox_init_from_minmax(bb, min, max);
                bbox_dim(bb, dim);
                rmd->contact_dist = MAX3(dim[0], dim[1], dim[2]);
@@ -2636,6 +2648,9 @@ static DerivedMesh *doSimulate(FractureModifierData *fmd, 
Object *ob, DerivedMes
 
                start = PIL_check_seconds_timer();
 
+               create_constraints(fmd); /* check for actually creating the 
constraints inside*/
+
+#if 0
                if ((fmd->visible_mesh != NULL || fmd->visible_mesh_cached != 
NULL)  && (fmd->use_constraints)) {
                        if (fmd->visible_mesh == NULL) {    /* ugh, needed to 
build constraints... */
                                fmd->visible_mesh = 
DM_to_bmesh(fmd->visible_mesh_cached, true);
@@ -2651,6 +2666,7 @@ static DerivedMesh *doSimulate(FractureModifierData *fmd, 
Object *ob, DerivedMes
                                fmd->visible_mesh = NULL;
                        }
                }
+#endif
 
                fmd->refresh_constraints = false;

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

Reply via email to