From 9c8470d18e3d850583e64a5defc5d3492ba5055b Mon Sep 17 00:00:00 2001 From: Ashley Newson Date: Sun, 11 May 2025 02:27:57 +0100 Subject: [PATCH] Preview clipboard when copy-pasting in the map editor --- OpenRA.Mods.Common/EditorBrushes/EditorBlit.cs | 3 ++- .../EditorBrushes/EditorCopyPasteBrush.cs | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/OpenRA.Mods.Common/EditorBrushes/EditorBlit.cs b/OpenRA.Mods.Common/EditorBrushes/EditorBlit.cs index 8488ec453e..3a4fc69231 100644 --- a/OpenRA.Mods.Common/EditorBrushes/EditorBlit.cs +++ b/OpenRA.Mods.Common/EditorBrushes/EditorBlit.cs @@ -256,7 +256,8 @@ namespace OpenRA.Mods.Common.EditorBrushes { foreach (var (_, editorActorPreview) in blitSource.Actors) { - var preview = editorActorPreview.RenderWithOffset(wOffset); + var preview = editorActorPreview.RenderWithOffset(wOffset) + .OrderBy(WorldRenderer.RenderableZPositionComparisonKey); foreach (var renderable in preview) yield return renderable; } diff --git a/OpenRA.Mods.Common/EditorBrushes/EditorCopyPasteBrush.cs b/OpenRA.Mods.Common/EditorBrushes/EditorCopyPasteBrush.cs index c1f1a1b7d9..8221b1be31 100644 --- a/OpenRA.Mods.Common/EditorBrushes/EditorCopyPasteBrush.cs +++ b/OpenRA.Mods.Common/EditorBrushes/EditorCopyPasteBrush.cs @@ -87,7 +87,20 @@ namespace OpenRA.Mods.Common.Widgets } void IEditorBrush.TickRender(WorldRenderer wr, Actor self) { } - IEnumerable IEditorBrush.RenderAboveShroud(Actor self, WorldRenderer wr) { yield break; } + IEnumerable IEditorBrush.RenderAboveShroud(Actor self, WorldRenderer wr) + { + if (PastePreviewPosition != null) + { + var preview = EditorBlit.PreviewBlitSource( + clipboard, + getCopyFilters(), + PastePreviewPosition.Value - Region.TopLeft, + wr); + foreach (var renderable in preview) + yield return renderable; + } + } + IEnumerable IEditorBrush.RenderAnnotations(Actor self, WorldRenderer wr) { if (PastePreviewPosition != null)