Fixed a different kind of flickering for multi page atlases.

This commit is contained in:
NathanSweet 2014-03-18 19:48:13 +01:00
parent 4fa11e72d5
commit 02da6a42ad
2 changed files with 12 additions and 16 deletions

View File

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

View File

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