From b9b5b90330b956028de42ad27fa1ab16bbf07487 Mon Sep 17 00:00:00 2001 From: michaeldgg2 <119738087+michaeldgg2@users.noreply.github.com> Date: Thu, 26 Oct 2023 20:59:59 +0200 Subject: [PATCH] Allow changing ZOffset of renderables in ActorPreviewPlaceBuildingPreview --- .../Buildings/ActorPreviewPlaceBuildingPreview.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/Buildings/ActorPreviewPlaceBuildingPreview.cs b/OpenRA.Mods.Common/Traits/Buildings/ActorPreviewPlaceBuildingPreview.cs index a36e4ffa06..7a3d1b5089 100644 --- a/OpenRA.Mods.Common/Traits/Buildings/ActorPreviewPlaceBuildingPreview.cs +++ b/OpenRA.Mods.Common/Traits/Buildings/ActorPreviewPlaceBuildingPreview.cs @@ -33,6 +33,9 @@ namespace OpenRA.Mods.Common.Traits [Desc("Footprint types to draw above the actor preview.")] public readonly PlaceBuildingCellType FootprintOverPreview = PlaceBuildingCellType.Invalid; + [Desc("Custom ZOffset of the rendered building preview.")] + public readonly int ZOffset = 0; + protected override IPlaceBuildingPreview CreatePreview(WorldRenderer wr, ActorInfo ai, TypeDictionary init) { return new ActorPreviewPlaceBuildingPreviewPreview(wr, ai, this, init); @@ -82,10 +85,14 @@ namespace OpenRA.Mods.Common.Traits foreach (var r in previewRenderables.OrderBy(WorldRenderer.RenderableZPositionComparisonKey)) { + var renderable = r; if (info.PreviewAlpha < 1f && r is IModifyableRenderable mr) - yield return mr.WithAlpha(mr.Alpha * info.PreviewAlpha); - else - yield return r; + renderable = mr.WithAlpha(mr.Alpha * info.PreviewAlpha); + + if (info.ZOffset != 0) + renderable = renderable.WithZOffset(info.ZOffset); + + yield return renderable; } if (info.FootprintOverPreview != PlaceBuildingCellType.None)