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(); }
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); }