45 lines
1.1 KiB
C#
45 lines
1.1 KiB
C#
using UnityEngine;
|
|
using System.Collections;
|
|
|
|
// Cartoon FX - (c) 2015 Jean Moreno
|
|
|
|
// Automatically destructs an object when it has stopped emitting particles and when they have all disappeared from the screen.
|
|
// Check is performed every 0.5 seconds to not query the particle system's state every frame.
|
|
// (only deactivates the object if the OnlyDeactivate flag is set, automatically used with CFX Spawn System)
|
|
|
|
[RequireComponent(typeof(ParticleSystem))]
|
|
public class CFX_AutoDestructShuriken : MonoBehaviour
|
|
{
|
|
// If true, deactivate the object instead of destroying it
|
|
public bool OnlyDeactivate;
|
|
|
|
void OnEnable()
|
|
{
|
|
StartCoroutine("CheckIfAlive");
|
|
}
|
|
|
|
IEnumerator CheckIfAlive ()
|
|
{
|
|
ParticleSystem ps = this.GetComponent<ParticleSystem>();
|
|
|
|
while(true && ps != null)
|
|
{
|
|
yield return new WaitForSeconds(0.5f);
|
|
if(!ps.IsAlive(true))
|
|
{
|
|
if(OnlyDeactivate)
|
|
{
|
|
#if UNITY_3_5
|
|
this.gameObject.SetActiveRecursively(false);
|
|
#else
|
|
this.gameObject.SetActive(false);
|
|
#endif
|
|
}
|
|
else
|
|
GameObject.Destroy(this.gameObject);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|