using System.Collections.Generic; using Syntriax.Engine.Core; namespace Syntriax.Engine.Integration.MonoGame; public class DrawableShapeBehaviour : Behaviour2D, IDrawableTriangle, IPreDraw { private readonly Shape2D shape = new([]); private readonly List worldTriangles = []; private readonly Shape2D worldShape = new([]); protected ColorRGB color = new(255, 255, 255); public void PreDraw() => UpdateWorldShape(); public void Draw(ITriangleBatch triangleBatch) { worldShape.ToTrianglesConvex(worldTriangles); foreach (Triangle triangle in worldTriangles) triangleBatch.Draw(new(triangle.C, triangle.B, triangle.A), color); } protected void UpdateWorldShape() => shape.Transform(Transform, worldShape); public DrawableShapeBehaviour() => shape = Shape2D.Triangle; public DrawableShapeBehaviour(Shape2D shape) => this.shape = shape; public DrawableShapeBehaviour(Shape2D shape, ColorRGB color) { this.shape = shape; this.color = color; } }