face-paint mode operators were not ported from 2.4x yet hide/reveal/sel-swap
also added hide-unselected option to armature mode.
This commit is contained in:
parent
04d04f6401
commit
197a57db69
|
@ -213,6 +213,8 @@ void ED_keymap_armature(wmKeyConfig *keyconf)
|
|||
|
||||
/* only set in editmode armature, by space_view3d listener */
|
||||
WM_keymap_add_item(keymap, "ARMATURE_OT_hide", HKEY, KM_PRESS, 0, 0);
|
||||
kmi= WM_keymap_add_item(keymap, "ARMATURE_OT_hide", HKEY, KM_PRESS, KM_SHIFT, 0);
|
||||
RNA_boolean_set(kmi->ptr, "unselected", 1);
|
||||
WM_keymap_add_item(keymap, "ARMATURE_OT_reveal", HKEY, KM_PRESS, KM_ALT, 0);
|
||||
WM_keymap_add_item(keymap, "ARMATURE_OT_align", AKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
|
||||
WM_keymap_add_item(keymap, "ARMATURE_OT_calculate_roll", NKEY, KM_PRESS, KM_CTRL, 0);
|
||||
|
|
|
@ -3316,11 +3316,12 @@ void ARMATURE_OT_merge (wmOperatorType *ot)
|
|||
/* ************** END Add/Remove stuff in editmode ************ */
|
||||
/* *************** Tools in editmode *********** */
|
||||
|
||||
static int armature_hide_exec(bContext *C, wmOperator *UNUSED(op))
|
||||
static int armature_hide_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Object *obedit= CTX_data_edit_object(C);
|
||||
bArmature *arm= obedit->data;
|
||||
EditBone *ebone;
|
||||
const int invert= RNA_boolean_get(op->ptr, "unselected") ? BONE_SELECTED : 0;
|
||||
|
||||
/* cancel if nothing selected */
|
||||
if (CTX_DATA_COUNT(C, selected_bones) == 0)
|
||||
|
@ -3328,7 +3329,7 @@ static int armature_hide_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
|
||||
for (ebone = arm->edbo->first; ebone; ebone=ebone->next) {
|
||||
if (EBONE_VISIBLE(arm, ebone)) {
|
||||
if (ebone->flag & BONE_SELECTED) {
|
||||
if ((ebone->flag & BONE_SELECTED) != invert) {
|
||||
ebone->flag &= ~(BONE_TIPSEL|BONE_SELECTED|BONE_ROOTSEL);
|
||||
ebone->flag |= BONE_HIDDEN_A;
|
||||
}
|
||||
|
@ -3355,6 +3356,9 @@ void ARMATURE_OT_hide(wmOperatorType *ot)
|
|||
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
|
||||
/* props */
|
||||
RNA_def_boolean(ot->srna, "unselected", 0, "Unselected", "Hide unselected rather than selected.");
|
||||
}
|
||||
|
||||
static int armature_reveal_exec(bContext *C, wmOperator *UNUSED(op))
|
||||
|
|
|
@ -193,10 +193,8 @@ void paintface_deselect_all_visible(struct Object *ob, int action, short flush_f
|
|||
void paintface_select_linked(struct bContext *C, struct Object *ob, short mval[2], int mode);
|
||||
int paintface_minmax(struct Object *ob, float *min, float *max);
|
||||
|
||||
/* TODO, 2.5x */
|
||||
void paintface_unhide(struct Scene *scene);
|
||||
void paintface_hide(struct Scene *scene);
|
||||
void paintface_select_swap(struct Scene *scene);
|
||||
void paintface_hide(struct Object *ob, const int unselected);
|
||||
void paintface_reveal(struct Object *ob);
|
||||
|
||||
/* object_vgroup.c */
|
||||
|
||||
|
|
|
@ -152,49 +152,20 @@ MTFace *EM_get_active_mtface(EditMesh *em, EditFace **act_efa, MCol **mcol, int
|
|||
return NULL;
|
||||
}
|
||||
|
||||
void paintface_unhide(Scene *scene)
|
||||
void paintface_hide(Object *ob, const int unselected)
|
||||
{
|
||||
Mesh *me;
|
||||
MFace *mface;
|
||||
int a;
|
||||
|
||||
me= get_mesh(OBACT);
|
||||
me= get_mesh(ob);
|
||||
if(me==0 || me->totface==0) return;
|
||||
|
||||
|
||||
mface= me->mface;
|
||||
a= me->totface;
|
||||
while(a--) {
|
||||
if(mface->flag & ME_HIDE) {
|
||||
mface->flag |= ME_FACE_SEL;
|
||||
mface->flag -= ME_HIDE;
|
||||
}
|
||||
mface++;
|
||||
}
|
||||
|
||||
paintface_flush_flags(OBACT);
|
||||
}
|
||||
|
||||
void paintface_hide(Scene *scene)
|
||||
{
|
||||
Mesh *me;
|
||||
MFace *mface;
|
||||
int a;
|
||||
int shift=0, alt= 0; // XXX
|
||||
|
||||
me= get_mesh(OBACT);
|
||||
if(me==0 || me->totface==0) return;
|
||||
|
||||
if(alt) {
|
||||
paintface_unhide(scene);
|
||||
return;
|
||||
}
|
||||
|
||||
mface= me->mface;
|
||||
a= me->totface;
|
||||
while(a--) {
|
||||
if(mface->flag & ME_HIDE);
|
||||
else {
|
||||
if(shift) {
|
||||
if((mface->flag & ME_HIDE) == 0) {
|
||||
if(unselected) {
|
||||
if( (mface->flag & ME_FACE_SEL)==0) mface->flag |= ME_HIDE;
|
||||
}
|
||||
else {
|
||||
|
@ -206,7 +177,30 @@ void paintface_hide(Scene *scene)
|
|||
mface++;
|
||||
}
|
||||
|
||||
paintface_flush_flags(OBACT);
|
||||
paintface_flush_flags(ob);
|
||||
}
|
||||
|
||||
|
||||
void paintface_reveal(Object *ob)
|
||||
{
|
||||
Mesh *me;
|
||||
MFace *mface;
|
||||
int a;
|
||||
|
||||
me= get_mesh(ob);
|
||||
if(me==0 || me->totface==0) return;
|
||||
|
||||
mface= me->mface;
|
||||
a= me->totface;
|
||||
while(a--) {
|
||||
if(mface->flag & ME_HIDE) {
|
||||
mface->flag |= ME_FACE_SEL;
|
||||
mface->flag -= ME_HIDE;
|
||||
}
|
||||
mface++;
|
||||
}
|
||||
|
||||
paintface_flush_flags(ob);
|
||||
}
|
||||
|
||||
/* Set tface seams based on edge data, uses hash table to find seam edges. */
|
||||
|
@ -359,37 +353,49 @@ void paintface_deselect_all_visible(Object *ob, int action, short flush_flags)
|
|||
me= get_mesh(ob);
|
||||
if(me==0) return;
|
||||
|
||||
if (action == SEL_TOGGLE) {
|
||||
action = SEL_SELECT;
|
||||
|
||||
if(action == SEL_INVERT) {
|
||||
mface= me->mface;
|
||||
a= me->totface;
|
||||
while(a--) {
|
||||
if((mface->flag & ME_HIDE) == 0 && mface->flag & ME_FACE_SEL) {
|
||||
action = SEL_DESELECT;
|
||||
break;
|
||||
if((mface->flag & ME_HIDE) == 0) {
|
||||
mface->flag ^= ME_FACE_SEL;
|
||||
}
|
||||
mface++;
|
||||
}
|
||||
}
|
||||
|
||||
mface= me->mface;
|
||||
a= me->totface;
|
||||
while(a--) {
|
||||
if((mface->flag & ME_HIDE) == 0) {
|
||||
switch (action) {
|
||||
case SEL_SELECT:
|
||||
mface->flag |= ME_FACE_SEL;
|
||||
break;
|
||||
case SEL_DESELECT:
|
||||
mface->flag &= ~ME_FACE_SEL;
|
||||
break;
|
||||
case SEL_INVERT:
|
||||
mface->flag ^= ME_FACE_SEL;
|
||||
break;
|
||||
else {
|
||||
if (action == SEL_TOGGLE) {
|
||||
action = SEL_SELECT;
|
||||
|
||||
mface= me->mface;
|
||||
a= me->totface;
|
||||
while(a--) {
|
||||
if((mface->flag & ME_HIDE) == 0 && mface->flag & ME_FACE_SEL) {
|
||||
action = SEL_DESELECT;
|
||||
break;
|
||||
}
|
||||
mface++;
|
||||
}
|
||||
}
|
||||
mface++;
|
||||
|
||||
mface= me->mface;
|
||||
a= me->totface;
|
||||
while(a--) {
|
||||
if((mface->flag & ME_HIDE) == 0) {
|
||||
switch (action) {
|
||||
case SEL_SELECT:
|
||||
mface->flag |= ME_FACE_SEL;
|
||||
break;
|
||||
case SEL_DESELECT:
|
||||
mface->flag &= ~ME_FACE_SEL;
|
||||
break;
|
||||
case SEL_INVERT:
|
||||
mface->flag ^= ME_FACE_SEL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
mface++;
|
||||
}
|
||||
}
|
||||
|
||||
if(flush_flags) {
|
||||
|
@ -397,29 +403,6 @@ void paintface_deselect_all_visible(Object *ob, int action, short flush_flags)
|
|||
}
|
||||
}
|
||||
|
||||
void paintface_select_swap(Scene *scene)
|
||||
{
|
||||
Mesh *me;
|
||||
MFace *mface;
|
||||
int a;
|
||||
|
||||
me= get_mesh(OBACT);
|
||||
if(me==0) return;
|
||||
|
||||
mface= me->mface;
|
||||
a= me->totface;
|
||||
while(a--) {
|
||||
if(mface->flag & ME_HIDE);
|
||||
else {
|
||||
if(mface->flag & ME_FACE_SEL) mface->flag &= ~ME_FACE_SEL;
|
||||
else mface->flag |= ME_FACE_SEL;
|
||||
}
|
||||
mface++;
|
||||
}
|
||||
|
||||
paintface_flush_flags(OBACT);
|
||||
}
|
||||
|
||||
int paintface_minmax(Object *ob, float *min, float *max)
|
||||
{
|
||||
Mesh *me= get_mesh(ob);
|
||||
|
|
|
@ -374,25 +374,15 @@ static int hide_metaelems_exec(bContext *C, wmOperator *op)
|
|||
Object *obedit= CTX_data_edit_object(C);
|
||||
MetaBall *mb= (MetaBall*)obedit->data;
|
||||
MetaElem *ml;
|
||||
int hide_unselected= RNA_boolean_get(op->ptr, "unselected");
|
||||
const int invert= RNA_boolean_get(op->ptr, "unselected") ? SELECT : 0;
|
||||
|
||||
ml= mb->editelems->first;
|
||||
|
||||
if(ml) {
|
||||
/* Hide unselected metaelems */
|
||||
if(hide_unselected) {
|
||||
while(ml){
|
||||
if(!(ml->flag & SELECT))
|
||||
ml->flag |= MB_HIDE;
|
||||
ml= ml->next;
|
||||
}
|
||||
/* Hide selected metaelems */
|
||||
} else {
|
||||
while(ml){
|
||||
if(ml->flag & SELECT)
|
||||
ml->flag |= MB_HIDE;
|
||||
ml= ml->next;
|
||||
}
|
||||
while(ml){
|
||||
if((ml->flag & SELECT) != invert)
|
||||
ml->flag |= MB_HIDE;
|
||||
ml= ml->next;
|
||||
}
|
||||
WM_event_add_notifier(C, NC_GEOM|ND_DATA, mb);
|
||||
DAG_id_tag_update(obedit->data, 0);
|
||||
|
|
|
@ -170,7 +170,7 @@ static int object_hide_view_set_exec(bContext *C, wmOperator *op)
|
|||
Main *bmain= CTX_data_main(C);
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
short changed = 0;
|
||||
int unselected= RNA_boolean_get(op->ptr, "unselected");
|
||||
const int unselected= RNA_boolean_get(op->ptr, "unselected");
|
||||
|
||||
CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
|
||||
if(!unselected) {
|
||||
|
@ -259,7 +259,7 @@ void OBJECT_OT_hide_render_clear(wmOperatorType *ot)
|
|||
|
||||
static int object_hide_render_set_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
int unselected= RNA_boolean_get(op->ptr, "unselected");
|
||||
const int unselected= RNA_boolean_get(op->ptr, "unselected");
|
||||
|
||||
CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
|
||||
if(!unselected) {
|
||||
|
|
|
@ -114,6 +114,9 @@ void BRUSH_OT_curve_preset(struct wmOperatorType *ot);
|
|||
void PAINT_OT_face_select_linked(struct wmOperatorType *ot);
|
||||
void PAINT_OT_face_select_linked_pick(struct wmOperatorType *ot);
|
||||
void PAINT_OT_face_select_all(struct wmOperatorType *ot);
|
||||
void PAINT_OT_face_select_inverse(struct wmOperatorType *ot);
|
||||
void PAINT_OT_face_select_hide(struct wmOperatorType *ot);
|
||||
void PAINT_OT_face_select_reveal(struct wmOperatorType *ot);
|
||||
|
||||
int facemask_paint_poll(struct bContext *C);
|
||||
|
||||
|
|
|
@ -224,6 +224,9 @@ void ED_operatortypes_paint(void)
|
|||
WM_operatortype_append(PAINT_OT_face_select_linked);
|
||||
WM_operatortype_append(PAINT_OT_face_select_linked_pick);
|
||||
WM_operatortype_append(PAINT_OT_face_select_all);
|
||||
WM_operatortype_append(PAINT_OT_face_select_inverse);
|
||||
WM_operatortype_append(PAINT_OT_face_select_hide);
|
||||
WM_operatortype_append(PAINT_OT_face_select_reveal);
|
||||
}
|
||||
|
||||
|
||||
|
@ -414,7 +417,11 @@ void ED_keymap_paint(wmKeyConfig *keyconf)
|
|||
keymap->poll= facemask_paint_poll;
|
||||
|
||||
WM_keymap_add_item(keymap, "PAINT_OT_face_select_all", AKEY, KM_PRESS, 0, 0);
|
||||
WM_keymap_add_item(keymap, "PAINT_OT_face_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0);
|
||||
WM_keymap_add_item(keymap, "PAINT_OT_face_select_hide", HKEY, KM_PRESS, 0, 0);
|
||||
RNA_boolean_set(WM_keymap_add_item(keymap, "PAINT_OT_face_select_hide", HKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "unselected", 1);
|
||||
WM_keymap_add_item(keymap, "PAINT_OT_face_select_reveal", HKEY, KM_PRESS, KM_ALT, 0);
|
||||
|
||||
WM_keymap_add_item(keymap, "PAINT_OT_face_select_linked", LKEY, KM_PRESS, KM_CTRL, 0);
|
||||
WM_keymap_add_item(keymap, "PAINT_OT_face_select_linked_pick", LKEY, KM_PRESS, 0, 0);
|
||||
|
||||
}
|
||||
|
|
|
@ -350,3 +350,69 @@ void PAINT_OT_face_select_all(wmOperatorType *ot)
|
|||
|
||||
WM_operator_properties_select_all(ot);
|
||||
}
|
||||
|
||||
static int face_select_inverse_exec(bContext *C, wmOperator *UNUSED(op))
|
||||
{
|
||||
Object *ob= CTX_data_active_object(C);
|
||||
paintface_deselect_all_visible(ob, SEL_INVERT, TRUE);
|
||||
ED_region_tag_redraw(CTX_wm_region(C));
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
|
||||
void PAINT_OT_face_select_inverse(wmOperatorType *ot)
|
||||
{
|
||||
ot->name= "Face Select Invert";
|
||||
ot->description= "Invert selection of faces";
|
||||
ot->idname= "PAINT_OT_face_select_inverse";
|
||||
|
||||
ot->exec= face_select_inverse_exec;
|
||||
ot->poll= facemask_paint_poll;
|
||||
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
}
|
||||
|
||||
static int face_select_hide_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
const int unselected= RNA_boolean_get(op->ptr, "unselected");
|
||||
Object *ob= CTX_data_active_object(C);
|
||||
paintface_hide(ob, unselected);
|
||||
ED_region_tag_redraw(CTX_wm_region(C));
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
void PAINT_OT_face_select_hide(wmOperatorType *ot)
|
||||
{
|
||||
ot->name= "Face Select Hide";
|
||||
ot->description= "Hide selected faces";
|
||||
ot->idname= "PAINT_OT_face_select_hide";
|
||||
|
||||
ot->exec= face_select_hide_exec;
|
||||
ot->poll= facemask_paint_poll;
|
||||
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
|
||||
RNA_def_boolean(ot->srna, "unselected", 0, "Unselected", "Hide unselected rather than selected objects.");
|
||||
}
|
||||
|
||||
static int face_select_reveal_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Object *ob= CTX_data_active_object(C);
|
||||
paintface_reveal(ob);
|
||||
ED_region_tag_redraw(CTX_wm_region(C));
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
void PAINT_OT_face_select_reveal(wmOperatorType *ot)
|
||||
{
|
||||
ot->name= "Face Select Reveal";
|
||||
ot->description= "Reveal hidden faces";
|
||||
ot->idname= "PAINT_OT_face_select_reveal";
|
||||
|
||||
ot->exec= face_select_reveal_exec;
|
||||
ot->poll= facemask_paint_poll;
|
||||
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
|
||||
RNA_def_boolean(ot->srna, "unselected", 0, "Unselected", "Hide unselected rather than selected objects.");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue