예제 #1
0
        public void Render(DrawingContext dc, Size renderSize, TileRenderContext ctx)
        {
            dc.DrawRectangle(Brushes.Black, null, new Rect(0, 0, renderSize.Width, renderSize.Height));

            dc.PushTransform(new TranslateTransform(ctx.RenderOffset.X, ctx.RenderOffset.Y));
            dc.PushTransform(new ScaleTransform(ctx.TileSize, ctx.TileSize));

            for (int y = 0; y < ctx.RenderGridSize.Height && y < m_renderData.Height; ++y)
            {
                for (int x = 0; x < ctx.RenderGridSize.Width && x < m_renderData.Width; ++x)
                {
                    dc.PushTransform(new TranslateTransform(x, y));
                    RenderTile(dc, x, y);
                    dc.Pop();
                }
            }

            dc.Pop();
            dc.Pop();
        }
예제 #2
0
        protected override void OnRenderTiles(DrawingContext drawingContext, Size renderSize, TileRenderContext ctx)
        {
            if (ctx.TileDataInvalid)
            {
                var width  = m_renderData.Width;
                var height = m_renderData.Height;
                var grid   = m_renderData.Grid;

                for (int y = 0; y < height; ++y)
                {
                    for (int x = 0; x < width; ++x)
                    {
                        var ml = ScreenTileToMapLocation(new IntVector2(x, y));

                        UpdateTile(ref grid[y, x], ml);
                    }
                }
            }

            m_renderer.Render(drawingContext, renderSize, ctx);
        }