Fix sprite layer bounds (#5920)

This commit is contained in:
Leon Friedrich
2025-05-11 11:52:20 +10:00
committed by GitHub
parent 516ee47b51
commit 5fbe25ec9d
3 changed files with 5 additions and 5 deletions

View File

@@ -43,7 +43,7 @@ END TEMPLATE-->
### Bugfixes
*None yet*
* Fix sprite layer bounding box calculations. This was causing various sprite rendering & render-tree lookup issues.
### Other

View File

@@ -44,7 +44,10 @@ public sealed partial class SpriteSystem
public Box2 GetLocalBounds(Layer layer)
{
if (!layer.BoundsDirty)
{
DebugTools.Assert(layer.Bounds.EqualsApprox(CalculateLocalBounds(layer)));
return layer.Bounds;
}
layer.Bounds = CalculateLocalBounds(layer);
layer.BoundsDirty = false;
@@ -53,9 +56,6 @@ public sealed partial class SpriteSystem
internal Box2 CalculateLocalBounds(Layer layer)
{
if (layer.Blank || layer.CopyToShaderParameters == null)
return Box2.Empty;
var textureSize = (Vector2) layer.PixelSize / EyeManager.PixelsPerMeter;
var longestSide = MathF.Max(textureSize.X, textureSize.Y);
var longestRotatedSide = Math.Max(longestSide, (textureSize.X + textureSize.Y) / MathF.Sqrt(2));

View File

@@ -144,9 +144,9 @@ public sealed partial class SpriteSystem
}
#endif
layer.BoundsDirty = true;
if (!layer.Blank)
{
layer.BoundsDirty = true;
sprite.Comp.BoundsDirty = true;
_tree.QueueTreeUpdate(sprite!);
QueueUpdateIsInert(sprite!);