Ballz.GameSession.Renderer.WaterRenderer.DrawWaterDebug C# (CSharp) Метод

DrawWaterDebug() публичный Метод

public DrawWaterDebug ( World world ) : void
world Ballz.GameSession.World.World
Результат void
        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);
        }

Usage Example

Пример #1
0
        public override void Draw(GameTime gameTime)
        {
            //DrawSphere(Vector2.Zero, new Vector2(0.0f,1.0f));
            var debugWorld = Game.Match?.World;

            if (debugWorld == null)
            {
                return;
            }

            foreach (Entity ball in debugWorld.Entities)
            {
                if (ball.Disposed)
                {
                    continue;
                }

                DrawSphere(ball.Position, ball.Rotation, ball.Radius, ball.PhysicsBody?.Awake ?? false);
            }

            foreach (var rope in debugWorld.Ropes)
            {
                DrawRope(rope);
            }

            DrawTerrain();
            WaterRenderer.DrawWaterDebug(debugWorld);

            base.Draw(gameTime);
        }