static void partialvis_update_bmesh_verts(BMesh *bm, GSet *verts, PartialVisAction action, PartialVisArea area, float planes[4][4], bool *any_changed, bool *any_visible) { GSetIterator gs_iter; GSET_ITER (gs_iter, verts) { BMVert *v = BLI_gsetIterator_getKey(&gs_iter); float *vmask = CustomData_bmesh_get(&bm->vdata, v->head.data, CD_PAINT_MASK); /* hide vertex if in the hide volume */ if (is_effected(area, planes, v->co, *vmask)) { if (action == PARTIALVIS_HIDE) BM_elem_flag_enable(v, BM_ELEM_HIDDEN); else BM_elem_flag_disable(v, BM_ELEM_HIDDEN); (*any_changed) = true; } if (!BM_elem_flag_test(v, BM_ELEM_HIDDEN)) (*any_visible) = true; }
static void vert_dissolve_add( struct ISectState *s, BMVert *v) { BLI_assert(v->head.htype == BM_VERT); BLI_assert(!BM_elem_flag_test(v, BM_ELEM_TAG)); BLI_assert(BLI_linklist_index(s->vert_dissolve, v) == -1); BM_elem_flag_enable(v, BM_ELEM_TAG); BLI_linklist_prepend_arena(&s->vert_dissolve, v, s->mem_arena); }