chore: initial commit
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
|
||||
namespace MoreMountains.Tools
|
||||
{
|
||||
/// <summary>
|
||||
/// Add this class to a ParticleSystem so it auto destroys once it has stopped emitting.
|
||||
/// Make sure your ParticleSystem isn't looping, otherwise this script will be useless
|
||||
/// </summary>
|
||||
[AddComponentMenu("More Mountains/Tools/Particles/MMAutoDestroyParticleSystem")]
|
||||
public class MMAutoDestroyParticleSystem : MonoBehaviour
|
||||
{
|
||||
/// True if the ParticleSystem should also destroy its parent
|
||||
public bool DestroyParent = false;
|
||||
|
||||
/// If for some reason your particles don't get destroyed automatically at the end of the emission, you can force a destroy after a delay. Leave it at zero otherwise.
|
||||
public float DestroyDelay = 0f;
|
||||
|
||||
protected ParticleSystem _particleSystem;
|
||||
protected float _startTime;
|
||||
protected bool _started = false;
|
||||
|
||||
/// <summary>
|
||||
/// Initialization, we get the ParticleSystem component
|
||||
/// </summary>
|
||||
protected virtual void Start()
|
||||
{
|
||||
_started = false;
|
||||
_particleSystem = GetComponent<ParticleSystem>();
|
||||
if (DestroyDelay != 0)
|
||||
{
|
||||
_startTime = Time.time;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// When the ParticleSystem stops playing, we destroy it.
|
||||
/// </summary>
|
||||
protected virtual void Update()
|
||||
{
|
||||
if ( (DestroyDelay != 0) && (Time.time - _startTime > DestroyDelay) )
|
||||
{
|
||||
DestroyParticleSystem();
|
||||
}
|
||||
|
||||
if (_particleSystem.isPlaying)
|
||||
{
|
||||
_started = true;
|
||||
return;
|
||||
}
|
||||
|
||||
DestroyParticleSystem();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Destroys the particle system.
|
||||
/// </summary>
|
||||
protected virtual void DestroyParticleSystem()
|
||||
{
|
||||
if (!_started)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (transform.parent!=null)
|
||||
{
|
||||
if(DestroyParent)
|
||||
{
|
||||
Destroy(transform.parent.gameObject);
|
||||
}
|
||||
}
|
||||
Destroy (gameObject);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user