diff --git a/spine-tk2d/Assets/Spine/SkeletonComponent.cs b/spine-tk2d/Assets/Spine/SkeletonComponent.cs index 1b0eabbfb..2e7c1d52b 100644 --- a/spine-tk2d/Assets/Spine/SkeletonComponent.cs +++ b/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. diff --git a/spine-unity/Assets/Spine/SkeletonComponent.cs b/spine-unity/Assets/Spine/SkeletonComponent.cs index 7b4021e12..be7115137 100644 --- a/spine-unity/Assets/Spine/SkeletonComponent.cs +++ b/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.