public void Birth(Particle particle) { particle.position.X = (float)(rand.NextDouble() - 0.5f) * radius[entity.curr_size]; particle.position.Y = (float)(rand.NextDouble() - 0.5f) * radius[entity.curr_size]; particle.position.Z = (float)(rand.NextDouble() - 0.5f) * radius[entity.curr_size]; particle.position.X += entity.position.X; particle.position.Y += entity.position.Y; particle.position.Z += entity.position.Z; particle.region = Resources.bubble_texture_region; particle.scale = new Vector2(particle.region.width * (1f / particle.region.texture.Width), particle.region.height * (1f / particle.region.texture.Height)); particle.scale *= (float)(rand.NextDouble()) * scale[entity.curr_size]; particle.color.A = 0; }
public ParticleManager() { particle_array = new Particle[NUM_PARTICLES]; particle_pool = new Queue<Particle>(NUM_PARTICLES); for (int i = 0; i < particle_array.Length; i++) { Particle particle = new Particle(); particle_array[i] = particle; particle_pool.Enqueue(particle); particle.in_pool = true; particle.is_alive = false; } }
public void Add(Particle particle) { TextureRegion region = particle.region; ParticleInfo particleinfo = new ParticleInfo(region, particle.color, ref particle.world); if (!particles.ContainsKey(region.texture)) particles[region.texture] = new List<ParticleInfo>(); particles[region.texture].Add(particleinfo); }
public void Frame(Particle particle, double elapsed) { float fade = 1 - particle.age / particle.life; fade = fade * 0.3f; particle.color.A = (byte)(byte.MaxValue * fade); particle.velocity.X = MathHelper.Lerp(particle.velocity.X, (float)(rand.NextDouble() - 0.5f), 0.0005f); particle.velocity.Y = MathHelper.Lerp(particle.velocity.Y, (float)(rand.NextDouble() - 0.5f), 0.0005f); particle.velocity.Z = MathHelper.Lerp(particle.velocity.Z, (float)(rand.NextDouble() - 0.5f), 0.0005f); }
public void Tail(Particle parent) { ParticleManager particlemanager = ParticleManager.GetInstance(); Particle child = particlemanager.Emit(tail_logic, (float)rand.NextDouble()); if (child == null) return; child.scale = parent.scale; child.position = parent.position; }
public void Frame(Particle particle, double elapsed) { time += (float)elapsed; if (time > 0.1f) { Tail(particle); time = 0; } float alpha = particle.age / particle.life; alpha = (float)Math.Sin(alpha * MathHelper.Pi); particle.color.A = (byte)(byte.MaxValue * alpha); particle.velocity.X = MathHelper.Lerp(particle.velocity.X, (float)(rand.NextDouble() - 0.5f), 0.003f); particle.velocity.Y = MathHelper.Lerp(particle.velocity.Y, (float)(rand.NextDouble() - 0.5f), 0.003f); particle.velocity.Z = MathHelper.Lerp(particle.velocity.Z, (float)(rand.NextDouble() - 0.5f), 0.003f); }
public void Death(Particle particle) { Emit(); }
public void Frame(Particle particle, double elapsed) { float alpha = 1 - particle.age / particle.life; particle.color.A = (byte)(byte.MaxValue * alpha); }
public void Death(Particle particle) { }
public void Birth(Particle particle) { particle.region = Resources.particle_texture_region; particle.scale = new Vector2(particle.region.width * (1f / particle.region.texture.Width), particle.region.height * (1f / particle.region.texture.Height)); }
public void Death(Particle particle) { count--; }
public void Frame(Particle particle, double elapsed) { float alpha = particle.age / particle.life; alpha = (float)Math.Sin(alpha*MathHelper.Pi); particle.color.A = (byte)(byte.MaxValue * alpha); particle.velocity.X = MathHelper.Lerp(particle.velocity.X, (float)(rand.NextDouble() - 0.5f), 0.001f); particle.velocity.Y = MathHelper.Lerp(particle.velocity.Y, (float)(rand.NextDouble() - 0.5f), 0.001f); particle.velocity.Z = MathHelper.Lerp(particle.velocity.Z, (float)(rand.NextDouble() - 0.5f), 0.001f); float distance; Vector3.Distance(ref particle.position, ref entity.position, out distance); if (distance < 1) { float amount = 0.0002f; particle.velocity.X = MathHelper.Lerp(particle.velocity.X, entity.velocity.X, amount); particle.velocity.Y = MathHelper.Lerp(particle.velocity.Y, entity.velocity.Y, amount); } }
public void Frame(Particle particle, double elapsed) { float alpha = particle.age / particle.life; alpha = (float)Math.Sin(alpha * MathHelper.Pi) * 0.15f; particle.color.A = (byte)(byte.MaxValue * alpha); particle.velocity.X = MathHelper.Lerp(particle.velocity.X, (float)(rand.NextDouble() - 0.5f), 0.001f); particle.velocity.Y = MathHelper.Lerp(particle.velocity.Y, (float)(rand.NextDouble() - 0.5f), 0.001f); particle.velocity.Z = MathHelper.Lerp(particle.velocity.Z, (float)(rand.NextDouble() - 0.5f), 0.001f); }