[Bf-blender-cvs] [fe4909e] fracture_modifier: tiny fix, forgot to assign ids to meshislands in splitshards to island mode
Martin Felke
noreply at git.blender.org
Mon Oct 26 15:37:20 CET 2015
Commit: fe4909e752ae243c25aa5d5540002b93b1ef7d2e
Author: Martin Felke
Date: Mon Oct 26 14:43:36 2015 +0100
Branches: fracture_modifier
https://developer.blender.org/rBfe4909e752ae243c25aa5d5540002b93b1ef7d2e
tiny fix, forgot to assign ids to meshislands in splitshards to island mode
===================================================================
M source/blender/modifiers/intern/MOD_fracture.c
===================================================================
diff --git a/source/blender/modifiers/intern/MOD_fracture.c b/source/blender/modifiers/intern/MOD_fracture.c
index ada9788..fb28bb6e 100644
--- a/source/blender/modifiers/intern/MOD_fracture.c
+++ b/source/blender/modifiers/intern/MOD_fracture.c
@@ -1537,7 +1537,7 @@ static int BM_mesh_minmax(BMesh *bm, float r_min[3], float r_max[3], int tagged)
return (bm->totvert != 0);
}
-static void do_shard_to_island(FractureModifierData *fmd, BMesh* bm_new)
+static int do_shard_to_island(FractureModifierData *fmd, BMesh* bm_new)
{
DerivedMesh *dmtemp;
Shard *s;
@@ -1558,7 +1558,11 @@ static void do_shard_to_island(FractureModifierData *fmd, BMesh* bm_new)
dmtemp->needsFree = 1;
dmtemp->release(dmtemp);
dmtemp = NULL;
+
+ return id;
}
+
+ return -1;
}
static void do_rigidbody(FractureModifierData *fmd, MeshIsland* mi, Object* ob, DerivedMesh *orig_dm, short rb_type, int i)
@@ -1610,7 +1614,7 @@ static void do_fix_normals(FractureModifierData *fmd, MeshIsland *mi)
}
static float do_setup_meshisland(FractureModifierData *fmd, Object *ob, int totvert, float centroid[3],
- BMVert **verts, float *vertco, short *vertno, BMesh **bm_new, DerivedMesh *orig_dm)
+ BMVert **verts, float *vertco, short *vertno, BMesh **bm_new, DerivedMesh *orig_dm, int id)
{
MeshIsland *mi;
DerivedMesh *dm;
@@ -1648,6 +1652,7 @@ static float do_setup_meshisland(FractureModifierData *fmd, Object *ob, int totv
mi->particle_index = -1;
mi->thresh_weight = 0;
+ mi->id = id;
mi->vertices = verts; /*those are temporary only !!! */
mi->vertco = MEM_mallocN(sizeof(float) * 3 * totvert, "mi->vertco");
memcpy(mi->vertco, vertco, 3 * totvert * sizeof(float));
@@ -1705,6 +1710,7 @@ static float mesh_separate_tagged(FractureModifierData *fmd, Object *ob, BMVert
BMesh *bm_old = bm_work;
float centroid[3];
float vol;
+ int id;
BMVert *v;
BMIter iter;
@@ -1731,14 +1737,14 @@ static float mesh_separate_tagged(FractureModifierData *fmd, Object *ob, BMVert
BM_calc_center_centroid(bm_new, centroid, false);
BM_mesh_elem_index_ensure(bm_new, BM_VERT | BM_EDGE | BM_FACE);
- do_shard_to_island(fmd, bm_new);
+ id = do_shard_to_island(fmd, bm_new);
BM_ITER_MESH (v, &iter, bm_new, BM_VERTS_OF_MESH) {
/* eliminate centroid in vertex coords */
sub_v3_v3(v->co, centroid);
}
- vol = do_setup_meshisland(fmd, ob, v_count, centroid, v_tag, startco, startno, &bm_new, orig_dm);
+ vol = do_setup_meshisland(fmd, ob, v_count, centroid, v_tag, startco, startno, &bm_new, orig_dm, id);
/* deselect loose data - this used to get deleted,
* we could de-select edges and verts only, but this turns out to be less complicated
More information about the Bf-blender-cvs
mailing list