public void DrawWaterDebug(World.World world)
{
if (NOWATER || world.Water?.ParticleCount == 0)
return;
var blending = new BlendState();
blending.AlphaSourceBlend = Blend.SourceAlpha;
blending.AlphaDestinationBlend = Blend.InverseSourceAlpha;
blending.ColorSourceBlend = Blend.SourceAlpha;
blending.ColorDestinationBlend = Blend.InverseSourceAlpha;
var water = world.Water;
var particles = water.Particles;
VertexPositionColor[] lines = new VertexPositionColor[particles.Length * 6];
for(int i = 0; i < particles.Length; i++)
{
var bottom = particles[i] + new Vector2(0, -DebugParticleSize);
var right = particles[i] + new Vector2(-DebugParticleSize, DebugParticleSize);
var left = particles[i] + new Vector2(DebugParticleSize, DebugParticleSize);
lines[i * 6 + 0].Position = new Vector3(bottom, 0f);
lines[i * 6 + 1].Position = new Vector3(right, 0f);
lines[i * 6 + 2].Position = new Vector3(right, 0f);
lines[i * 6 + 3].Position = new Vector3(left, 0f);
lines[i * 6 + 4].Position = new Vector3(left, 0f);
lines[i * 6 + 5].Position = new Vector3(bottom, 0f);
lines[i * 6 + 0].Color = Color.White;
lines[i * 6 + 1].Color = Color.White;
lines[i * 6 + 2].Color = Color.White;
lines[i * 6 + 3].Color = Color.White;
lines[i * 6 + 4].Color = Color.White;
lines[i * 6 + 5].Color = Color.White;
}
Game.GraphicsDevice.RasterizerState = new RasterizerState
{
CullMode = CullMode.None
};
Game.GraphicsDevice.DrawUserPrimitives(PrimitiveType.LineList, lines, 0, particles.Length * 3);
}