From 0a7c47f2c4529801cf528e4d9d203a40f8c88cdc Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Thu, 1 Aug 2013 17:19:39 +0200 Subject: [PATCH] Don't need to set submesh triangles every frame. --- spine-tk2d/Code/tk2dSpineSkeleton.cs | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/spine-tk2d/Code/tk2dSpineSkeleton.cs b/spine-tk2d/Code/tk2dSpineSkeleton.cs index 3cd733f9d..fb016aded 100644 --- a/spine-tk2d/Code/tk2dSpineSkeleton.cs +++ b/spine-tk2d/Code/tk2dSpineSkeleton.cs @@ -73,10 +73,9 @@ public class tk2dSpineSkeleton : MonoBehaviour, tk2dRuntime.ISpriteCollectionFor if (attachment is RegionAttachment) { RegionAttachment regionAttachment = attachment as RegionAttachment; - regionAttachment.ComputeVertices(skeleton.X, skeleton.Y, slot.Bone, vertexPositions); - int vertexIndex = quadIndex * 4; - + + int vertexIndex = quadIndex * 4; vertices[vertexIndex + 0] = new Vector3(vertexPositions[RegionAttachment.X1],vertexPositions[RegionAttachment.Y1],0); vertices[vertexIndex + 1] = new Vector3(vertexPositions[RegionAttachment.X4],vertexPositions[RegionAttachment.Y4],0); vertices[vertexIndex + 2] = new Vector3(vertexPositions[RegionAttachment.X2],vertexPositions[RegionAttachment.Y2],0); @@ -106,11 +105,6 @@ public class tk2dSpineSkeleton : MonoBehaviour, tk2dRuntime.ISpriteCollectionFor mesh.colors32 = colors; mesh.uv = uvs; - mesh.subMeshCount = submeshIndices.Count; - for(int i = 0; i < mesh.subMeshCount; ++i) { - mesh.SetTriangles(submeshIndices[i],i); - } - if (skeletonDataAsset.normalGenerationMode != tk2dSpriteCollection.NormalGenerationMode.None) { mesh.RecalculateNormals(); @@ -141,14 +135,23 @@ public class tk2dSpineSkeleton : MonoBehaviour, tk2dRuntime.ISpriteCollectionFor if (mesh.subMeshCount == submeshIndices.Count) #endif if (quadCount == cachedQuadCount) return; - - mesh.Clear(); + cachedQuadCount = quadCount; vertices = new Vector3[quadCount * 4]; uvs = new Vector2[quadCount * 4]; colors = new Color32[quadCount * 4]; UpdateSubmeshCache(); + + mesh.Clear(); + mesh.vertices = vertices; + mesh.colors32 = colors; + mesh.uv = uvs; + + mesh.subMeshCount = submeshIndices.Count; + for(int i = 0; i < mesh.subMeshCount; ++i) { + mesh.SetTriangles(submeshIndices[i],i); + } } private void UpdateSubmeshCache() {