forked from bartvdbraak/blender
code cleanup: use bool's for vgroup and editmode.
This commit is contained in:
parent
d070940192
commit
1c3c4f3954
@ -114,19 +114,19 @@ void EDBM_select_flush(struct BMEditMesh *em);
|
|||||||
|
|
||||||
void undo_push_mesh(struct bContext *C, const char *name);
|
void undo_push_mesh(struct bContext *C, const char *name);
|
||||||
|
|
||||||
int EDBM_vert_color_check(struct BMEditMesh *em);
|
bool EDBM_vert_color_check(struct BMEditMesh *em);
|
||||||
|
|
||||||
void EDBM_mesh_hide(struct BMEditMesh *em, int swap);
|
void EDBM_mesh_hide(struct BMEditMesh *em, bool swap);
|
||||||
void EDBM_mesh_reveal(struct BMEditMesh *em);
|
void EDBM_mesh_reveal(struct BMEditMesh *em);
|
||||||
|
|
||||||
void EDBM_update_generic(struct BMEditMesh *em, const bool do_tessface, const bool is_destructive);
|
void EDBM_update_generic(struct BMEditMesh *em, const bool do_tessface, const bool is_destructive);
|
||||||
|
|
||||||
struct UvElementMap *EDBM_uv_element_map_create(struct BMEditMesh *em, int selected, int doIslands);
|
struct UvElementMap *EDBM_uv_element_map_create(struct BMEditMesh *em, const bool selected, const bool do_islands);
|
||||||
void EDBM_uv_element_map_free(struct UvElementMap *vmap);
|
void EDBM_uv_element_map_free(struct UvElementMap *vmap);
|
||||||
struct UvElement *ED_uv_element_get(struct UvElementMap *map, struct BMFace *efa, struct BMLoop *l);
|
struct UvElement *ED_uv_element_get(struct UvElementMap *map, struct BMFace *efa, struct BMLoop *l);
|
||||||
|
|
||||||
int EDBM_mtexpoly_check(struct BMEditMesh *em);
|
bool EDBM_mtexpoly_check(struct BMEditMesh *em);
|
||||||
struct MTexPoly *EDBM_mtexpoly_active_get(struct BMEditMesh *em, struct BMFace **r_act_efa, int sloppy, int selected);
|
struct MTexPoly *EDBM_mtexpoly_active_get(struct BMEditMesh *em, struct BMFace **r_act_efa, const bool sloppy, const bool selected);
|
||||||
|
|
||||||
void EDBM_uv_vert_map_free(struct UvVertMap *vmap);
|
void EDBM_uv_vert_map_free(struct UvVertMap *vmap);
|
||||||
struct UvMapVert *EDBM_uv_vert_map_at_index(struct UvVertMap *vmap, unsigned int v);
|
struct UvMapVert *EDBM_uv_vert_map_at_index(struct UvVertMap *vmap, unsigned int v);
|
||||||
@ -138,7 +138,7 @@ void EDBM_flag_disable_all(struct BMEditMesh *em, const char hflag);
|
|||||||
|
|
||||||
/* editmesh_select.c */
|
/* editmesh_select.c */
|
||||||
void EDBM_select_mirrored(struct Object *obedit, struct BMEditMesh *em, bool extend);
|
void EDBM_select_mirrored(struct Object *obedit, struct BMEditMesh *em, bool extend);
|
||||||
void EDBM_automerge(struct Scene *scene, struct Object *ob, int update);
|
void EDBM_automerge(struct Scene *scene, struct Object *ob, bool update);
|
||||||
|
|
||||||
bool EDBM_backbuf_border_init(struct ViewContext *vc, short xmin, short ymin, short xmax, short ymax);
|
bool EDBM_backbuf_border_init(struct ViewContext *vc, short xmin, short ymin, short xmax, short ymax);
|
||||||
int EDBM_backbuf_check(unsigned int index);
|
int EDBM_backbuf_check(unsigned int index);
|
||||||
@ -170,7 +170,7 @@ void EDBM_deselect_by_material(struct BMEditMesh *em, const short index, const s
|
|||||||
void EDBM_select_toggle_all(struct BMEditMesh *em);
|
void EDBM_select_toggle_all(struct BMEditMesh *em);
|
||||||
|
|
||||||
void EDBM_select_swap(struct BMEditMesh *em); /* exported for UV */
|
void EDBM_select_swap(struct BMEditMesh *em); /* exported for UV */
|
||||||
int EDBM_select_interior_faces(struct BMEditMesh *em);
|
bool EDBM_select_interior_faces(struct BMEditMesh *em);
|
||||||
void em_setup_viewcontext(struct bContext *C, struct ViewContext *vc); /* rename? */
|
void em_setup_viewcontext(struct bContext *C, struct ViewContext *vc); /* rename? */
|
||||||
|
|
||||||
extern unsigned int bm_vertoffs, bm_solidoffs, bm_wireoffs;
|
extern unsigned int bm_vertoffs, bm_solidoffs, bm_wireoffs;
|
||||||
@ -192,7 +192,7 @@ void paintface_deselect_all_visible(struct Object *ob, int action, bool flush_fl
|
|||||||
void paintface_select_linked(struct bContext *C, struct Object *ob, const int mval[2], int mode);
|
void paintface_select_linked(struct bContext *C, struct Object *ob, const int mval[2], int mode);
|
||||||
bool paintface_minmax(struct Object *ob, float r_min[3], float r_max[3]);
|
bool paintface_minmax(struct Object *ob, float r_min[3], float r_max[3]);
|
||||||
|
|
||||||
void paintface_hide(struct Object *ob, const int unselected);
|
void paintface_hide(struct Object *ob, const bool unselected);
|
||||||
void paintface_reveal(struct Object *ob);
|
void paintface_reveal(struct Object *ob);
|
||||||
|
|
||||||
void paintvert_deselect_all_visible(struct Object *ob, int action, bool flush_flags);
|
void paintvert_deselect_all_visible(struct Object *ob, int action, bool flush_flags);
|
||||||
@ -223,13 +223,14 @@ struct bDeformGroup *ED_vgroup_add_name(struct Object *ob, const char *name);
|
|||||||
void ED_vgroup_delete(struct Object *ob, struct bDeformGroup *defgroup);
|
void ED_vgroup_delete(struct Object *ob, struct bDeformGroup *defgroup);
|
||||||
void ED_vgroup_clear(struct Object *ob);
|
void ED_vgroup_clear(struct Object *ob);
|
||||||
void ED_vgroup_select_by_name(struct Object *ob, const char *name);
|
void ED_vgroup_select_by_name(struct Object *ob, const char *name);
|
||||||
int ED_vgroup_data_create(struct ID *id);
|
bool ED_vgroup_data_create(struct ID *id);
|
||||||
void ED_vgroup_data_clamp_range(struct ID *id, const int total);
|
void ED_vgroup_data_clamp_range(struct ID *id, const int total);
|
||||||
int ED_vgroup_give_array(struct ID *id, struct MDeformVert **dvert_arr, int *dvert_tot);
|
bool ED_vgroup_give_array(struct ID *id, struct MDeformVert **dvert_arr, int *dvert_tot);
|
||||||
int ED_vgroup_copy_array(struct Object *ob, struct Object *ob_from);
|
bool ED_vgroup_copy_array(struct Object *ob, struct Object *ob_from);
|
||||||
void ED_vgroup_mirror(struct Object *ob, const short mirror_weights, const short flip_vgroups, const short all_vgroups);
|
void ED_vgroup_mirror(struct Object *ob,
|
||||||
|
const bool mirror_weights, const bool flip_vgroups, const bool all_vgroups);
|
||||||
|
|
||||||
int ED_vgroup_object_is_edit_mode(struct Object *ob);
|
bool ED_vgroup_object_is_edit_mode(struct Object *ob);
|
||||||
|
|
||||||
void ED_vgroup_vert_add(struct Object *ob, struct bDeformGroup *dg, int vertnum, float weight, int assignmode);
|
void ED_vgroup_vert_add(struct Object *ob, struct bDeformGroup *dg, int vertnum, float weight, int assignmode);
|
||||||
void ED_vgroup_vert_remove(struct Object *ob, struct bDeformGroup *dg, int vertnum);
|
void ED_vgroup_vert_remove(struct Object *ob, struct bDeformGroup *dg, int vertnum);
|
||||||
@ -253,13 +254,13 @@ void ED_mesh_calc_normals(struct Mesh *me);
|
|||||||
void ED_mesh_calc_tessface(struct Mesh *mesh);
|
void ED_mesh_calc_tessface(struct Mesh *mesh);
|
||||||
void ED_mesh_update(struct Mesh *mesh, struct bContext *C, int calc_edges, int calc_tessface);
|
void ED_mesh_update(struct Mesh *mesh, struct bContext *C, int calc_edges, int calc_tessface);
|
||||||
|
|
||||||
int ED_mesh_uv_texture_add(struct Mesh *me, const char *name, const bool active_set);
|
int ED_mesh_uv_texture_add(struct Mesh *me, const char *name, const bool active_set);
|
||||||
bool ED_mesh_uv_texture_remove_index(struct Mesh *me, const int n);
|
bool ED_mesh_uv_texture_remove_index(struct Mesh *me, const int n);
|
||||||
bool ED_mesh_uv_texture_remove_active(struct Mesh *me);
|
bool ED_mesh_uv_texture_remove_active(struct Mesh *me);
|
||||||
bool ED_mesh_uv_texture_remove_named(struct Mesh *me, const char *name);
|
bool ED_mesh_uv_texture_remove_named(struct Mesh *me, const char *name);
|
||||||
int ED_mesh_uv_loop_reset(struct bContext *C, struct Mesh *me);
|
void ED_mesh_uv_loop_reset(struct bContext *C, struct Mesh *me);
|
||||||
int ED_mesh_uv_loop_reset_ex(struct Mesh *me, const int layernum);
|
void ED_mesh_uv_loop_reset_ex(struct Mesh *me, const int layernum);
|
||||||
int ED_mesh_color_add(struct Mesh *me, const char *name, const bool active_set);
|
int ED_mesh_color_add(struct Mesh *me, const char *name, const bool active_set);
|
||||||
bool ED_mesh_color_remove_index(struct Mesh *me, const int n);
|
bool ED_mesh_color_remove_index(struct Mesh *me, const int n);
|
||||||
bool ED_mesh_color_remove_active(struct Mesh *me);
|
bool ED_mesh_color_remove_active(struct Mesh *me);
|
||||||
bool ED_mesh_color_remove_named(struct Mesh *me, const char *name);
|
bool ED_mesh_color_remove_named(struct Mesh *me, const char *name);
|
||||||
|
@ -243,7 +243,7 @@ void view3d_validate_backbuf(struct ViewContext *vc);
|
|||||||
struct ImBuf *view3d_read_backbuf(struct ViewContext *vc, short xmin, short ymin, short xmax, short ymax);
|
struct ImBuf *view3d_read_backbuf(struct ViewContext *vc, short xmin, short ymin, short xmax, short ymax);
|
||||||
unsigned int view3d_sample_backbuf_rect(struct ViewContext *vc, const int mval[2], int size,
|
unsigned int view3d_sample_backbuf_rect(struct ViewContext *vc, const int mval[2], int size,
|
||||||
unsigned int min, unsigned int max, float *dist, short strict,
|
unsigned int min, unsigned int max, float *dist, short strict,
|
||||||
void *handle, unsigned int (*indextest)(void *handle, unsigned int index));
|
void *handle, bool (*indextest)(void *handle, unsigned int index));
|
||||||
unsigned int view3d_sample_backbuf(struct ViewContext *vc, int x, int y);
|
unsigned int view3d_sample_backbuf(struct ViewContext *vc, int x, int y);
|
||||||
|
|
||||||
/* draws and does a 4x4 sample */
|
/* draws and does a 4x4 sample */
|
||||||
|
@ -126,7 +126,7 @@ void paintface_flush_flags(Object *ob)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void paintface_hide(Object *ob, const int unselected)
|
void paintface_hide(Object *ob, const bool unselected)
|
||||||
{
|
{
|
||||||
Mesh *me;
|
Mesh *me;
|
||||||
MPoly *mpoly;
|
MPoly *mpoly;
|
||||||
|
@ -104,7 +104,7 @@ void EDBM_select_mirrored(Object *UNUSED(obedit), BMEditMesh *em, bool extend)
|
|||||||
EDBM_verts_mirror_cache_end(em);
|
EDBM_verts_mirror_cache_end(em);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EDBM_automerge(Scene *scene, Object *obedit, int update)
|
void EDBM_automerge(Scene *scene, Object *obedit, bool update)
|
||||||
{
|
{
|
||||||
|
|
||||||
if ((scene->toolsettings->automerge) &&
|
if ((scene->toolsettings->automerge) &&
|
||||||
@ -377,13 +377,11 @@ static void findnearestvert__doClosest(void *userData, BMVert *eve, const float
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static unsigned int findnearestvert__backbufIndextest(void *handle, unsigned int index)
|
static bool findnearestvert__backbufIndextest(void *handle, unsigned int index)
|
||||||
{
|
{
|
||||||
BMEditMesh *em = (BMEditMesh *)handle;
|
BMEditMesh *em = (BMEditMesh *)handle;
|
||||||
BMVert *eve = BM_vert_at_index(em->bm, index - 1);
|
BMVert *eve = BM_vert_at_index(em->bm, index - 1);
|
||||||
|
return !(eve && BM_elem_flag_test(eve, BM_ELEM_SELECT));
|
||||||
if (eve && BM_elem_flag_test(eve, BM_ELEM_SELECT)) return 0;
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* findnearestvert
|
* findnearestvert
|
||||||
@ -2306,7 +2304,7 @@ void EDBM_select_swap(BMEditMesh *em) /* exported for UV */
|
|||||||
// if (EM_texFaceCheck())
|
// if (EM_texFaceCheck())
|
||||||
}
|
}
|
||||||
|
|
||||||
int EDBM_select_interior_faces(BMEditMesh *em)
|
bool EDBM_select_interior_faces(BMEditMesh *em)
|
||||||
{
|
{
|
||||||
BMesh *bm = em->bm;
|
BMesh *bm = em->bm;
|
||||||
BMIter iter;
|
BMIter iter;
|
||||||
@ -2914,7 +2912,7 @@ static void deselect_nth_active(BMEditMesh *em, BMVert **r_eve, BMEdge **r_eed,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int edbm_deselect_nth(BMEditMesh *em, int nth, int offset)
|
static bool edbm_deselect_nth(BMEditMesh *em, int nth, int offset)
|
||||||
{
|
{
|
||||||
BMVert *v;
|
BMVert *v;
|
||||||
BMEdge *e;
|
BMEdge *e;
|
||||||
@ -2924,18 +2922,18 @@ static int edbm_deselect_nth(BMEditMesh *em, int nth, int offset)
|
|||||||
|
|
||||||
if (v) {
|
if (v) {
|
||||||
walker_deselect_nth(em, nth, offset, &v->head);
|
walker_deselect_nth(em, nth, offset, &v->head);
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
else if (e) {
|
else if (e) {
|
||||||
walker_deselect_nth(em, nth, offset, &e->head);
|
walker_deselect_nth(em, nth, offset, &e->head);
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
else if (f) {
|
else if (f) {
|
||||||
walker_deselect_nth(em, nth, offset, &f->head);
|
walker_deselect_nth(em, nth, offset, &f->head);
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int edbm_select_nth_exec(bContext *C, wmOperator *op)
|
static int edbm_select_nth_exec(bContext *C, wmOperator *op)
|
||||||
@ -2948,7 +2946,7 @@ static int edbm_select_nth_exec(bContext *C, wmOperator *op)
|
|||||||
/* so input of offset zero ends up being (nth - 1) */
|
/* so input of offset zero ends up being (nth - 1) */
|
||||||
offset = (offset + (nth - 1)) % nth;
|
offset = (offset + (nth - 1)) % nth;
|
||||||
|
|
||||||
if (edbm_deselect_nth(em, nth, offset) == 0) {
|
if (edbm_deselect_nth(em, nth, offset) == false) {
|
||||||
BKE_report(op->reports, RPT_ERROR, "Mesh has no active vert/edge/face");
|
BKE_report(op->reports, RPT_ERROR, "Mesh has no active vert/edge/face");
|
||||||
return OPERATOR_CANCELLED;
|
return OPERATOR_CANCELLED;
|
||||||
}
|
}
|
||||||
|
@ -816,7 +816,7 @@ UvMapVert *EDBM_uv_vert_map_at_index(UvVertMap *vmap, unsigned int v)
|
|||||||
|
|
||||||
|
|
||||||
/* A specialized vert map used by stitch operator */
|
/* A specialized vert map used by stitch operator */
|
||||||
UvElementMap *EDBM_uv_element_map_create(BMEditMesh *em, int selected, int do_islands)
|
UvElementMap *EDBM_uv_element_map_create(BMEditMesh *em, const bool selected, const bool do_islands)
|
||||||
{
|
{
|
||||||
BMVert *ev;
|
BMVert *ev;
|
||||||
BMFace *efa;
|
BMFace *efa;
|
||||||
@ -1070,7 +1070,7 @@ UvElement *ED_uv_element_get(UvElementMap *map, BMFace *efa, BMLoop *l)
|
|||||||
|
|
||||||
/* last_sel, use em->act_face otherwise get the last selected face in the editselections
|
/* last_sel, use em->act_face otherwise get the last selected face in the editselections
|
||||||
* at the moment, last_sel is mainly useful for making sure the space image dosnt flicker */
|
* at the moment, last_sel is mainly useful for making sure the space image dosnt flicker */
|
||||||
MTexPoly *EDBM_mtexpoly_active_get(BMEditMesh *em, BMFace **r_act_efa, int sloppy, int selected)
|
MTexPoly *EDBM_mtexpoly_active_get(BMEditMesh *em, BMFace **r_act_efa, const bool sloppy, const bool selected)
|
||||||
{
|
{
|
||||||
BMFace *efa = NULL;
|
BMFace *efa = NULL;
|
||||||
|
|
||||||
@ -1089,14 +1089,14 @@ MTexPoly *EDBM_mtexpoly_active_get(BMEditMesh *em, BMFace **r_act_efa, int slopp
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* can we edit UV's for this mesh?*/
|
/* can we edit UV's for this mesh?*/
|
||||||
int EDBM_mtexpoly_check(BMEditMesh *em)
|
bool EDBM_mtexpoly_check(BMEditMesh *em)
|
||||||
{
|
{
|
||||||
/* some of these checks could be a touch overkill */
|
/* some of these checks could be a touch overkill */
|
||||||
return em && em->bm->totface && CustomData_has_layer(&em->bm->pdata, CD_MTEXPOLY) &&
|
return em && em->bm->totface && CustomData_has_layer(&em->bm->pdata, CD_MTEXPOLY) &&
|
||||||
CustomData_has_layer(&em->bm->ldata, CD_MLOOPUV);
|
CustomData_has_layer(&em->bm->ldata, CD_MLOOPUV);
|
||||||
}
|
}
|
||||||
|
|
||||||
int EDBM_vert_color_check(BMEditMesh *em)
|
bool EDBM_vert_color_check(BMEditMesh *em)
|
||||||
{
|
{
|
||||||
/* some of these checks could be a touch overkill */
|
/* some of these checks could be a touch overkill */
|
||||||
return em && em->bm->totface && CustomData_has_layer(&em->bm->ldata, CD_MLOOPCOL);
|
return em && em->bm->totface && CustomData_has_layer(&em->bm->ldata, CD_MLOOPCOL);
|
||||||
@ -1265,11 +1265,12 @@ void EDBM_verts_mirror_apply(BMEditMesh *em, const int sel_from, const int sel_t
|
|||||||
|
|
||||||
|
|
||||||
/* swap is 0 or 1, if 1 it hides not selected */
|
/* swap is 0 or 1, if 1 it hides not selected */
|
||||||
void EDBM_mesh_hide(BMEditMesh *em, int swap)
|
void EDBM_mesh_hide(BMEditMesh *em, bool swap)
|
||||||
{
|
{
|
||||||
BMIter iter;
|
BMIter iter;
|
||||||
BMElem *ele;
|
BMElem *ele;
|
||||||
int itermode;
|
int itermode;
|
||||||
|
char hflag_swap = swap ? BM_ELEM_SELECT : 0;
|
||||||
|
|
||||||
if (em == NULL) return;
|
if (em == NULL) return;
|
||||||
|
|
||||||
@ -1281,7 +1282,7 @@ void EDBM_mesh_hide(BMEditMesh *em, int swap)
|
|||||||
itermode = BM_FACES_OF_MESH;
|
itermode = BM_FACES_OF_MESH;
|
||||||
|
|
||||||
BM_ITER_MESH (ele, &iter, em->bm, itermode) {
|
BM_ITER_MESH (ele, &iter, em->bm, itermode) {
|
||||||
if (BM_elem_flag_test(ele, BM_ELEM_SELECT) ^ swap)
|
if (BM_elem_flag_test(ele, BM_ELEM_SELECT) ^ hflag_swap)
|
||||||
BM_elem_hide_set(em->bm, ele, true);
|
BM_elem_hide_set(em->bm, ele, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -220,7 +220,7 @@ static void delete_customdata_layer(Mesh *me, CustomDataLayer *layer)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* without bContext, called in uvedit */
|
/* without bContext, called in uvedit */
|
||||||
int ED_mesh_uv_loop_reset_ex(struct Mesh *me, const int layernum)
|
void ED_mesh_uv_loop_reset_ex(struct Mesh *me, const int layernum)
|
||||||
{
|
{
|
||||||
BMEditMesh *em = me->edit_btmesh;
|
BMEditMesh *em = me->edit_btmesh;
|
||||||
MLoopUV *luv;
|
MLoopUV *luv;
|
||||||
@ -323,20 +323,16 @@ int ED_mesh_uv_loop_reset_ex(struct Mesh *me, const int layernum)
|
|||||||
BLI_array_free(polylengths);
|
BLI_array_free(polylengths);
|
||||||
|
|
||||||
DAG_id_tag_update(&me->id, 0);
|
DAG_id_tag_update(&me->id, 0);
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int ED_mesh_uv_loop_reset(struct bContext *C, struct Mesh *me)
|
void ED_mesh_uv_loop_reset(struct bContext *C, struct Mesh *me)
|
||||||
{
|
{
|
||||||
/* could be ldata or pdata */
|
/* could be ldata or pdata */
|
||||||
CustomData *pdata = GET_CD_DATA(me, pdata);
|
CustomData *pdata = GET_CD_DATA(me, pdata);
|
||||||
const int layernum = CustomData_get_active_layer_index(pdata, CD_MTEXPOLY);
|
const int layernum = CustomData_get_active_layer_index(pdata, CD_MTEXPOLY);
|
||||||
int retval = ED_mesh_uv_loop_reset_ex(me, layernum);
|
ED_mesh_uv_loop_reset_ex(me, layernum);
|
||||||
|
|
||||||
WM_event_add_notifier(C, NC_GEOM | ND_DATA, me);
|
WM_event_add_notifier(C, NC_GEOM | ND_DATA, me);
|
||||||
|
|
||||||
return retval;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* note: keep in sync with ED_mesh_color_add */
|
/* note: keep in sync with ED_mesh_color_add */
|
||||||
|
@ -84,18 +84,18 @@ static void vgroup_remap_update_users(Object *ob, int *map);
|
|||||||
static void vgroup_delete_edit_mode(Object *ob, bDeformGroup *defgroup);
|
static void vgroup_delete_edit_mode(Object *ob, bDeformGroup *defgroup);
|
||||||
static void vgroup_delete_object_mode(Object *ob, bDeformGroup *dg);
|
static void vgroup_delete_object_mode(Object *ob, bDeformGroup *dg);
|
||||||
static void vgroup_delete_all(Object *ob);
|
static void vgroup_delete_all(Object *ob);
|
||||||
static int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_tot, const short use_vert_sel);
|
static bool ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_tot, const bool use_vert_sel);
|
||||||
|
|
||||||
static int vertex_group_use_vert_sel(Object *ob)
|
static bool vertex_group_use_vert_sel(Object *ob)
|
||||||
{
|
{
|
||||||
if (ob->mode == OB_MODE_EDIT) {
|
if (ob->mode == OB_MODE_EDIT) {
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
else if (ob->type == OB_MESH && ((Mesh *)ob->data)->editflag & ME_EDIT_PAINT_VERT_SEL) {
|
else if (ob->type == OB_MESH && ((Mesh *)ob->data)->editflag & ME_EDIT_PAINT_VERT_SEL) {
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -106,14 +106,14 @@ static Lattice *vgroup_edit_lattice(Object *ob)
|
|||||||
return (lt->editlatt) ? lt->editlatt->latt : lt;
|
return (lt->editlatt) ? lt->editlatt->latt : lt;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ED_vgroup_object_is_edit_mode(Object *ob)
|
bool ED_vgroup_object_is_edit_mode(Object *ob)
|
||||||
{
|
{
|
||||||
if (ob->type == OB_MESH)
|
if (ob->type == OB_MESH)
|
||||||
return (BMEdit_FromObject(ob) != NULL);
|
return (BMEdit_FromObject(ob) != NULL);
|
||||||
else if (ob->type == OB_LATTICE)
|
else if (ob->type == OB_LATTICE)
|
||||||
return (((Lattice *)ob->data)->editlatt != NULL);
|
return (((Lattice *)ob->data)->editlatt != NULL);
|
||||||
|
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bDeformGroup *ED_vgroup_add_name(Object *ob, const char *name)
|
bDeformGroup *ED_vgroup_add_name(Object *ob, const char *name)
|
||||||
@ -167,22 +167,22 @@ void ED_vgroup_clear(Object *ob)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int ED_vgroup_data_create(ID *id)
|
bool ED_vgroup_data_create(ID *id)
|
||||||
{
|
{
|
||||||
/* create deform verts */
|
/* create deform verts */
|
||||||
|
|
||||||
if (GS(id->name) == ID_ME) {
|
if (GS(id->name) == ID_ME) {
|
||||||
Mesh *me = (Mesh *)id;
|
Mesh *me = (Mesh *)id;
|
||||||
me->dvert = CustomData_add_layer(&me->vdata, CD_MDEFORMVERT, CD_CALLOC, NULL, me->totvert);
|
me->dvert = CustomData_add_layer(&me->vdata, CD_MDEFORMVERT, CD_CALLOC, NULL, me->totvert);
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
else if (GS(id->name) == ID_LT) {
|
else if (GS(id->name) == ID_LT) {
|
||||||
Lattice *lt = (Lattice *)id;
|
Lattice *lt = (Lattice *)id;
|
||||||
lt->dvert = MEM_callocN(sizeof(MDeformVert) * lt->pntsu * lt->pntsv * lt->pntsw, "lattice deformVert");
|
lt->dvert = MEM_callocN(sizeof(MDeformVert) * lt->pntsu * lt->pntsv * lt->pntsw, "lattice deformVert");
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -209,7 +209,7 @@ void ED_vgroup_data_clamp_range(ID *id, const int total)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_tot, const short use_vert_sel)
|
static bool ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_tot, const bool use_vert_sel)
|
||||||
{
|
{
|
||||||
*dvert_tot = 0;
|
*dvert_tot = 0;
|
||||||
*dvert_arr = NULL;
|
*dvert_arr = NULL;
|
||||||
@ -227,7 +227,7 @@ static int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_to
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!CustomData_has_layer(&em->bm->vdata, CD_MDEFORMVERT)) {
|
if (!CustomData_has_layer(&em->bm->vdata, CD_MDEFORMVERT)) {
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
i = em->bm->totvert;
|
i = em->bm->totvert;
|
||||||
@ -250,7 +250,7 @@ static int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_to
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
else if (me->dvert) {
|
else if (me->dvert) {
|
||||||
MVert *mvert = me->mvert;
|
MVert *mvert = me->mvert;
|
||||||
@ -272,10 +272,10 @@ static int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_to
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case ID_LT:
|
case ID_LT:
|
||||||
@ -302,20 +302,20 @@ static int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_to
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* returns true if the id type supports weights */
|
/* returns true if the id type supports weights */
|
||||||
int ED_vgroup_give_array(ID *id, MDeformVert **dvert_arr, int *dvert_tot)
|
bool ED_vgroup_give_array(ID *id, MDeformVert **dvert_arr, int *dvert_tot)
|
||||||
{
|
{
|
||||||
if (id) {
|
if (id) {
|
||||||
switch (GS(id->name)) {
|
switch (GS(id->name)) {
|
||||||
@ -324,7 +324,7 @@ int ED_vgroup_give_array(ID *id, MDeformVert **dvert_arr, int *dvert_tot)
|
|||||||
Mesh *me = (Mesh *)id;
|
Mesh *me = (Mesh *)id;
|
||||||
*dvert_arr = me->dvert;
|
*dvert_arr = me->dvert;
|
||||||
*dvert_tot = me->totvert;
|
*dvert_tot = me->totvert;
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
case ID_LT:
|
case ID_LT:
|
||||||
{
|
{
|
||||||
@ -332,18 +332,18 @@ int ED_vgroup_give_array(ID *id, MDeformVert **dvert_arr, int *dvert_tot)
|
|||||||
lt = (lt->editlatt) ? lt->editlatt->latt : lt;
|
lt = (lt->editlatt) ? lt->editlatt->latt : lt;
|
||||||
*dvert_arr = lt->dvert;
|
*dvert_arr = lt->dvert;
|
||||||
*dvert_tot = lt->pntsu * lt->pntsv * lt->pntsw;
|
*dvert_tot = lt->pntsu * lt->pntsv * lt->pntsw;
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*dvert_arr = NULL;
|
*dvert_arr = NULL;
|
||||||
*dvert_tot = 0;
|
*dvert_tot = 0;
|
||||||
return FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* matching index only */
|
/* matching index only */
|
||||||
int ED_vgroup_copy_array(Object *ob, Object *ob_from)
|
bool ED_vgroup_copy_array(Object *ob, Object *ob_from)
|
||||||
{
|
{
|
||||||
MDeformVert **dvert_array_from, **dvf;
|
MDeformVert **dvert_array_from, **dvf;
|
||||||
MDeformVert **dvert_array, **dv;
|
MDeformVert **dvert_array, **dv;
|
||||||
@ -352,25 +352,25 @@ int ED_vgroup_copy_array(Object *ob, Object *ob_from)
|
|||||||
int i;
|
int i;
|
||||||
int defbase_tot_from = BLI_countlist(&ob_from->defbase);
|
int defbase_tot_from = BLI_countlist(&ob_from->defbase);
|
||||||
int defbase_tot = BLI_countlist(&ob->defbase);
|
int defbase_tot = BLI_countlist(&ob->defbase);
|
||||||
short new_vgroup = FALSE;
|
bool new_vgroup = false;
|
||||||
|
|
||||||
ED_vgroup_give_parray(ob_from->data, &dvert_array_from, &dvert_tot_from, FALSE);
|
ED_vgroup_give_parray(ob_from->data, &dvert_array_from, &dvert_tot_from, false);
|
||||||
ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot, FALSE);
|
ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot, false);
|
||||||
|
|
||||||
if ((dvert_array == NULL) && (dvert_array_from != NULL) && ED_vgroup_data_create(ob->data)) {
|
if ((dvert_array == NULL) && (dvert_array_from != NULL) && ED_vgroup_data_create(ob->data)) {
|
||||||
ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot, FALSE);
|
ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot, false);
|
||||||
new_vgroup = TRUE;
|
new_vgroup = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ob == ob_from || dvert_tot == 0 || (dvert_tot != dvert_tot_from) || dvert_array_from == NULL || dvert_array == NULL) {
|
if (ob == ob_from || dvert_tot == 0 || (dvert_tot != dvert_tot_from) || dvert_array_from == NULL || dvert_array == NULL) {
|
||||||
if (dvert_array) MEM_freeN(dvert_array);
|
if (dvert_array) MEM_freeN(dvert_array);
|
||||||
if (dvert_array_from) MEM_freeN(dvert_array_from);
|
if (dvert_array_from) MEM_freeN(dvert_array_from);
|
||||||
|
|
||||||
if (new_vgroup == TRUE) {
|
if (new_vgroup == true) {
|
||||||
/* free the newly added vgroup since it wasn't compatible */
|
/* free the newly added vgroup since it wasn't compatible */
|
||||||
vgroup_delete_all(ob);
|
vgroup_delete_all(ob);
|
||||||
}
|
}
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* do the copy */
|
/* do the copy */
|
||||||
@ -404,7 +404,7 @@ int ED_vgroup_copy_array(Object *ob, Object *ob_from)
|
|||||||
MEM_freeN(dvert_array);
|
MEM_freeN(dvert_array);
|
||||||
MEM_freeN(dvert_array_from);
|
MEM_freeN(dvert_array_from);
|
||||||
|
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************Start weight transfer (WT)*********************************/
|
/***********************Start weight transfer (WT)*********************************/
|
||||||
@ -477,8 +477,8 @@ static void vgroup_transfer_weight(float *r_weight_dst, const float weight_src,
|
|||||||
/* Could be exposed externally by implementing it in header with the rest.
|
/* Could be exposed externally by implementing it in header with the rest.
|
||||||
* Simple refactoring will break something.
|
* Simple refactoring will break something.
|
||||||
* For now, naming is ed_ instead of ED_*/
|
* For now, naming is ed_ instead of ED_*/
|
||||||
static int ed_vgroup_transfer_weight(Object *ob_dst, Object *ob_src, bDeformGroup *dg_src, Scene *scene,
|
static bool ed_vgroup_transfer_weight(Object *ob_dst, Object *ob_src, bDeformGroup *dg_src, Scene *scene,
|
||||||
WT_Method method, WT_ReplaceMode replace_mode, wmOperator *op)
|
WT_Method method, WT_ReplaceMode replace_mode, wmOperator *op)
|
||||||
{
|
{
|
||||||
bDeformGroup *dg_dst;
|
bDeformGroup *dg_dst;
|
||||||
Mesh *me_dst, *me_src;
|
Mesh *me_dst, *me_src;
|
||||||
@ -510,14 +510,14 @@ static int ed_vgroup_transfer_weight(Object *ob_dst, Object *ob_src, bDeformGrou
|
|||||||
/* Sanity check.*/
|
/* Sanity check.*/
|
||||||
if (!me_src->dvert) {
|
if (!me_src->dvert) {
|
||||||
BKE_report(op->reports, RPT_ERROR, "Transfer failed (source mesh does not have any vertex groups)");
|
BKE_report(op->reports, RPT_ERROR, "Transfer failed (source mesh does not have any vertex groups)");
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create data in memory when nothing there.*/
|
/* Create data in memory when nothing there.*/
|
||||||
if (!me_dst->dvert) ED_vgroup_data_create(ob_dst->data);
|
if (!me_dst->dvert) ED_vgroup_data_create(ob_dst->data);
|
||||||
|
|
||||||
/* Get vertex group arrays.*/
|
/* Get vertex group arrays.*/
|
||||||
ED_vgroup_give_parray(ob_src->data, &dv_array_src, &dv_tot_src, FALSE);
|
ED_vgroup_give_parray(ob_src->data, &dv_array_src, &dv_tot_src, false);
|
||||||
ED_vgroup_give_parray(ob_dst->data, &dv_array_dst, &dv_tot_dst, use_vert_sel);
|
ED_vgroup_give_parray(ob_dst->data, &dv_array_dst, &dv_tot_dst, use_vert_sel);
|
||||||
|
|
||||||
/* Get indexes of vertex groups.*/
|
/* Get indexes of vertex groups.*/
|
||||||
@ -556,7 +556,7 @@ static int ed_vgroup_transfer_weight(Object *ob_dst, Object *ob_src, bDeformGrou
|
|||||||
if (dv_array_dst) MEM_freeN(dv_array_dst);
|
if (dv_array_dst) MEM_freeN(dv_array_dst);
|
||||||
dmesh_src->release(dmesh_src);
|
dmesh_src->release(dmesh_src);
|
||||||
BKE_report(op->reports, RPT_ERROR, "Transfer failed (indices are not matching)");
|
BKE_report(op->reports, RPT_ERROR, "Transfer failed (indices are not matching)");
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Loop through the vertices.*/
|
/* Loop through the vertices.*/
|
||||||
@ -746,7 +746,7 @@ static int ed_vgroup_transfer_weight(Object *ob_dst, Object *ob_src, bDeformGrou
|
|||||||
if (dv_array_dst) MEM_freeN(dv_array_dst);
|
if (dv_array_dst) MEM_freeN(dv_array_dst);
|
||||||
dmesh_src->release(dmesh_src);
|
dmesh_src->release(dmesh_src);
|
||||||
|
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************End weight transfer (WT)***********************************/
|
/***********************End weight transfer (WT)***********************************/
|
||||||
@ -1053,7 +1053,7 @@ static void vgroup_duplicate(Object *ob)
|
|||||||
icdg = (ob->actdef - 1);
|
icdg = (ob->actdef - 1);
|
||||||
|
|
||||||
/* TODO, we might want to allow only copy selected verts here? - campbell */
|
/* TODO, we might want to allow only copy selected verts here? - campbell */
|
||||||
ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot, FALSE);
|
ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot, false);
|
||||||
|
|
||||||
if (dvert_array) {
|
if (dvert_array) {
|
||||||
for (i = 0; i < dvert_tot; i++) {
|
for (i = 0; i < dvert_tot; i++) {
|
||||||
@ -1277,12 +1277,12 @@ static void moveCloserToDistanceFromPlane(Scene *scene, Object *ob, Mesh *me, in
|
|||||||
int *dwIndices = MEM_callocN(sizeof(int) * totweight, "dwIndexTracker");
|
int *dwIndices = MEM_callocN(sizeof(int) * totweight, "dwIndexTracker");
|
||||||
float distToStart;
|
float distToStart;
|
||||||
int bestIndex = 0;
|
int bestIndex = 0;
|
||||||
char wasChange;
|
bool wasChange;
|
||||||
char wasUp;
|
char wasUp;
|
||||||
int lastIndex = -1;
|
int lastIndex = -1;
|
||||||
float originalDistToBe = distToBe;
|
float originalDistToBe = distToBe;
|
||||||
do {
|
do {
|
||||||
wasChange = FALSE;
|
wasChange = false;
|
||||||
dm = dm_deform_recalc(scene, ob);
|
dm = dm_deform_recalc(scene, ob);
|
||||||
dm->getVert(dm, index, &m);
|
dm->getVert(dm, index, &m);
|
||||||
copy_v3_v3(oldPos, m.co);
|
copy_v3_v3(oldPos, m.co);
|
||||||
@ -1392,12 +1392,12 @@ static void moveCloserToDistanceFromPlane(Scene *scene, Object *ob, Mesh *me, in
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (bestIndex != -1) {
|
if (bestIndex != -1) {
|
||||||
wasChange = TRUE;
|
wasChange = true;
|
||||||
/* it is a good place to stop if it tries to move the opposite direction
|
/* it is a good place to stop if it tries to move the opposite direction
|
||||||
* (relative to the plane) of last time */
|
* (relative to the plane) of last time */
|
||||||
if (lastIndex != -1) {
|
if (lastIndex != -1) {
|
||||||
if (wasUp != upDown[bestIndex]) {
|
if (wasUp != upDown[bestIndex]) {
|
||||||
wasChange = FALSE;
|
wasChange = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lastIndex = bestIndex;
|
lastIndex = bestIndex;
|
||||||
@ -1414,7 +1414,7 @@ static void moveCloserToDistanceFromPlane(Scene *scene, Object *ob, Mesh *me, in
|
|||||||
dw->weight = 1;
|
dw->weight = 1;
|
||||||
}
|
}
|
||||||
if (oldw == dw->weight) {
|
if (oldw == dw->weight) {
|
||||||
wasChange = FALSE;
|
wasChange = false;
|
||||||
}
|
}
|
||||||
if (dm) {
|
if (dm) {
|
||||||
dm_deform_clear(dm, ob); dm = NULL;
|
dm_deform_clear(dm, ob); dm = NULL;
|
||||||
@ -1512,7 +1512,7 @@ static void vgroup_levels(Object *ob, float offset, float gain)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vgroup_normalize_all(Object *ob, int lock_active)
|
static void vgroup_normalize_all(Object *ob, const bool lock_active)
|
||||||
{
|
{
|
||||||
MDeformVert *dv, **dvert_array = NULL;
|
MDeformVert *dv, **dvert_array = NULL;
|
||||||
int i, dvert_tot = 0;
|
int i, dvert_tot = 0;
|
||||||
@ -1530,11 +1530,11 @@ static void vgroup_normalize_all(Object *ob, int lock_active)
|
|||||||
const int defbase_tot = BLI_countlist(&ob->defbase);
|
const int defbase_tot = BLI_countlist(&ob->defbase);
|
||||||
char *lock_flags = BKE_objdef_lock_flags_get(ob, defbase_tot);
|
char *lock_flags = BKE_objdef_lock_flags_get(ob, defbase_tot);
|
||||||
|
|
||||||
if ((lock_active == TRUE) &&
|
if ((lock_active == true) &&
|
||||||
(lock_flags != NULL) &&
|
(lock_flags != NULL) &&
|
||||||
(def_nr < defbase_tot))
|
(def_nr < defbase_tot))
|
||||||
{
|
{
|
||||||
lock_flags[def_nr] = TRUE;
|
lock_flags[def_nr] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < dvert_tot; i++) {
|
for (i = 0; i < dvert_tot; i++) {
|
||||||
@ -1604,7 +1604,7 @@ static void vgroup_lock_all(Object *ob, int action)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vgroup_invert(Object *ob, const short auto_assign, const short auto_remove)
|
static void vgroup_invert(Object *ob, const bool auto_assign, const bool auto_remove)
|
||||||
{
|
{
|
||||||
MDeformWeight *dw;
|
MDeformWeight *dw;
|
||||||
MDeformVert *dv, **dvert_array = NULL;
|
MDeformVert *dv, **dvert_array = NULL;
|
||||||
@ -1796,20 +1796,20 @@ static int inv_cmp_mdef_vert_weights(const void *a1, const void *a2)
|
|||||||
/* Used for limiting the number of influencing bones per vertex when exporting
|
/* Used for limiting the number of influencing bones per vertex when exporting
|
||||||
* skinned meshes. if all_deform_weights is True, limit all deform modifiers
|
* skinned meshes. if all_deform_weights is True, limit all deform modifiers
|
||||||
* to max_weights regardless of type, otherwise, only limit the number of influencing bones per vertex*/
|
* to max_weights regardless of type, otherwise, only limit the number of influencing bones per vertex*/
|
||||||
static int vertex_group_limit_total(Object *ob,
|
static bool vertex_group_limit_total(Object *ob,
|
||||||
const int max_weights,
|
const int max_weights,
|
||||||
const int all_deform_weights)
|
const bool all_deform_weights)
|
||||||
{
|
{
|
||||||
MDeformVert *dv, **dvert_array = NULL;
|
MDeformVert *dv, **dvert_array = NULL;
|
||||||
int i, dvert_tot = 0;
|
int i, dvert_tot = 0;
|
||||||
const int use_vert_sel = vertex_group_use_vert_sel(ob);
|
const int use_vert_sel = vertex_group_use_vert_sel(ob);
|
||||||
int is_change = FALSE;
|
bool is_change = false;
|
||||||
|
|
||||||
ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot, use_vert_sel);
|
ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot, use_vert_sel);
|
||||||
|
|
||||||
if (dvert_array) {
|
if (dvert_array) {
|
||||||
int defbase_tot = BLI_countlist(&ob->defbase);
|
int defbase_tot = BLI_countlist(&ob->defbase);
|
||||||
const char *vgroup_validmap = (all_deform_weights == FALSE) ?
|
const char *vgroup_validmap = (all_deform_weights == false) ?
|
||||||
BKE_objdef_validmap_get(ob, defbase_tot) :
|
BKE_objdef_validmap_get(ob, defbase_tot) :
|
||||||
NULL;
|
NULL;
|
||||||
int num_to_drop = 0;
|
int num_to_drop = 0;
|
||||||
@ -1830,7 +1830,7 @@ static int vertex_group_limit_total(Object *ob,
|
|||||||
qsort(dv->dw, dv->totweight, sizeof(MDeformWeight), inv_cmp_mdef_vert_weights);
|
qsort(dv->dw, dv->totweight, sizeof(MDeformWeight), inv_cmp_mdef_vert_weights);
|
||||||
dv->dw = MEM_reallocN(dv->dw, sizeof(MDeformWeight) * max_weights);
|
dv->dw = MEM_reallocN(dv->dw, sizeof(MDeformWeight) * max_weights);
|
||||||
dv->totweight = max_weights;
|
dv->totweight = max_weights;
|
||||||
is_change = TRUE;
|
is_change = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -1866,7 +1866,7 @@ static int vertex_group_limit_total(Object *ob,
|
|||||||
/* Do we want to clean/normalize here? */
|
/* Do we want to clean/normalize here? */
|
||||||
MEM_freeN(dv->dw);
|
MEM_freeN(dv->dw);
|
||||||
dv->dw = MEM_reallocN(dw_temp, sizeof(MDeformWeight) * dv->totweight);
|
dv->dw = MEM_reallocN(dw_temp, sizeof(MDeformWeight) * dv->totweight);
|
||||||
is_change = TRUE;
|
is_change = true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
MEM_freeN(dw_temp);
|
MEM_freeN(dw_temp);
|
||||||
@ -1884,7 +1884,7 @@ static int vertex_group_limit_total(Object *ob,
|
|||||||
return is_change;
|
return is_change;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vgroup_clean(Object *ob, const float epsilon, int keep_single)
|
static void vgroup_clean(Object *ob, const float epsilon, const bool keep_single)
|
||||||
{
|
{
|
||||||
MDeformWeight *dw;
|
MDeformWeight *dw;
|
||||||
MDeformVert *dv, **dvert_array = NULL;
|
MDeformVert *dv, **dvert_array = NULL;
|
||||||
@ -1911,7 +1911,7 @@ static void vgroup_clean(Object *ob, const float epsilon, int keep_single)
|
|||||||
|
|
||||||
if (dw) {
|
if (dw) {
|
||||||
if (dw->weight <= epsilon) {
|
if (dw->weight <= epsilon) {
|
||||||
if (keep_single == FALSE || dv->totweight > 1) {
|
if (keep_single == false || dv->totweight > 1) {
|
||||||
defvert_remove_group(dv, dw); /* dw can be NULL */
|
defvert_remove_group(dv, dw); /* dw can be NULL */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1922,7 +1922,7 @@ static void vgroup_clean(Object *ob, const float epsilon, int keep_single)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vgroup_clean_all(Object *ob, const float epsilon, const int keep_single)
|
static void vgroup_clean_all(Object *ob, const float epsilon, const bool keep_single)
|
||||||
{
|
{
|
||||||
MDeformVert **dvert_array = NULL;
|
MDeformVert **dvert_array = NULL;
|
||||||
int i, dvert_tot = 0;
|
int i, dvert_tot = 0;
|
||||||
@ -1965,8 +1965,8 @@ static void vgroup_clean_all(Object *ob, const float epsilon, const int keep_sin
|
|||||||
static void dvert_mirror_op(MDeformVert *dvert, MDeformVert *dvert_mirr,
|
static void dvert_mirror_op(MDeformVert *dvert, MDeformVert *dvert_mirr,
|
||||||
const char sel, const char sel_mirr,
|
const char sel, const char sel_mirr,
|
||||||
const int *flip_map, const int flip_map_len,
|
const int *flip_map, const int flip_map_len,
|
||||||
const short mirror_weights, const short flip_vgroups,
|
const bool mirror_weights, const bool flip_vgroups, const bool all_vgroups,
|
||||||
const short all_vgroups, const int act_vgroup)
|
const int act_vgroup)
|
||||||
{
|
{
|
||||||
BLI_assert(sel || sel_mirr);
|
BLI_assert(sel || sel_mirr);
|
||||||
|
|
||||||
@ -2020,7 +2020,8 @@ static void dvert_mirror_op(MDeformVert *dvert, MDeformVert *dvert_mirr,
|
|||||||
|
|
||||||
/* TODO, vgroup locking */
|
/* TODO, vgroup locking */
|
||||||
/* TODO, face masking */
|
/* TODO, face masking */
|
||||||
void ED_vgroup_mirror(Object *ob, const short mirror_weights, const short flip_vgroups, const short all_vgroups)
|
void ED_vgroup_mirror(Object *ob,
|
||||||
|
const bool mirror_weights, const bool flip_vgroups, const bool all_vgroups)
|
||||||
{
|
{
|
||||||
|
|
||||||
#define VGROUP_MIRR_OP \
|
#define VGROUP_MIRR_OP \
|
||||||
@ -2033,11 +2034,11 @@ void ED_vgroup_mirror(Object *ob, const short mirror_weights, const short flip_v
|
|||||||
|
|
||||||
BMVert *eve, *eve_mirr;
|
BMVert *eve, *eve_mirr;
|
||||||
MDeformVert *dvert, *dvert_mirr;
|
MDeformVert *dvert, *dvert_mirr;
|
||||||
short sel, sel_mirr;
|
char sel, sel_mirr;
|
||||||
int *flip_map, flip_map_len;
|
int *flip_map, flip_map_len;
|
||||||
const int def_nr = ob->actdef - 1;
|
const int def_nr = ob->actdef - 1;
|
||||||
|
|
||||||
if ((mirror_weights == 0 && flip_vgroups == 0) ||
|
if ((mirror_weights == false && flip_vgroups == false) ||
|
||||||
(BLI_findlink(&ob->defbase, def_nr) == NULL))
|
(BLI_findlink(&ob->defbase, def_nr) == NULL))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -2045,8 +2046,8 @@ void ED_vgroup_mirror(Object *ob, const short mirror_weights, const short flip_v
|
|||||||
|
|
||||||
if (flip_vgroups) {
|
if (flip_vgroups) {
|
||||||
flip_map = all_vgroups ?
|
flip_map = all_vgroups ?
|
||||||
defgroup_flip_map(ob, &flip_map_len, FALSE) :
|
defgroup_flip_map(ob, &flip_map_len, false) :
|
||||||
defgroup_flip_map_single(ob, &flip_map_len, FALSE, def_nr);
|
defgroup_flip_map_single(ob, &flip_map_len, false, def_nr);
|
||||||
|
|
||||||
BLI_assert(flip_map != NULL);
|
BLI_assert(flip_map != NULL);
|
||||||
|
|
||||||
@ -2072,7 +2073,7 @@ void ED_vgroup_mirror(Object *ob, const short mirror_weights, const short flip_v
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
EDBM_verts_mirror_cache_begin(em, FALSE);
|
EDBM_verts_mirror_cache_begin(em, false);
|
||||||
|
|
||||||
/* Go through the list of editverts and assign them */
|
/* Go through the list of editverts and assign them */
|
||||||
BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) {
|
BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) {
|
||||||
@ -2106,7 +2107,7 @@ void ED_vgroup_mirror(Object *ob, const short mirror_weights, const short flip_v
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!use_vert_sel) {
|
if (!use_vert_sel) {
|
||||||
sel = sel_mirr = TRUE;
|
sel = sel_mirr = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* tag verts we have used */
|
/* tag verts we have used */
|
||||||
@ -2306,7 +2307,7 @@ static void vgroup_delete_object_mode(Object *ob, bDeformGroup *dg)
|
|||||||
|
|
||||||
/* only in editmode */
|
/* only in editmode */
|
||||||
/* removes from active defgroup, if allverts==0 only selected vertices */
|
/* removes from active defgroup, if allverts==0 only selected vertices */
|
||||||
static void vgroup_active_remove_verts(Object *ob, const int allverts, bDeformGroup *dg)
|
static void vgroup_active_remove_verts(Object *ob, const bool allverts, bDeformGroup *dg)
|
||||||
{
|
{
|
||||||
MDeformVert *dv;
|
MDeformVert *dv;
|
||||||
const int def_nr = BLI_findindex(&ob->defbase, dg);
|
const int def_nr = BLI_findindex(&ob->defbase, dg);
|
||||||
@ -2378,7 +2379,7 @@ static void vgroup_delete_edit_mode(Object *ob, bDeformGroup *dg)
|
|||||||
assert(dg_index > -1);
|
assert(dg_index > -1);
|
||||||
|
|
||||||
/* Make sure that no verts are using this group */
|
/* Make sure that no verts are using this group */
|
||||||
vgroup_active_remove_verts(ob, TRUE, dg);
|
vgroup_active_remove_verts(ob, true, dg);
|
||||||
|
|
||||||
/* Make sure that any verts with higher indices are adjusted accordingly */
|
/* Make sure that any verts with higher indices are adjusted accordingly */
|
||||||
if (ob->type == OB_MESH) {
|
if (ob->type == OB_MESH) {
|
||||||
@ -2442,17 +2443,17 @@ static void vgroup_delete_edit_mode(Object *ob, bDeformGroup *dg)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vgroup_object_in_edit_mode(Object *ob)
|
static bool vgroup_object_in_edit_mode(Object *ob)
|
||||||
{
|
{
|
||||||
if (ob->type == OB_MESH)
|
if (ob->type == OB_MESH)
|
||||||
return (BMEdit_FromObject(ob) != NULL);
|
return (BMEdit_FromObject(ob) != NULL);
|
||||||
else if (ob->type == OB_LATTICE)
|
else if (ob->type == OB_LATTICE)
|
||||||
return (((Lattice *)ob->data)->editlatt != NULL);
|
return (((Lattice *)ob->data)->editlatt != NULL);
|
||||||
|
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vgroup_object_in_wpaint_vert_select(Object *ob)
|
static bool vgroup_object_in_wpaint_vert_select(Object *ob)
|
||||||
{
|
{
|
||||||
if (ob->type == OB_MESH) {
|
if (ob->type == OB_MESH) {
|
||||||
Mesh *me = ob->data;
|
Mesh *me = ob->data;
|
||||||
@ -2461,7 +2462,7 @@ static int vgroup_object_in_wpaint_vert_select(Object *ob)
|
|||||||
(ME_EDIT_PAINT_SEL_MODE(me) == SCE_SELECT_VERTEX) );
|
(ME_EDIT_PAINT_SEL_MODE(me) == SCE_SELECT_VERTEX) );
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vgroup_delete(Object *ob)
|
static void vgroup_delete(Object *ob)
|
||||||
@ -2739,7 +2740,7 @@ static int vertex_group_remove_from_exec(bContext *C, wmOperator *op)
|
|||||||
return OPERATOR_CANCELLED;
|
return OPERATOR_CANCELLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
vgroup_active_remove_verts(ob, FALSE, dg);
|
vgroup_active_remove_verts(ob, false, dg);
|
||||||
}
|
}
|
||||||
|
|
||||||
DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
|
DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
|
||||||
@ -2914,7 +2915,7 @@ void OBJECT_OT_vertex_group_normalize(wmOperatorType *ot)
|
|||||||
static int vertex_group_normalize_all_exec(bContext *C, wmOperator *op)
|
static int vertex_group_normalize_all_exec(bContext *C, wmOperator *op)
|
||||||
{
|
{
|
||||||
Object *ob = ED_object_context(C);
|
Object *ob = ED_object_context(C);
|
||||||
int lock_active = RNA_boolean_get(op->ptr, "lock_active");
|
bool lock_active = RNA_boolean_get(op->ptr, "lock_active");
|
||||||
|
|
||||||
vgroup_normalize_all(ob, lock_active);
|
vgroup_normalize_all(ob, lock_active);
|
||||||
|
|
||||||
@ -2940,7 +2941,7 @@ void OBJECT_OT_vertex_group_normalize_all(wmOperatorType *ot)
|
|||||||
/* flags */
|
/* flags */
|
||||||
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
||||||
|
|
||||||
RNA_def_boolean(ot->srna, "lock_active", TRUE, "Lock Active",
|
RNA_def_boolean(ot->srna, "lock_active", true, "Lock Active",
|
||||||
"Keep the values of the active group while normalizing others");
|
"Keep the values of the active group while normalizing others");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3027,8 +3028,8 @@ void OBJECT_OT_vertex_group_lock(wmOperatorType *ot)
|
|||||||
static int vertex_group_invert_exec(bContext *C, wmOperator *op)
|
static int vertex_group_invert_exec(bContext *C, wmOperator *op)
|
||||||
{
|
{
|
||||||
Object *ob = ED_object_context(C);
|
Object *ob = ED_object_context(C);
|
||||||
int auto_assign = RNA_boolean_get(op->ptr, "auto_assign");
|
bool auto_assign = RNA_boolean_get(op->ptr, "auto_assign");
|
||||||
int auto_remove = RNA_boolean_get(op->ptr, "auto_remove");
|
bool auto_remove = RNA_boolean_get(op->ptr, "auto_remove");
|
||||||
|
|
||||||
vgroup_invert(ob, auto_assign, auto_remove);
|
vgroup_invert(ob, auto_assign, auto_remove);
|
||||||
DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
|
DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
|
||||||
@ -3052,9 +3053,9 @@ void OBJECT_OT_vertex_group_invert(wmOperatorType *ot)
|
|||||||
/* flags */
|
/* flags */
|
||||||
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
||||||
|
|
||||||
RNA_def_boolean(ot->srna, "auto_assign", TRUE, "Add Weights",
|
RNA_def_boolean(ot->srna, "auto_assign", true, "Add Weights",
|
||||||
"Add verts from groups that have zero weight before inverting");
|
"Add verts from groups that have zero weight before inverting");
|
||||||
RNA_def_boolean(ot->srna, "auto_remove", TRUE, "Remove Weights",
|
RNA_def_boolean(ot->srna, "auto_remove", true, "Remove Weights",
|
||||||
"Remove verts from groups that have zero weight after inverting");
|
"Remove verts from groups that have zero weight after inverting");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3080,23 +3081,23 @@ static int vertex_group_blend_poll(bContext *C)
|
|||||||
ID *data = (ob) ? ob->data : NULL;
|
ID *data = (ob) ? ob->data : NULL;
|
||||||
|
|
||||||
if (!(ob && !ob->id.lib && data && !data->lib))
|
if (!(ob && !ob->id.lib && data && !data->lib))
|
||||||
return FALSE;
|
return false;
|
||||||
|
|
||||||
if (vgroup_object_in_edit_mode(ob)) {
|
if (vgroup_object_in_edit_mode(ob)) {
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
else if ((ob->type == OB_MESH) && (ob->mode & OB_MODE_WEIGHT_PAINT)) {
|
else if ((ob->type == OB_MESH) && (ob->mode & OB_MODE_WEIGHT_PAINT)) {
|
||||||
if (ME_EDIT_PAINT_SEL_MODE(((Mesh *)data)) == SCE_SELECT_VERTEX) {
|
if (ME_EDIT_PAINT_SEL_MODE(((Mesh *)data)) == SCE_SELECT_VERTEX) {
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
CTX_wm_operator_poll_msg_set(C, "Vertex select needs to be enabled in weight paint mode");
|
CTX_wm_operator_poll_msg_set(C, "Vertex select needs to be enabled in weight paint mode");
|
||||||
return FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3128,8 +3129,8 @@ static int vertex_group_clean_exec(bContext *C, wmOperator *op)
|
|||||||
Object *ob = ED_object_context(C);
|
Object *ob = ED_object_context(C);
|
||||||
|
|
||||||
float limit = RNA_float_get(op->ptr, "limit");
|
float limit = RNA_float_get(op->ptr, "limit");
|
||||||
int all_groups = RNA_boolean_get(op->ptr, "all_groups");
|
bool all_groups = RNA_boolean_get(op->ptr, "all_groups");
|
||||||
int keep_single = RNA_boolean_get(op->ptr, "keep_single");
|
bool keep_single = RNA_boolean_get(op->ptr, "keep_single");
|
||||||
|
|
||||||
if (all_groups) vgroup_clean_all(ob, limit, keep_single);
|
if (all_groups) vgroup_clean_all(ob, limit, keep_single);
|
||||||
else vgroup_clean(ob, limit, keep_single);
|
else vgroup_clean(ob, limit, keep_single);
|
||||||
@ -3156,8 +3157,8 @@ void OBJECT_OT_vertex_group_clean(wmOperatorType *ot)
|
|||||||
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
||||||
|
|
||||||
RNA_def_float(ot->srna, "limit", 0.0f, 0.0f, 1.0, "Limit", "Remove weights under this limit", 0.0f, 0.99f);
|
RNA_def_float(ot->srna, "limit", 0.0f, 0.0f, 1.0, "Limit", "Remove weights under this limit", 0.0f, 0.99f);
|
||||||
RNA_def_boolean(ot->srna, "all_groups", FALSE, "All Groups", "Clean all vertex groups");
|
RNA_def_boolean(ot->srna, "all_groups", false, "All Groups", "Clean all vertex groups");
|
||||||
RNA_def_boolean(ot->srna, "keep_single", FALSE, "Keep Single",
|
RNA_def_boolean(ot->srna, "keep_single", false, "Keep Single",
|
||||||
"Keep verts assigned to at least one group when cleaning");
|
"Keep verts assigned to at least one group when cleaning");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3166,7 +3167,7 @@ static int vertex_group_limit_total_exec(bContext *C, wmOperator *op)
|
|||||||
Object *ob = ED_object_context(C);
|
Object *ob = ED_object_context(C);
|
||||||
|
|
||||||
const int limit = RNA_int_get(op->ptr, "limit");
|
const int limit = RNA_int_get(op->ptr, "limit");
|
||||||
const int all_deform_weights = RNA_boolean_get(op->ptr, "all_deform_weights");
|
const bool all_deform_weights = RNA_boolean_get(op->ptr, "all_deform_weights");
|
||||||
|
|
||||||
if (vertex_group_limit_total(ob, limit, all_deform_weights)) {
|
if (vertex_group_limit_total(ob, limit, all_deform_weights)) {
|
||||||
|
|
||||||
@ -3200,7 +3201,7 @@ void OBJECT_OT_vertex_group_limit_total(wmOperatorType *ot)
|
|||||||
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
||||||
|
|
||||||
RNA_def_int(ot->srna, "limit", 4, 1, 32, "Limit", "Maximum number of deform weights", 1, 32);
|
RNA_def_int(ot->srna, "limit", 4, 1, 32, "Limit", "Maximum number of deform weights", 1, 32);
|
||||||
RNA_def_boolean(ot->srna, "all_deform_weights", FALSE, "All Deform Weights", "Cull all deform weights, not just bones");
|
RNA_def_boolean(ot->srna, "all_deform_weights", false, "All Deform Weights", "Cull all deform weights, not just bones");
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vertex_group_mirror_exec(bContext *C, wmOperator *op)
|
static int vertex_group_mirror_exec(bContext *C, wmOperator *op)
|
||||||
@ -3235,9 +3236,9 @@ void OBJECT_OT_vertex_group_mirror(wmOperatorType *ot)
|
|||||||
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
||||||
|
|
||||||
/* properties */
|
/* properties */
|
||||||
RNA_def_boolean(ot->srna, "mirror_weights", TRUE, "Mirror Weights", "Mirror weights");
|
RNA_def_boolean(ot->srna, "mirror_weights", true, "Mirror Weights", "Mirror weights");
|
||||||
RNA_def_boolean(ot->srna, "flip_group_names", TRUE, "Flip Group Names", "Flip vertex group names");
|
RNA_def_boolean(ot->srna, "flip_group_names", true, "Flip Group Names", "Flip vertex group names");
|
||||||
RNA_def_boolean(ot->srna, "all_groups", FALSE, "All Groups", "Mirror all vertex groups weights");
|
RNA_def_boolean(ot->srna, "all_groups", false, "All Groups", "Mirror all vertex groups weights");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1528,7 +1528,7 @@ ImBuf *view3d_read_backbuf(ViewContext *vc, short xmin, short ymin, short xmax,
|
|||||||
/* smart function to sample a rect spiralling outside, nice for backbuf selection */
|
/* smart function to sample a rect spiralling outside, nice for backbuf selection */
|
||||||
unsigned int view3d_sample_backbuf_rect(ViewContext *vc, const int mval[2], int size,
|
unsigned int view3d_sample_backbuf_rect(ViewContext *vc, const int mval[2], int size,
|
||||||
unsigned int min, unsigned int max, float *r_dist, short strict,
|
unsigned int min, unsigned int max, float *r_dist, short strict,
|
||||||
void *handle, unsigned int (*indextest)(void *handle, unsigned int index))
|
void *handle, bool (*indextest)(void *handle, unsigned int index))
|
||||||
{
|
{
|
||||||
struct ImBuf *buf;
|
struct ImBuf *buf;
|
||||||
unsigned int *bufmin, *bufmax, *tbuf;
|
unsigned int *bufmin, *bufmax, *tbuf;
|
||||||
@ -1536,7 +1536,7 @@ unsigned int view3d_sample_backbuf_rect(ViewContext *vc, const int mval[2], int
|
|||||||
int a, b, rc, nr, amount, dirvec[4][2];
|
int a, b, rc, nr, amount, dirvec[4][2];
|
||||||
int distance = 0;
|
int distance = 0;
|
||||||
unsigned int index = 0;
|
unsigned int index = 0;
|
||||||
short indexok = 0;
|
bool indexok = false;
|
||||||
|
|
||||||
amount = (size - 1) / 2;
|
amount = (size - 1) / 2;
|
||||||
|
|
||||||
|
@ -5182,7 +5182,7 @@ void special_aftertrans_update(bContext *C, TransInfo *t)
|
|||||||
* during cleanup - psy-fi */
|
* during cleanup - psy-fi */
|
||||||
freeEdgeSlideTempFaces(sld);
|
freeEdgeSlideTempFaces(sld);
|
||||||
}
|
}
|
||||||
EDBM_automerge(t->scene, t->obedit, TRUE);
|
EDBM_automerge(t->scene, t->obedit, true);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (t->mode == TFM_EDGE_SLIDE) {
|
if (t->mode == TFM_EDGE_SLIDE) {
|
||||||
|
@ -1427,9 +1427,7 @@ static int reset_exec(bContext *C, wmOperator *UNUSED(op))
|
|||||||
return OPERATOR_CANCELLED;
|
return OPERATOR_CANCELLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ED_mesh_uv_loop_reset(C, me)) {
|
ED_mesh_uv_loop_reset(C, me);
|
||||||
return OPERATOR_CANCELLED;
|
|
||||||
}
|
|
||||||
|
|
||||||
DAG_id_tag_update(obedit->data, 0);
|
DAG_id_tag_update(obedit->data, 0);
|
||||||
WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
|
WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
|
||||||
|
Loading…
Reference in New Issue
Block a user