浏览代码

Merge pull request #24504 from harrisyu/AtlasCheckPixelOpaque

Fix #24470 Atlas Texture with margin setting cause error in editor.
Rémi Verschelde 6 年之前
父节点
当前提交
bc9899fb9f
共有 1 个文件被更改,包括 6 次插入2 次删除
  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);
 }