public void CreateNewParticle(Vector3 partSysPos) { var part = particles.New(); part.ResetParticle(); part.Alive = true; part.Lifetime = Lifetime.GetRandomNumInRange(); part.Position = partSysPos + EmitRadius.GetRandomNumInRange(); var i = 0; // process any initial events foreach (var ev in Events) { if (ev.ActualTime == 0) { ev.DoItToIt(ref part); i++; } } part.CurEvent = i; totalParticleLives++; }