mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 22:49:01 +08:00
fix SubmeshRenderer
This commit is contained in:
parent
4057316a91
commit
7414476841
@ -63,7 +63,6 @@ public class SkeletonRenderer : MonoBehaviour {
|
|||||||
private MeshFilter meshFilter;
|
private MeshFilter meshFilter;
|
||||||
private Mesh mesh1, mesh2;
|
private Mesh mesh1, mesh2;
|
||||||
private bool useMesh1;
|
private bool useMesh1;
|
||||||
private bool meshUpdateRequested;
|
|
||||||
private float[] tempVertices = new float[8];
|
private float[] tempVertices = new float[8];
|
||||||
private Vector3[] vertices;
|
private Vector3[] vertices;
|
||||||
private Color32[] colors;
|
private Color32[] colors;
|
||||||
@ -74,10 +73,6 @@ public class SkeletonRenderer : MonoBehaviour {
|
|||||||
private SkeletonUtilitySubmeshRenderer[] submeshRenderers;
|
private SkeletonUtilitySubmeshRenderer[] submeshRenderers;
|
||||||
private LastState lastState = new LastState();
|
private LastState lastState = new LastState();
|
||||||
|
|
||||||
public void RequestMeshUpdate() {
|
|
||||||
meshUpdateRequested = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual void Reset () {
|
public virtual void Reset () {
|
||||||
if (meshFilter != null)
|
if (meshFilter != null)
|
||||||
meshFilter.sharedMesh = null;
|
meshFilter.sharedMesh = null;
|
||||||
@ -181,11 +176,12 @@ public class SkeletonRenderer : MonoBehaviour {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public virtual void LateUpdate () {
|
public virtual void LateUpdate () {
|
||||||
if (!valid || (!meshRenderer.enabled && !meshUpdateRequested))
|
if (!valid)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// The force update request is only valid for one frame
|
// Exit early if there is nothing to render
|
||||||
meshUpdateRequested = false;
|
if (!meshRenderer.enabled && submeshRenderers.Length == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
// Count vertices and submesh triangles.
|
// Count vertices and submesh triangles.
|
||||||
int vertexCount = 0;
|
int vertexCount = 0;
|
||||||
@ -456,7 +452,7 @@ public class SkeletonRenderer : MonoBehaviour {
|
|||||||
color.r = (byte)(r * slot.r * skinnedMeshAttachment.r * color.a);
|
color.r = (byte)(r * slot.r * skinnedMeshAttachment.r * color.a);
|
||||||
color.g = (byte)(g * slot.g * skinnedMeshAttachment.g * color.a);
|
color.g = (byte)(g * slot.g * skinnedMeshAttachment.g * color.a);
|
||||||
color.b = (byte)(b * slot.b * skinnedMeshAttachment.b * 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[] meshUVs = skinnedMeshAttachment.uvs;
|
||||||
float z = i * zSpacing;
|
float z = i * zSpacing;
|
||||||
@ -549,14 +545,14 @@ public class SkeletonRenderer : MonoBehaviour {
|
|||||||
addSubmeshArgumentsTemp.CopyTo(addSubmeshArgumentsCurrentMesh.Items);
|
addSubmeshArgumentsTemp.CopyTo(addSubmeshArgumentsCurrentMesh.Items);
|
||||||
|
|
||||||
if (submeshRenderers.Length > 0) {
|
if (submeshRenderers.Length > 0) {
|
||||||
for (int i = 0; i < submeshRenderers.Length; i++) {
|
for (int i = 0; i < submeshRenderers.Length; i++) {
|
||||||
SkeletonUtilitySubmeshRenderer submeshRenderer = submeshRenderers[i];
|
SkeletonUtilitySubmeshRenderer submeshRenderer = submeshRenderers[i];
|
||||||
if (submeshRenderer.submeshIndex < sharedMaterials.Length) {
|
if (submeshRenderer.submeshIndex < sharedMaterials.Length) {
|
||||||
submeshRenderer.SetMesh(meshRenderer, useMesh1 ? mesh1 : mesh2, sharedMaterials[submeshRenderer.submeshIndex]);
|
submeshRenderer.SetMesh(meshRenderer, useMesh1 ? mesh1 : mesh2, sharedMaterials[submeshRenderer.submeshIndex]);
|
||||||
} else {
|
} else {
|
||||||
submeshRenderer.GetComponent<Renderer>().enabled = false;
|
submeshRenderer.GetComponent<Renderer>().enabled = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
useMesh1 = !useMesh1;
|
useMesh1 = !useMesh1;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user