private void InitParticle(ref Particle p)
        {
            p.lifeTime          = GetRandomRangeValue(lifeTimeRange);
            p.acceleration      = spawnAcceleration.GetRandomValue(random);
            p.startAcceleration = p.acceleration;
            p.scale             = spawnScale.GetRandomValue(random);
            if (keepScaleRatio)
            {
                p.scale = scaleAspect.GetAspectRatio(p.scale);
            }
            p.position      = spawnArea.GetRandomValue(random);
            p.position     += transform.position;
            p.startPosition = p.position;

            p.color = particleColor.GetRandomValue(random);
            p.ClearModules();
            for (int i = 0; i < perParticleModules.Count; i++)
            {
                ParticleModule module = perParticleModules[i].Clone();
                module.InstanceInit(ref p);
                p.AddModule(module);
            }
        }
 public void RemoveModule(ParticleModule module)
 {
     modules.Remove(module);
 }
 public void AddModule(ParticleModule module)
 {
     modules.Add(module);
 }
 public void AddPerParticleModule(ParticleModule module)
 {
     perParticleModules.Add(module);
 }
 public void RemoveParticleGlobalModule(ParticleModule module)
 {
     globalModules.Remove(module);
 }
 public void AddParticleGlobalModule(ParticleModule module)
 {
     globalModules.Add(module);
 }
 public void RemovePerParticleModule(ParticleModule module)
 {
     perParticleModules.Remove(module);
 }