Forráskód Böngészése

Merge branch '3.6' of https://github.com/esotericsoftware/spine-runtimes into 3.6

badlogic 8 éve
szülő
commit
bd3b5cd1fe
1 módosított fájl, 20 hozzáadás és 17 törlés
  1. 20 17
      spine-csharp/src/Animation.cs

+ 20 - 17
spine-csharp/src/Animation.cs

@@ -797,8 +797,6 @@ namespace Spine {
 	}
 
 	public class DeformTimeline : CurveTimeline {
-		static float[] zeros = new float[64];
-
 		internal int slotIndex;
 		internal float[] frames;
 		internal float[][] frameVertices;
@@ -831,30 +829,30 @@ namespace Spine {
 			if (vertexAttachment == null || !vertexAttachment.ApplyDeform(attachment)) return;
 
 			var verticesArray = slot.attachmentVertices;
+			if (verticesArray.Count == 0) alpha = 1;
+
 			float[][] frameVertices = this.frameVertices;
 			int vertexCount = frameVertices[0].Length;
-			if (verticesArray.Capacity < vertexCount) verticesArray.Capacity = vertexCount;	// verticesArray.SetSize(vertexCount) // Ensure size and preemptively set count.
-			verticesArray.Count = vertexCount;
-			float[] vertices = verticesArray.Items;
-
 			float[] frames = this.frames;
+			float[] vertices;
+
 			if (time < frames[0]) {
 				
 				switch (pose) {
 				case MixPose.Setup:
-					float[] zeroVertices;
-					if (vertexAttachment.bones == null) {
-						// Unweighted vertex positions (setup pose).
-						zeroVertices = vertexAttachment.vertices;
-					} else {
-						// Weighted deform offsets (zeros).
-						zeroVertices = DeformTimeline.zeros;
-						if (zeroVertices.Length < vertexCount) DeformTimeline.zeros = zeroVertices = new float[vertexCount];
-					}
-					Array.Copy(zeroVertices, 0, vertices, 0, vertexCount);
+					verticesArray.Clear();
 					return;
 				case MixPose.Current:
-					if (alpha == 1) return;
+					if (alpha == 1) {
+						verticesArray.Clear();
+						return;
+					}
+
+					// verticesArray.SetSize(vertexCount) // Ensure size and preemptively set count.
+					if (verticesArray.Capacity < vertexCount) verticesArray.Capacity = vertexCount;	
+					verticesArray.Count = vertexCount;
+					vertices = verticesArray.Items;
+
 					if (vertexAttachment.bones == null) {
 						// Unweighted vertex positions.
 						float[] setupVertices = vertexAttachment.vertices;
@@ -873,6 +871,11 @@ namespace Spine {
 
 			}
 
+			// verticesArray.SetSize(vertexCount) // Ensure size and preemptively set count.
+			if (verticesArray.Capacity < vertexCount) verticesArray.Capacity = vertexCount;	
+			verticesArray.Count = vertexCount;
+			vertices = verticesArray.Items;
+
 			if (time >= frames[frames.Length - 1]) { // Time is after last frame.
 				float[] lastVertices = frameVertices[frames.Length - 1];
 				if (alpha == 1) {