[monogame] Reverted commits 390f496 and 631aa17 and fixed vertices re-allocation differently. See #2854.

This commit is contained in:
Harald Csaszar 2025-05-22 19:14:13 +02:00
parent 51b908db89
commit 6d6e85229a

View File

@ -132,6 +132,7 @@ namespace Spine {
float attachmentColorR, attachmentColorG, attachmentColorB, attachmentColorA;
object textureObject = null;
int verticesCount = 0;
float[] vertices = this.vertices;
int indicesCount = 0;
int[] indices = null;
float[] uvs = null;
@ -150,7 +151,7 @@ namespace Spine {
MeshAttachment mesh = (MeshAttachment)attachment;
attachmentColorR = mesh.R; attachmentColorG = mesh.G; attachmentColorB = mesh.B; attachmentColorA = mesh.A;
int vertexCount = mesh.WorldVerticesLength;
if (vertices.Length < vertexCount) vertices = new float[vertexCount];
if (vertices.Length < vertexCount) this.vertices = vertices = new float[vertexCount];
verticesCount = vertexCount >> 1;
mesh.ComputeWorldVertices(slot, vertices);
indicesCount = mesh.Triangles.Length;
@ -210,10 +211,9 @@ namespace Spine {
darkColor.A = premultipliedAlpha ? (byte)255 : (byte)0;
// clip
float[] usedVertices = vertices;
if (clipper.IsClipping) {
clipper.ClipTriangles(usedVertices, indices, indicesCount, uvs);
usedVertices = clipper.ClippedVertices.Items;
clipper.ClipTriangles(vertices, indices, indicesCount, uvs);
vertices = clipper.ClippedVertices.Items;
verticesCount = clipper.ClippedVertices.Count >> 1;
indices = clipper.ClippedTriangles.Items;
indicesCount = clipper.ClippedTriangles.Count;
@ -240,8 +240,8 @@ namespace Spine {
for (int ii = 0, v = 0, nn = verticesCount << 1; v < nn; ii++, v += 2) {
itemVertices[ii].Color = color;
itemVertices[ii].Color2 = darkColor;
itemVertices[ii].Position.X = usedVertices[v];
itemVertices[ii].Position.Y = usedVertices[v + 1];
itemVertices[ii].Position.X = vertices[v];
itemVertices[ii].Position.Y = vertices[v + 1];
itemVertices[ii].Position.Z = attachmentZOffset;
itemVertices[ii].TextureCoordinate.X = uvs[v];
itemVertices[ii].TextureCoordinate.Y = uvs[v + 1];