[spine-unity] Fix SkeletonGhostRenderer namespace.

This commit is contained in:
John 2016-07-05 05:15:17 +08:00 committed by GitHub
parent ebd8831a17
commit bde07221b3

View File

@ -1,4 +1,4 @@
/***************************************************************************** /*****************************************************************************
* SkeletonGhostRenderer created by Mitch Thompson * SkeletonGhostRenderer created by Mitch Thompson
* Full irrevocable rights and permissions granted to Esoteric Software * Full irrevocable rights and permissions granted to Esoteric Software
*****************************************************************************/ *****************************************************************************/
@ -6,105 +6,101 @@
using UnityEngine; using UnityEngine;
using System.Collections; using System.Collections;
public class SkeletonGhostRenderer : MonoBehaviour { namespace Spine.Unity.Modules {
public class SkeletonGhostRenderer : MonoBehaviour {
public float fadeSpeed = 10; public float fadeSpeed = 10;
Color32[] colors; Color32[] colors;
Color32 black = new Color32(0, 0, 0, 0); Color32 black = new Color32(0, 0, 0, 0);
MeshFilter meshFilter; MeshFilter meshFilter;
MeshRenderer meshRenderer; MeshRenderer meshRenderer;
void Awake () { void Awake () {
meshRenderer = gameObject.AddComponent<MeshRenderer>(); meshRenderer = gameObject.AddComponent<MeshRenderer>();
meshFilter = gameObject.AddComponent<MeshFilter>(); meshFilter = gameObject.AddComponent<MeshFilter>();
}
public void Initialize (Mesh mesh, Material[] materials, Color32 color, bool additive, float speed, int sortingLayerID, int sortingOrder) {
StopAllCoroutines();
gameObject.SetActive(true);
meshRenderer.sharedMaterials = materials;
meshRenderer.sortingLayerID = sortingLayerID;
meshRenderer.sortingOrder = sortingOrder;
meshFilter.sharedMesh = (Mesh)Instantiate(mesh);
colors = meshFilter.sharedMesh.colors32;
if ((color.a + color.r + color.g + color.b) > 0) {
for (int i = 0; i < colors.Length; i++) {
colors[i] = color;
}
} }
fadeSpeed = speed; public void Initialize (Mesh mesh, Material[] materials, Color32 color, bool additive, float speed, int sortingLayerID, int sortingOrder) {
StopAllCoroutines();
if (additive) gameObject.SetActive(true);
StartCoroutine(FadeAdditive()); meshRenderer.sharedMaterials = materials;
else meshRenderer.sortingLayerID = sortingLayerID;
StartCoroutine(Fade()); meshRenderer.sortingOrder = sortingOrder;
} meshFilter.sharedMesh = Instantiate(mesh);
colors = meshFilter.sharedMesh.colors32;
IEnumerator Fade () { if ((color.a + color.r + color.g + color.b) > 0) {
Color32 c; for (int i = 0; i < colors.Length; i++)
for (int t = 0; t < 500; t++) { colors[i] = color;
bool breakout = true;
for (int i = 0; i < colors.Length; i++) {
c = colors[i];
if (c.a > 0)
breakout = false;
colors[i] = Color32.Lerp(c, black, Time.deltaTime * fadeSpeed);
} }
meshFilter.sharedMesh.colors32 = colors; fadeSpeed = speed;
if (breakout) if (additive)
break; StartCoroutine(FadeAdditive());
yield return null; else
StartCoroutine(Fade());
} }
Destroy(meshFilter.sharedMesh); IEnumerator Fade () {
Color32 c;
for (int t = 0; t < 500; t++) {
bool breakout = true;
for (int i = 0; i < colors.Length; i++) {
c = colors[i];
if (c.a > 0)
breakout = false;
gameObject.SetActive(false); colors[i] = Color32.Lerp(c, black, Time.deltaTime * fadeSpeed);
} }
meshFilter.sharedMesh.colors32 = colors;
IEnumerator FadeAdditive () { if (breakout)
Color32 c; break;
Color32 black = this.black;
yield return null;
for (int t = 0; t < 500; t++) {
bool breakout = true;
for (int i = 0; i < colors.Length; i++) {
c = colors[i];
black.a = c.a;
if (c.r > 0 || c.g > 0 || c.b > 0)
breakout = false;
colors[i] = Color32.Lerp(c, black, Time.deltaTime * fadeSpeed);
} }
meshFilter.sharedMesh.colors32 = colors; Destroy(meshFilter.sharedMesh);
gameObject.SetActive(false);
if (breakout)
break;
yield return null;
} }
Destroy(meshFilter.sharedMesh); IEnumerator FadeAdditive () {
Color32 c;
Color32 black = this.black;
gameObject.SetActive(false); for (int t = 0; t < 500; t++) {
}
bool breakout = true;
for (int i = 0; i < colors.Length; i++) {
c = colors[i];
black.a = c.a;
if (c.r > 0 || c.g > 0 || c.b > 0)
breakout = false;
colors[i] = Color32.Lerp(c, black, Time.deltaTime * fadeSpeed);
}
meshFilter.sharedMesh.colors32 = colors;
if (breakout)
break;
yield return null;
}
public void Cleanup () {
if (meshFilter != null && meshFilter.sharedMesh != null)
Destroy(meshFilter.sharedMesh); Destroy(meshFilter.sharedMesh);
Destroy(gameObject); gameObject.SetActive(false);
}
public void Cleanup () {
if (meshFilter != null && meshFilter.sharedMesh != null)
Destroy(meshFilter.sharedMesh);
Destroy(gameObject);
}
} }
} }