Engine-Pong/Game/Behaviours/ShapeBehaviour.cs

35 lines
1.2 KiB
C#
Raw Normal View History

2024-01-24 12:17:21 +03:00
using Microsoft.Xna.Framework;
using Apos.Shapes;
using Syntriax.Engine.Physics2D.Primitives;
namespace Pong.Behaviours;
public class ShapeBehaviour : Syntriax.Engine.Physics2D.Collider2DShapeBehaviour, IDisplayableShape
2024-01-24 12:17:21 +03:00
{
2024-01-27 21:50:28 +03:00
public ShapeBehaviour(Shape shape) : base(shape) { }
public ShapeBehaviour(Shape shape, float thickness) : base(shape) { Thickness = thickness; }
public ShapeBehaviour(Shape shape, Color color) : base(shape) { Color = color; }
public ShapeBehaviour(Shape shape, Color color, float thickness) : base(shape) { Thickness = thickness; Color = color; }
2024-01-24 12:17:21 +03:00
public Color Color { get; set; } = Color.White;
public float Thickness { get; set; } = .5f;
public void Draw(ShapeBatch shapeBatch)
{
if (!IsActive)
return;
2024-01-27 21:50:28 +03:00
Recalculate();
int count = ShapeWorld.Vertices.Count;
2024-01-24 12:17:21 +03:00
shapeBatch.BorderCircle(Transform.Position.ToDisplayVector2(), 5f, Color.DarkRed);
2024-01-24 12:17:21 +03:00
for (int i = 0; i < count - 1; i++)
shapeBatch.DrawLine(ShapeWorld[i].ToDisplayVector2(), ShapeWorld[i + 1].ToDisplayVector2(), Thickness, Color, Color);
shapeBatch.DrawLine(ShapeWorld[0].ToDisplayVector2(), ShapeWorld[^1].ToDisplayVector2(), Thickness, Color, Color);
2024-01-24 12:17:21 +03:00
}
}