Esempio n. 1
0
        private void AddExplosionParticle(Vector2 explosionPos, float explosionSize, GameTime gameTime)
        {
            Vector2 displacement = new Vector2((float)rand.NextDouble() * explosionSize, 0);

            displacement = Vector2.Transform(displacement, Matrix.CreateRotationZ(MathHelper.ToRadians(rand.Next(360))));

            Esplosione espl = new Esplosione(explosionPos, gameTime, displacement * 2.0f);

            listaBoom.Add(espl);
        }
Esempio n. 2
0
        public void DrawExplosione()
        {
            spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.Additive);

            for (int i = 0; i < listaBoom.Count; i++)
            {
                Esplosione particle  = listaBoom[i];
                Vector2    coordEspl = particle.Coord;
                coordEspl.X += nuvola.Width / 2;
                coordEspl.Y += nuvola.Height / 2;
                spriteBatch.Draw(boom, coordEspl, null, Color.White, i, new Vector2(256, 256), 0.5f, SpriteEffects.None, 1);//particle.Scaling
            }
            spriteBatch.End();
        }
Esempio n. 3
0
        private void UpdateParticles(GameTime gameTime)
        {
            float now = (float)gameTime.TotalGameTime.TotalMilliseconds;

            for (int i = listaBoom.Count - 1; i >= 0; i--)
            {
                Esplosione particle = listaBoom[i];
                // float timeAlive = now - particle.BirthTime;

                if (now > particle.AliveTime.TotalMilliseconds)
                {
                    listaBoom.RemoveAt(i);
                }
                else
                {
                    particle.Update();
                    listaBoom[i] = particle;
                }
            }
        }