Fix WithCargo crash.

This commit is contained in:
Paul Chote
2018-01-01 18:12:44 +00:00
committed by reaperrr
parent 7b056509ec
commit ee728be537

View File

@@ -99,22 +99,30 @@ namespace OpenRA.Mods.Cnc.Traits.Render
.ToArray(); .ToArray();
} }
foreach (var p in previews.Values.SelectMany(p => p)) foreach (var actorPreviews in previews.Values)
{ {
var index = cargo.PassengerCount > 1 ? i++ % info.LocalOffset.Length : info.LocalOffset.Length / 2; if (actorPreviews == null)
var localOffset = info.LocalOffset[index]; continue;
foreach (var pp in p.Render(wr, pos + body.LocalToWorld(localOffset.Rotate(bodyOrientation)))) foreach (var p in actorPreviews)
yield return pp.WithZOffset(1); {
var index = cargo.PassengerCount > 1 ? i++ % info.LocalOffset.Length : info.LocalOffset.Length / 2;
var localOffset = info.LocalOffset[index];
foreach (var pp in p.Render(wr, pos + body.LocalToWorld(localOffset.Rotate(bodyOrientation))))
yield return pp.WithZOffset(1);
}
} }
} }
IEnumerable<Rectangle> IRender.ScreenBounds(Actor self, WorldRenderer wr) IEnumerable<Rectangle> IRender.ScreenBounds(Actor self, WorldRenderer wr)
{ {
var pos = self.CenterPosition; var pos = self.CenterPosition;
foreach (var p in previews.Values.SelectMany(p => p)) foreach (var actorPreviews in previews.Values)
foreach (var b in p.ScreenBounds(wr, pos)) if (actorPreviews != null)
yield return b; foreach (var p in actorPreviews)
foreach (var b in p.ScreenBounds(wr, pos))
yield return b;
} }
void INotifyPassengerEntered.OnPassengerEntered(Actor self, Actor passenger) void INotifyPassengerEntered.OnPassengerEntered(Actor self, Actor passenger)