[Bf-blender-cvs] [ff87c7a1d7] temp-select-pick: Merge branch 'master' into temp-select-pick
Campbell Barton
noreply at git.blender.org
Wed Mar 8 13:35:41 CET 2017
Commit: ff87c7a1d7e079ac831e491fdef5f6bac9b101e2
Author: Campbell Barton
Date: Wed Mar 8 23:36:19 2017 +1100
Branches: temp-select-pick
https://developer.blender.org/rBff87c7a1d7e079ac831e491fdef5f6bac9b101e2
Merge branch 'master' into temp-select-pick
===================================================================
===================================================================
diff --cc source/blender/editors/armature/armature_select.c
index 13103730e5,ec0f193e78..7d9d65b66d
--- a/source/blender/editors/armature/armature_select.c
+++ b/source/blender/editors/armature/armature_select.c
@@@ -304,33 -303,12 +304,33 @@@ static EditBone *get_nearest_editbonepo
ebone_next_act = NULL;
}
+ bool do_nearest = false;
+
+ /* define if we use solid nearest select or not */
+ if (use_cycle) {
+ if (vc->v3d->drawtype > OB_WIRE) {
+ do_nearest = true;
+ if (len_manhattan_v2v2_int(mval, last_mval) < 3) {
+ do_nearest = false;
+ }
+ }
+ copy_v2_v2_int(last_mval, mval);
+ }
+ else {
+ if (vc->v3d->drawtype > OB_WIRE) {
+ do_nearest = true;
+ }
+ }
+
+ const int select_mode = (do_nearest ? VIEW3D_SELECT_PICK_SORT_NEAREST : VIEW3D_SELECT_PICK_SORT_ALL);
+
+ /* TODO: select larger region first (so we can use GPU_select_cache) */
- BLI_rcti_init_pt_size(&rect, mval, 5);
+ BLI_rcti_init_pt_radius(&rect, mval, 5);
+ hits = view3d_opengl_select(vc, buffer, MAXPICKBUF, &rect, select_mode);
- hits = view3d_opengl_select(vc, buffer, MAXPICKBUF, &rect, true);
if (hits == 0) {
- BLI_rcti_init_pt_size(&rect, mval, 12);
+ BLI_rcti_init_pt_radius(&rect, mval, 12);
- hits = view3d_opengl_select(vc, buffer, MAXPICKBUF, &rect, true);
+ hits = view3d_opengl_select(vc, buffer, MAXPICKBUF, &rect, select_mode);
}
/* See if there are any selected bones in this group */
if (hits > 0) {
diff --cc source/blender/editors/armature/editarmature_sketch.c
index 412a78e435,8690072ca8..8480d06276
--- a/source/blender/editors/armature/editarmature_sketch.c
+++ b/source/blender/editors/armature/editarmature_sketch.c
@@@ -1907,9 -1907,9 +1907,9 @@@ static bool sk_selectStroke(bContext *C
view3d_set_viewcontext(C, &vc);
- BLI_rcti_init_pt_size(&rect, mval, 5);
+ BLI_rcti_init_pt_radius(&rect, mval, 5);
- hits = view3d_opengl_select(&vc, buffer, MAXPICKBUF, &rect, true);
+ hits = view3d_opengl_select(&vc, buffer, MAXPICKBUF, &rect, VIEW3D_SELECT_PICK_SORT_NEAREST);
if (hits > 0) {
int besthitresult = -1;
diff --cc source/blender/editors/metaball/mball_edit.c
index 867f289b21,fff53d6885..183ed830f0
--- a/source/blender/editors/metaball/mball_edit.c
+++ b/source/blender/editors/metaball/mball_edit.c
@@@ -592,9 -592,9 +592,9 @@@ bool ED_mball_select_pick(bContext *C,
view3d_set_viewcontext(C, &vc);
- BLI_rcti_init_pt_size(&rect, mval, 12);
+ BLI_rcti_init_pt_radius(&rect, mval, 12);
- hits = view3d_opengl_select(&vc, buffer, MAXPICKBUF, &rect, true);
+ hits = view3d_opengl_select(&vc, buffer, MAXPICKBUF, &rect, VIEW3D_SELECT_PICK_SORT_NEAREST);
/* does startelem exist? */
ml = mb->editelems->first;
diff --cc source/blender/editors/space_view3d/view3d_select.c
index 44ba4cf34f,49f24ef634..6237c9588c
--- a/source/blender/editors/space_view3d/view3d_select.c
+++ b/source/blender/editors/space_view3d/view3d_select.c
@@@ -1236,37 -1236,28 +1236,37 @@@ static int mixed_bones_object_selectbuf
do_nearest = do_nearest && !enumerate;
+ const int select_mode = (do_nearest ? VIEW3D_SELECT_PICK_SORT_NEAREST : VIEW3D_SELECT_PICK_SORT_ALL);
+ int hits = 0;
+
+ /* we _must_ end cache before return, use 'goto finally' */
+ GPU_select_cache_begin();
+
- BLI_rcti_init_pt_size(&rect, mval, 14);
+ BLI_rcti_init_pt_radius(&rect, mval, 14);
- hits15 = view3d_opengl_select(vc, buffer, MAXPICKBUF, &rect, do_nearest);
+ hits15 = view3d_opengl_select(vc, buffer, MAXPICKBUF, &rect, select_mode);
if (hits15 == 1) {
- return selectbuffer_ret_hits_15(buffer, hits15);
+ hits = selectbuffer_ret_hits_15(buffer, hits15);
+ goto finally;
}
else if (hits15 > 0) {
has_bones15 = selectbuffer_has_bones(buffer, hits15);
offs = 4 * hits15;
- BLI_rcti_init_pt_size(&rect, mval, 9);
+ BLI_rcti_init_pt_radius(&rect, mval, 9);
- hits9 = view3d_opengl_select(vc, buffer + offs, MAXPICKBUF - offs, &rect, do_nearest);
+ hits9 = view3d_opengl_select(vc, buffer + offs, MAXPICKBUF - offs, &rect, select_mode);
if (hits9 == 1) {
- return selectbuffer_ret_hits_9(buffer, hits15, hits9);
+ hits = selectbuffer_ret_hits_9(buffer, hits15, hits9);
+ goto finally;
}
else if (hits9 > 0) {
has_bones9 = selectbuffer_has_bones(buffer + offs, hits9);
offs += 4 * hits9;
- BLI_rcti_init_pt_size(&rect, mval, 5);
+ BLI_rcti_init_pt_radius(&rect, mval, 5);
- hits5 = view3d_opengl_select(vc, buffer + offs, MAXPICKBUF - offs, &rect, do_nearest);
+ hits5 = view3d_opengl_select(vc, buffer + offs, MAXPICKBUF - offs, &rect, select_mode);
if (hits5 == 1) {
- return selectbuffer_ret_hits_5(buffer, hits15, hits9, hits5);
+ hits = selectbuffer_ret_hits_5(buffer, hits15, hits9, hits5);
+ goto finally;
}
else if (hits5 > 0) {
has_bones5 = selectbuffer_has_bones(buffer + offs, hits5);
More information about the Bf-blender-cvs
mailing list