forked from bartvdbraak/blender
Cleanup: remove redundant args from ebone picking
Make this match editmesh picking more closely
This commit is contained in:
parent
0f2efce6c5
commit
7bccd21afa
@ -291,8 +291,8 @@ static int selectbuffer_ret_hits_5(unsigned int *buffer, const int hits12, const
|
|||||||
/* does bones and points */
|
/* does bones and points */
|
||||||
/* note that BONE ROOT only gets drawn for root bones (or without IK) */
|
/* note that BONE ROOT only gets drawn for root bones (or without IK) */
|
||||||
static EditBone *get_nearest_editbonepoint(
|
static EditBone *get_nearest_editbonepoint(
|
||||||
ViewContext *vc, const int mval[2],
|
ViewContext *vc,
|
||||||
ListBase *edbo, bool findunsel, bool use_cycle, int *r_selmask)
|
bool findunsel, bool use_cycle, int *r_selmask)
|
||||||
{
|
{
|
||||||
bArmature *arm = (bArmature *)vc->obedit->data;
|
bArmature *arm = (bArmature *)vc->obedit->data;
|
||||||
EditBone *ebone_next_act = arm->act_edbone;
|
EditBone *ebone_next_act = arm->act_edbone;
|
||||||
@ -324,11 +324,11 @@ static EditBone *get_nearest_editbonepoint(
|
|||||||
if (use_cycle) {
|
if (use_cycle) {
|
||||||
if (vc->v3d->drawtype > OB_WIRE) {
|
if (vc->v3d->drawtype > OB_WIRE) {
|
||||||
do_nearest = true;
|
do_nearest = true;
|
||||||
if (len_manhattan_v2v2_int(mval, last_mval) < 3) {
|
if (len_manhattan_v2v2_int(vc->mval, last_mval) < 3) {
|
||||||
do_nearest = false;
|
do_nearest = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
copy_v2_v2_int(last_mval, mval);
|
copy_v2_v2_int(last_mval, vc->mval);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (vc->v3d->drawtype > OB_WIRE) {
|
if (vc->v3d->drawtype > OB_WIRE) {
|
||||||
@ -343,7 +343,7 @@ static EditBone *get_nearest_editbonepoint(
|
|||||||
/* we _must_ end cache before return, use 'goto cache_end' */
|
/* we _must_ end cache before return, use 'goto cache_end' */
|
||||||
view3d_opengl_select_cache_begin();
|
view3d_opengl_select_cache_begin();
|
||||||
|
|
||||||
BLI_rcti_init_pt_radius(&rect, mval, 12);
|
BLI_rcti_init_pt_radius(&rect, vc->mval, 12);
|
||||||
hits12 = view3d_opengl_select(vc, buffer, MAXPICKBUF, &rect, select_mode);
|
hits12 = view3d_opengl_select(vc, buffer, MAXPICKBUF, &rect, select_mode);
|
||||||
if (hits12 == 1) {
|
if (hits12 == 1) {
|
||||||
hits = selectbuffer_ret_hits_12(buffer, hits12);
|
hits = selectbuffer_ret_hits_12(buffer, hits12);
|
||||||
@ -353,7 +353,7 @@ static EditBone *get_nearest_editbonepoint(
|
|||||||
int offs;
|
int offs;
|
||||||
|
|
||||||
offs = 4 * hits12;
|
offs = 4 * hits12;
|
||||||
BLI_rcti_init_pt_radius(&rect, mval, 5);
|
BLI_rcti_init_pt_radius(&rect, vc->mval, 5);
|
||||||
hits5 = view3d_opengl_select(vc, buffer + offs, MAXPICKBUF - offs, &rect, select_mode);
|
hits5 = view3d_opengl_select(vc, buffer + offs, MAXPICKBUF - offs, &rect, select_mode);
|
||||||
|
|
||||||
if (hits5 == 1) {
|
if (hits5 == 1) {
|
||||||
@ -381,7 +381,7 @@ cache_end:
|
|||||||
if (!(hitresult & BONESEL_NOSEL)) {
|
if (!(hitresult & BONESEL_NOSEL)) {
|
||||||
int dep;
|
int dep;
|
||||||
|
|
||||||
ebone = BLI_findlink(edbo, hitresult & ~BONESEL_ANY);
|
ebone = BLI_findlink(arm->edbo, hitresult & ~BONESEL_ANY);
|
||||||
|
|
||||||
/* clicks on bone points get advantage */
|
/* clicks on bone points get advantage */
|
||||||
if (hitresult & (BONESEL_ROOT | BONESEL_TIP)) {
|
if (hitresult & (BONESEL_ROOT | BONESEL_TIP)) {
|
||||||
@ -425,7 +425,7 @@ cache_end:
|
|||||||
|
|
||||||
if (!(besthitresult & BONESEL_NOSEL)) {
|
if (!(besthitresult & BONESEL_NOSEL)) {
|
||||||
|
|
||||||
ebone = BLI_findlink(edbo, besthitresult & ~BONESEL_ANY);
|
ebone = BLI_findlink(arm->edbo, besthitresult & ~BONESEL_ANY);
|
||||||
|
|
||||||
*r_selmask = 0;
|
*r_selmask = 0;
|
||||||
if (besthitresult & BONESEL_ROOT)
|
if (besthitresult & BONESEL_ROOT)
|
||||||
@ -481,19 +481,21 @@ static int ebone_select_flag(EditBone *ebone)
|
|||||||
bool ED_armature_edit_select_pick(bContext *C, const int mval[2], bool extend, bool deselect, bool toggle)
|
bool ED_armature_edit_select_pick(bContext *C, const int mval[2], bool extend, bool deselect, bool toggle)
|
||||||
{
|
{
|
||||||
Object *obedit = CTX_data_edit_object(C);
|
Object *obedit = CTX_data_edit_object(C);
|
||||||
bArmature *arm = obedit->data;
|
|
||||||
ViewContext vc;
|
ViewContext vc;
|
||||||
EditBone *nearBone = NULL;
|
EditBone *nearBone = NULL;
|
||||||
int selmask;
|
int selmask;
|
||||||
|
|
||||||
ED_view3d_viewcontext_init(C, &vc);
|
ED_view3d_viewcontext_init(C, &vc);
|
||||||
|
vc.mval[0] = mval[0];
|
||||||
|
vc.mval[1] = mval[1];
|
||||||
|
|
||||||
if (BIF_sk_selectStroke(C, mval, extend)) {
|
if (BIF_sk_selectStroke(C, mval, extend)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
nearBone = get_nearest_editbonepoint(&vc, mval, arm->edbo, true, true, &selmask);
|
nearBone = get_nearest_editbonepoint(&vc, true, true, &selmask);
|
||||||
if (nearBone) {
|
if (nearBone) {
|
||||||
|
bArmature *arm = obedit->data;
|
||||||
|
|
||||||
if (!extend && !deselect && !toggle) {
|
if (!extend && !deselect && !toggle) {
|
||||||
ED_armature_edit_deselect_all(obedit);
|
ED_armature_edit_deselect_all(obedit);
|
||||||
|
Loading…
Reference in New Issue
Block a user