public void Update(float deltaTime) { if (deltaTime == 0) { return; } float deltaTime2 = 0.5f * deltaTime * deltaTime; ComputeNeighbours(); ApplyForces(); if (Definition.UseViscosity) { for (int i = 0; i < Particles.Count; ++i) { FluidParticle p = Particles[i]; if (p.IsActive) { ApplyViscosity(p, deltaTime); } } } for (int i = 0; i < Particles.Count; ++i) { FluidParticle p = Particles[i]; if (p.IsActive) { p.Update(deltaTime); } } for (int i = 0; i < Particles.Count; ++i) { FluidParticle p = Particles[i]; if (p.IsActive) { DoubleDensityRelaxation(p, deltaTime2); } } if (Definition.UsePlasticity) { for (int i = 0; i < Particles.Count; ++i) { FluidParticle p = Particles[i]; if (p.IsActive) { CreateSprings(p); } } } AdjustSprings(deltaTime); UpdateVelocities(deltaTime); }
public void Update(float timeStep) { _timeStep2 = 0.5f * timeStep * timeStep; ComputeNeighbours(); ApplyForces(); if (Definition.UseViscosity) { for (int i = 0; i < Particles.Count; ++i) { FluidParticle p = Particles[i]; if (p.IsActive) { ApplyViscosity(p, timeStep); } } } for (int i = 0; i < Particles.Count; ++i) { FluidParticle p = Particles[i]; if (p.IsActive) { p.Update(timeStep); } } for (int i = 0; i < Particles.Count; ++i) { FluidParticle p = Particles[i]; if (p.IsActive) { DoubleDensityRelaxation(p); } } if (Definition.UsePlasticity) { for (int i = 0; i < Particles.Count; ++i) { FluidParticle p = Particles[i]; if (p.IsActive) { CreateSprings(p); } } } AdjustSprings(timeStep); UpdateVelocities(timeStep); }