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(); | ||||
| 	ObjectID closest = 0; | ||||
| 	Spatial *item = NULL; | ||||
| 	Node *item = NULL; | ||||
| 	float closest_dist = 1e20; | ||||
| 	int selected_handle = -1; | ||||
| 
 | ||||
|  | @ -341,19 +341,16 @@ ObjectID SpatialEditorViewport::_select_ray(const Point2 &p_pos, bool p_append, | |||
| 
 | ||||
| 		if (dist < closest_dist) { | ||||
| 			//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())) { | ||||
| 
 | ||||
| 				spat = Object::cast_to<Spatial>(spat->get_owner()); | ||||
| 			Node *owner = spat->get_owner(); | ||||
| 			if (owner != edited_scene && !edited_scene->is_editable_instance(owner)) { | ||||
| 				item = owner; | ||||
| 			} else { | ||||
| 				item = Object::cast_to<Node>(spat); | ||||
| 			} | ||||
| 
 | ||||
| 			if (spat) { | ||||
| 				item = spat; | ||||
| 				closest = spat->get_instance_id(); | ||||
| 			closest = item->get_instance_id(); | ||||
| 			closest_dist = dist; | ||||
| 			selected_handle = handle; | ||||
| 			} else { | ||||
| 				ERR_PRINT("Bug?"); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Rémi Verschelde
						Rémi Verschelde