Introduce IRenderable.IsDecoration and AsDecoration.

These are used to filter *Renderables that shouldn't
be copied for things like highlight or shadow.
This commit is contained in:
Paul Chote
2013-08-10 19:24:01 +12:00
parent 8fcbe7bb9e
commit be7fc57cdd
13 changed files with 43 additions and 24 deletions

View File

@@ -31,9 +31,11 @@ namespace OpenRA.Mods.RA.Render
? (int)Math.Abs((self.ActorID + Game.LocalTick) / 5 % 4 - 1) - 1 : 0;
// Contrails shouldn't cast shadows
var shadowSprites = r.Where(s => !(s is ContrailRenderable))
var shadowSprites = r.Where(s => !s.IsDecoration)
.Select(a => a.WithPalette(wr.Palette("shadow"))
.OffsetBy(new WVec(0, 0, -a.Pos.Z)).WithZOffset(a.ZOffset + a.Pos.Z));
.OffsetBy(new WVec(0, 0, -a.Pos.Z))
.WithZOffset(a.ZOffset + a.Pos.Z)
.AsDecoration());
var worldVisualOffset = new WVec(0,0,-43*visualOffset);
var flyingSprites = !flying ? r :