fix SubmeshRenderer

This commit is contained in:
ZimM 2015-06-29 19:24:07 +02:00
parent 4057316a91
commit 7414476841

View File

@ -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<Renderer>().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<Renderer>().enabled = false;
}
}
}
useMesh1 = !useMesh1;