Переглянути джерело

Fix TextureRect::flip_* when used with atlas texture

Fix #37526
Guilherme Felipe 5 роки тому
батько
коміт
fb2d2dd5d0
1 змінених файлів з 9 додано та 0 видалено
  1. 9 0
      scene/gui/texture_rect.cpp

+ 9 - 0
scene/gui/texture_rect.cpp

@@ -95,6 +95,15 @@ void TextureRect::_notification(int p_what) {
 			} break;
 		}
 
+		Ref<AtlasTexture> p_atlas = texture;
+
+		if (p_atlas.is_valid() && region.has_no_area()) {
+			Size2 scale_size(size.width / texture->get_width(), size.height / texture->get_height());
+
+			offset.width += hflip ? p_atlas->get_margin().get_position().width * scale_size.width * 2 : 0;
+			offset.height += vflip ? p_atlas->get_margin().get_position().height * scale_size.height * 2 : 0;
+		}
+
 		size.width *= hflip ? -1.0f : 1.0f;
 		size.height *= vflip ? -1.0f : 1.0f;