Browse Source

Merge pull request #24504 from harrisyu/AtlasCheckPixelOpaque

Fix #24470 Atlas Texture with margin setting cause error in editor.
Rémi Verschelde 6 năm trước cách đây
mục cha
commit
bc9899fb9f
1 tập tin đã thay đổi với 6 bổ sung2 xóa
  1. 6 2
      scene/resources/texture.cpp

+ 6 - 2
scene/resources/texture.cpp

@@ -1087,8 +1087,12 @@ bool AtlasTexture::is_pixel_opaque(int p_x, int p_y) const {
 	if (!atlas.is_valid())
 		return true;
 
-	int x = p_x + region.position.x + margin.position.x;
-	int y = p_y + region.position.y + margin.position.y;
+	int x = p_x + region.position.x - margin.position.x;
+	int y = p_y + region.position.y - margin.position.y;
+
+	// margin edge may outside of atlas
+	if (x < 0 || x >= atlas->get_width()) return false;
+	if (y < 0 || y >= atlas->get_height()) return false;
 
 	return atlas->is_pixel_opaque(x, y);
 }