diff options
Diffstat (limited to 'scene/resources')
-rw-r--r-- | scene/resources/texture.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/scene/resources/texture.cpp b/scene/resources/texture.cpp index 2e0f04ffcb..d719aa6126 100644 --- a/scene/resources/texture.cpp +++ b/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); } |