mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 13:41:03 +00:00 
			
		
		
		
	Fixes the resize of tile shapes when a vertex is outside of the tilesheet. Fix #34970
(cherry picked from commit 5355169d3c)
			
			
This commit is contained in:
		
							parent
							
								
									22efebc599
								
							
						
					
					
						commit
						42eb92d19a
					
				
					 1 changed files with 16 additions and 0 deletions
				
			
		|  | @ -3095,6 +3095,7 @@ Vector2 TileSetEditor::snap_point(const Vector2 &point) { | |||
| 	anchor += tileset->tile_get_region(get_current_tile()).position; | ||||
| 	anchor += WORKSPACE_MARGIN; | ||||
| 	Rect2 region(anchor, tile_size); | ||||
| 	Rect2 tile_region(tileset->tile_get_region(get_current_tile()).position + WORKSPACE_MARGIN, tileset->tile_get_region(get_current_tile()).size); | ||||
| 	if (tileset->tile_get_tile_mode(get_current_tile()) == TileSet::SINGLE_TILE) { | ||||
| 		region.position = tileset->tile_get_region(get_current_tile()).position + WORKSPACE_MARGIN; | ||||
| 		region.size = tileset->tile_get_region(get_current_tile()).size; | ||||
|  | @ -3104,6 +3105,7 @@ Vector2 TileSetEditor::snap_point(const Vector2 &point) { | |||
| 		p.x = Math::snap_scalar_separation(snap_offset.x, snap_step.x, p.x, snap_separation.x); | ||||
| 		p.y = Math::snap_scalar_separation(snap_offset.y, snap_step.y, p.y, snap_separation.y); | ||||
| 	} | ||||
| 
 | ||||
| 	if (tools[SHAPE_KEEP_INSIDE_TILE]->is_pressed()) { | ||||
| 		if (p.x < region.position.x) | ||||
| 			p.x = region.position.x; | ||||
|  | @ -3114,6 +3116,20 @@ Vector2 TileSetEditor::snap_point(const Vector2 &point) { | |||
| 		if (p.y > region.position.y + region.size.y) | ||||
| 			p.y = region.position.y + region.size.y; | ||||
| 	} | ||||
| 
 | ||||
| 	if (p.x < tile_region.position.x) { | ||||
| 		p.x = tile_region.position.x; | ||||
| 	} | ||||
| 	if (p.y < tile_region.position.y) { | ||||
| 		p.y = tile_region.position.y; | ||||
| 	} | ||||
| 	if (p.x > (tile_region.position.x + tile_region.size.x)) { | ||||
| 		p.x = (tile_region.position.x + tile_region.size.x); | ||||
| 	} | ||||
| 	if (p.y > (tile_region.position.y + tile_region.size.y)) { | ||||
| 		p.y = (tile_region.position.y + tile_region.size.y); | ||||
| 	} | ||||
| 
 | ||||
| 	return p; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dashcell
						Dashcell