From 7aa88089b8f28a67f2370b63f436b17c492dbe60 Mon Sep 17 00:00:00 2001 From: ww-rm Date: Mon, 6 Oct 2025 14:02:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=A9=BA=E5=B8=A7=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E7=9A=84=E5=8C=85=E5=9B=B4=E7=9B=92=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spine/SpineExtension.cs | 44 ++++++++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/Spine/SpineExtension.cs b/Spine/SpineExtension.cs index efecba4..9d04db8 100644 --- a/Spine/SpineExtension.cs +++ b/Spine/SpineExtension.cs @@ -110,20 +110,42 @@ namespace Spine break; } - for (int ii = 0; ii + 1 < verticesLength; ii += 2) + if (verticesLength > 0) { - float vx = vertices[ii]; - float vy = vertices[ii + 1]; - minX = Math.Min(minX, vx); - minY = Math.Min(minY, vy); - maxX = Math.Max(maxX, vx); - maxY = Math.Max(maxY, vy); + for (int ii = 0; ii + 1 < verticesLength; ii += 2) + { + float vx = vertices[ii]; + float vy = vertices[ii + 1]; + minX = Math.Min(minX, vx); + minY = Math.Min(minY, vy); + maxX = Math.Max(maxX, vx); + maxY = Math.Max(maxY, vy); + } + } + else + { + var boneX = slot.Bone.WorldX; + var boneY = slot.Bone.WorldY; + minX = Math.Min(minX, boneX); + minY = Math.Min(minY, boneY); + maxX = Math.Max(maxX, boneX); + maxY = Math.Max(maxY, boneY); } } - x = minX; - y = minY; - w = maxX - minX; - h = maxY - minY; + if (minX >= int.MaxValue || minY >= int.MaxValue || maxX <= int.MinValue || maxY <= int.MinValue) + { + x = self.X; + y = self.Y; + w = 0; + h = 0; + } + else + { + x = minX; + y = minY; + w = maxX - minX; + h = maxY - minY; + } } ///