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); }
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); }