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

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

View File

@@ -110,6 +110,8 @@ namespace Spine
break; break;
} }
if (verticesLength > 0)
{
for (int ii = 0; ii + 1 < verticesLength; ii += 2) for (int ii = 0; ii + 1 < verticesLength; ii += 2)
{ {
float vx = vertices[ii]; float vx = vertices[ii];
@@ -120,11 +122,31 @@ namespace Spine
maxY = Math.Max(maxY, vy); 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);
}
}
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; x = minX;
y = minY; y = minY;
w = maxX - minX; w = maxX - minX;
h = maxY - minY; h = maxY - minY;
} }
}
/// <summary> /// <summary>
/// 命中测试, 当插槽全透明或者处于禁用或者骨骼处于未激活则无法命中 /// 命中测试, 当插槽全透明或者处于禁用或者骨骼处于未激活则无法命中