[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