修复空帧导致的包围盒计算错误

This commit is contained in:
ww-rm
2025-10-06 14:02:21 +08:00
parent be983f8407
commit 7aa88089b8

View File

@@ -110,20 +110,42 @@ namespace Spine
break; break;
} }
for (int ii = 0; ii + 1 < verticesLength; ii += 2) if (verticesLength > 0)
{ {
float vx = vertices[ii]; for (int ii = 0; ii + 1 < verticesLength; ii += 2)
float vy = vertices[ii + 1]; {
minX = Math.Min(minX, vx); float vx = vertices[ii];
minY = Math.Min(minY, vy); float vy = vertices[ii + 1];
maxX = Math.Max(maxX, vx); minX = Math.Min(minX, vx);
maxY = Math.Max(maxY, vy); 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; if (minX >= int.MaxValue || minY >= int.MaxValue || maxX <= int.MinValue || maxY <= int.MinValue)
y = minY; {
w = maxX - minX; x = self.X;
h = maxY - minY; y = self.Y;
w = 0;
h = 0;
}
else
{
x = minX;
y = minY;
w = maxX - minX;
h = maxY - minY;
}
} }
/// <summary> /// <summary>