Esempio n. 1
0
        public void Update(GameTime gametime, Vector3 posicao, Vector3 novaDirecao, Tank tank)
        {
            moverParaTraseiraTank(tank);

            //para cada Update retiram-se x particulas da lista nao ativa e colocam-se as mesmas na lista de particulas ativas.
            for (int i = 0; i < 5; i++)
            {
                if (listaParticulasAtiva.Count < quantidadeParticulas - 1000)
                {
                    //particula temporaria recebe a primeira particula da lista de nao ativas.
                    particulaTemp = listaParticulas.First();
                    //calcula posicao e direcao.
                    if (criarParticulas && tank.playerControl)
                    {
                        particulaTemp.CreateParticle(gametime, posicaoCentro, larguraRetangulo, alturaRetangulo, novaDirecao, tank, worldMatrix);
                    }
                    //adiciona particula a lista ativa.
                    listaParticulasAtiva.Add(particulaTemp);
                    //remove da lista nao ativa.
                    listaParticulas.Remove(particulaTemp);
                }
            }


            foreach (Particula p in listaParticulasAtiva)
            {
                //Update de cada particula da lista ativa.
                p.Update(gametime);
                //se a particula ultrapassar a posicao em Y de -10...
                if (p.posicao.Y < -10f)
                {
                    //...é adicionada á lista nao ativa...
                    listaParticulas.Add(p);
                }
            }
            //... e é removida da lista ativa.
            listaParticulasAtiva.RemoveAll(particula => particula.posicao.Y < -10f);
        }
Esempio n. 2
0
        public void Update(GameTime gametime, Vector3 posicao, Vector3 novaDirecao, Tank tank)
        {
            moverParaTraseiraTank(tank);

            //para cada Update retiram-se x particulas da lista nao ativa e colocam-se as mesmas na lista de particulas ativas.
            for (int i = 0; i < 5; i++)
            {
                if (listaParticulasAtiva.Count < quantidadeParticulas-1000)
                {
                    //particula temporaria recebe a primeira particula da lista de nao ativas.
                    particulaTemp = listaParticulas.First();
                    //calcula posicao e direcao.
                    if(criarParticulas && tank.playerControl)
                        particulaTemp.CreateParticle(gametime, posicaoCentro, larguraRetangulo, alturaRetangulo, novaDirecao, tank, worldMatrix);
                    //adiciona particula a lista ativa.
                    listaParticulasAtiva.Add(particulaTemp);
                    //remove da lista nao ativa.
                    listaParticulas.Remove(particulaTemp);
                }
            }

            foreach (Particula p in listaParticulasAtiva)
            {
                //Update de cada particula da lista ativa.
                p.Update(gametime);
                //se a particula ultrapassar a posicao em Y de -10...
                if (p.posicao.Y < -10f)
                {
                    //...é adicionada á lista nao ativa...
                    listaParticulas.Add(p);
                }

            }
            //... e é removida da lista ativa.
            listaParticulasAtiva.RemoveAll(particula => particula.posicao.Y < -10f);
        }