Exemple #1
0
 public void agregarParticula(Particle p)
 {
     /*** agregar la particula a la lista ***/
     if (particulas.Count < 10000)
     {
         particulas.Add(p);
     }
 }
Exemple #2
0
 public void Update()
 {
     // Lanzar partículas
     direccion = calculaDireccion();
     Vector2 direccionRandom = new Vector2((float)(direccion.X + (random.NextDouble() - 0.5) * Properties.aleatoriedadParticulas), (float)(direccion.Y + (random.NextDouble() - 0.5) * Properties.aleatoriedadParticulas));
     Particle p = new Particle(new Vector2(posicion.X + textura.Width / 2, posicion.Y + textura.Height / 2), direccionRandom, random.Next(Properties.minSize, Properties.maxSize));
     fisica.agregarParticula(p);
     //DISMUIR LA ENERGIA DE LA NAVE
     energia -= Properties.energyDelta;
 }
Exemple #3
0
 private bool targetImpact(Objetivo a, Particle p)
 {
     float dx = p.Position.X - a.Position.X;
     float dy = p.Position.Y - a.Position.Y;
     float distSQ = dx * dx + dy * dy;
     float dist = (float)Math.Sqrt(distSQ);
     if (dist <= Properties.radioObjetivo)
     {
         return true;
     }
     return false;
 }
Exemple #4
0
        private bool gravitate(Atractor a, Particle p)
        {
            float dx = p.Position.X - a.Posicion.X;
            float dy = p.Position.Y - a.Posicion.Y;
            float distSQ = dx * dx + dy * dy;
            float dist = (float)Math.Sqrt(distSQ);
            float fuerza = a.Mass * p.Mass / distSQ;
            float ax = fuerza * dx / dist;
            float ay = fuerza * dy / dist;
            /*** sólo cambiar velocidad de la particula ***/
            Vector2 vel = p.Velocity;
            vel.X -= ax / p.Mass;
            vel.Y -= ay / p.Mass;
            p.Velocity = vel;

            /*** return true -> la particula choca en el objeto ***/
            if (dist <= a.Radio)
            {
                return true;
            }
            return false;
        }
Exemple #5
0
 private bool checkEdge(Particle p)
 {
     /*** quitar la partícula si ya salió de pantalla ***/
     if (p.Position.X < 0 || p.Position.X > Properties.SCREEN_WITH
         || p.Position.Y < 0 || p.Position.Y > Properties.SCREEN_HEIGHT)
     {
         return true;
     }
     else return false;
 }