From 7414476841a2fe1da9c066461ab6b2473f87d652 Mon Sep 17 00:00:00 2001 From: ZimM Date: Mon, 29 Jun 2015 19:24:07 +0200 Subject: [PATCH] fix SubmeshRenderer --- .../Assets/spine-unity/SkeletonRenderer.cs | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/spine-unity/Assets/spine-unity/SkeletonRenderer.cs b/spine-unity/Assets/spine-unity/SkeletonRenderer.cs index d5d122826..8d6a9b441 100644 --- a/spine-unity/Assets/spine-unity/SkeletonRenderer.cs +++ b/spine-unity/Assets/spine-unity/SkeletonRenderer.cs @@ -63,7 +63,6 @@ public class SkeletonRenderer : MonoBehaviour { private MeshFilter meshFilter; private Mesh mesh1, mesh2; private bool useMesh1; - private bool meshUpdateRequested; private float[] tempVertices = new float[8]; private Vector3[] vertices; private Color32[] colors; @@ -74,10 +73,6 @@ public class SkeletonRenderer : MonoBehaviour { private SkeletonUtilitySubmeshRenderer[] submeshRenderers; private LastState lastState = new LastState(); - public void RequestMeshUpdate() { - meshUpdateRequested = true; - } - public virtual void Reset () { if (meshFilter != null) meshFilter.sharedMesh = null; @@ -181,11 +176,12 @@ public class SkeletonRenderer : MonoBehaviour { } public virtual void LateUpdate () { - if (!valid || (!meshRenderer.enabled && !meshUpdateRequested)) + if (!valid) return; - // The force update request is only valid for one frame - meshUpdateRequested = false; + // Exit early if there is nothing to render + if (!meshRenderer.enabled && submeshRenderers.Length == 0) + return; // Count vertices and submesh triangles. int vertexCount = 0; @@ -456,7 +452,7 @@ public class SkeletonRenderer : MonoBehaviour { color.r = (byte)(r * slot.r * skinnedMeshAttachment.r * color.a); color.g = (byte)(g * slot.g * skinnedMeshAttachment.g * color.a); color.b = (byte)(b * slot.b * skinnedMeshAttachment.b * color.a); - if (slot.data.blendMode == BlendMode.additive) color.a = 0; + if (slot.data.blendMode == BlendMode.additive) color.a = 0; float[] meshUVs = skinnedMeshAttachment.uvs; float z = i * zSpacing; @@ -549,14 +545,14 @@ public class SkeletonRenderer : MonoBehaviour { addSubmeshArgumentsTemp.CopyTo(addSubmeshArgumentsCurrentMesh.Items); if (submeshRenderers.Length > 0) { - for (int i = 0; i < submeshRenderers.Length; i++) { - SkeletonUtilitySubmeshRenderer submeshRenderer = submeshRenderers[i]; - if (submeshRenderer.submeshIndex < sharedMaterials.Length) { - submeshRenderer.SetMesh(meshRenderer, useMesh1 ? mesh1 : mesh2, sharedMaterials[submeshRenderer.submeshIndex]); - } else { - submeshRenderer.GetComponent().enabled = false; - } - } + for (int i = 0; i < submeshRenderers.Length; i++) { + SkeletonUtilitySubmeshRenderer submeshRenderer = submeshRenderers[i]; + if (submeshRenderer.submeshIndex < sharedMaterials.Length) { + submeshRenderer.SetMesh(meshRenderer, useMesh1 ? mesh1 : mesh2, sharedMaterials[submeshRenderer.submeshIndex]); + } else { + submeshRenderer.GetComponent().enabled = false; + } + } } useMesh1 = !useMesh1;