55 for (i = 0; i < 3; i++) {
75 const BMEdge *e_iter = e_first;
87 static bool bm_vert_is_edge_select_any(
const BMVert *
v)
90 const BMEdge *e_iter, *e_first;
91 e_iter = e_first =
v->
e;
105 const BMEdge *e_iter, *e_first;
106 e_iter = e_first =
v->
e;
118 const BMLoop *l_iter = l_first;
121 while ((l_iter = l_iter->
radial_next) != l_first) {
130 static bool bm_edge_is_face_select_any(
const BMEdge *
e)
133 const BMLoop *l_iter, *l_first;
134 l_iter = l_first =
e->l;
139 }
while ((l_iter = l_iter->
radial_next) != l_first);
148 const BMLoop *l_iter, *l_first;
149 l_iter = l_first =
e->l;
154 }
while ((l_iter = l_iter->
radial_next) != l_first);
222 }
while ((l_iter = l_iter->
next) != l_first);
271 }
while ((l_iter = l_iter->
next) != l_first);
290 }
while ((l_iter = l_iter->
next) != l_first);
332 l_iter = l_first =
e->l;
335 }
while ((l_iter = l_iter->
radial_next) != l_first);
376 }
while ((l_iter = l_iter->
next) != l_first);
449 for (i = 0; i < 2; i++) {
490 }
while ((l_iter = l_iter->
next) != l_first);
511 }
while ((l_iter = l_iter->
next) != l_first);
522 }
while ((l_iter = l_iter->
next) != l_first);
530 }
while ((l_iter = l_iter->
next) != l_first);
539 }
while ((l_iter = l_iter->
next) != l_first);
656 const bool respecthide,
657 const bool test_for_enabled)
702 const bool respecthide)
710 const bool respecthide)
755 for (; ese; ese = ese->
prev) {
884 float vec[3] = {0.0f, 0.0f, 0.0f};
895 if (eve->no[0] < 0.5f) {
898 else if (eve->no[1] < 0.5f) {
908 else if (ese->htype ==
BM_EDGE) {
920 if (eed->
v2->
co[1] > eed->
v1->
co[1]) {
930 else if (ese->htype ==
BM_FACE) {
1011 ese_next = ese->
next;
1035 ese->
ele = ese_last->
ele;
1040 ese->
ele = ese_last->
ele;
1096 switch (ese->ele->head.htype) {
1111 BMElem *ele_dst = ese->ele;
1115 if (ele_dst_next ==
NULL) {
1118 ele_dst = ele_dst_next;
1120 if (
UNLIKELY(ele_dst == ese->ele)) {
1124 if (use_chain ==
false) {
1134 ese_next = ese->next;
1147 const bool respecthide,
1148 const bool overwrite,
1149 const char hflag_test)
1166 (respecthide ==
false) && (hflag_test == 0)) {
1169 for (i = 0; i < 3; i++) {
1174 for (; ele; ele = BM_iter_step(&iter)) {
1182 for (i = 0; i < 3; i++) {
1186 if (htype & flag_types[i]) {
1188 for (; ele; ele = BM_iter_step(&iter)) {
1199 else if (overwrite) {
1215 const bool respecthide,
1216 const bool overwrite,
1217 const char hflag_test)
1239 for (i = 0; i < 3; i++) {
1240 if (htype & flag_types[i]) {
1242 for (; ele; ele = BM_iter_step(&iter)) {
1254 else if (overwrite) {
1269 const bool respecthide)
1278 const bool respecthide)
1315 BMEdge *e_iter, *e_first;
1316 e_iter = e_first =
v->
e;
1320 const BMLoop *l_radial_iter, *l_radial_first;
1321 l_radial_iter = l_radial_first = e_iter->
l;
1324 }
while ((l_radial_iter = l_radial_iter->
radial_next) != l_radial_first);
1339 const BMLoop *l_iter, *l_first;
1340 l_iter = l_first =
e->l;
1343 }
while ((l_iter = l_iter->
radial_next) != l_first);
1375 }
while ((l_iter = l_iter->
next) != l_first);
1380 }
while ((l_iter = l_iter->
next) != l_first);
1390 }
while ((l_iter = l_iter->
next) != l_first);
1398 switch (head->
htype) {
void BLI_ghash_insert(GHash *gh, void *key, void *val)
GHash * BLI_ghash_ptr_new(const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void * BLI_ghash_lookup(GHash *gh, const void *key) ATTR_WARN_UNUSED_RESULT
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
void BLI_addhead(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_insertlinkafter(struct ListBase *listbase, void *vprevlink, void *vnewlink) ATTR_NONNULL(1)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void * BLI_findptr(const struct ListBase *listbase, const void *ptr, const int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE float normalize_v3(float r[3])
MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void add_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void cross_v3_v3v3(float r[3], const float a[3], const float b[3])
void mid_v3_v3v3(float r[3], const float a[3], const float b[3])
#define SCE_SELECT_VERTEX
Read Guarded memory(de)allocation.
#define BM_FACE_FIRST_LOOP(p)
#define BM_elem_flag_disable(ele, hflag)
#define BM_elem_flag_set(ele, hflag, val)
#define BM_elem_flag_test(ele, hflag)
#define BM_elem_flag_test_bool(ele, hflag)
#define BM_elem_flag_enable(ele, hflag)
#define BM_ITER_MESH(ele, iter, bm, itype)
#define BM_iter_new(iter, bm, itype, data)
ATTR_WARN_UNUSED_RESULT BMesh * bm
void BM_select_history_clear(BMesh *bm)
BMEdge * BM_mesh_active_edge_get(BMesh *bm)
static void vert_flush_hide_set(BMVert *v)
void _bm_elem_hide_set(BMesh *bm, BMHeader *head, const bool hide)
bool _bm_select_history_check(BMesh *bm, const BMHeader *ele)
void _bm_select_history_store_head_notest(BMesh *bm, BMHeader *ele)
void BM_vert_hide_set(BMVert *v, const bool hide)
void BM_mesh_elem_hflag_enable_all(BMesh *bm, const char htype, const char hflag, const bool respecthide)
static bool bm_edge_is_face_visible_any(const BMEdge *e)
void BM_mesh_select_mode_flush(BMesh *bm)
int BM_mesh_elem_hflag_count_disabled(BMesh *bm, const char htype, const char hflag, const bool respecthide)
void BM_mesh_select_mode_set(BMesh *bm, int selectmode)
void BM_face_select_set(BMesh *bm, BMFace *f, const bool select)
Select Face.
static bool bm_vert_is_edge_visible_any(const BMVert *v)
void BM_elem_select_set(BMesh *bm, BMElem *ele, const bool select)
void BM_mesh_select_flush(BMesh *bm)
bool _bm_select_history_remove(BMesh *bm, BMHeader *ele)
static void recount_totsels(BMesh *bm)
void _bm_select_history_store_head(BMesh *bm, BMHeader *ele)
void BM_mesh_select_mode_clean_ex(BMesh *bm, const short selectmode)
Select Mode Clean.
static bool bm_vert_is_edge_select_any_other(const BMVert *v, const BMEdge *e_first)
void _bm_select_history_store_after(BMesh *bm, BMEditSelection *ese_ref, BMHeader *ele)
static BMEditSelection * bm_select_history_create(BMHeader *ele)
static bool bm_edge_is_face_select_any_other(BMLoop *l_first)
void _bm_select_history_store_notest(BMesh *bm, BMHeader *ele)
GHash * BM_select_history_map_create(BMesh *bm)
void BM_mesh_select_mode_clean(BMesh *bm)
void BM_editselection_center(BMEditSelection *ese, float r_center[3])
void BM_vert_select_set(BMesh *bm, BMVert *v, const bool select)
Select Vert.
void BM_mesh_elem_hflag_disable_test(BMesh *bm, const char htype, const char hflag, const bool respecthide, const bool overwrite, const char hflag_test)
void _bm_select_history_store_after_notest(BMesh *bm, BMEditSelection *ese_ref, BMHeader *ele)
void BM_edge_select_set(BMesh *bm, BMEdge *e, const bool select)
Select Edge.
void BM_select_history_validate(BMesh *bm)
void BM_editselection_plane(BMEditSelection *ese, float r_plane[3])
void BM_edge_select_set_noflush(BMesh *bm, BMEdge *e, const bool select)
void BM_editselection_normal(BMEditSelection *ese, float r_normal[3])
void BM_mesh_deselect_flush(BMesh *bm)
static void edge_flush_hide_set(BMEdge *e)
void BM_edge_hide_set(BMEdge *e, const bool hide)
void BM_mesh_elem_hflag_disable_all(BMesh *bm, const char htype, const char hflag, const bool respecthide)
BMVert * BM_mesh_active_vert_get(BMesh *bm)
static int bm_mesh_flag_count(BMesh *bm, const char htype, const char hflag, const bool respecthide, const bool test_for_enabled)
void BM_mesh_active_face_set(BMesh *bm, BMFace *f)
void _bm_select_history_store(BMesh *bm, BMHeader *ele)
BMFace * BM_mesh_active_face_get(BMesh *bm, const bool is_sloppy, const bool is_selected)
void BM_select_history_merge_from_targetmap(BMesh *bm, GHash *vert_map, GHash *edge_map, GHash *face_map, const bool use_chain)
void BM_face_select_set_noflush(BMesh *bm, BMFace *f, const bool select)
bool BM_select_history_active_get(BMesh *bm, BMEditSelection *ese)
void BM_face_hide_set(BMFace *f, const bool hide)
void BM_mesh_select_mode_flush_ex(BMesh *bm, const short selectmode)
Select Mode Flush.
int BM_mesh_elem_hflag_count_enabled(BMesh *bm, const char htype, const char hflag, const bool respecthide)
void BM_mesh_elem_hflag_enable_test(BMesh *bm, const char htype, const char hflag, const bool respecthide, const bool overwrite, const char hflag_test)
BMElem * BM_mesh_active_elem_get(BMesh *bm)
#define BM_select_history_store_notest(bm, ele)
#define BM_select_history_store_head_notest(bm, ele)
#define BM_select_history_store_after_notest(bm, ese_ref, ele)
#define BM_select_history_check(bm, ele)
void BM_face_calc_center_median(const BMFace *f, float r_cent[3])
void BM_face_calc_tangent_auto(const BMFace *f, float r_tangent[3])
#define BM_ELEM_API_FLAG_DISABLE(element, f)
#define BM_ELEM_API_FLAG_TEST(element, f)
#define BM_ELEM_API_FLAG_ENABLE(element, f)
BLI_INLINE bool BM_edge_is_boundary(const BMEdge *e) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ATTR_WARN_UNUSED_RESULT const BMVert * v
BLI_INLINE BMEdge * bmesh_disk_edge_next(const BMEdge *e, const BMVert *v) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void *(* MEM_callocN)(size_t len, const char *str)
struct BMEditSelection * next
struct BMEditSelection * prev
struct BMLoop * radial_next
__forceinline const avxb select(const avxb &m, const avxb &t, const avxb &f)