mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-06 07:14:55 +08:00
fixed SkeletonUtilitySubmeshRenderer
This commit is contained in:
parent
5336eedc2f
commit
292f8a6404
@ -63,6 +63,7 @@ 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;
|
||||
@ -72,6 +73,10 @@ public class SkeletonRenderer : MonoBehaviour {
|
||||
private readonly ExposedList<Material> submeshMaterials = new ExposedList<Material>();
|
||||
private readonly ExposedList<Submesh> submeshes = new ExposedList<Submesh>();
|
||||
|
||||
public void RequestMeshUpdate() {
|
||||
meshUpdateRequested = true;
|
||||
}
|
||||
|
||||
public virtual void Reset () {
|
||||
if (meshFilter != null)
|
||||
meshFilter.sharedMesh = null;
|
||||
@ -167,9 +172,12 @@ public class SkeletonRenderer : MonoBehaviour {
|
||||
}
|
||||
|
||||
public virtual void LateUpdate () {
|
||||
if (!valid || !meshRenderer.enabled)
|
||||
if (!valid || (!meshRenderer.enabled && !meshUpdateRequested))
|
||||
return;
|
||||
|
||||
// The force update request is only valid for one frame
|
||||
meshUpdateRequested = false;
|
||||
|
||||
// Count vertices and submesh triangles.
|
||||
int vertexCount = 0;
|
||||
int submeshTriangleCount = 0, submeshFirstVertex = 0, submeshStartSlotIndex = 0;
|
||||
|
||||
@ -11,9 +11,11 @@ public class SkeletonUtilitySubmeshRenderer : MonoBehaviour {
|
||||
public int sortingLayerID = 0;
|
||||
public Material hiddenPassMaterial;
|
||||
Renderer cachedRenderer;
|
||||
SkeletonRenderer parentSkeletonRenderer;
|
||||
MeshFilter filter;
|
||||
Material[] sharedMaterials;
|
||||
MeshFilter parentFilter;
|
||||
bool isFirstUpdate = true;
|
||||
|
||||
void Awake () {
|
||||
cachedRenderer = GetComponent<Renderer>();
|
||||
@ -43,23 +45,29 @@ public class SkeletonUtilitySubmeshRenderer : MonoBehaviour {
|
||||
parentFilter = parentRenderer.GetComponent<MeshFilter>();
|
||||
mesh = parentFilter.sharedMesh;
|
||||
filter.sharedMesh = mesh;
|
||||
Debug.Log("Mesh: " + mesh);
|
||||
parentSkeletonRenderer = parentRenderer.GetComponent<SkeletonRenderer>();
|
||||
Debug.Log("Mesh: " + (mesh == null ? "null" : mesh.name), parentFilter);
|
||||
}
|
||||
|
||||
public void Update () {
|
||||
if (cachedRenderer == null)
|
||||
cachedRenderer = GetComponent<Renderer>();
|
||||
|
||||
if (isFirstUpdate || cachedRenderer.enabled) {
|
||||
parentSkeletonRenderer.RequestMeshUpdate();
|
||||
isFirstUpdate = false;
|
||||
}
|
||||
|
||||
if (mesh == null || mesh != parentFilter.sharedMesh) {
|
||||
mesh = parentFilter.sharedMesh;
|
||||
filter.sharedMesh = mesh;
|
||||
}
|
||||
|
||||
if (cachedRenderer == null)
|
||||
cachedRenderer = GetComponent<Renderer>();
|
||||
|
||||
if (mesh == null || submeshIndex > mesh.subMeshCount - 1) {
|
||||
cachedRenderer.enabled = false;
|
||||
return;
|
||||
} else {
|
||||
GetComponent<Renderer>().enabled = true;
|
||||
cachedRenderer.enabled = true;
|
||||
}
|
||||
|
||||
bool changed = false;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user