/// <summary> /// When this method is called a new particle will be added to the emitter set and NewParticle() will be called to change the /// initial parameters of the particle if needed. /// </summary> protected void Emit() { XNACS1Particle particle = new XNACS1Particle(m_Center, m_DefaultSize, m_DefaultLife, m_DefaultTexture); particle.m_TextureColor = m_DefaultColor; particle.RemoveFromAutoDrawSet(); m_ParticleList.Add(particle); NewParticle(particle); }
protected override void NewParticle(XNACS1Particle particle) { float theta = XNACS1Base.RandomFloat(0, (float)(2 * Math.PI)); particle.CenterX = CenterX; particle.CenterY = CenterY; Vector2 randomVelocity = new Vector2(XNACS1Base.RandomFloat(-1, 1), XNACS1Base.RandomFloat(-1, 1)); randomVelocity *= 0.2f; particle.Velocity = randomVelocity; particle.ShouldTravel = true; }
/// <summary> /// Creates a new particle with a random start location, and verticle velocity /// </summary>1 /// <param name="newParticle"></param> protected override void NewParticle(XNACS1Particle newParticle) { newParticle.CenterX += XNACS1Base.RandomFloat(-(m_FireWidth / 2), (m_FireWidth / 2)); newParticle.CenterY += XNACS1Base.RandomFloat(-1, 1); Vector2 velocity = m_FireDirection * XNACS1Base.RandomFloat(0, 1); velocity *= m_Speed; newParticle.Velocity = velocity; newParticle.ShouldTravel = true; }
/// <summary> /// Overloaded NewParticle Method, gives explosion particles initial velocity and sets /// ShouldTravel = true. /// </summary> /// <param name="newParticle"></param> protected override void NewParticle(XNACS1Particle newParticle) { newParticle.CenterX += XNACS1Base.RandomFloat(-m_Radius / 10, m_Radius / 10); newParticle.CenterY += XNACS1Base.RandomFloat(-m_Radius / 10, m_Radius / 10); Vector2 randomVelocity = new Vector2(XNACS1Base.RandomFloat(-1, 1), XNACS1Base.RandomFloat(-1, 1)); randomVelocity.Normalize(); randomVelocity *= m_ExplodeSpeed * XNACS1Base.RandomFloat(.5f, 1); newParticle.Velocity = randomVelocity; newParticle.ShouldTravel = true; }
/// <summary> /// /// </summary> /// <param name="newParticle"></param> protected override void NewParticle(XNACS1Particle newParticle) { if (TailTravelMode != ParticleTravelMode.Linear) { newParticle.TravelMode = TailTravelMode; newParticle.Velocity = m_Center - m_LastCenter; newParticle.Velocity = Vector2.Normalize(newParticle.Velocity) / 100; newParticle.DisplacementAmplitude = .5f; newParticle.DisplacementFrequency = .3f; newParticle.ShouldTravel = true; } }
/// <summary> /// Overloaded UpdateParticle to cause particles to fade as they die. /// </summary> /// <param name="particle"></param> protected override void UpdateParticle(XNACS1Particle particle) { int temp = (255 * particle.Life) / m_DefaultLife; if (temp > 255) { temp = 255; } else if (temp < 0) { temp = 0; } particle.m_TextureColor.A = (byte)temp; }
protected override void UpdateParticle(XNACS1Particle particle) { int temp = (255 * particle.Life) / InitialLife; if (temp > 255) { temp = 255; } else if (temp < 0) { temp = 0; } Color tempColor = particle.TextureTintColor; tempColor.A = (byte)temp; particle.TextureTintColor = tempColor; }
/// <summary> /// This method is called by the Emit method whenever a particle is created. By default /// particles are created at the Center location of the emitter with InitialLife, InitialSize, DefaultTexture, and DefaultColor. /// Newly created particles also have shouldtravel set to false and velocity = 0. /// By overloading this method you can change these properties to make particles emit in different ways. /// <param name="newParticle">Particle that has just been created and added to the set.</param> /// <seealso cref="AutoEmitEnabled"/> /// <seealso cref="InitialLife"/> /// <seealso cref="InitialSize"/> /// <seealso cref="DefaultTexture"/> /// <seealso cref="DefaultColor"/> /// <seealso cref="EmitFrequency"/> /// <seealso cref="Emit"/> /// <seealso cref="UpdateParticle"/> /// </summary> protected virtual void NewParticle(XNACS1Particle newParticle) { }
/// <summary> /// This is where you define the behavior of particles in the emitter. This method /// will be called once a tick for each particle if the emitter is in the Emitter /// Update Set. /// This is an abstract method and must be overloaded. /// <seealso cref="AddEmitterToUpdateSet"/> /// <seealso cref="RemoveEmitterFromUpdateSet"/> /// </summary> /// <param name="particle">The particle being updated</param> protected abstract void UpdateParticle(XNACS1Particle particle);
/// <summary> /// Removes a particle from the emitter list. /// </summary> /// <param name="particle">Particle to remove.</param> protected void KillParticle(XNACS1Particle particle) { m_ParticleList.Remove(particle); }
/// <summary> /// Overloaded NewParticle Method, gives explosion particles initial velocity and sets /// ShouldTravel = true. /// </summary> /// <param name="newParticle"></param> protected override void NewParticle(XNACS1Particle newParticle) { newParticle.CenterX += XNACS1Base.RandomFloat(-m_Radius / 10, m_Radius / 10); newParticle.CenterY += XNACS1Base.RandomFloat(-m_Radius / 10, m_Radius / 10); Vector2 randomVelocity = new Vector2(XNACS1Base.RandomFloat(-1, 1), XNACS1Base.RandomFloat(-1, 1)); randomVelocity.Normalize(); randomVelocity *= m_ExplodeSpeed * XNACS1Base.RandomFloat(.5f,1); newParticle.Velocity = randomVelocity; newParticle.ShouldTravel = true; }
/// <summary> /// Overloaded UpdateParticle to cause particles to fade as they die. /// </summary> /// <param name="particle"></param> protected override void UpdateParticle(XNACS1Particle particle) { int temp = (255 * particle.Life) / m_DefaultLife; if (temp > 255) temp = 255; else if (temp < 0) temp = 0; particle.m_TextureColor.A = (byte)temp; }