public List <FlatSubParticle> update_particles(float aDelta) { List <FlatSubParticle> removed = new List <FlatSubParticle>(); LinkedListNode <FlatSubParticle> starting = mParticles.First; while (starting != null) { LinkedListNode <FlatSubParticle> operating = starting; FlatSubParticle e = starting.Value; e.pos += e.vel * aDelta; e.vel += Gravity * aDelta; e.timer.update(aDelta); starting = starting.Next; if (e.timer.isExpired()) { mParticles.Remove(operating); removed.Add(operating.Value); } //update the element e.element.HardPosition = e.pos; if (UseColor) { float lambda = Mathf.Clamp01(e.timer.getLinear()); e.element.HardColor = StartColor * (1 - lambda) + EndColor * lambda; } e.element.update(aDelta); } return(removed); }
public FlatSubParticle add_particle(FlatElementBase aParticle, Vector3 aPos, Vector3 aVel, float aLifetime, string aId) { FlatSubParticle addMe = new FlatSubParticle(); addMe.id = aId; addMe.pos = aPos; addMe.vel = aVel; addMe.element = aParticle; addMe.timer = new QuTimer(0, aLifetime); mParticles.AddLast(addMe); return(addMe); }