#region File Description
//-----------------------------------------------------------------------------
// ExplosionSmokeParticleSystem.cs
//
// Microsoft XNA Community Game Platform
// Copyright (C) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
#endregion
#region Using Statements
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
#endregion
namespace ParticleSample
{
///
/// ExplosionSmokeParticleSystem is a specialization of ParticleSystem which
/// creates a circular pattern of smoke. It should be combined with
/// ExplosionParticleSystem for best effect.
///
public class ExplosionSmokeParticleSystem : ParticleSystem
{
public ExplosionSmokeParticleSystem(ParticleSampleGame game, int howManyEffects)
: base(game, howManyEffects)
{
}
///
/// Set up the constants that will give this particle system its behavior and
/// properties.
///
protected override void InitializeConstants()
{
textureFilename = "smoke";
// less initial speed than the explosion itself
minInitialSpeed = 20;
maxInitialSpeed = 200;
// acceleration is negative, so particles will accelerate away from the
// initial velocity. this will make them slow down, as if from wind
// resistance. we want the smoke to linger a bit and feel wispy, though,
// so we don't stop them completely like we do ExplosionParticleSystem
// particles.
minAcceleration = -10;
maxAcceleration = -50;
// explosion smoke lasts for longer than the explosion itself, but not
// as long as the plumes do.
minLifetime = 1.0f;
maxLifetime = 2.5f;
minScale = 1.0f;
maxScale = 2.0f;
// we need to reduce the number of particles on Windows Phone in order to keep
// a good framerate
#if WINDOWS_PHONE
minNumParticles = 5;
maxNumParticles = 10;
#else
minNumParticles = 10;
maxNumParticles = 20;
#endif
minRotationSpeed = -MathHelper.PiOver4;
maxRotationSpeed = MathHelper.PiOver4;
blendState = BlendState.AlphaBlend;
DrawOrder = AlphaBlendDrawOrder;
}
}
}