Ballz.GameSession.World.Water.Step C# (CSharp) Method

Step() public method

public Step ( World worldState, float elapsedSeconds ) : void
worldState World
elapsedSeconds float
return void
        public void Step(World worldState, float elapsedSeconds)
        {
            if (GameSession.Renderer.WaterRenderer.NOWATER)
                return;

            if (++seldomCtr < 2)
                return;
            //Collision(elapsedSeconds);
            Viscosity(elapsedSeconds);
            Avoidance(elapsedSeconds);

            for (var i = 0; i < ParticleCount; ++i)
            {
                Velocities[i].Y += -9.81f*elapsedSeconds;
            }

            WorldCollision(elapsedSeconds);

            for (var i = 0; i < ParticleCount; ++i)
            {
                Particles[i] = Particles[i] + Velocities[i]*elapsedSeconds;
                var x = Math.Max(0, Math.Min(Particles[i].X,_width-1));
                var y = Math.Max(0, Math.Min(Particles[i].Y,_height-1));

                if (x != Particles[i].X)
                    Velocities[i].X = -Velocities[i].X*0.5f;

                if (y != Particles[i].Y)
                    Velocities[i].Y = -Velocities[i].Y*0.5f;

                Particles[i].X = x;
                Particles[i].Y = y;
            }

            for (var x = 0; x < _width*GridMultiplier; ++x)
                for (var y = 0; y < _height * GridMultiplier; ++y)
                    _grid[x,y].Clear();

            for (var i = 0; i < ParticleCount; ++i)
                _grid[(int)(Particles[i].X * GridMultiplier), (int)(Particles[i].Y * GridMultiplier)].Add(i);
        }