Browse Source

Fixed a different kind of flickering for multi page atlases.

NathanSweet 11 năm trước cách đây
mục cha
commit
02da6a42ad

+ 6 - 8
spine-tk2d/Assets/Spine/SkeletonComponent.cs

@@ -266,18 +266,16 @@ public class SkeletonComponent : MonoBehaviour {
 		if (submeshes.Count <= submeshIndex) submeshes.Add(new Submesh());
 		Submesh submesh = submeshes[submeshIndex];
 		
-		// Allocate indexes if not the right size, allowing last submesh to have more than required.
 		int[] indexes = submesh.indexes;
-		if (lastSubmesh ? (indexes.Length < indexCount) : (indexes.Length != indexCount)) {
-			submesh.indexes = indexes = new int[indexCount];
-			submesh.indexCount = 0;
-		}
-
-		// Last submesh may have more indices than required, so zero indexes to the end.
-		if (lastSubmesh && submesh.indexCount != indexCount) {
+		if (lastSubmesh && submesh.indexCount > indexCount) {
+			// Last submesh may have more indices than required, so zero indexes to the end.
 			submesh.indexCount = indexCount;
 			for (int i = indexCount, n = indexes.Length; i < n; i++)
 				indexes[i] = 0;
+		} else if (indexes.Length != indexCount) {
+			// Reallocate indexes if not the right size.
+			submesh.indexes = indexes = new int[indexCount];
+			submesh.indexCount = 0;
 		}
 
 		// Set indexes if not already set.

+ 6 - 8
spine-unity/Assets/Spine/SkeletonComponent.cs

@@ -266,18 +266,16 @@ public class SkeletonComponent : MonoBehaviour {
 		if (submeshes.Count <= submeshIndex) submeshes.Add(new Submesh());
 		Submesh submesh = submeshes[submeshIndex];
 
-		// Allocate indexes if not the right size, allowing last submesh to have more than required.
 		int[] indexes = submesh.indexes;
-		if (lastSubmesh ? (indexes.Length < indexCount) : (indexes.Length != indexCount)) {
-			submesh.indexes = indexes = new int[indexCount];
-			submesh.indexCount = 0;
-		}
-
-		// Last submesh may have more indices than required, so zero indexes to the end.
-		if (lastSubmesh && submesh.indexCount != indexCount) {
+		if (lastSubmesh && submesh.indexCount > indexCount) {
+			// Last submesh may have more indices than required, so zero indexes to the end.
 			submesh.indexCount = indexCount;
 			for (int i = indexCount, n = indexes.Length; i < n; i++)
 				indexes[i] = 0;
+		} else if (indexes.Length != indexCount) {
+			// Reallocate indexes if not the right size.
+			submesh.indexes = indexes = new int[indexCount];
+			submesh.indexCount = 0;
 		}
 
 		// Set indexes if not already set.