public GridRenderer(Grid <T> _grid, Func <T, Color4> _colorSelector, float _tileWidth, float _tileHeight) { grid = _grid; tileWidth = _tileWidth; tileHeight = _tileHeight; var rectanglesVertices = new List <IEnumerable <ColoredVertex> >(); for (var i = 0; i < _grid.Width; i++) { for (var j = 0; j < _grid.Height; j++) { var rectangle = new Rectangle(i * tileWidth, j * tileHeight, tileWidth, tileHeight); var vertices = rectangle.ToVertices(); var tile = _grid.Get(i, j); var color = _colorSelector(tile); var coloredVertices = vertices.Select(v => new ColoredVertex(new Vector3(v.X, v.Y, 0), color)); rectanglesVertices.Add(coloredVertices); } } buffer = new ColoredVertexBuffer(PrimitiveType.Quads); buffer.AddVertices(rectanglesVertices.SelectMany(x => x)); Initialize(buffer); }
public IEnumerable <(ParticlePrimitive PrimitiveType, IEnumerable <(float X, float Y)> Vertices)> Vertices(Particle _particle) { var rectangle = new Rectangle(_particle.X - _particle.Size / 2, _particle.Y - _particle.Size / 2, _particle.Size, _particle.Size); return(new List <(ParticlePrimitive, IEnumerable <(float X, float Y)>)>() { (ParticlePrimitive.Quads, rectangle.ToVertices().Rotated(_particle.Rocket.Angle, _particle.X, _particle.Y)) //(ParticlePrimitive.Points, new List<(float X, float Y)> () { (_particle.X, _particle.Y) }) }); }