From f52e31a46dc16275a31cb36d85d09fdf1a675a65 Mon Sep 17 00:00:00 2001 From: Andrew Hale Date: Mon, 20 Aug 2018 13:23:32 +1000 Subject: Fix BMesh edge_bisect, edge_percent being ignored Also fix float/int/bool access methods --- source/blender/bmesh/intern/bmesh_operator_api_inline.h | 6 +++--- source/blender/bmesh/operators/bmo_subdivide.c | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'source/blender/bmesh') diff --git a/source/blender/bmesh/intern/bmesh_operator_api_inline.h b/source/blender/bmesh/intern/bmesh_operator_api_inline.h index eb1c161f19d..a453cfa1769 100644 --- a/source/blender/bmesh/intern/bmesh_operator_api_inline.h +++ b/source/blender/bmesh/intern/bmesh_operator_api_inline.h @@ -168,7 +168,7 @@ BLI_INLINE float BMO_slot_map_float_get(BMOpSlot *slot, const void *element) data = BMO_slot_map_data_get(slot, element); if (data) { - return **(float **)data; + return *(float *)data; } else { return 0.0f; @@ -183,7 +183,7 @@ BLI_INLINE int BMO_slot_map_int_get(BMOpSlot *slot, const void *element) data = BMO_slot_map_data_get(slot, element); if (data) { - return **(int **)data; + return *(int *)data; } else { return 0; @@ -198,7 +198,7 @@ BLI_INLINE bool BMO_slot_map_bool_get(BMOpSlot *slot, const void *element) data = BMO_slot_map_data_get(slot, element); if (data) { - return **(bool **)data; + return *(bool *)data; } else { return false; diff --git a/source/blender/bmesh/operators/bmo_subdivide.c b/source/blender/bmesh/operators/bmo_subdivide.c index 90cbe9a5d76..c8ba2134a73 100644 --- a/source/blender/bmesh/operators/bmo_subdivide.c +++ b/source/blender/bmesh/operators/bmo_subdivide.c @@ -1363,6 +1363,9 @@ void bmo_bisect_edges_exec(BMesh *bm, BMOperator *op) bmo_subd_init_shape_info(bm, ¶ms); + /* tag edges in map */ + BMO_slot_map_to_flag(bm, op->slots_in, "edge_percents", BM_EDGE, EDGE_PERCENT); + /* go through and split edges */ BMO_ITER (e, &siter, op->slots_in, "edges", BM_EDGE) { bm_subdivide_multicut(bm, e, ¶ms, e->v1, e->v2); -- cgit v1.2.3