42 MPoly *polys, *mp_orig;
43 const int *index_array =
nullptr;
63 if (ob_eval ==
nullptr) {
71 if (me_orig !=
nullptr && me_eval !=
nullptr && me_orig->
totpoly == me->
totpoly) {
73 for (
int i = 0; i < me->
totpoly; i++) {
78 if (me_eval->mpoly == me_orig->
mpoly) {
83 polys = me_eval->mpoly;
84 totpoly = me_eval->totpoly;
87 for (
int i = 0; i < totpoly; i++) {
90 mp_orig = me->
mpoly + index_array[i];
119 if (me ==
nullptr || me->
totpoly == 0) {
123 for (
int i = 0; i < me->
totpoly; i++) {
144 if (me ==
nullptr || me->
totpoly == 0) {
148 for (
int i = 0; i < me->
totpoly; i++) {
171 if (index != (
uint)-1) {
179 for (
int i = 0; i < me->
totpoly; i++) {
195 for (
int i = 0; i < me->
totpoly; i++) {
225 for (
int i = 0; i < me->
totpoly; i++) {
240 if (me ==
nullptr || me->
totpoly == 0) {
265 for (
int i = 0; i < me->
totpoly; i++) {
274 bool changed =
false;
276 for (
int i = 0; i < me->
totpoly; i++) {
311 float vec[3], bmat[3][3];
321 for (
int i = 0; i < me->
totpoly; i++) {
345 MPoly *mpoly_sel =
nullptr;
347 bool changed =
false;
354 if (index < me->totpoly) {
355 mpoly_sel = me->
mpoly + index;
366 else if (found ||
params->deselect_all) {
409 return changed || found;
417 const int *index_array =
nullptr;
429 if (me_eval ==
nullptr) {
435 mvert_eval = me_eval->
mvert;
442 for (i = 0; i < totvert; i++,
mv++) {
443 orig_index = index_array[i];
450 for (i = 0; i < totvert; i++,
mv++) {
474 for (
int i = 0; i < me->
totvert; i++) {
483 bool changed =
false;
484 for (
int i = 0; i < me->
totvert; i++) {
531 if (me ==
nullptr || me->
dvert ==
nullptr) {
539 for (
int i = 0; i < me->
totvert; i++) {
543 if (dv->
dw ==
nullptr) {
563 for (
int i = 0; i < me->
totvert; i++) {
567 if (((mvert->
flag &
SELECT) == 0) == unselected) {
591 for (
int i = 0; i < me->
totvert; i++) {
struct Depsgraph * CTX_data_ensure_evaluated_depsgraph(const bContext *C)
struct ARegion * CTX_wm_region(const bContext *C)
CustomData interface, see also DNA_customdata_types.h.
void * CustomData_get_layer(const struct CustomData *data, int type)
void BKE_mesh_flush_select_from_verts(struct Mesh *me)
void BKE_mesh_poly_edgebitmap_insert(unsigned int *edge_bitmap, const struct MPoly *mp, const struct MLoop *mloop)
struct Mesh * BKE_mesh_from_object(struct Object *ob)
void BKE_mesh_mselect_validate(struct Mesh *me)
void BKE_mesh_batch_cache_dirty_tag(struct Mesh *me, eMeshBatchDirtyMode mode)
void BKE_mesh_flush_select_from_polys(struct Mesh *me)
void BKE_mesh_mselect_clear(struct Mesh *me)
void BKE_mesh_flush_hidden_from_verts(struct Mesh *me)
void BKE_mesh_flush_hidden_from_polys(struct Mesh *me)
@ BKE_MESH_BATCH_DIRTY_SELECT_PAINT
@ BKE_MESH_BATCH_DIRTY_ALL
General operations, lookup, etc. for blender objects.
struct Mesh * BKE_object_get_evaluated_mesh(const struct Object *object)
#define BLI_assert_unreachable()
#define BLI_BITMAP_NEW(_num, _alloc_string)
#define BLI_BITMAP_TEST(_bitmap, _index)
#define BLI_BITMAP_ENABLE(_bitmap, _index)
void copy_m3_m4(float m1[3][3], const float m2[4][4])
void mul_v3_m3v3(float r[3], const float M[3][3], const float a[3])
void minmax_v3v3_v3(float min[3], float max[3], const float vec[3])
MINLINE void add_v3_v3v3(float r[3], const float a[3], const float b[3])
#define SET_FLAG_FROM_TEST(value, test, flag)
struct Depsgraph Depsgraph
void DEG_id_tag_update(struct ID *id, int flag)
struct Object * DEG_get_evaluated_object(const struct Depsgraph *depsgraph, struct Object *object)
@ ID_RECALC_COPY_ON_WRITE
Object is a sort of wrapper for general info.
bool ED_mesh_pick_face(struct bContext *C, struct Object *ob, const int mval[2], uint dist_px, uint *r_index)
#define ED_MESH_PICK_DEFAULT_FACE_DIST
void ED_region_tag_redraw(struct ARegion *region)
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
__forceinline const avxb select(const avxb &m, const avxb &t, const avxb &f)
const Depsgraph * depsgraph
bool paintface_minmax(Object *ob, float r_min[3], float r_max[3])
void paintvert_flush_flags(Object *ob)
void paintface_reveal(bContext *C, Object *ob, const bool select)
void paintvert_tag_select_update(bContext *C, Object *ob)
void paintface_hide(bContext *C, Object *ob, const bool unselected)
void paintvert_select_ungrouped(Object *ob, bool extend, bool flush_flags)
bool paintface_mouse_select(bContext *C, const int mval[2], const SelectPick_Params *params, Object *ob)
void paintface_flush_flags(bContext *C, Object *ob, short flag)
bool paintvert_deselect_all_visible(Object *ob, int action, bool flush_flags)
void paintvert_hide(bContext *C, Object *ob, const bool unselected)
void paintvert_reveal(bContext *C, Object *ob, const bool select)
bool paintface_deselect_all_visible(bContext *C, Object *ob, int action, bool flush_flags)
static void select_linked_tfaces_with_seams(Mesh *me, const uint index, const bool select)
void paintface_select_linked(bContext *C, Object *ob, const int mval[2], const bool select)
void(* MEM_freeN)(void *vmemh)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
struct MDeformVert * dvert
void WM_event_add_notifier(const bContext *C, uint type, void *reference)