AtlasTexture
Fix calculating rects when flipping
#70227
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #70178.
The issue was likely caused/revealed by #56795/#56796, quoting myself:
Seems like this wasn't the case,
offset
calculations when flipping the texture (when destination rect has negative size):godot/scene/resources/texture.cpp
Lines 1607 to 1618 in d44d0cc
don't make much sense to me. When not flipping the offset is correctly the difference of the positions of the clipped source rect and the non-clipped source rect. When flipping the offset (for the axes being flipped) should be the difference between the
rect.end
s of the same rects instead (this should already account for the margins as the source rect is clipped to theregion
), meaning just adding the difference of the sizes of these rects should be enough. And that's what this PR does, the rest are cosmetic changes to clarify the code a little (renaming/removing some variables).