using System.Collections; using System.Collections.Generic; using UnityEngine; namespace MoreMountains.Tools { [ExecuteAlways] /// /// MM delay particles. /// [AddComponentMenu("More Mountains/Tools/Particles/MMDelayParticles")] public class MMDelayParticles : MonoBehaviour { [Header("Delay")] /// the duration of the delay, in seconds public float Delay; /// if this is true, this will delay by the same amount all children particle systems of this object public bool DelayChildren = true; /// if this is true, the delay will be applied on Start public bool ApplyDelayOnStart = false; [MMInspectorButtonAttribute("ApplyDelay")] public bool ApplyDelayButton; protected Component[] particleSystems; protected virtual void Start() { if (ApplyDelayOnStart) { ApplyDelay(); } } protected virtual void ApplyDelay() { if (this.gameObject.GetComponent() != null) { ParticleSystem.MainModule main = this.gameObject.GetComponent().main; main.startDelay = main.startDelay.constant + Delay; } particleSystems = GetComponentsInChildren(); foreach (ParticleSystem system in particleSystems) { ParticleSystem.MainModule main = system.main; main.startDelay = main.startDelay.constant + Delay; } } } }