Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/bmesh')
-rw-r--r--source/blender/bmesh/operators/bmo_hull.c51
-rw-r--r--source/blender/bmesh/tools/bmesh_boolean.cc2
2 files changed, 27 insertions, 26 deletions
diff --git a/source/blender/bmesh/operators/bmo_hull.c b/source/blender/bmesh/operators/bmo_hull.c
index 84938084aec..4876a12a923 100644
--- a/source/blender/bmesh/operators/bmo_hull.c
+++ b/source/blender/bmesh/operators/bmo_hull.c
@@ -60,12 +60,12 @@ typedef struct HullTriangle {
/*************************** Hull Triangles ***************************/
static void hull_add_triangle(
- BMesh *bm, GSet *hull_triangles, BLI_mempool *pool, BMVert *v1, BMVert *v2, BMVert *v3)
+ BMesh *bm, BLI_mempool *hull_triangles, BMVert *v1, BMVert *v2, BMVert *v3)
{
HullTriangle *t;
int i;
- t = BLI_mempool_calloc(pool);
+ t = BLI_mempool_calloc(hull_triangles);
t->v[0] = v1;
t->v[1] = v2;
t->v[2] = v3;
@@ -75,7 +75,6 @@ static void hull_add_triangle(
BMO_vert_flag_disable(bm, t->v[i], HULL_FLAG_INTERIOR_ELE);
}
- BLI_gset_insert(hull_triangles, t);
normal_tri_v3(t->no, v1->co, v2->co, v3->co);
}
@@ -94,12 +93,13 @@ static BMFace *hull_find_example_face(BMesh *bm, BMEdge *e)
return NULL;
}
-static void hull_output_triangles(BMesh *bm, GSet *hull_triangles)
+static void hull_output_triangles(BMesh *bm, BLI_mempool *hull_triangles)
{
- GSetIterator iter;
+ BLI_mempool_iter iter;
+ BLI_mempool_iternew(hull_triangles, &iter);
+ HullTriangle *t;
- GSET_ITER (iter, hull_triangles) {
- HullTriangle *t = BLI_gsetIterator_getKey(&iter);
+ while ((t = BLI_mempool_iterstep(&iter))) {
int i;
if (!t->skip) {
@@ -198,18 +198,20 @@ static int hull_final_edges_lookup(HullFinalEdges *final_edges, BMVert *v1, BMVe
}
/* Used for checking whether a pre-existing edge lies on the hull */
-static HullFinalEdges *hull_final_edges(GSet *hull_triangles)
+static HullFinalEdges *hull_final_edges(BLI_mempool *hull_triangles)
{
HullFinalEdges *final_edges;
- GSetIterator iter;
final_edges = MEM_callocN(sizeof(HullFinalEdges), "HullFinalEdges");
final_edges->edges = BLI_ghash_ptr_new("final edges ghash");
final_edges->base_pool = BLI_mempool_create(sizeof(ListBase), 0, 128, BLI_MEMPOOL_NOP);
final_edges->link_pool = BLI_mempool_create(sizeof(LinkData), 0, 128, BLI_MEMPOOL_NOP);
- GSET_ITER (iter, hull_triangles) {
- HullTriangle *t = BLI_gsetIterator_getKey(&iter);
+ BLI_mempool_iter iter;
+ BLI_mempool_iternew(hull_triangles, &iter);
+ HullTriangle *t;
+
+ while ((t = BLI_mempool_iterstep(&iter))) {
LinkData *link;
int i;
@@ -250,12 +252,15 @@ static void hull_final_edges_free(HullFinalEdges *final_edges)
/**************************** Final Output ****************************/
-static void hull_remove_overlapping(BMesh *bm, GSet *hull_triangles, HullFinalEdges *final_edges)
+static void hull_remove_overlapping(BMesh *bm,
+ BLI_mempool *hull_triangles,
+ HullFinalEdges *final_edges)
{
- GSetIterator hull_iter;
+ BLI_mempool_iter iter;
+ BLI_mempool_iternew(hull_triangles, &iter);
+ HullTriangle *t;
- GSET_ITER (hull_iter, hull_triangles) {
- HullTriangle *t = BLI_gsetIterator_getKey(&hull_iter);
+ while ((t = BLI_mempool_iterstep(&iter))) {
BMIter bm_iter1, bm_iter2;
BMFace *f;
bool f_on_hull;
@@ -467,7 +472,7 @@ static BMVert **hull_verts_from_bullet(plConvexHull hull,
return hull_verts;
}
-static void hull_from_bullet(BMesh *bm, BMOperator *op, GSet *hull_triangles, BLI_mempool *pool)
+static void hull_from_bullet(BMesh *bm, BMOperator *op, BLI_mempool *hull_triangles)
{
int *fvi = NULL;
BLI_array_declare(fvi);
@@ -509,7 +514,7 @@ static void hull_from_bullet(BMesh *bm, BMOperator *op, GSet *hull_triangles, BL
fv[1] = hull_verts[fvi[j - 1]];
fv[2] = hull_verts[fvi[j]];
- hull_add_triangle(bm, hull_triangles, pool, fv[0], fv[1], fv[2]);
+ hull_add_triangle(bm, hull_triangles, fv[0], fv[1], fv[2]);
}
}
}
@@ -543,10 +548,9 @@ static bool hull_num_input_verts_is_ok(BMOperator *op)
void bmo_convex_hull_exec(BMesh *bm, BMOperator *op)
{
HullFinalEdges *final_edges;
- BLI_mempool *hull_pool;
+ BLI_mempool *hull_triangles;
BMElemF *ele;
BMOIter oiter;
- GSet *hull_triangles;
/* Verify that at least three verts in the input */
if (!hull_num_input_verts_is_ok(op)) {
@@ -569,10 +573,9 @@ void bmo_convex_hull_exec(BMesh *bm, BMOperator *op)
}
}
- hull_pool = BLI_mempool_create(sizeof(HullTriangle), 0, 128, BLI_MEMPOOL_NOP);
- hull_triangles = BLI_gset_ptr_new("hull_triangles");
+ hull_triangles = BLI_mempool_create(sizeof(HullTriangle), 0, 128, BLI_MEMPOOL_ALLOW_ITER);
- hull_from_bullet(bm, op, hull_triangles, hull_pool);
+ hull_from_bullet(bm, op, hull_triangles);
final_edges = hull_final_edges(hull_triangles);
@@ -590,9 +593,7 @@ void bmo_convex_hull_exec(BMesh *bm, BMOperator *op)
/* Convert hull triangles to BMesh faces */
hull_output_triangles(bm, hull_triangles);
- BLI_mempool_destroy(hull_pool);
-
- BLI_gset_free(hull_triangles, NULL);
+ BLI_mempool_destroy(hull_triangles);
hull_tag_unused(bm, op);
diff --git a/source/blender/bmesh/tools/bmesh_boolean.cc b/source/blender/bmesh/tools/bmesh_boolean.cc
index 929bc510672..39b425a41df 100644
--- a/source/blender/bmesh/tools/bmesh_boolean.cc
+++ b/source/blender/bmesh/tools/bmesh_boolean.cc
@@ -492,7 +492,7 @@ bool BM_mesh_boolean_knife(BMesh *UNUSED(bm),
const int UNUSED(nshapes),
const bool UNUSED(use_self),
const bool UNUSED(use_separate_all),
- const bool UNUSED(keep_boolean))
+ const bool UNUSED(keep_hidden))
{
UNUSED_VARS(looptris, test_fn);
return false;