mirror of
				https://github.com/godotengine/godot.git
				synced 2025-11-03 23:21:15 +00:00 
			
		
		
		
	Improved region-select in the 3D editor viewport
Enable region-select when dragging the mouse. Previously this was only possible when the mouse was not over a mesh.
This commit is contained in:
		
							parent
							
								
									47e34dc4e2
								
							
						
					
					
						commit
						d9c99f64c1
					
				
					 2 changed files with 14 additions and 9 deletions
				
			
		| 
						 | 
				
			
			@ -1371,6 +1371,7 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
 | 
			
		|||
					int gizmo_handle = -1;
 | 
			
		||||
 | 
			
		||||
					clicked = _select_ray(b->get_position(), b->get_shift(), clicked_includes_current, &gizmo_handle, b->get_shift());
 | 
			
		||||
					selection_in_progress = true;
 | 
			
		||||
 | 
			
		||||
					//clicking is always deferred to either move or release
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1423,6 +1424,7 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
 | 
			
		|||
						surface->update();
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					selection_in_progress = false;
 | 
			
		||||
					if (_edit.mode != TRANSFORM_NONE) {
 | 
			
		||||
						static const char *_transform_name[4] = {
 | 
			
		||||
							TTRC("None"),
 | 
			
		||||
| 
						 | 
				
			
			@ -1513,16 +1515,12 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
 | 
			
		|||
				nav_mode = NAVIGATION_ORBIT;
 | 
			
		||||
			} else {
 | 
			
		||||
				const bool movement_threshold_passed = _edit.original_mouse_pos.distance_to(_edit.mouse_pos) > 8 * EDSCALE;
 | 
			
		||||
				if (clicked && movement_threshold_passed) {
 | 
			
		||||
					if (!clicked_includes_current) {
 | 
			
		||||
						_select_clicked(clicked_wants_append, true);
 | 
			
		||||
						// Processing was deferred.
 | 
			
		||||
				if (selection_in_progress && movement_threshold_passed) {
 | 
			
		||||
					if (get_selected_count() == 0 || clicked_wants_append) {
 | 
			
		||||
						cursor.region_select = true;
 | 
			
		||||
						cursor.region_begin = _edit.original_mouse_pos;
 | 
			
		||||
						clicked = 0;
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					_compute_edit(_edit.mouse_pos);
 | 
			
		||||
					clicked = 0;
 | 
			
		||||
 | 
			
		||||
					_edit.mode = TRANSFORM_TRANSLATE;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				if (cursor.region_select) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1531,6 +1529,12 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
 | 
			
		|||
					return;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				if (clicked && movement_threshold_passed) {
 | 
			
		||||
					_compute_edit(_edit.mouse_pos);
 | 
			
		||||
					clicked = 0;
 | 
			
		||||
					_edit.mode = TRANSFORM_TRANSLATE;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				if (_edit.mode == TRANSFORM_NONE) {
 | 
			
		||||
					return;
 | 
			
		||||
				}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -327,6 +327,7 @@ private:
 | 
			
		|||
	Vector<_RayResult> selection_results;
 | 
			
		||||
	bool clicked_includes_current;
 | 
			
		||||
	bool clicked_wants_append;
 | 
			
		||||
	bool selection_in_progress = false;
 | 
			
		||||
 | 
			
		||||
	PopupMenu *selection_menu;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue