Browse Source

Fix unselectable flipped sprites (fixes 16461)

poke1024 7 years ago
parent
commit
bd2e1df216
1 changed files with 7 additions and 1 deletions
  1. 7 1
      scene/2d/sprite.cpp

+ 7 - 1
scene/2d/sprite.cpp

@@ -281,11 +281,17 @@ bool Sprite::_edit_is_selected_on_click(const Point2 &p_point, double p_toleranc
 	Rect2 src_rect, dst_rect;
 	bool filter_clip;
 	_get_rects(src_rect, dst_rect, filter_clip);
+	dst_rect.size = dst_rect.size.abs();
 
 	if (!dst_rect.has_point(p_point))
 		return false;
 
-	Vector2 q = ((p_point - dst_rect.position) / dst_rect.size) * src_rect.size + src_rect.position;
+	Vector2 q = (p_point - dst_rect.position) / dst_rect.size;
+	if (hflip)
+		q.x = 1.0f - q.x;
+	if (vflip)
+		q.y = 1.0f - q.y;
+	q = q * src_rect.size + src_rect.position;
 
 	Ref<Image> image = texture->get_data();
 	ERR_FAIL_COND_V(image.is_null(), false);