/// <summary>Construct the logo</summary>
		public XenLogo(UpdateManager updateManager)
		{
			if (updateManager == null)
				throw new ArgumentNullException();

			content = new ContentLoader(Application.GetApplicationInstance().Services);

			this.clearBackground = true;
			
			//setup the system and drawer
			this.particles = new Xen.Ex.Graphics.ParticleSystem(updateManager);
			this.particleDrawer = new VelocityBillboardParticles2DElement(this.particles, false, 0.025f);

			//align it...
			this.particleDrawer.VerticalAlignment = Xen.Ex.Graphics2D.VerticalAlignment.Centre;
			this.particleDrawer.HorizontalAlignment = Xen.Ex.Graphics2D.HorizontalAlignment.Centre;

			//clear background is optional.
			this.clear = new Xen.Graphics.Modifier.ClearBufferModifier(Microsoft.Xna.Framework.Graphics.ClearOptions.Target);
			this.clear.ClearColour = new Microsoft.Xna.Framework.Color();

			//load the data straight from the assembly.
			this.particles.ParticleSystemData = content.Load<Xen.Ex.Graphics.Content.ParticleSystemData>("Logo");
			this.particleTrigger = this.particles.GetTriggerByName("Fire");

			updateManager.Add(this);
		}
		/// <summary>
		/// Draw the logo
		/// </summary>
		public void Draw(DrawState state)
		{
			if (clearBackground)
				this.clear.Draw(state);

			if (EffectFinished)
			{
				if (this.particles != null)
					this.particles.Dispose();
				if (content != null)
					this.content.Dispose();
				this.particleDrawer = null;
				this.particles = null;
				this.particleTrigger = null;
				this.content = null;
			}
			else
			{
				//x axis min/max start range for the particles to spawn in at
				this.particles.GlobalValues[0] = -state.DrawTarget.Size.X / 2;
				this.particles.GlobalValues[1] = 0;

				//y axis min/max start range for the particles to spawn in at
				this.particles.GlobalValues[2] = -state.DrawTarget.Size.Y / 2 - 200;
				this.particles.GlobalValues[3] = +state.DrawTarget.Size.Y / 2 + 200;

				drawingBegun = true;

				if (particles.GetParticleCount(0) > 0)
					particlesCreated = true;

				this.particleDrawer.Draw(state);
			}
		}
		/// <summary>
		/// Dispose the effect resources early. The resources will automatically be disposed when the effect completes.
		/// </summary>
		public void Dispose()
		{
			if (this.particles != null)
				this.particles.Dispose();
			if (content != null)
				this.content.Dispose();

			this.particleDrawer = null;
			this.particles = null;
			this.particleTrigger = null;
			this.content = null;
		}