internal unsafe override void ExecuteModifiers(ModifierCollection modifiers, float elapsedSeconds, ref Particle particle, int index, int count)
 {
     foreach (var slot in modifiers.Slots)
     {
         slot.Update(elapsedSeconds, ref particle, index, count);
     }
 }
        public ParticleBuffer(int size)
        {
            Size = size;

            Particles = new Particle
            {
                X = new float[Size],
                Y = new float[Size],
                VX = new float[Size],
                VY = new float[Size],
                Inception = new float[Size],
                Age = new float[Size],
                R = new float[Size],
                G = new float[Size],
                B = new float[Size],
                Opacity = new float[Size],
                Scale = new float[Size],
                Rotation = new float[Size],
                Mass = new float[Size],
            };
        }
 internal unsafe override void ExecuteModifiers(ModifierCollection modifiers, float elapsedSeconds, ref Particle particle, int index, int count)
 {
     var p = particle;
     System.Threading.Tasks.Parallel.ForEach(modifiers.Slots, slot => slot.Update(elapsedSeconds, ref p, index, count));
 }
 internal unsafe abstract void ExecuteModifiers(ModifierCollection modifiers, float elapsedSeconds, ref Particle particle, int index, int count);