From f14e898d2d6a9da0f8cd4df0c8f1ad6ef27ddbb5 Mon Sep 17 00:00:00 2001 From: pharan Date: Tue, 19 Apr 2016 05:45:10 +0800 Subject: [PATCH] [Unity] Fix extra renderers check. --- .../SkeletonRenderSeparator.cs | 31 ++++++------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/spine-unity/Assets/spine-unity/Modules/SkeletonRenderSeparator/SkeletonRenderSeparator.cs b/spine-unity/Assets/spine-unity/Modules/SkeletonRenderSeparator/SkeletonRenderSeparator.cs index 6852f7a77..e56b84732 100644 --- a/spine-unity/Assets/spine-unity/Modules/SkeletonRenderSeparator/SkeletonRenderSeparator.cs +++ b/spine-unity/Assets/spine-unity/Modules/SkeletonRenderSeparator/SkeletonRenderSeparator.cs @@ -119,16 +119,16 @@ namespace Spine.Unity.Modules { int lastSubmeshInstruction = submeshInstructions.Count - 1; var currentRenderer = partsRenderers[rendererIndex]; - bool skeletonRendererCalculateNormals = skeletonRenderer.calculateNormals; + bool useNormals = skeletonRenderer.calculateNormals; - for (int i = 0, start = 0; i <= lastSubmeshInstruction; i++) { - if (submeshInstructionsItems[i].forceSeparate) { - currentRenderer.RenderParts(instruction.submeshInstructions, start, i + 1); - currentRenderer.MeshGenerator.GenerateNormals = skeletonRendererCalculateNormals; + for (int si = 0, start = 0; si <= lastSubmeshInstruction; si++) { + if (submeshInstructionsItems[si].forceSeparate || si == lastSubmeshInstruction) { + currentRenderer.RenderParts(instruction.submeshInstructions, start, si + 1); + currentRenderer.MeshGenerator.GenerateNormals = useNormals; if (copyPropertyBlock) currentRenderer.SetPropertyBlock(block); - start = i + 1; + start = si + 1; rendererIndex++; if (rendererIndex < rendererCount) { currentRenderer = partsRenderers[rendererIndex]; @@ -136,26 +136,15 @@ namespace Spine.Unity.Modules { // Not enough renderers. Skip the rest of the instructions. break; } - } else if (i == lastSubmeshInstruction) { - currentRenderer.RenderParts(instruction.submeshInstructions, start, i + 1); - currentRenderer.MeshGenerator.GenerateNormals = skeletonRendererCalculateNormals; - if (copyPropertyBlock) - currentRenderer.SetPropertyBlock(block); } } - - // If too many renderers. Clear the rest. - rendererIndex++; - if (rendererIndex < rendererCount - 1) { - for (int i = rendererIndex; i < rendererCount; i++) { - currentRenderer = partsRenderers[i]; - currentRenderer.ClearMesh(); - } + + // Clear extra renderers if they exist. + for (; rendererIndex < rendererCount; rendererIndex++) { + partsRenderers[rendererIndex].ClearMesh(); } } - - } } \ No newline at end of file