public void Burst()
        {
            for (int i = 0; i < 4; i++)
            {
                //Params:
                //0: x-speed initial
                //1: y-speed initial
                //2: x-accel
                //3: y-accel
                //4: x source
                //5: y source
                Particle p = new Particle(RNG.Next(-1000, 1000), RNG.Next(-1000, 1000), 0, 0, _SourceX, _SourceY);

                p.Params[2] = 2 * ((_TargetX - _SourceX) - p.Params[0] * TrackingTime) / (TrackingTime * TrackingTime);
                p.Params[3] = 2 * ((_TargetY - _SourceY) - p.Params[1] * TrackingTime) / (TrackingTime * TrackingTime);

                p.TimeToLive = TrackingTime;
                p.X = _SourceX;
                p.Y = _SourceY;
                p.Scale = 64 / 256.0f;
                p.Color = _Color;

                p.Transform += TrackToTarget;

                Animation frame = AnimationFactory.GenerateAnimation(@"Lensflare", 256, 256, 1, 0);

                p.Sprite = new Sprite(frame, new Vector2(200, 200));
                //p.Sprite.Animation.CurrentFrame = RNG.Next(5);

                this.Add(p);

            }
        }
        public ParticleEffect(int bufferSize = 0)
            : base(G.Game)
        {
            Particles = new List<Particle>();
            ParticleBuffer = new List<Particle>();

            for (int i = 0; i < bufferSize; i++)
            {
                Particle p = new Particle();
                ParticleBuffer.Add(p);
            }
        }
        public Particle CreateParticle(params double[] Parameters)
        {
            Particle p;

            if (ParticleBuffer.Count > 0)
            {
                p = ParticleBuffer[0];
                ParticleBuffer.RemoveAt(0);
                p.Init(Parameters);
            }
            else
            {
                p = new Particle(Parameters);
            }

            return p;
        }
        public void Burst()
        {
            Particle p = new Particle();

            p.TimeToLive = ExplodeTime;
            p.X = _SourceX;
            p.Y = _SourceY;
            p.Scale = 128 / 200.0f;
            p.Color = _Color;

            p.Transform += TrackToTarget;

            Animation frame = AnimationFactory.GenerateAnimation(@"Explosion", 200, 200, 6, 0.06);

            p.Sprite = new Sprite(frame, new Vector2(-200, -200));

            this.Add(p);
        }
 public virtual void Add(Particle p)
 {
     p.Enabled = true;
     Particles.Add(p);
 }