Răsfoiți Sursa

Fix #24470 Atlas Texture with margin setting cause error in editor.

harrisyu 6 ani în urmă
părinte
comite
9d6f16e864
1 a modificat fișierele cu 6 adăugiri și 2 ștergeri
  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())
 	if (!atlas.is_valid())
 		return true;
 		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);
 	return atlas->is_pixel_opaque(x, y);
 }
 }