コード例 #1
0
        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);
        }
コード例 #2
0
            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) })
                });
            }