Introduce IRenderAboveShroud interface.
This commit is contained in:
@@ -173,12 +173,15 @@ namespace OpenRA.Graphics
|
|||||||
|
|
||||||
Game.Renderer.DisableScissor();
|
Game.Renderer.DisableScissor();
|
||||||
|
|
||||||
var overlayRenderables = World.Selection.Actors.Where(a => !a.Disposed)
|
var aboveShroud = World.ActorsWithTrait<IRenderAboveShroud>().Where(a => a.Actor.IsInWorld && !a.Actor.Disposed)
|
||||||
|
.SelectMany(a => a.Trait.RenderAboveShroud(a.Actor, this));
|
||||||
|
|
||||||
|
var aboveShroudSelected = World.Selection.Actors.Where(a => !a.Disposed)
|
||||||
.SelectMany(a => a.TraitsImplementing<IRenderAboveShroudWhenSelected>()
|
.SelectMany(a => a.TraitsImplementing<IRenderAboveShroudWhenSelected>()
|
||||||
.SelectMany(t => t.RenderAboveShroud(a, this)));
|
.SelectMany(t => t.RenderAboveShroud(a, this)));
|
||||||
|
|
||||||
Game.Renderer.WorldVoxelRenderer.BeginFrame();
|
Game.Renderer.WorldVoxelRenderer.BeginFrame();
|
||||||
var finalOverlayRenderables = overlayRenderables.Select(r => r.PrepareRender(this));
|
var finalOverlayRenderables = aboveShroud.Concat(aboveShroudSelected).Select(r => r.PrepareRender(this));
|
||||||
Game.Renderer.WorldVoxelRenderer.EndFrame();
|
Game.Renderer.WorldVoxelRenderer.EndFrame();
|
||||||
|
|
||||||
// HACK: Keep old grouping behaviour
|
// HACK: Keep old grouping behaviour
|
||||||
|
|||||||
@@ -376,6 +376,7 @@ namespace OpenRA.Traits
|
|||||||
|
|
||||||
public interface IRenderAboveWorld { void RenderAboveWorld(Actor self, WorldRenderer wr); }
|
public interface IRenderAboveWorld { void RenderAboveWorld(Actor self, WorldRenderer wr); }
|
||||||
public interface IRenderShroud { void RenderShroud(Shroud shroud, WorldRenderer wr); }
|
public interface IRenderShroud { void RenderShroud(Shroud shroud, WorldRenderer wr); }
|
||||||
|
public interface IRenderAboveShroud { IEnumerable<IRenderable> RenderAboveShroud(Actor self, WorldRenderer wr); }
|
||||||
public interface IRenderAboveShroudWhenSelected { IEnumerable<IRenderable> RenderAboveShroud(Actor self, WorldRenderer wr); }
|
public interface IRenderAboveShroudWhenSelected { IEnumerable<IRenderable> RenderAboveShroud(Actor self, WorldRenderer wr); }
|
||||||
|
|
||||||
public interface ITargetableInfo : ITraitInfoInterface
|
public interface ITargetableInfo : ITraitInfoInterface
|
||||||
|
|||||||
Reference in New Issue
Block a user