Spine.Unity.Modules.SkeletonRenderSeparator.HandleRender C# (CSharp) Method

HandleRender() public method

public HandleRender ( SkeletonRenderer instruction ) : void
instruction SkeletonRenderer
return void
		void HandleRender (SkeletonRenderer.SmartMesh.Instruction instruction) {
			int rendererCount = partsRenderers.Count;
			if (rendererCount <= 0) return;



			if (copyPropertyBlock)
				mainMeshRenderer.GetPropertyBlock(copiedBlock);

			var submeshInstructions = instruction.submeshInstructions;
			var submeshInstructionsItems = submeshInstructions.Items;
			int lastSubmeshInstruction = submeshInstructions.Count - 1;


			bool addNormals = skeletonRenderer.calculateNormals;
			bool addTangents = skeletonRenderer.calculateTangents;
			bool pmaVertexColors = skeletonRenderer.pmaVertexColors;

			int rendererIndex = 0;
			var currentRenderer = partsRenderers[rendererIndex];
			for (int si = 0, start = 0; si <= lastSubmeshInstruction; si++) {
				if (submeshInstructionsItems[si].forceSeparate || si == lastSubmeshInstruction) {
					// Apply properties
					var meshGenerator = currentRenderer.MeshGenerator;
					meshGenerator.AddNormals = addNormals;
					meshGenerator.AddTangents = addTangents;
					meshGenerator.PremultiplyVertexColors = pmaVertexColors;
					if (copyPropertyBlock)
						currentRenderer.SetPropertyBlock(copiedBlock);

					// Render
					currentRenderer.RenderParts(instruction.submeshInstructions, start, si + 1);

					start = si + 1;
					rendererIndex++;
					if (rendererIndex < rendererCount) {
						currentRenderer = partsRenderers[rendererIndex];
					} else {
						// Not enough renderers. Skip the rest of the instructions.
						break;
					}
				}
			}
				
			// Clear extra renderers if they exist.
			for (; rendererIndex < rendererCount; rendererIndex++) {
				partsRenderers[rendererIndex].ClearMesh();
			}

		}