public void ApplyAnimacion(ref SSAParticle p) { switch (Atype) { case Tipo.Mover: Point posicion = p.GetPos(); posicion.X += ((Point)parametros[0]).X; posicion.Y += ((Point)parametros[0]).Y; p.SetPos(posicion); break; case Tipo.Destruir: double tiempoD=((double)parametros[0]); p.SetLife(p.GetBirth()+tiempoD); break; default: break; } }
//Empezamos con una version sencilla el main llevará el control de las iteraciones del motor //El motor solo ha de preocuparse por crear las particulas public void Itera() { int particulas = world.Count; if (time * brate <= particulas) { for (int i = 0; i < brate; i++) { //Ejemplo más adelante se podrá modificar pudiendo cambiar la particula SSAParticle particula = new SSAParticle(time); if (formas.Length>0 && formas[0]!=null) { particula.SetForma(formas); } pendientes.Push(particula); } } Anima(); Procesa(); time += trate; }
private lineaASS ParticulaToLinea(SSAParticle particula,int i) { lineaASS l = new lineaASS(); Tiempo ti = new Tiempo(); Tiempo tf = new Tiempo(); ti.setTiempo(time); tf.setTiempo(time + trate); l.t_inicial = ti; l.t_final = tf; l.texto = particula.Show(time)[i]; return l; }
private void Modifica(ref SSAParticle p) { while(animaciones.Count>0) { ((ParticleAnimacion)animaciones.Pop()).ApplyAnimacion(ref p); } }