mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 13:41:03 +00:00 
			
		
		
		
	Merge pull request #21485 from JFonS/fix_selection
Saner selection code for instanced scenes in 3D, should close #21447
This commit is contained in:
		
						commit
						b6c170165c
					
				
					 1 changed files with 9 additions and 12 deletions
				
			
		|  | @ -307,7 +307,7 @@ ObjectID SpatialEditorViewport::_select_ray(const Point2 &p_pos, bool p_append, | ||||||
| 
 | 
 | ||||||
| 	Node *edited_scene = get_tree()->get_edited_scene_root(); | 	Node *edited_scene = get_tree()->get_edited_scene_root(); | ||||||
| 	ObjectID closest = 0; | 	ObjectID closest = 0; | ||||||
| 	Spatial *item = NULL; | 	Node *item = NULL; | ||||||
| 	float closest_dist = 1e20; | 	float closest_dist = 1e20; | ||||||
| 	int selected_handle = -1; | 	int selected_handle = -1; | ||||||
| 
 | 
 | ||||||
|  | @ -341,19 +341,16 @@ ObjectID SpatialEditorViewport::_select_ray(const Point2 &p_pos, bool p_append, | ||||||
| 
 | 
 | ||||||
| 		if (dist < closest_dist) { | 		if (dist < closest_dist) { | ||||||
| 			//make sure that whathever is selected is editable
 | 			//make sure that whathever is selected is editable
 | ||||||
| 			while (spat && spat != edited_scene && spat->get_owner() != edited_scene && !edited_scene->is_editable_instance(spat->get_owner())) { | 			Node *owner = spat->get_owner(); | ||||||
| 
 | 			if (owner != edited_scene && !edited_scene->is_editable_instance(owner)) { | ||||||
| 				spat = Object::cast_to<Spatial>(spat->get_owner()); | 				item = owner; | ||||||
| 			} |  | ||||||
| 
 |  | ||||||
| 			if (spat) { |  | ||||||
| 				item = spat; |  | ||||||
| 				closest = spat->get_instance_id(); |  | ||||||
| 				closest_dist = dist; |  | ||||||
| 				selected_handle = handle; |  | ||||||
| 			} else { | 			} else { | ||||||
| 				ERR_PRINT("Bug?"); | 				item = Object::cast_to<Node>(spat); | ||||||
| 			} | 			} | ||||||
|  | 
 | ||||||
|  | 			closest = item->get_instance_id(); | ||||||
|  | 			closest_dist = dist; | ||||||
|  | 			selected_handle = handle; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Rémi Verschelde
						Rémi Verschelde